如何使用ScriptProcessorNode

时间:2014-11-21 14:40:46

标签: dart web-audio dart-html

我正在尝试在Dart中创建一个Web Audio脚本处理器。我注意到这个问题显示使用“javascriptnode”:ScriptProcessorNode

目前的Dart版本似乎没有。有没有人有一个如何使用它的例子。我正在尝试创建一个BitCrusher处理器。

似乎最新的api没有“onAudioProcess”方法,我猜我应该使用“addEventListener”方法,但我不知道消息类型应该是什么。我甚至尝试了“setEventListener”方法,但我仍然没有得到事件。

_script = _context.createScriptProcessor(2048, 1, 1);

_script.addEventListener("message", _onProcess);
_script.setEventListener(_onProcess);   //<--- this doesn't work either.

void _onProcess(Event e) {            //<---- This is never called
  // Perform bit crush algorithm
}

1 个答案:

答案 0 :(得分:2)

同时(即假设很快你可以直接使用_script.onAudioProcess)你可以使用以下存根

// stub as onAudioProcess has disappeared from sdk 1.7
Stream<AudioProcessingEvent> onAudioProcess(ScriptProcessorNode node) {
  return node.on['audioprocess'];
}

并像这样使用

onAudioProcess(_script).listen((AudioProcessingEvent event) {

  // example to get output data (for playback)
  Float32List data = event.outputBuffer.getChannelData(0);

  // example to get input data (for recording)
  Float32List data = event.inputBuffer.getChannelData(0);

});