Hi everyone,
I am trying to solve a specific MIDI workflow issue between an Elektron Octatrack and the Oxi E16.
The issue is that the Oxi strictly requires both Bank Select MSB (CC 0), LSB (CC 32), and Program Change (PC) messages sent together for every preset change, otherwise it acts weird.
Inside Midihub, I have already built a pipe that successfully intercepts the Octatrack’s native bank message and remaps it to the proper MSB/LSB structure the Oxi expects.
Currently, Midihub transforms this incoming stream:
CC#0 2
PgmChg 9
Into this output:
CC#0 0
CC#32 2
PgmChg 9
The Problem comes when I switch to an Octatrack pattern that uses a different program but stays within the same MIDI Bank: the Octatrack will omit the CC 0 message entirely and only send the standalone PC to save bandwidth. So if i change from Bank 2 Pgm 9 to Bank 2 Pgm 15, the Octatrack will only send this:
PgmChg 9
When this happens, my current Midihub pipeline gets bypassed because no CC 0 triggers it, and the Oxi receives a standalone PC, which meses things up.
I would need Midihub to act as a state memory for the Bank value (the value that currently goes into CC 32).
If a CC 0 arrives followed by a PC, it should update the memory and pass through my current pipeline.
If a standalone PC arrives without a preceding CC 0, Midihub should recall the last known Bank value, inject both CC 0 (Value 0) and CC 32 (Stored Value), and then send the PC.
So for the example above, i would need something like this:
Midihub Input from Octatrack:
CC#0 2
PgmChg 9
Output:
CC#0 0
CC#32 2
PgmChg 9
Midihub Input from Octatrack:
PgmChg 15
Output:
CC#0 0
CC#32 2 (Recalled from the last known state)
PgmChg 15
Is there anyway to “stored” this variable? Or any other approach to this topic?
Pchg.mhp (411 Bytes)
I attach the simple pipe i’m using now
Thanks!!