Ich versuche, ein benutzerdefiniertes Panning-Steuerelement mit der Web Audio API zu erstellen, aber ich kann keinen Ton aus dem richtigen Kanal mit den Channel-Splittern und Merger-Knoten erhalten:Web Audio: Kein Ton im rechten Kanal
var context = new webkitAudioContext(),
destination = context.destination,
osc = context.createOscillator(),
gainL = context.createGainNode(),
gainR = context.createGainNode(),
splitter = context.createChannelSplitter(2),
merger = context.createChannelMerger(2);
osc.frequency.value = 500;
osc.connect(splitter);
splitter.connect(gainL, 0);
splitter.connect(gainR, 1);
gainL.connect(merger, 0, 0);
gainR.connect(merger, 0, 1);
osc.noteOn(0);
gainL.gain.value = 0.1;
gainR.gain.value = 0.5;
osc.noteOff(2);
merger.connect(destination);
Fehle ich etwas offensichtlich hier? Es gibt eine JSBin-Vorschau des obigen Codes hier: http://jsbin.com/ayijoy/1/
Ich verwende Chrome v24.0.1312.57, nur für den Fall, dass es von Nutzen ist.
Das ist eine nette Lösung, danke; Es stellt sich heraus, dass mir etwas offensichtlich fehlte. – SquareFeet
Aber ich dachte, das Mischen von Mono -> Stereo würde automatisch durchgeführt, wenn eine Monoquelle an ein Stereoziel angeschlossen wird. Die Spezifikation ist hier nicht so klar: http://www.w3.org/TR/webaudio/#UpMix Erwägen Sie, einen Oszillator direkt an den Zielknoten anzuschließen: Der Sound wird sowohl in L- als auch in R-Kanälen gespielt, was auf ein Signal hindeutet Auto-Up-Mix; Ich hätte gedacht, dass das gleiche in meinem Frage-Szenario passieren würde ... – SquareFeet
Im Allgemeinen passiert Upmixing automatisch. Mit dem Splitter-Knoten können Sie jedoch direkt mit dem Signal umgehen, was nicht der Fall ist. Aus der Spezifikation: "[AudioSplitterNode] hat einen einzigen Eingang und eine Anzahl von" aktiven "Ausgängen, die der Anzahl der Kanäle im Audio-Eingangsstrom entspricht. ... Alle Ausgänge, die nicht "aktiv" sind, geben Stille aus und sind normalerweise nicht mit irgendetwas verbunden. " – cwilso