MIDI velocity falloff before of Note OFF?

I'm trying to use my drum controller (Akai MPD218) to control Ableton and Resolume with MIDI at the same time. I've got CopperLAN routing its input to 2 virtual ports, one for each program. I want to trigger visual effects and drum sounds rhythmically, but if I don't hold down the note the effect is only on screen for like a frame. Can I write a Bome script that will delay the note off and send decreasing velocities in that time?

Yes, you can ignore note off messages into MT and only forward note on messages. On a note-on message in addition to sending the note-on message through. Have another translator that triggers a one shot timer with a delay value. Then the one-shot timer can be set up to trigger a separate note-off message after the delay you set up.

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

How do I make a pass through translator? And how do I make one to send extra note-ons with velocity decaying to zero? So far all I have is https://i.imgur.com/SB9IBtU.png

Please find the attached example

ga is the incoming note

gb is the incoming velocity

gc is the number of iterations

gd is the percent velocity decrease with each iteration (after the first)

ge is the milliseconds between each iteration

gf is a counter (only used so that we don’t decrease velocity on the first pass)

Have fun!

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

 


Attachments:
1535329109656_Velocity-Decrease-Timer-2018-08-26.bmtp

Thank you so much! It does exactly what I wanted. Two more questions if I may. Is time between iterations the only variable affecting the note length? How do I make translators that effects the length of notes individually with this one as a fallback?

In MIDI, notes are on until turned off, however if your instrument has a natural decay (like a piano), the note will naturally fade depending on that particular instrument decay time. What this timer does is re-inject new notes at slightly lower velocity so if the instrument you are playing has a fast attack and decay time, it will sound like multiple notes.

Essentially the sound you hear is more a factor of the instrument you are playing than anything else. The shutoff time of the note is really the number of iterations times the length of the note. When you send a note off message (which is done at the end) it will force the note to immediately stop sounding (unless you have some other effect in place to sustain the note beyond the note-off message.

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

Problem found: If two notes are turned on at the same time only one of them gets run through the translator.
https://i.imgur.com/wHbvhQ3.png

Yes, this version will only handle one note at a time. To handle more notes, we would need additional translators and timers. Each timer would handle it’s own note. There would have to be a way to allocate separate translators for each note as they come in. You could probably use the note number and note counter. For instance, if there is still a note being processed, you would then move onto the next timer and set of variables. You would clear the note number variable when finally turning the note off. This would be the way to determine if a note is currently in use. If it is 0, then its respective variables and timer is free for use, If not zero, you move onto the next set. How many simultaneous notes would you expect to handle?

Since this is to handle lighting effects, maybe you should only pick the root note of a given chord to process. If the timer is running, ignore all other notes until the timer has finished. You would need another variable as the “timer running” flag.

Developing this would be beyond the scope of this forum but I could handle on a fee basis if you are interested. Just send me an email if interested.

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz