---
title: AudioContext
slug: Web/API/AudioContext
tags:
  - API
  - Audio
  - Interface
  - Referencia
  - Som
  - api de áudio
translation_of: Web/API/AudioContext
---
<p>{{APIRef("Web Audio API")}}</p>

<div>
<p>A interface <code>AudioContext</code>  representa um grafo de processamento de áudio construído a partir de nós de áudio conectados, cada um representado por um {{domxref("AudioNode")}} Um contexto de áudio controla a criação dos nós que contém e a execução do processamento de áudio, ou decodificação. Você precisa criar um AudioContext antes de fazer qualquer outra coisa, pois tudo acontece dentro de um contexto.</p>
</div>

<p>Um <code>AudioContext</code>pode ser um alvo de eventos, portanto, ele implementa a interface {{domxref("EventTarget")}}.</p>

<h2 id="Construtor">Construtor</h2>

<dl>
 <dt>{{domxref("AudioContext.AudioContext", "AudioContext()")}}</dt>
 <dd>Cria e retorna um novo objeto <code>AudioContext</code>.</dd>
</dl>

<h2 id="Propriedades">Propriedades</h2>

<dl>
 <dt>{{domxref("AudioContext.currentTime")}} {{readonlyInline}}</dt>
 <dd>
 <p>Retorna um double representando um tempo cada vez maior de hardware em segundos usados ​​para agendamento. Começa em <code>0</code>.</p>
 </dd>
 <dt>{{domxref("AudioContext.destination")}} {{readonlyInline}}</dt>
 <dd>Retorna um {{domxref("AudioDestinationNode")}} representando o destino final de todo o áudio no contexto. Pode ser pensado como o dispositivo de renderização de áudio.</dd>
 <dt>{{domxref("AudioContext.listener")}} {{readonlyInline}}</dt>
 <dd>Retorna o objeto  {{domxref("AudioListener")}}, usado para especialização 3D</dd>
 <dt>{{domxref("AudioContext.sampleRate")}} {{readonlyInline}}</dt>
 <dd>Retorna um float representando a taxa de amostragem (em amostras por segundo) usado por todos os nós neste contexto. A taxa de amostragem de um {{domxref("AudioContext")}} não pode ser alterada.</dd>
 <dt>{{domxref("AudioContext.state")}} {{readonlyInline}}</dt>
 <dd>Retorna o estado atual do <code>AudioContext</code>.</dd>
 <dt>{{domxref("AudioContext.mozAudioChannelType")}} {{ non-standard_inline() }} {{readonlyInline}}</dt>
 <dd>Usado para retornar o canal de áudio que o som toca em um {{domxref("AudioContext")}} irá tocar em um dispositivo do Firefox OS.</dd>
</dl>

<h3 id="Manipuladores_de_eventos">Manipuladores de eventos</h3>

<dl>
 <dt>{{domxref("AudioContext.onstatechange")}}</dt>
 <dd>Um manipulador de evento que é executado quando um evento do tipo {{event("statechange")}} dispara.
 <p>Isso ocorre quando o estado <code>AudioContext</code> muda, devido ao chamado de um dos métodos de mudança de estado ({{domxref("AudioContext.suspend")}}, {{domxref("AudioContext.resume")}}, or {{domxref("AudioContext.close")}}).</p>
 </dd>
</dl>

<h2 id="Métodos">Métodos</h2>

<p><em>Também implementa métodos a partir da interface </em>{{domxref("EventTarget")}}.</p>

<dl>
 <dt>{{domxref("AudioContext.close()")}}</dt>
 <dd>
 <p>Fecha o contexto de áudio, liberando todos os recursos de áudio do sistema que ele usa.</p>
 </dd>
 <dt>{{domxref("AudioContext.createBuffer()")}}</dt>
 <dd>Cria um novo, objeto  {{ domxref("AudioBuffer") }} vázio, que pode ser preenchido por dados e reproduzido através de um {{ domxref("AudioBufferSourceNode") }}.</dd>
 <dt>{{domxref("AudioContext.createBufferSource()")}}</dt>
 <dd>Cria um {{domxref("AudioBufferSourceNode")}}, que pode ser usado para reproduzir e manipular dados de audio contidos dentro de um objeto {{ domxref("AudioBuffer") }}. {{ domxref("AudioBuffer") }} são criados usando {{domxref("AudioContext.createBuffer")}} ou retornado por {{domxref("AudioContext.decodeAudioData")}} quando decodifica com sucesso uma faixa de áudio.</dd>
 <dt>{{domxref("AudioContext.createMediaElementSource()")}}</dt>
 <dd>Cria um {{domxref("MediaElementAudioSourceNode")}} associado com um {{domxref("HTMLMediaElement")}}. Isso pode ser usado para reproduzir e manipular o audio This can be used to play and manipulate audio dos elementos  {{HTMLElement("video")}} ou {{HTMLElement("audio")}}.</dd>
 <dt>{{domxref("AudioContext.createMediaStreamSource()")}}</dt>
 <dd>Cria um {{domxref("MediaStreamAudioSourceNode")}} associado com um {{domxref("MediaStream")}} um fluxo (stream) de áudio que pode vir do microfone local do computador ou de outras fontes.</dd>
 <dt>{{domxref("AudioContext.createMediaStreamDestination()")}}</dt>
 <dd>Cria um {{domxref("MediaStreamAudioDestinationNode")}} associado com um {{domxref("MediaStream")}} representando um fluxo (stream) de audio que pode ser armazenado em um arquivo local ou enviados para outro computador.</dd>
 <dt>{{domxref("AudioContext.createScriptProcessor()")}}</dt>
 <dd>Cria um a {{domxref("ScriptProcessorNode")}}, que pode ser usado para processamento de áudio direto via JavaScript.</dd>
 <dt>{{domxref("AudioContext.createStereoPanner()")}}</dt>
 <dd>Cria um {{domxref("StereoPannerNode")}}, que pode ser usado para aplicar uma panorâmica estéreo para uma fonte de áudio.</dd>
 <dt>{{domxref("AudioContext.createAnalyser()")}}</dt>
 <dd>Creates an {{domxref("AnalyserNode")}}, which can be used to expose audio time and frequency data and for example to create data visualisations.</dd>
 <dt>{{domxref("AudioContext.createBiquadFilter()")}}</dt>
 <dd>Cria um {{domxref ("BiquadFilterNode")}}, que representa um filtro de segunda ordem configurável como vários tipos de filtros comuns diferentes: high-pass, low-pass, band-pass, etc.</dd>
 <dt>{{domxref("AudioContext.createChannelMerger()")}}</dt>
 <dd>Cria um {{domxref ("ChannelMergerNode")}}, que é usado para combinar canais de múltiplos fluxos de áudio em um único fluxo de áudio.</dd>
 <dt>{{domxref("AudioContext.createChannelSplitter()")}}</dt>
 <dd>Cria um {{domxref ("ChannelSplitterNode")}}, que é usado para acessar os canais individuais de um fluxo de áudio e processá-los separadamente.</dd>
 <dt>{{domxref("AudioContext.createConvolver()")}}</dt>
 <dd>Cria um {{domxref ("ConvolverNode")}}, que pode ser usado para aplicar efeitos de convolução ao seu gráfico de áudio, por exemplo, um efeito de reverberação.</dd>
 <dt>{{domxref("AudioContext.createDelay()")}}</dt>
 <dd>
 <p>Cria um {{domxref ("DelayNode")}}, que é usado para atrasar o sinal de áudio recebido por uma certa quantia. Este nó também é útil para criar loops de feedback em um gráfico de API de Web Audio.</p>
 </dd>
 <dt>{{domxref("AudioContext.createDynamicsCompressor()")}}</dt>
 <dd>Cria um {{domxref("DynamicsCompressorNode")}}, que pode ser usada para aplicar compressão acústica para um sínal de áudio.</dd>
 <dt>{{domxref("AudioContext.createGain()")}}</dt>
 <dd>Cria um {{domxref ("GainNode")}}, que pode ser usado para controlar o volume total do gráfico de áudio.</dd>
 <dt>{{domxref("AudioContext.createIIRFilter()")}}</dt>
 <dd>Cria um {{domxref ("IIRFilterNode")}}, que representa um filtro de segunda ordem configurável como vários tipos de filtros comuns diferentes.</dd>
 <dt>{{domxref("AudioContext.createOscillator()")}}</dt>
 <dd>Cria um {{domxref ("OscillatorNode")}}, uma fonte que representa uma forma de onda periódica. Isso basicamente gera um tom.</dd>
 <dt>{{domxref("AudioContext.createPanner()")}}</dt>
 <dd>Cria um {{domxref ("PannerNode")}}, que é usado para spatializar um fluxo de áudio recebido no espaço 3D.</dd>
 <dt>{{domxref("AudioContext.createPeriodicWave()")}}</dt>
 <dd>Cria um {{domxref ("PeriodicWave")}}, usado para definir uma forma de onda periódica que pode ser usada para determinar a saída de um {{domxref ("OscillatorNode")}}.</dd>
 <dt>{{domxref("AudioContext.createWaveShaper()")}}</dt>
 <dd>Cria um {{domxref ("WaveShaperNode")}}, que é usado para implementar efeitos de distorção não-lineares.</dd>
 <dt>{{domxref("AudioContext.createAudioWorker()")}}</dt>
 <dd>
 <p>Cria um {{domxref ("AudioWorkerNode")}}, que pode interagir com um segmento de trabalho da Web para gerar, processar ou analisar o áudio diretamente. Isso foi adicionado à especificação em 29 de agosto de 2014, e ainda não foi implementado em nenhum navegador.</p>
 </dd>
 <dt>{{domxref("AudioContext.decodeAudioData()")}}</dt>
 <dd>Decodifica assincronamente dados de arquivos de áudio contidos em {{domxref("ArrayBuffer")}}. Nesse caso, o ArrayBuffer geralmente é carregado a partir de um atributo de <code>resposta</code> {{domxref("XMLHttpRequest")}}'s definir o <code>responseType</code> para <code>arraybuffer</code>. Esse método funciona apenas em arquivos completos, não fragmentos de arquivos de áudio.</dd>
 <dt>{{domxref("AudioContext.resume()")}}</dt>
 <dd>Retoma a progressão do tempo em um contexto de áudio que anteriormente foi suspenso.</dd>
 <dt>{{domxref("AudioContext.suspend()")}}</dt>
 <dd>Suspende a progressão do tempo no contexto de áudio, interrompendo temporariamente o acesso ao hardware de áudio e reduzindo o uso da CPU / bateria no processo.</dd>
</dl>

<h2 id="Métodos_obsoletos">Métodos obsoletos</h2>

<dl>
 <dt>{{domxref("AudioContext.createJavaScriptNode()")}}</dt>
 <dd>Cria um {{domxref("JavaScriptNode")}}, usado para para processamento de áudio direto via JavaScript. Este método é obsoleto e foi substituído por {{domxref("AudioContext.createScriptProcessor()")}}.</dd>
 <dt>{{domxref("AudioContext.createWaveTable()")}}</dt>
 <dd>Cria um {{domxref ("WaveTableNode")}}, usado para definir uma forma de onda periódica. Este método é obsoleto e foi substituído por {{domxref ("AudioContext.createPeriodicWave ()")}}.</dd>
</dl>

<h2 id="Exemplos">Exemplos</h2>

<p>Declaração básica de contexto de áudio:</p>

<pre class="brush: js notranslate">var audioCtx = new AudioContext();</pre>

<p>Cruzar a variante do navegador:</p>

<pre class="brush: js notranslate">var AudioContext = window.AudioContext || window.webkitAudioContext;
var audioCtx = new AudioContext();

var oscillatorNode = audioCtx.createOscillator();
var gainNode = audioCtx.createGain();
var finish = audioCtx.destination;
// etc.</pre>

<h2 id="Especificações">Especificações</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Especificação</th>
   <th scope="col">Estado</th>
   <th scope="col">Comentário</th>
  </tr>
  <tr>
   <td>{{SpecName('Web Audio API', '#the-audiocontext-interface', 'AudioContext')}}</td>
   <td>{{Spec2('Web Audio API')}}</td>
   <td></td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility">Compatibilidade com navegadores</h2>

<div>{{CompatibilityTable}}</div>

<div id="compat-desktop">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Chrome</th>
   <th>Firefox (Gecko)</th>
   <th>Internet Explorer</th>
   <th>Opera</th>
   <th>Safari (WebKit)</th>
  </tr>
  <tr>
   <td>Basic support</td>
   <td>{{CompatChrome(10.0)}}{{property_prefix("webkit")}}<br>
    35</td>
   <td>{{CompatGeckoDesktop(25.0)}} </td>
   <td>{{CompatNo}}</td>
   <td>15.0{{property_prefix("webkit")}}<br>
    22</td>
   <td>6.0{{property_prefix("webkit")}}</td>
  </tr>
  <tr>
   <td><code>createStereoPanner()</code></td>
   <td>{{CompatChrome(42.0)}}</td>
   <td>{{CompatGeckoDesktop(37.0)}} </td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
  <tr>
   <td><code>onstatechange</code>, <code>state</code>, <code>suspend()</code>, <code>resume()</code></td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatGeckoDesktop(40.0)}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
 </tbody>
</table>
</div>

<div id="compat-mobile">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Android</th>
   <th>Firefox Mobile (Gecko)</th>
   <th>Firefox OS</th>
   <th>IE Mobile</th>
   <th>Opera Mobile</th>
   <th>Safari Mobile</th>
   <th>Chrome for Android</th>
  </tr>
  <tr>
   <td>Basic support</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatGeckoDesktop(37.0)}} </td>
   <td>2.2</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatVersionUnknown}}</td>
  </tr>
  <tr>
   <td><code>createStereoPanner()</code></td>
   <td>{{CompatNo}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatVersionUnknown}}</td>
  </tr>
  <tr>
   <td><code>onstatechange</code>, <code>state</code>, <code>suspend()</code>, <code>resume()</code></td>
   <td>{{CompatNo}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatVersionUnknown}}</td>
  </tr>
 </tbody>
</table>
</div>

<h2 id="Veja_também">Veja também</h2>

<ul style="margin-left: 40px;">
 <li><a href="/en-US/docs/Web_Audio_API/Using_Web_Audio_API">Usando a Web Audio API</a></li>
 <li>{{domxref("OfflineAudioContext")}}</li>
</ul>