如何基于原始WAV / DATA或其他Sound对象动态创建新的Sound对象?

时间:2012-01-31 20:00:12

标签: flash actionscript-3 audio dynamic signal-processing

是否有任何AS3库或代码片段可以即时(在运行时)创建Sound对象的更改版本?基于:

  • 现有的Sound对象;
  • ByteArray对象;
  • 其他一些音频文件格式来源;

例如,假设您有 “干” 枪声。你可以:

  • 制作 混响 版本,使其发声遥远;
  • 制作 低通滤波 版本,使其发声隔壁/隔壁;
  • 制作 Ping-Pong延迟 版本,使其发声 cavernous ;

如果这个预处理在游戏开始之前发生,那么你所要做的就是播放改变后的Sound对象。这样就不需要使用 SampleDataEvent API ,它仍然消耗相当多的CPU能力。

那么,可以在运行时使用音频内容创建填充 <{1>}个对象吗?

更新

为了进一步澄清我的问题,我正在寻找一种在运行时编译Sound对象的方法,而不是“合成”或“ stream ”音频与 SampleDataEvent API (CPU使用率仍然过于激烈)。

我的最终目标是轻松创建预先嵌入我的库(或外部SWF / SWC)的某些干声的副本,但在运行之前使用各种过滤器更改它们,然后将它们编译为Sound对象(可能有一些动态SWF生成hackery)。

您可以想象它就像...使用 DAW 音频软件加载现有声源,使用您选择的滤镜(LP,HP,Reverb,Delay,Distortion)离线处理它。 ..),渲染它,将它添加到一个新的Flash文档的库中,设置一个类名,和Voila!您的最终结果是在重复(但已更改)的Sound对象中播放的内容。

如果您知道可以执行此类离线DSP处理的任何ActionScript 3.0库(SWC或源),我很乐意听到它。

1 个答案:

答案 0 :(得分:1)

使用Flash Player 11,您可以使用Sound.loadPCMFromByteArray在运行时从ByteArray创建声音,并且您可以处理PCM ByteArray以获得您想要的效果,然后使用它创建声音。 您可以参考green sock volume example(或其他库)来了解如何处理声音,我对此没有太多了解; o)