AudioBuffer.copyFromChannel()

AudioBuffer.copyFromChannel() - копіює дані з вказаного каналу в масив.

Синтаксис:

AudioBuffer.copyFromChannel(destination, channelNumber, startInChannel);

Параметри:

AudioBuffer - об'єкт AudioBuffer.

destination - зміна типу масиву Float32Array в яку необхідно скопіювати дані з вказаного каналу.

channelNumber - номер каналу з якого необхідно скопіювати дані.

startInChannel - не обов'язково вказувати. З якого індексу починати копіювати дані. Значення по замовчуванню 0.

Опис:

copyFromChannel() метод об'єкту AudioBuffer який копіює дані вказаного каналу в масив Float32Array.

Приклад:

var audioCtx = new window.AudioContext(); var myArrayBuffer = audioCtx.createBuffer(2, 10, audioCtx.sampleRate); var mas = new Float32Array(myArrayBuffer.length); //створюємо масив куди будемо копіювати дані каналу myArrayBuffer.copyFromChannel(mas, 0); //копіюємо дані з 1 каналу alert(mas); var audioCtx = new window.AudioContext(); var myArrayBuffer = audioCtx.createBuffer(2, 45000, audioCtx.sampleRate); //створюємо буфер на 2 канали //заповнюємо буфер випадковими даними for(var channel=0; channel<myArrayBuffer.numberOfChannels; channel++){ var nowBuffering = myArrayBuffer.getChannelData(channel); for(var i=0;i<myArrayBuffer.length;i++){ nowBuffering[i]=Math.random()*2-1; } } var mas = new Float32Array(myArrayBuffer.length); myArrayBuffer.copyFromChannel(mas, 0); alert(mas);

Також можна скопіювати дані каналу присвоївши зміній результат метода AudioBuffer.getChannelData():

var audioCtx = new window.AudioContext(); var myArrayBuffer = audioCtx.createBuffer(2, 5, audioCtx.sampleRate); var mas = new Float32Array(myArrayBuffer.length); //створюємо масив куди будемо копіювати дані каналу //заповнюємо буфер випадковими даними for(var channel=0; channel<myArrayBuffer.numberOfChannels; channel++){ var nowBuffering = myArrayBuffer.getChannelData(channel); for(var i=0;i<myArrayBuffer.length;i++){ nowBuffering[i]=Math.random()*2-1; } } myArrayBuffer.copyFromChannel(mas, 0); //копіюємо дані з 1 каналу за допомогою copyFromChannel var mas2=myArrayBuffer.getChannelData(0); //копіюємо дані з 1 каналу через присвоєння alert('1: '+mas+' \n2: '+mas2);