Reordering note and cc messages

Hello

I’m wondering whether BomeBox/MTP translators may be able to help get around a quirk of Elektron Octatrack Midi sequencing. The Octratrack allows step sequencing of notes and up to ten CC parameters that can be locked to specific values on each trigger. However, these messages get sent out as note on followed by the cc messages. The trouble with this implementation is that the receiving synth/module starts the note and then the parameter change is applied after a short delay. For modulating (e.g.) filter cut-off this results in glitchy notes as the filter changes after the note has started. What’s needed is the CC parameters to be received before the note on message,

What I want to do is process the midi to reorder the output such that the CC messages come first followed by the note on message.

Difficulties I envisage:

  1. the number of CC messages associated with each note trigger will be variable - between 0 and 10.
  2. the octratrack allows steps to be locked with CC parameters without triggering a note (e.g. so that a parameter can change without retriggering a note).

In my mind I had thought the translator would be activated by note on events, monitor and capture CC messages within a specified timeframe, process these to reorder them such that CC messages precede the note on, and then resend. Is something like this possible?

Many thanks

Hi and welcome to the forum!

Do you ever see note off messages? The trick here is to determine the timing delay of the note-on messages and ensure the note-off messages get the same delay so that you don’t end up sending the note-off before the delayed note-on. It might help if you should an example by opening Bome MIDI Translator Pro, opening the log window and checking “MIDI IN” and then capturing maybe 5-10 seconds of the MIDI activity. Then save the log output to a text file or post it here so we can figure out the correct timing.

Steve Caldwell
Bome Customer Care


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

Hi Steve; thanks for the reply

Below is an example of some of the activity captured with Midi Monitor:

21:51:34.205 From Port 2 Start
21:51:34.207 From Port 2 Note On 7 C1 100
21:51:34.807 From Port 2 Note Off 7 C1 0
21:51:34.882 From Port 2 Note On 7 D♯1 120
21:51:34.883 From Port 2 Control 7 Controller 29 33
21:51:34.884 From Port 2 Control 7 Controller 44 93
21:51:35.726 From Port 2 Note Off 7 D♯1 0
21:51:36.007 From Port 2 Note On 7 C1 100
21:51:36.008 From Port 2 Control 7 Controller 29 66
21:51:36.009 From Port 2 Control 7 Controller 44 49
21:51:36.010 From Port 2 Control 7 Controller 48 120
21:51:36.011 From Port 2 Control 7 Controller 53 15
21:51:36.607 From Port 2 Note Off 7 C1 0
21:51:36.682 From Port 2 Note On 7 D♯1 120
21:51:36.683 From Port 2 Control 7 Controller 29 33
21:51:36.684 From Port 2 Control 7 Controller 44 93
21:51:37.526 From Port 2 Note Off 7 D♯1 0
21:51:37.807 From Port 2 Note On 7 C1 100
21:51:37.808 From Port 2 Control 7 Controller 29 66
21:51:37.809 From Port 2 Control 7 Controller 44 49
21:51:37.810 From Port 2 Control 7 Controller 43 67
21:51:38.408 From Port 2 Note Off 7 C1 0

Looks as though the CC messages pertaining to a specific note on message all arrive at 0.001s intervals after the note on. Given there may be up to 10 CC messages per note would it be possible to set up MTP to listen for 0.01 or 0.02s after a note on, perform the reordering, and then retransmit without discernibly affecting note length?

Many thanks

Well it looks promising since you have both note-on and note off messages. We might have to delay both note-on and note-of the same amount of time, so that we don’t end up with a note-off first. Also, we would need to consider that no notes should be playing when the CC messages come through.

I’ll give it a go and lets see what happens. I will likely set up a global variable to control the delay timing so we can tweak with it until we get it right. It seems really strange that this device works this way as obviously with a note-on followed by a CC message would almost always affect the note sounding (unless the CC message was pertaining to a different function than controlling the sound of that note).

Steve Caldwell
Bome Customer Care


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

Give this a shot. I only set one global variable “ga” which is the timing in milliseconds (200 or .2 sec) to delay note-on and note-off messages. Everything else goes through the MIDI Thru pat with no delay.

I confirmed with 10 CC messages sent in rapid succession they all went out before the note -on message arrived and the note off message was also delayed.
Note-Delay-2021-09-16.bmtp (1.9 KB)

You will need to set up your aliases “My Controller” and “Application” to point to the physical devices or virtual ports you want to use. This can be done in the MIDI menu under “Edit Project Port Aliases”

Steve Caldwell
Bome Customer Care


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