SynthMaker

Portamento

Archive · 2005 27 old posts

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

galaa ·

Anyoe got any ideas as to how to implement a portamento/glide system within SM? I can do oit in Reaktor but am having problems transferring it into sm

stefan ·

Actually, at the moment it probably isn't doable. Since each voice is "reset" when started, you can not know what the last pitch / frequency was. This should probably be solved at the midi level imo, but I don't know what jorge and malc thinks about it 🙂

malc ·

Correct Stefan - sorry galaa, this isn't possible just yet. I think this issue is related to the one being discussed here.

galaa ·

I thought as much I've had a look at the other thread and after speaking to malc i don't think it will be possible to implement any kind of portamento system until there is a method of limiting the polyphony. I could be wrong but thats what I think

It would be good to be able to create portamento as it can create very useful and interesting effects.

Just for your information the way I implement a portamento system in Reaktor is through the use of a simple LPF. Feed the MIDI note value into the audio input of the LPF and send a numerical value representing the portamento time into the cut-off value input and bob's your uncle.

thanks for the replies malc & stefan

jorge ·

galaa wrote: i don't think it will be possible to implement any kind of portamento system until there is a method of limiting the polyphony.

Do you need general limiting of polyphony to any number of voices or would it be enough to have a MidiToMono component for monophony?

galaa ·

It would be enough for now just to be able to make my synth monophonic although perhaps in the future it would be nice to be able to limit synths to a set number of voices

Shifrin ·

galaa wrote: It would be enough for now just to be able to make my synth monophonic although perhaps in the future it would be nice to be able to limit synths to a set number of voices

Couldn't agree more! Would be great for now just to have monophony as an option, with user definable max poly at some later date 🙂

Shif.

stefan ·

If you want to work on monophonic synths, this is doable already though. But the pitch etc will freak out if you try to play polyphonic notes. But apart from that, just put a poly2mono directly after the midi2poly and work on that signal instead of a poly signal.

I just mean that you don't have to wait for the midi2mono component to get going 🙂

Shifrin ·

stefancrs wrote: I just mean that you don't have to wait for the midi2mono component to get going 🙂

Thanks for the tip!

Shif.

galaa ·

stefancrs wrote: just put a poly2mono directly after the midi2poly and work on that signal instead of a poly signal.

Cheers for the tip, but I must be doing something wrong. I converted the poly signal coming out of the MIDI2Poly into a mono signal. Can I feed that straight into an oscillator cos when I tried I get no sound

stefan ·

galaa wrote: stefancrs wrote: just put a poly2mono directly after the midi2poly and work on that signal instead of a poly signal.

Cheers for the tip, but I must be doing something wrong. I converted the poly signal coming out of the MIDI2Poly into a mono signal. Can I feed that straight into an oscillator cos when I tried I get no sound

You probably need to use a mono oscillator, I'll do a test. hold on 🙂

stefan ·

Screenshot is on its way!

stefan ·

Ofcourse, one have to do some coding and stuff, but it's atleast doable 🙂

galaa ·

Brilliant! Thanks a lot. I thouht it was something to do with the oscillators being poly, but I didn't realise I'd have to code my own, pretty obvious really

stefan ·

Here's some more handy stuff.

monoin pitchIn; monoout pitchOut; float lastTone; float cmp; cmp = (pitchIn >= 0.0001); pitchOut = (cmp & pitchIn) + (1.0 - (cmp & 1.0)) * lastTone; lastTone = pitchOut;

This little snippet will keep the last pressed key's pitch instead of going down to pitch 0.0 when no key is pressed.

monoin pitchIn; monoout pitchOut; float porta; porta = 0.9999; pitchOut = pitchIn * (1.0 - porta) + pitchOut * porta;

Small simple portamento thingy. The closer porta is to 1, the slower the pitch will change. Just a 1-pole lowpass filter really.

Shifrin ·

That's some very useful stuff stefancrs, cheers!!!

Shif.

galaa ·

thats fantastic thank you!!!

a couple of new questions for you stefan, why does a LPF filter creata a portamento effect, I've seen/used the same system in Reaktor but I've never been able to find out why. The NI forum for reaktor tell you how to build a portamneto control using an LPF but they don't why or how it works.

Also, I tried creating an input into the code module so that I could vary the portamento time with a control, but it doesn't seem to work. i've tried using both polyin & monoin. I've also tried converting the ploy info from the knob into mono, but no luck. If I've got a knob connected up for porta time it has no effect until the value = 1 then there's no sound when I press a key. however, if i'm holding down a key when I turn the knob to 1 then the sound sustains until I turn the knob back down again

stefan ·

I can reply to the first question atleast

A lowpass filter slows down fast changes in the signal, it "smoothens" them. It does not matter if the signal is audio or something else.

I had similar problems when connecting a knob. First I thought it was just because the portamento value needs to be really really close to 1.0 to give the desired effect, but even after adding a float pow ( the ^ component ) I had the same problems, so jorge or malc will have to explain that one 🙂

galaa ·

The same thing happens if I use a knob anywhere with a signal. For example I tried to create a simple gain knob by multiplying the output of a mono osc with a knob and it stutters and makes a horrible sound. i was using a mono multiplier and I tried converting the knobs data as well. Always the same result. Are the knobs poly then? If so can they be converted into mono?

ginocote ·

stefan wrote: Here's some more handy stuff.

monoin pitchIn; monoout pitchOut; float lastTone; float cmp; cmp = (pitchIn >= 0.0001); pitchOut = (cmp & pitchIn) + (1.0 - (cmp & 1.0)) * lastTone; lastTone = pitchOut;

This little snippet will keep the last pressed key's pitch instead of going down to pitch 0.0 when no key is pressed.

monoin pitchIn; monoout pitchOut; float porta; porta = 0.9999; pitchOut = pitchIn * (1.0 - porta) + pitchOut * porta;

Small simple portamento thingy. The closer porta is to 1, the slower the pitch will change. Just a 1-pole lowpass filter really.

Wich code shoud we add to control the porta 0.9999 with a knob?

infuzion ·

ginocote wrote: Wich code shoud we add to control the porta 0.9999 with a knob?

I'd do: streamin pitchIn; streamin porta; streamout pitchOut; pitchOut = pitchIn * (1.0 - porta) + pitchOut * porta; & change the prefs of the knob's range (Min/Max) from say 0.8 to 0.99999

Let us know if that works for ya.

stefan ·

Today I'd probably try to incorporate the envelope follower into this. Would give much better control over the portamento. Different speeds for porta up and down as well 🙂

skOre ·

*starts drooling

stefan ·

What? I'm not doing it! I meant that if I did what I did earlier again "today", I'd use the envelope follower, which I didn't back then... Stop drooling right now! 🙂

skOre ·

well, but you could 😀

*continues droolage

stefan ·

Ah! Yes! And I would! If I would that is!

platinumears ·

I had a go at making a mono synth with portamento: Monogamy

Its not perfect (audio engine keeps running even when the synth isn't playing, and the envelopes are my own hungry code) but you might get some ideas from it..

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.