Der Wah-Wah-Effekt ist ein Filtereffekt, der die hohen Frequenzen im Signal herausfiltert (Tiefpass) oder abschwächt (Shelving Filter). Die Filterung wird
- mit einem Wahwah-Pedal (Standard-Wahwah Effekt) oder
- mit einem LFO (AutoWah)
kontrolliert. Im Fall vom WahWah-Pedal wird die Pedalposition genutzt, um die Frequenz des Tiefpassfilters zu ermitteln. Im Fall vom Auto Wah wird die Frequenz aus dem LFO abgeleitet.
Im folgenden ist das Grundprinzip des Wah-Wah-Effekts aufgezeigt.
Parameter
Folgende Kontrollparameter sind für einen Wah-Wah-Effekt üblich:
Source
Hier wird gewählt, ob die Steuerung mit LFO (Auto Wah) oder mit einem Expression-Pedal erfolgen soll.
Tiefe (Depth)
Mit diesem Parameter kontrolliert man die negative Verstärkung des Filters, im Falle eines Kuhschwanzfilters. (Shelving Filter) Hiermit wählt man, ob man einen milden oder starken Effekt haben möchte.
Breite (Width)
Mit diesem Parameter wählt man die Frequenzschranken der Filterung. Üblicherweise sind diese zwischen 500Hz und 4000Hz. Je breiter der Effekt, desto größer das Intervall.
Implementierung
LFO
LFO steuert das Tiefpassfilter. Nach jeder Änderung werden die Parameter des Tiefpassfilters aktualisiert.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
float c_autowah::lfo(void){ float y_lfo; //Calculate LFO value y_lfo=sin(a_lfo); //Update angle a_lfo+=a_step; if(a_lfo>=2*PI){ a_lfo=a_lfo-2*PI; } return y_lfo; } void c_autowah::update_wah_frequency(void){ float sin_x; sin_x=lfo(); if(i_update>=n_update_reset){ //Update filter frequency frequency=freq_low+(sin_x+1)*freq_scaler; wahfilter.set_freq(frequency); i_update=0; }else{ i_update++; } } |
Hauptroutine
Der Wah-Wah-Hauptalgorithmus ist dann einfach ein LP-Filter. (In dem Fall als Biquad-Filter implementiert)
1 2 3 4 5 6 7 8 |
/* Wah wah main routine */ float c_autowah::process(float x){ update_wah_frequency(); return wahfilter.process(input_gain*x); } |
Klangbeispiele
Anbei ist dieser Algorithmus mit ein paar verschiedenen Parametern zu hören.