我目前正在从事一个个人项目:在 Flash 中创建一个用于实时音频合成的库。简而言之:将波发生器、滤波器、混频器等相互连接并为声卡提供原始(实时)数据的工具。像 max/msp 或 Reaktor 这样的东西。
我已经有一些工作的东西,但我想知道我写的基本设置是否正确。我不想以后遇到问题,迫使我改变我的应用程序的核心(尽管这总是会发生)。
基本上,我现在所做的是从链的末端开始,在(原始)声音数据“输出”(到声卡)的地方。为此,我需要将字节块(ByteArrays)写入一个对象,并且为了得到那个块,我会询问任何连接到我的“Sound Out”模块的模块给我他的块。该模块对连接到他的输入的模块执行相同的请求,并且一直发生直到到达链的开始。
这是正确的方法吗?我可以想象如果有反馈回路,或者如果有另一个没有输出的模块会遇到问题:如果我要在某个地方连接一个频谱分析仪,那将是链中的死胡同(一个没有输出的模块,只有一个输入)。在我目前的设置中,这样的模块不起作用,因为我只从声音输出模块开始计算。
有没有人有这样的编程经验?我会对有关正确方法的一些想法非常感兴趣。(为了清楚起见:我不是在寻找特定的 Flash 实现,这就是为什么我没有在 flash 或 actionscript 下标记这个问题)