Midi: velocity instrument mapping

Hi, folks. It’s me, proudly posting my very first contribution to this community. Thanks.
I’m using Drumgimo and Ardour 7.2: how can I remapping ride in order to at a certain high given velocity ride-bell is played instead.
Many thanks, I’m very proud of all of you.

Sounds like something that @x42 's Midi Filter could possibly handle, capturing all note X at velocity >= Y, change note to Z. But do you want it hitting the bell at that same velocity? I think that by the time you get this going, you probably would have manually adjusted all the notes.

1 Like

Awesome, it seems very simple and straightforward.
Very interesting collection, x42… I really didn’t know!

Thanks for your reply, it was very kind of you :slight_smile:

I was attempting to convert each 42 note every single time is played over velocity 100 to 53 note.
I guess it must be expressed somehow similar to:

ANY 42 100 | SAME 53 SAME

But I can’t the find the way of expressing such operator like">" before that “100”

As I could read in doc it could be expressed in hex format, well I’m not sure of that because it is too much dark to me…

Many thanks wether someone can help me ot not! :confused:

Excuse me, dear, @x42, you are my lighthouse, this time ^^. Let me, please, invoque your presence here ^^

The simple version in this case is to just list all the values explicitly

NOTE 42 100 | SAME 53 SAME
NOTE 42 101 | SAME 53 SAME
NOTE 42 102 | SAME 53 SAME
NOTE 42 103 | SAME 53 SAME
NOTE 42 104 | SAME 53 SAME

etc until 127.

Using bit-masks this can be somewhat simplified, but with decimal 100 this is tricky

# catch all notes 100 .. 103   
NOTE 42 0x64/0xfc | SAME 53 SAME
# catch all notes 104 .. 111   
NOTE 42 0x68/0xf8 | SAME 53 SAME
# catch all notes 112 .. 127
NOTE 42 0x70/0x70 | SAME 53 SAME


To elaborate:
Decimal 100 is Hex 0x64, the range 100…103 can be tested for by ignoring the first 2 bits
not 0x3 = 0x7c (for 7 bit MIDI)
0x64 & 0x7c == 0x64
0x65 & 0x7c == 0x64
0x66 & 0x7c == 0x64
0x67 & 0x7c == 0x64

This works similarly for the range 104…111 and finally for all numbers starting with 112 (0x70) the lower byte can simply be ignored for the range 0x70 … 0x7f

2 Likes

It was that easy :smiley:
Many thanks, Robin, for your reply! Cheers!
Let’s rock!

Well this is my config file as an example for anyone interested.
I have a Roland V-Drums HD1 (the smallest one!) so I though it would be smart using TOM 2 for ride and bell and CRASH 1 for Left Crash and Crash Stopped, and original ride for Right crash.

(I’m using Drum Gimzmo with default Crocell Kit)

First I remapped the Kit, enabling Crash instead of Ride, and Ride instead of Tom 2:


<midimap>
<map note="54" instr="ChinaL"/>
<map note="57" instr="ChinaR"/>
<map note="49" instr="CrashL"/>
<map note="56" instr="CrashLStopped"/>
<map note="51" instr="CrashR"/>
<map note="75" instr="CrashRStopped"/>
<map note="59" instr="CrashRXtra"/>
<map note="42" instr="HihatClosed"/>
<map note="46" instr="HihatOpen"/>
<map note="44" instr="HihatPedal"/>
<map note="35" instr="KDrumL"/>
<map note="36" instr="KDrumR"/>
<map note="55" instr="SplashL"/>
<map note="58" instr="SplashR"/>
<map note="45" instr="RideR"/>
<map note="53" instr="RideRBell"/>
<map note="38" instr="Snare"/>
<map note="39" instr="SnareRest"/>
<map note="48" instr="Tom1"/>
<map note="47" instr="Tom2"/>
<map note="43" instr="FTom1"/>
<map note="41" instr="FTom2"/>
</midimap>

And then, split those two pads in two different instruments depending on velocity:

SAME midimap
v1-forward
# ride become a bell when velocity is over 113
NOTE 45 113 | SAME 53 SAME
NOTE 45 114 | SAME 53 SAME
NOTE 45 115 | SAME 53 SAME
NOTE 45 116 | SAME 53 SAME
NOTE 45 117 | SAME 53 SAME
NOTE 45 118 | SAME 53 SAME
NOTE 45 119 | SAME 53 SAME
NOTE 45 120 | SAME 53 SAME
NOTE 45 121 | SAME 53 SAME
NOTE 45 122 | SAME 53 SAME
NOTE 45 123 | SAME 53 SAME
NOTE 45 124 | SAME 53 SAME
NOTE 45 125 | SAME 53 SAME
NOTE 45 127 | SAME 53 SAME
# crash become crash stopped when velocity is over 113
NOTE 49 113 | SAME 56 SAME
NOTE 49 114 | SAME 56 SAME
NOTE 49 115 | SAME 56 SAME
NOTE 49 116 | SAME 56 SAME
NOTE 49 117 | SAME 56 SAME
NOTE 49 118 | SAME 56 SAME
NOTE 49 119 | SAME 56 SAME
NOTE 49 120 | SAME 56 SAME
NOTE 49 121 | SAME 56 SAME
NOTE 49 122 | SAME 56 SAME
NOTE 49 123 | SAME 56 SAME
NOTE 49 124 | SAME 56 SAME
NOTE 49 125 | SAME 56 SAME
NOTE 49 127 | SAME 56 SAME

Please feel free to ask me if you have any questions! I’ll be happy if I can help!

1 Like

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.