SynthMaker

Velocity curves

Archive · 2006 29 old posts

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

Zokimaster ·

Hello!

I'm "one day old Early Adopter" and here is my first post in this forum. 😀 😉

Is there any way to work with velocity curves? If not - how to make it?

More details what I mean:

Years ago I used Casio HT-6000. Beside the "normal" synth section it has also 4 additional VCAs (for upper part). All of that used velocity curves. There is a list (pictures) of curves and then also parameter for the level for each curve.

This way - for instance - I made easily one VCO singing at high velocity and another VCO singing at low velocity - but detuned for few tones/octaves.

Any ideas?

Maybe we could have new module just for velocity curve, probably with parameters as these: - type of velocity curve (with the picture) - level

Thank you

Zoki

oddson ·

Here's a exampe reusing Sambean's waveshaper stuff to do a velocity curve.

velocitySplineCurve.osm

I didn't really think it though too much so there might be stuff leftover from Sam's OSM that's not needed here or that could be done better but it shows the possibility (without me having to do any real work 😉 ).

stefan ·

Might be a good idea to alter the velocity of incoming note ones using green maths instead if you want to save some CPU. You should still be able to use the waveshaper though 🙂

Zokimaster ·

Oddson,

Thank you for example. It helps to get some idea how to do it and even more. But that's still on half way of what I think it should be done.

What about altering gradients (levels) of particular velocity curve?

Something like this is very useful for instance with piano sounds - when you can change sensitivity of keyboard - in that case all of that is with same (or few similar) velocity curve, but with different gradients.

I also think that waveshaper might be used for this, but then there would be some math for altering gradients of the curve - and I guess this wouldn't be simple thing.

Well - I'm beginner with SM, so let me ask simple question: How is "normal" velocity in SM usually built at this moment? Is it as it's shown in velocitySplineCurve.osm or maybe in some other way (maybe even simpler)? The fact is that I can't find the right module which cares about velocity, but I saw contacts on some modules for velocity data, but I don't know how to use that.

Zoki

oddson ·

stefan wrote: Might be a good idea to alter the velocity of incoming note ones using green maths instead if you want to save some CPU. You should still be able to use the waveshaper though 🙂

Actually... that's pretty hard to do without building a complete midi-to-poly replacement as the velocity has to be kept associated with the note-on message in a poly-channel.

There are (massive) inefficiencies in the way I borrowed Sam's stuff for this but I think you do need to stay in poly.

Zokimaster wrote: How is "normal" velocity in SM usually built at this moment? Is it as it's shown in velocitySplineCurve.osm or maybe in some other way (maybe even simpler)? The fact is that I can't find the right module which cares about velocity, but I saw contacts on some modules for velocity data, but I don't know how to use that.

AFAIK velocity is up to you to deal with. I would guess that most users are just multiplying the signal by the velocity (linear).

I'm not sure what you mean be gradients in your second post. If I get it right, you could easily add some kind of sensitivity control to whatever mapping you want to use.

I'll post a file a little later today to show you some ideas.

oddson ·

Ok.. here's something a little more to the point.

velocityCurveEG.osm

I've ditched the spline thingy... I could be added back but it should define a 128 point array and Sam's schematic does not appear to be easily edited on array size.

That part is mostly irrelevent here anyway. The point is mostly to show how to get a velocity array mapping into the poly stream as a multiplier.

I've used an ultra-simple code module to generate a poly index that can grab the data from the array and bring it into the poly world without extra sample rate calculations (the code module operates only in stage(0) since velocity is static for each note).

The curve generator is just one possibility. It's major drawback is each time you want to try a new chart it has to be calculated with a loop -- which is slow (and made slower here by leaving the display showing). It's not really intended to be the answer to your question but just a something to generate curves that can be used by the rest.

stefan ·

oddson wrote: stefan wrote: Might be a good idea to alter the velocity of incoming note ones using green maths instead if you want to save some CPU. You should still be able to use the waveshaper though 🙂

Actually... that's pretty hard to do without building a complete midi-to-poly replacement as the velocity has to be kept associated with the note-on message in a poly-channel.

I was thinking about something like this: Green Maths Velocity Curve

Sorry about the mess, and maybe I am forgetting about something. Seems to work here in my initial short test though.

I am altering the velocity before we leave the MIDI realm, so to speak, so it really has nothing to do with the actual midi-to-poly conversion or poly handling of velocities.

oddson ·

Right... got ya.

(Would be cleaner with a 128 point spline thingy).

The only advantage to mine then would be retain 127 levels of output.

Doing it in the midi realm means you're losing info from the velocity reading.

I'm not sure it makes enough difference to matter unless you want a really convex curve response.

stefan ·

oddson wrote: Right... got ya.

(Would be cleaner with a 128 point spline thingy).

The only advantage to mine then would be retain 127 levels of output.

Doing it in the midi realm means you're losing info from the velocity reading.

I'm not sure it makes enough difference to matter unless you want a really convex curve response.

Agree on all points 🙂

oddson ·

I'm not sure it makes enough difference to matter unless you want a really convex curve response.

On the other hand mine doesn't seem to use much CPU. Just from watching the meter I can't really see any diference with it on or not.

[Edit - there was a minor error in the intial file posted. The array needs 128 values and the code needs to divide by 127. The OSM was matching max velocity with 0 output.]

oddson ·

velocityCurveEG2.osm

Zokimaster ·

Oddson,

WAUUU, your last example is excately what I meaned! Wonderful work!

I will connect my Remote25 later and try all examples how they work.

When I said "gradients" - I meaned adjustments of slope, or levels or sensitivity - sorry for my Bad English language (it's not my primary language).

I was also thinking about offering maybe 9 types of curves, each with 9 levels. So the parameters would go from 00 to 99. With pictures of curves in small pop up menu and the knob for adjustments of levels.

Now imagine - having different velocity curve and also different adjustments for same type of curves - on every oscillator (and having for example more than 4 oscillators). You can have one oscillator singing only at normal velocity, another only at the highest velocities, and another one only at very low velocity - and then each oscillator detuned for whole interval (adding kind of harmonic) or using different wave.

I think something like that could be very useful to have as standard SM module. What do you think?

Stefan, thank you for your osm too. I will try all schemes later and see how they work. And then I'll be back. 😀

Zoki

Large ·

Hi, Oddson 🙂

I noted a bug when copying and pasting this in a schematic:

http://members.shaw.ca/oddson/velocitySplineCurve.osm

This is .OSM is perfect for what I need, but every time I copy it and paste it, the points and curves are all messed up and rearranged.

Is it possible for you post a fixed .OSM, which keeps all its point and curve settings when copied and pasted? Many thanks in advance!

Nu Audio Science ·

Hahahahaha sorry if its just me but that request just seems a little off for a user in a forum of an app that is called Synth"MAKER"

Sorry if i sound a bit off but isn't there a chance you could try fixing it yourself ? Maybe ask for hints fixing it and so on and try and learn from the bug

NAS

Large ·

Nu Audio Science wrote: Hahahahaha sorry if its just me but that request just seems a little off for a user in a forum of an app that is called Synth"MAKER"

Sorry if i sound a bit off but isn't there a chance you could try fixing it yourself ? Maybe ask for hints fixing it and so on and try and learn from the bug

NAS

Yes I tried to fix it. I was able to fix basic knobs (which also lose their copied values) but this one I can't figure out.

I'm not a programmer. I just need modules that work properly.

Can someone please post a fixed version of this module? Thank you.

Nu Audio Science ·

Large maybe you should try Reactor or such Those packages are designed with many more higher level modules and will help you make stuff simply

I'm guessing you have no interest in releasing plugins at all otherwise you would be trying to learn to do this stuff rather than just asking for people to fix stuff for you so i can understand where you are coming from

NAS

oddson ·

Sambean did the spline designer and it's inner workings are a bit of mystery to me.

From what I can understand I'd say what is happening is when you paste into a new module a trigger is firing that causes a data point to be rewritten.

I don't know whether I used his last version... there might be a more stable one somewhere on the forum.

Nu Audio Science ·

Yes i have linked to his original thread with the latest version in the examples index Oddson 😉 It can be found there easily

Oh and for what its worth i just downloaded the latest version and had it working within ten seconds of loading 😉 Sambean must have fixed the copy paste bug in his .29 version

NAS

Large ·

NAS, are you talking about this?

http://magalov.myweb.hinet.net/waveshap ... per_29.osm

The spline envelope still shows bizarre behavior when copied.

It could be because I'm using FL Synthmaker.

Is it possible someone could make a new spline curve envelope for controlling velocity? And that, when copied, would keep it's spline shape?

That would really be appreciated 🙂 Thanks.

Nu Audio Science ·

Yes i am talking about that and it works fine here when copy and pasted Maybe you should post it as a bug in FL SM or something Its fine here

NAS

oddson ·

If you are working in a schematic with a Program Manger then reseting the Patch after the paste should restore the points to the preset.

oddson ·

Nu Audio Science wrote: Yes i am talking about that and it works fine here when copy and pasted Maybe you should post it as a bug in FL SM or something Its fine here

NAS

There is something wonky... it may be worse when working in FL Studio. To see copy the Spline Designer with several data points and then open a new schematic and paste... most of the time the data is messed up, sometimes dramatically and in a way that can make sorting out the points difficult.

But if you have a program manager you can restore to the presets.

Nu Audio Science ·

Hmmm very weird because it is working fine here doing what you said ?

These bugs that only happen on differing systems are madening

NAS

oddson ·

Actually... even on my system it happens sometimes and not others. I think it's some weird interaction with Sam's rather complex data-point creation/deletion system. It may be if your mouse coords are within the pasting area it builds a new point with some trigger that fires when pasting... or something equally strange and unpredictable.

The fix is to use the Preset Manager to restore to an existing array of points.

Large ·

oddson wrote: The fix is to use the Preset Manager to restore to an existing array of points.

Does this preset manager store the array of points everytime you change them, or just once?

Does it stay within the spline module or does it have to remain in all schematics? Another words does a schematic allow more than one preset manager?

Can you post the fixed .OSM of this? Many thanks.

oddson ·

Can you post the fixed .OSM of this? Many thanks.

Can I ask first what you're trying to accomplish that this issue is preventing you from achieving?

I can see it being a little frustrating but your persistence on this issue makes is seem like it's actually preventing you from doing something instead of just causing you to have to correct a view data points after adding a module to a schematic. If I understood what's going on I'd likely be in a better position to assist.

Oh.. and there can only be 1 preset manager per VST/FL generator so it's not attached to a single module but to the whole thing.

oddson ·

I've been looking the module over and there are disconnected links everywhere and stuff that looks like debugging leftovers. I don't think Sam ever quite finished this module. Given its complexity I figure it would take me quite a while to work out what everything does and frankly I'm just not motivated to undertake this right now... 🙁

Large ·

oddson wrote: Can you post the fixed .OSM of this? Many thanks.

Can I ask first what you're trying to accomplish that this issue is preventing you from achieving?

If I understood what's going on I'd likely be in a better position to assist.

Oh.. and there can only be 1 preset manager per VST/FL generator so it's not attached to a single module but to the whole thing.

Well that ditches the Preset Manager concept. That’s why I would really love a new spline envelope to be created for this purpose.

What I am doing is hooking up the spline envelope to control various velocites of Cutoff, Resonance, Volume, you name it. So, for example, when you hit the key at a 50% strength, it’s new altered strength will be altered by whatever the halfway mark of the envelope is shaped like.

This will be especially important when creating my Piano Emulation. Precisely shaped velocity envelopes will be important.

And I need the envelope to keep its shape whether it's saved, or opened or copied multiple times. Your help in creating this would be well received. You would of course receive a free copy of any real-life instruments or synths I create.

Large ·

Oddson, it seems that the graph from the "Draw Wave" module of yours works for a good velocity curve also.

The only problem is that only the UPPER half of the graph affects the velocity. If you draw anything below the upper half, it gets ignored. It seems like I halfway solved the problem.

Is there any way you can expand the upper half to fill the entire view of the graph? (Thus making it impossible to draw on the bottom half, which will be pushed out of view)

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.