我需要做一些混音工作。我在Adobe帮助中找到了示例:
var sourceSnd:Sound = new Sound();
var outputSnd:Sound = new Sound();
var urlReq:URLRequest = new URLRequest("test.mp3");
sourceSnd.load(urlReq);
sourceSnd.addEventListener(Event.COMPLETE, loaded);
function loaded(event:Event):void
{
outputSnd.addEventListener(SampleDataEvent.SAMPLE_DATA, processSound);
outputSnd.play();
}
function processSound(event:SampleDataEvent):void
{
var bytes:ByteArray = new ByteArray();
sourceSnd.extract(bytes, 4096);
event.data.writeBytes(upOctave(bytes));
}
function upOctave(bytes:ByteArray):ByteArray
{
var returnBytes:ByteArray = new ByteArray();
bytes.position = 0;
while(bytes.bytesAvailable > 0)
{
returnBytes.writeFloat(bytes.readFloat());
returnBytes.writeFloat(bytes.readFloat());
if (bytes.bytesAvailable > 0)
{
bytes.position += 8;
}
}
return returnBytes;
}
它说:
target:ByteArray — A ByteArray object in which the extracted sound samples are placed.
length:Number — The number of sound samples to extract. A sample contains both the left and right channels — that is, two 32-bit floating-point values.
我建议
returnBytes.writeFloat(bytes.readFloat());
returnBytes.writeFloat(bytes.readFloat());
必须写入leftchannel值和rightchannel值。
bytes.position += 8
减少样本,使声音播放更快。我试图将值修改为4.速度减慢到2,我只有噪音,为什么?其他值,如16或更高,没有声音输出。为什么?如何通过一个浮点值来制作各种声音效果?
我需要更多信息来了解我的工作,请帮助。
更新:我稍微更改了upOctave()函数,现在可以调整速度。
function upOctave(bytes:ByteArray):ByteArray
{
var returnBytes:ByteArray = new ByteArray();
bytes.position = 0;
var position:int = 0;
var speed:Number = 0.75;
while(bytes.bytesAvailable > 0)
{
if (bytes.bytesAvailable > 0)
{
bytes.position = int(speed*position)*8;
}
position++;
if(bytes.bytesAvailable>0){
returnBytes.writeFloat(bytes.readFloat());
returnBytes.writeFloat(bytes.readFloat());
}
}
return returnBytes;
}
答案 0 :(得分:0)
简而言之,bytes.position += 8;
并不意味着游戏。
每个浮点数4个字节和两个通道。移动,如下图所示。
8 byteArray是1套。换句话说,采样。
4byte 4byte
[ L ][ R ] [ L ][ R ] [ L ][ R ] [ L ][ R ] ...
1 2 3 4
L,R 32浮动。 -1和-1之间的连续数据,如Sin函数。
创建波形,即可控制声音。直波,锯齿波,三角波,正弦波,噪声波......最终声音取决于波形。
如果你想调整playrate阅读这篇文章:http://www.kelvinluck.com/2008/11/first-steps-with-flash-10-audio-programming/