Need Help: Transform Velocity Into Note Off Velocity; Extending Note Length

Hey community,

I played around with the Midihub to use my SP404 MKII as a sampler for pianosounds played via midi keyboard. To make it more realistic I built two velocity layers and pedal noises (via transformation of cc into note on messages).

I have got two Questions, to make the usage more piano-realistic:

(1) Is there a possibility to transform the normal „note on velocity“ into the velocity of the later happening „note off event“?

Unfortunetly my Keystep37 and my Novation Impulse both don’t support „release velocity“ (= note off velocity, ≠ aftertouch) on their own. With Midihub so far I only was able to implement key release noises with random velocity, which sometimes sounds unrealistic. Especially because at higher velocities there should be a different sound than at very low velocities.
I know Midihub can’t make my Midi-Controllers transmit those Velocities. But it would be a progress for me, if I could also use the note on velocity as the later happening „note off velocity“. I already tried to transform the note on velocity first into cc message then back into „note off velocity“. It worked, but the note off information was at the wrong time: Exactly when the note on event happened. There is the problem, that the „note on event“ happens earlier than the „note off event“.
Is there a possibility to transform this point of time from one event (earlier) to the later happening event?

(2) When I play very short tones with a high „note on velocity“ they sound unrealistic cutted at the end because (only) in the attack phase the samples are very loud. Is it possible to set the minimum length of a tone with Midihub (e. g. at least 500 ms)? So when a tone is to short it will be automatically extended to e. g. 500 ms? That would maybe feel a bit weird to play, but it would make my compromised self made velocity layered SP404 use surely sound more realistic.


Hey @erpel15
(and welcome t o Midihub forums)
Two interesting questions!

question 1
May I clarify before considering the answers?

  1. Does „release velocity“ mean “Note Off with the corresponding Note On’s velocity”?
  2. Are you playing out to one channel only?
  3. Should we assume we’re playing polyphonically; chords etc?

question 2
I think we need something really quite cunning here.
Actual complexity of solution will depend on answers to 2&3 above.
In addition, if you are playing simultaneous notes, what is maximum number of notes to be played at the same time?

Lastly, You need to do both jobs in the same patch, right?

Thank you for the very fast reply! :heart_hands:

question 1 1. Does „release velocity“ mean “Note Off with the corresponding Note On’s velocity”?

Yes. But after that I want to transform the note off information (now with vivid velocity) into a different note on trigger (for a release sound a piano is making).

  1. Are you playing out to one channel only?

At the SP404mkII I am addressing two channels (midi channel 1 for the low velocity sounds, channel 2 for the high velocity sounds).

  1. Should we assume we’re playing polyphonically; chords etc?

Absolutly, yes.

question 2
In addition, if you are playing simultaneous notes, what is maximum number of notes to be played at the same time?

The SP404 is able to play 32 voices simultaneously. That is the technical limit in my case. Realistically I may need max. 8 - 10 voices when I play piano stuff (I am not chopin :slight_smile: ).

Lastly, You need to do both jobs in the same patch, right?

With both questions I have the same patch in mind, but…
I don’t know yet. Because it may be, if I have a solution for question 1. I may not need the answer to question 2. But it depends on how it sounds with the “fake” note off data I would get out of the answer to question 1.

Before I had Midihub, I never thought about those possibilities – which is bad (sound possibilities) and good (time consuming). But I can really tell you, afterwards I am able to set up very nice sampled hyper realistic pianos without the need to use a computer for playing (e. g. Keystep rhodes, Native Instrument Noire Felt Pianos). The setup already sounds better than my Yamaha Reface CP and that is a huge thing for me.

Thank you!

OK, @erpel15, how confident are you with Midihub?

1 Like

OK, @erpel15, how confident are you with Midihub?

Rookie, I guess.

1 Like

OK here’s the shape of it

The first task could be done like this

  • Use Dispatcher to split notes off to say max 8 channels.

  • Use a Note On → CC Transform to store the Velocity for each note. End the line with say Virtual A-OUT

  • in next line (Virtual A-IN) you have 8 Note Off → Note Off Transforms responding to Ch1, 2, …, 8 respectively. Here the Velocity is set to Argument 1, and the value for Argument 1 is mapped to the CC from the line above.

  • Now we need to send these out on the correct channel so the next line uses 2 Note On & Off → NoteOn & Off Transforms where…

  • the velocity range of the first is say 0-64 Inside Range creates a Ch1 note…

  • …and the 2nd is Outside Range creating a Ch2 note

SOoooo, each note comes in & is given a different channel
this is to help distinguish between them.

Let’s consider the 3rd note played:

  • after Dispatcher it’s on Ch3 and it creates a Ch3 CC which holds its velocity (say 67)

  • this CC then sets the value for the 3rd Note Off Transform (which is mapped to the Ch3 CC)

  • So when the Ch3 Note Off comes in at velocity = 0, this Transform sets it to 67

  • Then on the way out, both Note On & Off are picked up and the relevant Transform sets the Channel to 2 as they are in the Loud category!

I’ve not heard of a synth that responds to Note Off velocity before…

I’ll have a think about the “After Note” later.

If you want to try the above, I’d suggest just 2-3 notes in the early dev phase…

Then if you get stuck you can post up your Work In Progress without too much work and get some advice

1 Like

Daniel Fisher explains note off (release) velocity with the example of Hydrasynth:
Rolands Juno 61 receives and sends those informations too.

I try it, thanks!

1 Like

I tried it, but the final note off appears only with the same velocities (not the velocities the note on data has in the beginning) and the samples which should be triggered when the key is lift already ring, when the key is pressed (which is too early).

  • this CC then sets the value for the 3rd Note Off Transform (which is mapped to the Ch3 CC)

I tried it. Is the mapping correct?

1 Like

compare this
Try-Release-Velocity-ResoEdit.mhp (1.2 KB)

(see notes in preset Description Panel)

Most of the changes are subtle and worth seeing why they work.
The really major difference is that my 3 mappings are internal/virtual mappings (ie only possible with 1.14+)

Ps> The change to the 2nd Transform in line 3 is slight in that I’m using the same range values but making it Outside Range. This is only better because it allows you to map the Range High to the same external CC so that you can tweak your “threshold” without having to edit

now onto

So the Note Off should immediately be followed by another Note_On, right?
What Length?
How is the velocity of the release Note related to the Original Note? Presumably its Note Off should have vel=0?

1 Like

Ah cool! didn’t know the append function. Very helpful!

Now it works! that is very nice.

The trick with converting something to cc first and later to something else (with a number of transformers inside a virtual pipeline) is a workaround I will surely use later for something else.

How is the velocity of the release Note related to the Original Note?

I could downgrade the velocity of the release sound note on myself (using rescale) but in this case I only have to lower the volume on my sample pad for this particular release sound.

So the Note Off should immediately be followed by another Note_On, right?
What Length? presumably its Note Off should have vel=0?

Indeed, I transformed the resulting note off info into note on (which is mapped to one certain release sound an E6 which fires as one shot when triggered).
Yeah its note off should be vel=0. But: Right now there are only note on signals, but no note off signal for the release sound. The sampler only reacts to note on when its pad is in one shot mode. Do you think a note off message would be important like if in my case it works without any?
But let’s say, the length would be 0,5 seconds.
(Question 1) Would I use the delay modifier to define the moment the note off data is send?

(Question 2) Would it be possible to reduce the velocity of the release sound (which was once the note on velocity of my first line) before it triggers the release sound?

E. g. I hit a note fast and lift the finger fast = Vel=stays the same as it was in the beginning (=loud sound).
But when I wait 2 seconds, the velocity decreases down during time so the sound will be quieter the later I lift the key?
I can imagine vaguely a workaround with delay (because there it is possible to reduce the velocity over time) in combination with some kind of a note on “gate” which opens when the key is lift (the original note off signal appears).

What I want to recreate: If the string on a piano is hit very hard, the release sound is much louder (and sounds different), but after some time of cause, the sound would be much lower. That’s why I want to put in this delay + gate thing.

So thank you very much for your help so far! That’s great.


Release-Velocity-works Delay erpelEdit.mhp (1.3 KB)

Hey @erpel15

I won’t give a detailed answer now, cos my head’s not in the right place.

I hadn’t thought of using Delay. Need to think about that.

Design depends a lot on playing style:

If multiple notes were being played only as chords the design can be simpler than if say with asynchronous overlapping notes.

The design for the second would cover the first

To do that (and understanding your decay idea better) my first idea would be to:

  • use a One-Shot Saw-Down LFO† for each Dispatcher “note-channel”
  • Rescale it where the Out-High would be mapped the vA.Ch1.CC3 as before
  • Map that CC to your Release Velocity

( I start to see a chain of virtuals to fulfil the successive mapping needs…)

† this needs a trigger which I need to check

I’ll come back to this when my brain’s properly in gear

Probably not if samples are short and non-looping

1 Like

That’s all fine. Take your time. I’ll try to go on on my own!

One question I did have was about how sampler knows to play the ‘release’ sample instead of the ‘sustain’ sample when you’re sending the same note-channel message through.

In my case the chromatic tones are in a certain note range (from C-1 up to D#6). The additional pedal noise and release samples are located on the same channels (1 and 2) but they are higher (E6 - G6). That’s why I use a note remap in the end. So I simply force the note to be a release noise (not a chromatic tone).

For me it’s no problem, that the pedal noise open sound often overlaps with the release sample.

Told you my brain wasn’t working!

btw, have you had your delay working?

hey @erpel, as you’ve got 8 octaves of ‘sustain’ notes mapping to 1 octave ‘release’ notes, this would suggest that 2 simultaneous ‘nearby’ notes will trigger the same ‘release’ note eg. 2 x F6
Does this work out OK in practice?

It really depends on the sound. In my case it sounds realistic enough if I send the resulting tone with a Note remap/ randomizer on 2 or 3 different sample pads so it differs from time to time. Of cause, when you look at it in detail, then every note would need a special note of sample. But I try to use like “click” and “clacks” of the piano hammers and less defined tones that would only fit to one individual note.

No, I will try to think about the LFO idea you suggested.