Author |
Message |
Dr. Spankenstein
Joined: Mar 03, 2007 Posts: 136 Location: Cambridge
Audio files: 1
|
Posted: Sat Jan 19, 2008 5:10 am Post subject:
Creating a phaser using All Pass Filters |
 |
|
Code: |
SndBuf Buffer;
Gain Mixer;
1 => Buffer.loop;
DelayA Stage1;
DelayA Stage2;
DelayA Stage3;
DelayA Stage4;
DelayA Stage5;
DelayA Stage6;
DelayA Stage7;
DelayA Stage8;
Gain PhaserFeedback;
Buffer => Mixer => dac;
Buffer => Stage1 => Stage2 => Stage3 => Stage4 => Stage5 => Stage6 => Stage7 => Stage8;
Stage8 => PhaserFeedback => Stage1;
Stage1 => Mixer;
0.5 => PhaserFeedback.gain;
3 => Mixer.op;
"DC_Kit03_175_Loop3.wav" => Buffer.read;
10::second => now;
|
This is what I have so far. Am I going about this the right way and how would I modulate the phase using a LFO?
Thanks
Rhys |
|
Back to top
|
|
 |
Dr. Spankenstein
Joined: Mar 03, 2007 Posts: 136 Location: Cambridge
Audio files: 1
|
Posted: Wed Jan 23, 2008 5:46 am Post subject:
|
 |
|
This code gets better results but I still need to sync the LFO:
Code: |
SndBuf Buffer;
Gain UnProcessed;
Gain Processed;
Gain Mixer;
1 => Buffer.loop;
DelayA Stage1;
DelayA Stage2;
DelayA Stage3;
DelayA Stage4;
DelayA Stage5;
DelayA Stage6;
DelayA Stage7;
DelayA Stage8;
Gain PhaserFeedback;
0.1::ms => Stage1.delay;
0.2::ms => Stage2.delay;
0.3::ms => Stage3.delay;
0.4::ms => Stage4.delay;
0.5::ms => Stage5.delay;
0.6::ms => Stage6.delay;
0.7::ms => Stage7.delay;
0.8::ms => Stage8.delay;
Buffer => UnProcessed;
Buffer => Stage1 => Stage2 => Stage3 => Stage4 => Stage5 => Stage6 => Stage7 => Stage8 => Processed;
0.5 => UnProcessed.gain;
0.5 => Processed.gain;
UnProcessed => Mixer;
Processed => Mixer;
Mixer => dac;
1 => Mixer.op;
"DC_Kit03_175_Loop3.wav" => Buffer.read;
10::second => now;
SinOsc LFO;
4 => LFO.freq;
|
|
|
Back to top
|
|
 |
Inventor
Stream Operator

Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
Posted: Wed Jan 23, 2008 2:15 pm Post subject:
|
 |
|
I tried it, but I don't get any noticeable effect, or maybe its the nature of my music samples. I had to modify the code at the bottom to change the .wav filename to run it. I noticed you're using 8 all-pass-filters, and each one contributes what, 90 or 180 degrees of phase delay, is that right? One of those. So with 8 of them, aren't you sort of going around the block a few times? I'm not sure if this is a standard way to do it or not, is it? I wonder why I didn't notice much effect - what effect should I have noticed? |
|
Back to top
|
|
 |
Kassen
Janitor


Joined: Jul 06, 2004 Posts: 7678 Location: The Hague, NL
G2 patch files: 3
|
Posted: Wed Jan 23, 2008 2:33 pm Post subject:
|
 |
|
Hmmmm, don't those delays need a "mix" setting? Right now I think they are working as a single delay and I don't see the use of the stages? _________________ Kassen |
|
Back to top
|
|
 |
Dr. Spankenstein
Joined: Mar 03, 2007 Posts: 136 Location: Cambridge
Audio files: 1
|
Posted: Wed Jan 30, 2008 4:01 am Post subject:
|
 |
|
The DelayA Ugen has no .mix function so other than creating a separate gain for each DelayA then I'm not sure how I would mix them.
Unfortunately, I can't work out a way of making the DelayA Ugens work as separate stages?
Is this...
Code: |
Buffer => Stage1 => Stage2 => Stage3 => Stage4 => Stage5 => Stage6 => Stage7 => Stage8 => Processed;
|
The same as...
Code: |
Buffer => Stage1 => Gain Stage1Gain => Processed;
Buffer => Stage2 => Gain Stage2Gain => Processed;
etc.
|
I know that I'm not really supposed to change the amplitude of the signal as the original signal passes through each stage and just affect the phase. Having a separate Gain for each Stage will affect the amplitude?
Can you help a confused man out?
Thanks,
Rhys |
|
Back to top
|
|
 |
Frostburn

Joined: Dec 12, 2007 Posts: 255 Location: Finland
Audio files: 9
|
Posted: Wed Jan 30, 2008 8:17 am Post subject:
|
 |
|
I think you've misunderstood what the DelayA is.
It is not a phase delay but a regular delay that has the phase smearing as an artifact on non-integer delays.
What you need is propably OnePole with the .allpass setting.
And I say propably because I have no idea what you're trying to make.
Can you elaborate a little on what you're trying to achieve.
Hope that helps , cheers _________________ To boldly go where no man has bothered to go before. |
|
Back to top
|
|
 |
Dr. Spankenstein
Joined: Mar 03, 2007 Posts: 136 Location: Cambridge
Audio files: 1
|
Posted: Wed Jan 30, 2008 12:24 pm Post subject:
|
 |
|
What I'm going for is this:
http://en.wikipedia.org/wiki/Phaser_%28effect%29
It mentions the use of All Pass filters, but in all honesty I'm stuck as to how to use them in this case.
Thanks for your help,
Rhys |
|
Back to top
|
|
 |
ian-s

Joined: Apr 01, 2004 Posts: 2672 Location: Auckland, New Zealand
Audio files: 42
G2 patch files: 626
|
Posted: Wed Jan 30, 2008 1:17 pm Post subject:
|
 |
|
There are two distinct types of allpass.
The delay line based one which is a combination of feedforward and feedback comb filter, often used in reverbs.
The allpass filter used for the phasing effect is like a lowpass filter in it's phase response, but has a flat frequency response. You need two allpass filter poles for each phaser notch. |
|
Back to top
|
|
 |
Frostburn

Joined: Dec 12, 2007 Posts: 255 Location: Finland
Audio files: 9
|
Posted: Wed Jan 30, 2008 3:01 pm Post subject:
|
 |
|
Here you go! A phaser patch:
Code: | 32 => int stages; //The number of allpass filters to put in series, bigger number => bigger effect
//The Patch
Noise n => Gain in;
Gain out => dac;
n => Gain dry => out;
out => Gain feedback => in;
PoleZero ap[stages];
in => ap[0];
for(1 => int i; i < stages; i++){
ap[i-1] => ap[i];
}
ap[stages-1] => Gain wet => out;
//Controls
0.5 => feedback.gain;
0.5 => dry.gain;
0.5 => wet.gain;
//LFO patch to sweep the notch frequency
//Sweep between 0.0 and 1.0
SinOsc lfo_sin => Gain lfo => blackhole;
1.0 => lfo_sin.freq;
0.5 => lfo_sin.gain;
Step lfo_shift => lfo;
0.5 => lfo_shift.next;
0.75 => lfo.gain;
while(true){
for(1 => int i; i < stages; i++){
lfo.last() => ap[i].allpass;
}
10::ms => now;
} |
Just replace Noise n with the source of your choice.
Or better yet make a class out of this so that it can be used more readily.
I propably will, it's a cool effect, but I won't just yet take the fun out of figuring that out by yourself. :) _________________ To boldly go where no man has bothered to go before. |
|
Back to top
|
|
 |
Dr. Spankenstein
Joined: Mar 03, 2007 Posts: 136 Location: Cambridge
Audio files: 1
|
Posted: Wed Jan 30, 2008 4:30 pm Post subject:
|
 |
|
Bloody hell...
You guys never cease to amaze me with these patches, makes me feel like a complete noob, which I guess I kinda am.
I was totally thinking about this the wrong way, not to mention using the wrong kind of AllPass filter. I didn't even know there were two types!
Thanks for the help, tis very much appreciated.
Rhys |
|
Back to top
|
|
 |
Inventor
Stream Operator

Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
Posted: Thu Jan 31, 2008 1:59 pm Post subject:
|
 |
|
Wow, good phasor sound. Should I put it in the math/music project as well? |
|
Back to top
|
|
 |
|