| var toneLengthSeconds = 1; |
| |
| // Create a buffer with multiple channels. |
| // The signal frequency in each channel is the multiple of that in the first channel. |
| function createToneBuffer(context, frequency, duration, numberOfChannels) { |
| var sampleRate = context.sampleRate; |
| var sampleFrameLength = duration * sampleRate; |
| |
| var audioBuffer = context.createBuffer(numberOfChannels, sampleFrameLength, sampleRate); |
| |
| var n = audioBuffer.length; |
| |
| for (var k = 0; k < numberOfChannels; ++k) |
| { |
| var data = audioBuffer.getChannelData(k); |
| |
| for (var i = 0; i < n; ++i) |
| data[i] = Math.sin(frequency * (k + 1) * 2.0*Math.PI * i / sampleRate); |
| } |
| |
| return audioBuffer; |
| } |
| |