我正在尝试使用 reactive-banana 并想创建一个简单的合成器。有很多 GUI 示例,但我无法将它们应用于音频。由于音频 API 有回调说“给我 n 个音频样本”,我想我应该触发一个事件,每个回调(使用 newAddHandler 返回的 snd 部分)包含要生成的样本数量,应该写入的指针, 和时间信息来协调 MIDI 事件。传递给 reactimate 的 IO 操作会将样本写入指针。MIDI 事件将类似地从另一个回调中触发,并且还包含时间信息。
然而,这就是我卡住的地方。我猜音频信号应该是一种行为,但是我如何在适当的时间内“运行”一种行为来获取样本?正确的数量当然取决于两个音频回调之间可能发生的 MIDI 事件。