OfflineAudioContext

A interface OfflineAudioContext √© uma interface AudioContext que representa um gr√°fico de processament de √°udio construido a partir de conex√Ķes entre AudioNodes. Em contraste com o padr√£o AudioContext, um OfflineAudioContext n√£o processa o √°udio para o hardware do dispositivo; Em vez disso, ele gera, o mais r√°pido poss√≠vel, e exibe o resultado para um AudioBuffer.

Construtor

OfflineAudioContext.OfflineAudioContext()
Cria uma nova inst√Ęncia OfflineAudioContext.

Propriedades

Também herda propriedades da sua entidade paterna, BaseAudioContext.

OfflineAudioContext.length Somente leitura

Um n√ļmero inteiro que representa o tamanho do buffer em quadros de amostra.

Manipuladores de Eventos

OfflineAudioContext.oncomplete
√Č uma chamada EventHandler quando o processamento √© encerrado, √© quando o evento complete  - do tipo OfflineAudioCompletionEvent - √© gerado, ap√≥s a vers√£o baseada em eventos do OfflineAudioContext.startRendering() √© usada.

Métodos

Também herda métodos da interface paterna, BaseAudioContext.

OfflineAudioContext.resume()

Programa uma suspens√£o da progress√£o do tempo no contexto de √°udio no hor√°rio especificado e retorna uma promessa.

OfflineAudioContext.suspend()

Agende uma suspens√£o da progress√£o do tempo no contexto de √°udio no hor√°rio especificado e retorna uma promessa.

OfflineAudioContext.startRendering()

Inicia a renderiza√ß√£o do √°udio, levando em considera√ß√£o as conex√Ķes atuais e as mudan√ßas programadas atuais. Esta p√°gina abrange a vers√£o baseada em eventos e a vers√£o baseada em promessas.

Exemplo

Nesse exemplo, declaramos um ambos AudioContext e um OfflineAudioContext objeto. N√≥s usamos o AudioContext para carregar uma faixa de √°udio via XHR (AudioContext.decodeAudioData), ent√£o o OfflineAudioContext para renderizar o √°udio em um AudioBufferSourceNode e reproduzir a trilha. Depois que o gr√°fico de √°udio off-line estiver configurado, voc√™ deve renderiz√°-lo para AudioBuffer usando OfflineAudioContext.startRendering.

Quando a 'promise' startRendering() √© resolvida, a renderiza√ß√£o foi conclu√≠da e a sa√≠da AudioBuffer √© retornada fora da 'promise.

Neste ponto, criamos outro contexto de √°udio, criamos um AudioBufferSourceNode dentro dele e configuramos o buffer para ser igual √† promessa AudioBuffer. Isso √© jogado como parte de um gr√°fico de √°udio padr√£o simples.

Nota: Para um exemplo de trabalho, veja nosso offline-audio-context-promise Github repo (veja o c√≥digo fonte tamb√©m.)

// define o contexto de √°udio online e offline

var audioCtx = new AudioContext();
var offlineCtx = new OfflineAudioContext(2,44100*40,44100);

source = offlineCtx.createBufferSource();

// usa XHR para carregar uma faixa de √°udio, e
// decodeAudioData para decodificar e OfflineAudioContext para renderizar

function getData() {
  request = new XMLHttpRequest();

  request.open('GET', 'viper.ogg', true);

  request.responseType = 'arraybuffer';

  request.onload = function() {
    var audioData = request.response;

    audioCtx.decodeAudioData(audioData, function(buffer) {
      myBuffer = buffer;
      source.buffer = myBuffer;
      source.connect(offlineCtx.destination);
      source.start();
      //source.loop = true;
      offlineCtx.startRendering().then(function(renderedBuffer) {
        console.log('Rendering completed successfully');
        var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
        var song = audioCtx.createBufferSource();
        song.buffer = renderedBuffer;

        song.connect(audioCtx.destination);

        play.onclick = function() {
          song.start();
        }
      }).catch(function(err) {
          console.log('Rendering failed: ' + err);
          // Nota: A promessa deve rejeitar quando o StartRendering é chamado uma segunda vez em um OfflineAudioContext
      });
    });
  }

  request.send();
}

// Run getData to start the process off

getData();

Especifica√ß√Ķes

Specification Status Comment
Web Audio API
The definition of 'OfflineAudioContext' in that specification.
Rascunho atual Initial definition

Compatibilidade de Navegadores/Browser

BCD tables only load in the browser

Veja também