Sto provando a instradare l'audio stereo attraverso un channelsplitter
a 6 canali con controlli di guadagno, e quindi di nuovo in uno channelMerger
, per controllare tutti i 6 canali di un 5.1 set. Il set è collegato tramite HDMI e Windows emette correttamente su tutti e 6 i canali (una schermata in cui è possibile consentire a tutti e 6 i diffusori di riprodurre un suono separatamente).Uscita audio Web 5.1 (6 canali)
Gli unici esempi che ho trovato avere questo pezzo di codice:
if (context.destination.maxChannelCount >= 6) {
context.destination.channelCount = 6;
}
else {
context.destination.channelCount = 2;
}
Quando inizializzazione del audiocontext, i miei valori di default channelCount a 2 e la maxChannelCount è 6.
Io uso il seguente codice per creare lo splitter, concentrazione e guadagni trascorre:
if (context.destination.maxChannelCount >= 6) {
context.destination.channelCount = 6;
}
else {
context.destination.channelCount = 2;
}
context.destination.channelCountMode = "explicit";
context.destination.channelInterpretation = "discrete";
var ammount = context.destination.channelCount;
console.log('Ammount of channels:',ammount); //this outputs 6
window.channelSplitter = context.createChannelSplitter(ammount);
window.channelMerger = context.createChannelMerger(ammount);
postGain.connect(channelSplitter); //postGain is the last node of the audio system
channelMerger.connect(context.destination);
window.channelGains = [];
for(i=0;i<ammount;i++){
channelGains[i] = context.createGain();
channelSplitter.connect(channelGains[i],i,0);
channelGains[i].connect(channelMerger,0,i);
}
ho provato questo in cromo (39.0.2171.71 m), dove è maxChannelCount 6. uscite Firefox 2.
Modifica: Dopo aver giocherellato con il channelSplitter, ho scoperto che tutte le uscite oltre alle prime due sono state disattivate. Questo è corretto secondo lo spec, quando si usano i "diffusori" di interpretazione del canale. Ciò significa che ho bisogno di riempire i canali me stesso, probabilmente usando gli algoritmi descritti here. Devo ancora verificare se chrome emette correttamente tutti e 6 i canali.
Interessante. Questo deve essere riconsegnato al comitato WebAudio in modo che il modo in cui funziona sia definito precisamente nelle specifiche. – notthetup
@notthetup Sì, stavo pensando di presentare un bug su https://code.google.com/p/chromium/issues/list. – MarijnS95
@notthetup Ho deciso di non presentare un bug.Ho manipolato sia channelInterpretation sia channelCountMode, e anche queste funzionalità fanno la differenza. Ad esempio, il collegamento di un canale a una fusione stereo verrà emescolato, in base a [questo] (https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelInterpretation). Quando si imposta ChannelInterpretation su discreto e si collegano entrambi i canali, viene riprodotto solo l'output dell'altoparlante sinistro. Ecco qualcosa su [fiddle with] (http://jsbin.com/legafifome/2/edit) – MarijnS95