2013-08-27 52 views

回答

0

我使用下面的代码来播放用软件合成器创建的声音。 样品需要在[-1.0 .. 1.0]的范围内。您应该在页面初始化函数中初始化context

var context = new webkitAudioContext(); 

function playSound(buffer, freq, vol) // buffer, sampleRate, 0-100 
{ 
    var mBuffer = context.createBuffer(1, buffer.length, freq); 

    var dataBuffer = mBuffer.getChannelData(0); 
    var soundBuffer = buffer; 
    var i, n = buffer.length; 
    for (i=0;i<n;i++) 
     dataBuffer[i] = soundBuffer[i]; 

    var node = context.createBufferSource(); 
    node.buffer = mBuffer; 
    node.gain.value = 0.5 * vol/100.0; 
    node.connect(context.destination); 
    node.noteOn(0); 
} 
+0

它不适合我的作品,因为我想送麦克风音频websoket或转换麦克风音频输入字节 –

+0

嗯,这很不幸,是另一个问题。不能帮助你在队友。上面的代码将播放一个音频缓冲区。如果您拥有的值是字节,则值(通常)的范围是[-128..127]。您需要首先将这些值转换为浮点值。 E('(byteVal + 128)/ 255.0)* 2) - 1.0',或者更简单:'((byteVal + 128)/128.0) - 1.0' Google搜索'webKitAudioContext'应该会给你一些合适的结果。 – enhzflep