AudioWorkletGlobalScope: currentTime プロパティ

AudioWorkletGlobalScope インターフェイスの読み取り専用プロパティ currentTime は、処理中の音声ブロックのコンテキスト時刻を表す単調増加の double 値を返します。これはワークレットが属している BaseAudioContextcurrentTime プロパティと同じ値です。

時刻を表す浮動小数点数です。

この AudioWorkletProcessorAudioWorkletGlobalScope の特定のプロパティにアクセスできます。

js
// test-processor.js で定義された AudioWorkletProcessor
class TestProcessor extends AudioWorkletProcessor {
  constructor() {
    super();

    // 生成時のサンプルフレームと時刻を記録する。
    // これらの値には AudioWorkletGlobalScope からアクセスできる。
    console.log(currentFrame);
    console.log(currentTime);
  }

  // process メソッドは必須である。
  // (最初から入っている) 無音を出力する。
  process(inputs, outputs, parameters) {
    return true;
  }
}

// サンプルレートを記録する。
// これは BaseAudioContext の読み取り専用プロパティであり、
// 生成時にのみ設定されるので、変化しない。
console.log(sampleRate);

// 任意の変数を宣言し、処理器で利用できる。
// たとえば、波形テーブルが入った ArrayBuffer を宣言できる。
const usefulVariable = 42;
console.log(usefulVariable);

registerProcessor("test-processor", TestProcessor);

メインスクリプトでは処理器をロードし、処理器の名前を渡して AudioWorkletNode のインスタンスを生成し、そのノードを音声グラフに接続します。console.log() の呼び出しによる出力がコンソールに出るはずです。

js
const audioContext = new AudioContext();
await audioContext.audioWorklet.addModule("test-processor.js");
const testNode = new AudioWorkletNode(audioContext, "test-processor");
testNode.connect(audioContext.destination);

仕様書

Specification
Web Audio API
# dom-audioworkletglobalscope-currenttime

ブラウザーの互換性

BCD tables only load in the browser

関連情報