--- 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>