2016-04-24 5 views
0

Ich lerne die WebAudio-API und experimentiere, indem ich einen einfachen Audioplayer mit einem Visualisierer und einem Equalizer erstelle.Kann createAnalyser() und createGain() nicht mit audioContext() verbinden

Sowohl der Visualisierer als auch der Equalizer funktionieren eigenständig, aber wenn ich sie beide an den AudioContext angeschlossen habe, funktioniert der Equalizer nicht mehr.

Hier einige der Code ...

Der Equalizer

var sum = APP.audioContext.createGain(); 
APP.lGain.connect(sum); 
APP.mGain.connect(sum); 
APP.hGain.connect(sum); 
sum.connect(APP.audioContext.destination); 

Und die visualiser

APP.analyser = APP.audioContext.createAnalyser(); 
APP.source.connect(APP.analyser); 
APP.analyser.connect(APP.audioContext.destination); 

Wenn ich entfernen Sie die letzte Zeile APP.analyser.connect(APP.audioContext.destination); dann der Equalizer funktioniert, aber dann ist mein Visualizer bricht offensichtlich.

Dies funktioniert in Firefox, aber nicht in Chrome (OSX).

Vielen Dank im Voraus für jede Hilfe!

+0

Ich denke, Sie könnten 'sum.connect (APP.analyser)' und lassen Sie dann Analyzer mit dem 'audioContext.destination' verbunden. – DavidDomain

+0

Danke @DavidDomain. Ich habe das gerade versucht und leider kein Glück – DanV

Antwort

1

1) Meine Vermutung ist, dass es nicht, dass der Equalizer „funktioniert nicht mehr“ - es ist, dass Sie sowohl den Ausgang des Equalizers und der Ausgang des Analysators sich verbinden (die ein Durchschlagen der Quelle !) zum Ziel, und es summiert sie - so haben Sie eine ausgeglichene Kopie, die mit einer nicht ausgeglichenen Kopie summiert, und es verringert dramatisch den Effekt des Entzerrers. Die Lösung ist einfach - schließen Sie den Analysator nicht an das Ziel an. (Es muss nicht mit irgendetwas verbunden sein, um zu funktionieren.)

2) Ich vermute, dass Sie eine weniger als optimale Art der Entzerrung verwenden. Sie sollten Shelving-Filter und einen Peak-Filter in der SERIE verwenden (einer, der mit einem anderen verbunden ist), nicht drei Filter parallel (Summierung zu einem Knoten). Wenn Sie sie parallel verbinden, erhalten Sie ungerade Phasenoffset-Effekte. Schau mal hier: Web audio API equalizer.