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
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].