2016-10-22 3 views
2

Ich habe ein HTML5-Spiel gemacht, das ADPCM-Samples und Musik verwendet.WebAudio: Steiler Tiefpass?

Die Musik selbst ist bei 11025Hz Mono und ich machte einen einfachen Nearest-Neighbor-Resampler um 22050Hz plus einen falschen Stereo-Algorithmus zu bekommen.

Die Samples werden während des Ladens vor dem Upsampling geladen, um die CPU-Last während der Laufzeit zu reduzieren (kein Echtzeit-Resampling erforderlich).

So erreichte ich diesen echten Retro-Sound wie in den späten 90er Jahren.

Funktioniert soweit noch.

Aber der "echte" Resampler von WebAudio, der die 22050Hz mit der internen Samplerate abgleicht, scheint auf einigen Browsern nicht sogar besser zu sein :-D.

Wie kann ich alles über 11025Hz abschneiden (Nyquist Frequenz von 22050Hz)? Ideal wäre: 0-11025Hz unberührt aber 11026Hz-max herausgefiltert.

Der vom WebAudio api bereitgestellte Tiefpassfilter ist nicht steil genug und erzeugt Resonanzen bei der Filterfrequenz.

Ich möchte nicht zulassen, dass die "crappy" Frequenzen so hoch gehen. Das "crappy" Resampling sollte bei 11025Hz stoppen. Ich denke, es ist nicht gut, Hochtöner und sogar die Spieler zu hören, wenn die starken Bassfrequenzen im hohen Frequenzbereich spiegeln.

Ich will nicht MP3 & Co hier. ADPCM-> MP3 benötigt mehr Bitrate als echtes ADPCM (Die gewünschten Artefakte sind schwer zu codieren ohne hörbaren Verlust) :-).

Ich lese über FIR und IIR Filter, aber ich habe sie nicht verstanden, weil es zu mathematisch ist.

Ich denke, das ist, was ich brauche.

Ich brauche etwas, das ohne einen akademischen Grad in Code umgewandelt werden kann :-D.

Antwort

0

Ich bin wahrscheinlich zu spät zur Party, aber um eine steilere Filterkurve zu erreichen, brauchen Sie einfach mehrere Anwendungen des Biquad-Filters, d. H. Mehrere BiquadFilterNode-Objekte aneinandergekettet.

Ein einzelner BiquadFilterNode mit lowpass hat eine 12db pro Oktave Rolloff, von der Sie leicht die Anzahl der Filterknoten berechnen können, die Sie benötigen. Wenn Sie Bedenken bezüglich der Resonanz haben, verringern Sie sie einfach (Q Einstellung).

Verwandte Themen