Ein Flangereffekt ist ein Modulationseffekt, der das Eingangssignal kopiert und dessen Tonhöhe (Pitch) mit einem Niedrigfrequenzoszillator (LFO: engl. Low-frequency oscillator) ändert. Der Unterschied zum Chorus-Effekt besteht darin, dass auf der Effektlinie eine Rückkopplung gibt. Da die Verzögerung im Bereich von paar Millisekunden liegt, resultieren daraus Phasenlöschungseffekte. Das gibt dem Flanger seinen charakteristischen Space-Sound.
Eine andere Eigenheit vom Flanger ist, dass hierbei üblicherweise auch das trockene Signal verzögert werden muss, um eine starke Phasenauslöschung und einen drehend empfundenen Sound zu erzielen.
Im folgenden ist das Grundprinzip eines Flangers aufgezeigt.
Parameter
Folgende Kontrollparameter sind für einen Flanger-Effekt üblich:
Frequenz
Mit der Frequenz kontrolliert man die Geschwindigkeit der Frequenzmodulation. Üblicherweise in Hertz [Hz]. Typische Werte zwischen 1Hz und 25Hz.
Tiefe (Depth)
Mit diesem Parameter kontrolliert man die Wirksamkeit der Modulation. Sie wird in Prozent oder in Millisekunden (Delay-Zeit) angegeben. Wenn z.B. die Basis-Delayzeit 25ms ist und die Tiefe 50%, dann bedeutet das, dass das Delay zwischen 12,5ms und 37,5ms moduliert wird.
Pre-Delay
Die Verzögerung des trockenen Signals. Dies kann parametriert werden, um die Stärke und Charakteristik des Phasenauslöschungseffektes einzustellen.
Wet/Dry
Hiermit wird kontrolliert, wie stark das modulierte Signal ins Ausgangssignal beigemischt werden soll.
Modulation mit LFO
Ein LFO ist nichts anderes als ein Signalgenerator, der in der Regel ein niederfrequentes Sinus-Signal generiert. Diese Signalquelle nutzt man u. a. zur Modulation eines Signals.
Im Fall eines Chorus moduliert man „die Abtastfrequenz“. Konkret tut man das, in dem man die Delay-Zeit kontinuierlich erhöht und reduziert. Diese Delay-Zeit ist in der Regel sehr kurz und liegt im Fall von Chorus in der Regel 5-50ms. Man nimmt eine Referenzdelayzeit. Z.b. 20ms und moduliert diese mit LFO zwischen 10ms und 30ms. Dadurch verlangsamt und beschleunigt das Signal und es entsteht eine Frequenzverschiebung. Dies wird musikalisch als eine Intonation wahrgenommen.
Implementierung
LFO
Für das Flanger-Puffer wird ein Kreispuffer benötigt, in dem Eingangssignal aufgenommen wird.
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 32 |
/* LFO */ float c_flanger::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; } /* Calculate rotating delay */ float c_flanger::get_current_delay(void){ //Calculate time float t; t=(float)d_base+depth*lfo(); //Return the delay time return t; } |
Hauptroutine
Der Algorithmus vom Chorus ist vergleichbar mit einem Delay-Algorithmus ohne Feedback und mit variabler Delay-Zeit.
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 32 33 34 35 36 37 38 39 40 41 |
/* Flanger main process */ float c_flanger::process(float x){ float y; float t_c; //Current delay //Get tap distance t_c=get_current_delay(); //Tap distance //Calculate the position of the pointer int wptr; wptr=fptr-lrint(t_c*FSms); if(wptr<0){ wptr+=flanger_len; } //Calculate output y=G_d*drybuf[dryptr] + G_w*fbuf[wptr]; //Update the buffer fbuf[fptr]=x+G_fb*fbuf[wptr]; drybuf[dryptr]=x; //Increment fptr++; if(fptr>=flanger_len){ fptr=0; } dryptr++; if(dryptr>=l_drybuf){ dryptr=0; } return y; } |
Ein Prozess ohne Verzögerung vom trockenen Signal sieht folgendermaßen aus:
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 32 33 34 35 |
/* Main process without delay on dry line */ float c_flanger::process_nondelay(float x){ float y; float t_c; //Current delay //Get tap distance t_c=get_current_delay(); //Tap distance //Calculate the position of the pointer int wptr; wptr=fptr-lrint(t_c*FSms); if(wptr<0){ wptr+=flanger_len; } //Calculate output y=G_d*x + G_w*fbuf[wptr]; //Update the buffer fbuf[fptr]=x+G_fb*fbuf[wptr]; //Increment fptr++; if(fptr>=flanger_len){ fptr=0; } return y; } |
Klangbeispiele
Anbei ist dieser Algorithmus mit ein paar verschiedenen Parametern zu hören.
Schreibe einen Kommentar