我正在研究制作一个音乐理论实验室应用程序,您可以在其中看到音乐理论概念之间的图形关系。我希望这个可以在线获得,所以我想到了 Flash 和 Silverlight。
但我想从用户输入动态生成音调和和弦等。我知道这是 Flash Player 中一个非常不发达的领域。所以我的问题是 Flash 和 Silverlight 播放器的动态音频生成功能的当前状态是什么?
我正在研究制作一个音乐理论实验室应用程序,您可以在其中看到音乐理论概念之间的图形关系。我希望这个可以在线获得,所以我想到了 Flash 和 Silverlight。
但我想从用户输入动态生成音调和和弦等。我知道这是 Flash Player 中一个非常不发达的领域。所以我的问题是 Flash 和 Silverlight 播放器的动态音频生成功能的当前状态是什么?
从 Flash Player 10 起,您不需要做任何 hacky 类型的东西。有一个 API 可以动态生成声音。
这篇博文有一个快速介绍。他的代码从 mp3 中读取样本,但您可以以任何方式编写样本。
与往常一样,文档也有很多信息,以及这个代码示例,它应该可以让你很快完成。
var mySound:Sound = new Sound();
function sineWaveGenerator(event:SampleDataEvent):void {
for ( var c:int=0; c<8192; c++ ) {
event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25);
event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25);
}
}
mySound.addEventListener(SampleDataEvent.SAMPLE_DATA,sineWaveGenerator);
mySound.play();
你可以试试我从 C++ 移植的 AS3 中的 Synthesis ToolKit :)
与standingwave和popforge不同,AS3 中的STK 提供了长笛和单簧管等现实生活中的乐器供您使用,而前两者没有。
有一些方法可以做到这一点,这涉及到相当多的黑客攻击。我不记得确切的机制,但你可以看看(或使用)现有的流媒体库,如 StandingWave: http ://code.google.com/p/standingwave/ 或 Popforge 的东西: http:// code.google.com/p/popforge/
希望它可以提供比我在这里更多的信息。:)
因此,似乎在 Silverlight 和 Flash 之外,Flash 在动态音频生成功能上胜过 Silverlight(考虑到 Flash 中的基本音频支持如何让我感到惊讶)。Silverlight 似乎根本无法生成动态音频,而 Flash 从播放器版本 10 开始只能正式这样做。
我在这两个平台上都找不到关于动态音频未来的信息,但目前 Flash 的讨论最为活跃。