gpt4 book ai didi

flash - 如何在Flash中将生成的波形作为声音播放?

转载 作者:行者123 更新时间:2023-12-02 22:47:52 26 4
gpt4 key购买 nike

如果我在 ActionScript 3中将声音波形存储为ByteArray,该如何将其转换为可以播放的Sound对象?

请注意,阵列中充满了声音样本-完整的生成波形。它不是包含mp3或其他压缩数据的数组。

最佳答案

我写了很多关于Flash声音合成的教程,其中一些是关于波表合成的。

一般概念是,您需要以固定的时间间隔用音频数据填充音频缓冲区(Sound对象)。 Sound对象在需要音频数据时将调度事件。数据块可以在2048和8192个样本之间的任何位置。以下是一些伪代码,可能会对您有所帮助。它将根据数组中的数据创建一个音频循环。

var readIndex:int = 0;
var data:Array = yourData;
var sound:Sound = new Sound()
sound.addEventListener( SampleDataEvent.SAMPLE_DATA, onSampleData );
sound.play();


function onSampleData( event:SampleDataEvent ):void
{
for( var i:int = 0; i < 2048; i++ )
{
if( readIndex + 1 > data.length )
{
readIndex = 0;
} else {
readIndex++;
}

event.data.writeFloat( data[i] );
event.data.writeFloat( data[i] );
}
}

正如我提到的,我写了许多有关在Flash中处理声音的文章。这是一篇这样的文章: http://labs.makemachine.net/2010/07/slice-tool-looper/

关于flash - 如何在Flash中将生成的波形作为声音播放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4714953/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com