SynthMaker

Creating a phasing FX

Archive · 2005 28 old posts

From the original SynthMaker forum (2004–2014), with its members’ names and dates.

galaa ·

I'm trying to create a phasing style effect for my synth. I want to use an LFO to control a parameter to create 'movement' within the sound. I want the LFO to control the cut-off point of a notch filter so that it moves around, thus creating a phasing effect. However, I'm struggling to get the LFO to work properly. If I connect a knob to the cut-off and perform a manual sweep it sounds great. But if I connect an osc to the cut-off I get no sweep. Its proabably that I haven't done something obvious but if anyone else has got LFOs working I'd be grateful if they could offer some advice. I've seen a post that Jorge put up using a ramp as a kind of LFO but this is not the kind of effect I want. I want the cut-off point to sweep through the entire spetrum smoothly rather than jumping from point to point

jorge ·

Hi galaa,

galaa wrote: If I connect a knob to the cut-off and perform a manual sweep it sounds great. But if I connect an osc to the cut-off I get no sweep.

A knob has an output that goes from 0 to 1 ( unless you changed the range ). An osc has an output that goes from -1 to 1. Cutoff should go from 0 to 1. Also it isnt natural to sweep frequency, it would probably stay at high frequencies most of the time, more natural is to sweep pitch.

Here is an example of sweeping cutoff with pitch:

and here is the schematic: [old link]

The pitch used for cutoff is calculated from notePitch+24+24*LFO.

The notePitch+24 is two octaves above the playing note. 24*LFO is a sine that goes from 2 octaves below the current note to 2 octaves above.

If there is something you dont understand please let me know.

galaa ·

Cheers jorge. I was missing the P to F component. It took a bit of figuring out where to place my poly-mono converters but now I've worked that out, sounds great

Tom7777 ·

Thanks all the next thing i was going to do was make a Phasing FX so this is great. Often i seem to miss out one small thing and then think im doing something really wrong so i guess this happens alot with modular synthesis.

Shifrin ·

Another good little example for me to digest, cheers guys 🙂

Shif.

beno ·

Well I'm trying to do something similar but have kind of hit a brick wall with my (very) limited SM skills. I'm trying to make a panner that can be controlled via LFO to do some simple autopann stuff. I've modified a knob module so it can be controlled by an external input (and that seems to be working) and the panning works in the exported VST effect in Tracktion, but I can't get the LFO to work. I've tried adjusting the example above and using the LFO code from another thread but its still not changing. I hope its something stupid I'm not getting. Anyone want to take a look and help me figure out what I'm doing wrong? http://homepage.mac.com/benjaminolswang ... Panner.osm Any help is much appreciated. Thanks, Ben

jorge ·

Hi Ben

I'll have a look at your schematic.

beno ·

Thanks! Be gentle. 🙂 Ben

jorge ·

beno wrote: Be gentle. 🙂

🙂 I'll do my best.

If you prefer I can just post the schematic with what you're trying to achieve, but I thought it would be worth mentioning a few things for learning purposes.

In your schematic you're connecting a poly signal to a float signal, at the moment that conversion is not supported ( actually your selector has mono connectors, could be a bug, but you have one input working as float and the other as poly ). I suggest trying to make the selector pick the correct type ( unless its a bug ) .

The float data works on update triggers, only when there is a change to the float input of the knob does it change and refresh. Mono and Poly data work at sampling rate like 44100, you cant have a knob updating and refreshing at that speed. It's no problem to go from Float to Poly but not from Poly to Float.

I'll try to change your schematic to make it work and I'll post it here.

jorge ·

Ok, one of the problems you probably had with your schematic is due to a sound processing bug that is now fixed, we'll upload a new version of SM later today with the fix.

I tried your module with the last official beta release and I was only getting sound on one channel, with the latest internal version it works fine ( except for the LFO ). Anyway, I'll continue with the schematic and I'll assume you'll have the latest internal version when you try it.

beno ·

Thanks, yeah I saw that bug too with only the one channel of audio, it worked fine in the exported VST in Tracktion though.

Thanks for clarifying the Float vs Mono differences. I look forward to seeing the working schematic from you.

Thanks again!

Ben

jorge ·

Ok, I've simplified your schematic a bit, probably doesnt do everything you wanted but you might understand it better this way.

I think what you were trying to achieve is a bipolar pan. I created a bipolarPan module that accepts a general bipolar input:

here is how I used it:

here is the schematic [old link]

The bipolar ( -1 to 1 ) pan input is first adjusted to go from 0 to 1 before it is used to do the actual panning.

Feel free to ask any questions. I'll probably wait before I go further with it

beno ·

Thanks Jorge, that helps a lot. I appreciate you taking the time. Ben

jorge ·

beno wrote: Thanks Jorge, that helps a lot. I appreciate you taking the time.

It's no problem. This is great feedback for us so I thank you too.

I've just uploaded a new internal version of SM that fixes among others the bug with mono sound processing, you can download it from here:

[old link]

It will still install to a new folder by default. If you use the new default install folder you'll have to move your own toolbox modules across if you created any.

Tom7777 ·

jorge, sorry to change topic a bit -

It will still install to a new folder by default. If you use the new default install folder you'll have to move your own toolbox modules across if you created any.

Maybe you should create a feature that imports custom modules from old version of SM into the new version. So it scans the folders and if there is folders other than the defaults with custom modules it creates new folders named the same and moves the custom modules over and if there are folders named the same (defaults) it just imports any custom modules into them. One step higher than this would be to update any default componants that have been updated which would mean not having to change anything at all if there were new options on them ect.

beno, if you are after pan effects maybe take a look at this post also -

Pan Modules

🙂

malc ·

Tom7777 wrote: Maybe you should create a feature that imports custom modules from old version of SM into the new version.

Maybe. However once things have stabilised the install will go to the same folder each time so your modules will be picked up automatically.

It's only because we're in beta that each install goes to a new folder.

Tom7777 ·

It's only because we're in beta that each install goes to a new folder.

Cool sounds good. Thanks

posh ·

following the first thing on this thread and added some i did a 2 knob LFO. one for slow and one for fast, incase the slow one doesnt really go where you want it too, and switching the values makes it to hard to control.

dont know if any of you find it useful, i do anyways. please dont kill me for my crappy schematics, i dont know SM, but im doing my best. 😉

pic:

schematic: http://nwrecords.com/temp/SM/OSM/sweep2.osm

hope you like. i know ill use it anyways. ^^

- posh.

angstrom ·

Just to stir things up a bit ...

a real Phaser makes use of cascading Allpass filters, I'm not sure that there is one available in SM right now. I have a huge capacity for wrongness though. 🙂

has anyone written an allpass in the code module?

Shifrin ·

angstrom wrote: Just to stir things up a bit ...

a real Phaser makes use of cascading Allpass filters, I'm not sure that there is one available in SM right now. I have a huge capacity for wrongness though. 🙂

has anyone written an allpass in the code module?

Yeah you're right about the Phaser, you could also sweep the frequency of a notch filter, or several notch filters.

I made an allpass filter for the Freeverb port, using just standard SM components IIRC- but can be done of the code component. Mine uses the mono delay SM provides so you'd need to change this to be a fractional delay in order to modulate delay length smoothly. There is a modulatable delayin Jorge's flanger example.

Shif.

angstrom ·

I've never built an allpass myself (so you'll have to bear with me), but as I understand it :

An allpass delays each frequency by its wavelength, so longer (lower) waves are delayed by more than higher frequencies. The phasing effects are then produced by bending the frequency curve from linear towards exponential (for more peaks) and summing the product with the original signal.

this is as opposed to flanging which simply delays the whole wave equally by (n) milliseconds, rather than each frequency by its wavelength.

So I'm not sure how code handles this frequency based delay .. as far as DSP code goes I can figure out a lowpass or hipass, but this baffles me!

all that time doodling in my maths classes has come back to haunt me 🙂

platinumears ·

RBJ has an allpass filter.. no-one made that one yet?

Dan 🙂

skOre ·

I haven't understood the purpose of an allpass filter yet, can somebody explain why one would need an filter for passing all frequencies? O_o

Shifrin ·

skOre wrote: I haven't understood the purpose of an allpass filter yet, can somebody explain why one would need an filter for passing all frequencies? O_o

Have a read of this :-

http://www.harmony-central.com/Effects/Articles/Phase_Shifting/

😉

Shif.

platinumears ·

Here's the RBJ Allpass:

Coefficients:

monoin freq; monoin q; monoout b0; monoout b1; monoout a0; float alpha,cosw0;

cosw0=cos1(freq); alpha=sin1(freq)/(2*q);

b0=1-alpha; b1=-2*cosw0; a0=1+alpha;

Kernel:

monoin in; monoin b0; monoin b1; monoin a0; monoout out; float in1,in2,out1,out2; out=(b0/a0)*(in-out2) + (b1/a0)*(in1-out1) + in2; in2=in1; in1=in; out2=out1; out1=out;

Seems to work properly here, but you need to make sure the q parameter is larger than 0. (a range of ~ 0.3 to 1.4 should be about right)

Dan 🙂

platinumears ·

I think I made a slight mistake in the coeffs code.. it should be:

monoin freq; monoin q; monoout b0; monoout b1; monoout a0; float alpha,cosw0;

cosw0=cos1(freq/2); alpha=sin1(freq/2)/(2*q);

b0=1-alpha; b1=-2*cosw0; a0=1+alpha;

to make the 0-1 freq range equate to 0-nyquist, not 0-samplerate. (Thats right isn't it?)

Here's the file:

http://www.platinumears.com/RBJallpass.zip

Dan 🙂

angstrom ·

Excellent, I have a perverse relationship with Phasing

perhaps that should be 'phase relationship'

*groan*

Tom7777 ·

Allpass filters are confusing i think 🙂 thanks platinumears for your RBJallpass

Wrote something here? To have a post removed or your name hidden, write to [email protected].

Before your first post

A few rules keep this a friendly place. You agree to them once.

Shown next to what you post, here and in the app. It doesn’t have to be your real name: 3–24 lower-case letters, digits or _ (capitals become lower case, spaces become _).

    Then your post goes up straight away.

    Delete this reply?

    Open it in SynthMaker?

    It goes on the track you’re editing there, in place of that track’s sound, and into My sounds. Your other tracks stay as they are.

    Want to keep that track’s sound? Start a new song in SynthMaker first (Song › New song), then open this.

    Report this reply?

    Only the developer reads reports. The person isn’t told who reported them.

    What’s wrong with it?

    Block this person?

    You won’t see their posts and replies here any more. They aren’t told, and you can unblock them at any time.

    People you’ve blocked

    Their posts and replies are hidden from you. Unblock someone to see them again.

    The community rules

    A few rules keep this a friendly place. Everyone agrees to them once, before their first post.