Key Velocity Triggering Specific Note

This is similar to another solved topic on velocity, but with a twist.
I am using a virtual instrument (Orchestral Tools Tom Holkenborg Full Contact Percussion) that maps single drum samples throughout an extended key range to map intensity:
Softer drums start let’s say at C3 and as the note range increases so does the amplitude of the drums.

I would love to be able to play a single note (C2 for instance) and according to the velocity I play, it would trigger a corresponding note above to trigger a drum part that would match a certain velocity range.
Here is a screen grab to help explain.

Thanks for that amazing help on this forum!
Joyfully,
Simeon

Another option that would be nice is to have more than one key assigned to a specific drum sound so you can do rolls using adjacent keys in the lower triggering area.
You would trigger notes down below to play a range of notes above based on the velocity of the lower notes being triggered ;^)

Finger Drummers Unite!
Simeon

Yes this would be possible. Your keyboard, would need to be velocity sensitive. The control you have would be dependent on the velocity curve of your keyboard coupled with your talent in hitting the key at different velocities.

You could set the velocity to a global variable (say ga) and then use the value of ga to determine the not that you want to play.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Yes, this would be possible also. Just have the notes played trigger the right drum sound instead of the original note.

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz
1 Like

Steve,
I am still working on how to do this for my particular application, I saw your video on creating offsets and I think it holds a key into making this happen.

It will take the velocity - 0 - 127 from an incoming midi note and play a corresponding key based on the incoming velocity. The offset will help play the range of notes that are triggering the drum sample.

Stay tuned!

1 Like

I am getting closer but getting some unusual results
It seems that the resulting NOTE NUMBERS are WAAY too out of the expected range.
Also, since I am dealing with MIDI notes, when I do get a note triggered it HANGS.
How would I send a corresponding NOTE OFF message when the key(s) I am playing are released?

Here is what I have come up with so far:
nn - INPUT NOTE (I created a variable in order to limit the key input range)
no - NOTE OUT (This is the note I want to be triggered)
vv - VELOCITY VALUE (0-127)

//Filter Out Lower Trigger Keys
if nn>=48 then exit rules, skip Outgoing Action

//multiply input value by output range
no=vv*70

//now divide by input range
vv=vv/128

//Now add the offset
vv=vv+50

Here is a capture of typical output from the LOG Window
1: IN 0.11 Note On on ch. 1 with any note set ‘nn’ to note=36 with any velocity and ‘vv’ to velocity=97
2: RULE 0.11:2 expression: (no=vv*70) = 6790
3: RULE 0.11:4 expression: (vv=vv/128) = 0
4: RULE 0.11:6 expression: (vv=vv+50) = 50
5: OUT 0.11 Note On on ch. 1 with note:no=6790 and velocity:60 (0x3C)

It looks like there is something happening that is causing the VV value to result in 0 for some reason.

Thanks for any additional insight.
I have been pouring over the Scaling video for a few hours today and it is still a little confusing. I guess because I am trying to scale note velocities to trigger other notes, but I think the basic principle should work.

Joyfully,
Simeon

OK!
I think this is VERY CLOSE.
It seemed that I had my NO (Note Out) variable in the wrong place.
Here is what it looks like now:

//Filter Lower Trigger Keys
if nn>=48 then exit rules, skip Outgoing Action

//multiply input value by an output range
vv=vv*70

//now divide by input range
no=vv/128

//Now add the offset
no=no+50

I am getting the note triggered as expected BUT they are still hanging, so I still need a little help figuring out how to send a note off command so that things would not keep playing.

Thanks so much for the inspiration and help.
Joyfully,
Simeon

Last one for today!
I think I found a solution from watching another video about the DELAY Execution command
I copied the Translator and instead of NOTE ON I changed the outgoing to NOTE OFF and set the delay for around 80ms. I am still experimenting but this has been a great learning experience.

Thanks again!
Simeon

Hi,

Does your keyboard (source) also send note off?

If so, then the attached should work. I have velocity to note translator for both note on and note off. I use all local variables instead of globals since the globals of multiple translators could interfere with each other.

If your keyboard/source does not send note off then we might need to use a timer to send the corresponding note off. Care will need to be take to ensure we do not process a new note while the old one is processing. If you want multiple note processing simultaneously, it will be trickier since we will need to track note-on messages to ensure that the corresponding note-off messages are sent by the timer and in the same order as note-on messages.

Let’s not go there unless we have to.

Velocity-to-Note.bmtp (1.7 KB)

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Hmm the above might not work as the note-off velocity might be different than the note on velocity so the note-off might send the wrong note if it is not the same velocity.

This might look better.

In this version we determine whether a note-off with the same note-on is sent and only send the note-off if it is the same note number and no other note is currently being processed.

So it will not work if your source does not send note-off messages. Again if this is the case, we will need to use a timer instead.

Velocity-to-Note-a.bmtp (1.9 KB)

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz