Web Audio API: Как воспроизвести моно источник только в левом или правом канале?

Есть ли (простой) способ взять монофонический вход и воспроизводить его только в левом или правом канале? Я думаю, что могу сделать это через узел ScriptProcessing, но если есть узел, предназначенный для решения этой ситуации, мне бы очень хотелось знать. В API есть раздел о микшировании, но я не вижу кода о том, как манипулировать каналами таким образом.

Обратите внимание, что я пробовал панорамирующий узел, но, похоже, он не отрезал левую часть от правого канала, я не хочу, чтобы какой-либо звук проходил из одного канала в другой.

3 ответа

Вы действительно хотите использовать ChannelSplitter, хотя есть ошибка, когда канал просто не подключен. Смотрите эту проблему: Воспроизведение колебания на одном канале.

Взгляните на узел сплиттера: https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html

Одно приложение для ChannelSplitterNode предназначено для выполнения "матричного микширования", когда требуется индивидуальная регулировка усиления каждого канала.

(Я еще не пробовал, дайте мне знать:)

Вы можете попробовать использовать CreatePanner() а потом setPosition() на нужный канал. Не забудьте подключить свой предыдущий узел к узлу паннера, а паннер к context.destination,

Например:

//Lets create a simple oscilator just to have some audio in our context
var oscillator = context.createOscillator();

//Now lets create the panner node
var pannerNode = context.createPanner();

//Connecting the nodes
oscillator.connect(pannerNode); //Connecting the oscillator output to the panner input
pannerNode.connect(context.destination); //Connecting the panner output to our sound output

//Setting the position of the sound
pannerNode.setPosition(-1, 0, 0);//If you want it to play on the left channel
pannerNode.setPosition(1, 0, 0);//If you want it to play on the right channel

//Playing the sound
oscillator.noteOn(0);

Это то, что вам нужно?

Другие вопросы по тегам