【问题标题】:How to use ScriptProcessorNode如何使用 ScriptProcessorNode
【发布时间】:2014-11-21 14:40:46
【问题描述】:

我正在尝试在 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
}

【问题讨论】:

  • 你看过这个最近的问题dartbug.com/21663 吗?
  • 糟糕。没有看到报告的这个问题。有趣的是,它是在不超过 3 天前被报道的。奇怪的是我们如何在如此短的时间内遇到同样的问题。谢了。我希望它尽快修复...

标签: dart web-audio-api dart-html


【解决方案1】:

同时(即假设您很快可以直接使用 _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);

});

【讨论】:

  • 有趣。我会检查一下。谢谢你的替代品。
猜你喜欢
  • 2021-09-01
  • 2019-04-05
  • 1970-01-01
  • 1970-01-01
  • 2013-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多