This forum is read-only. Please post new topics in our Q&A forum.

How to use a variable for midi-channel?

General discussion about MIDI Translator

Moderators: florian, DvlsAdvct

Post Reply
New User
Posts: 1
Joined: Fri Dec 29, 2006 10:40 am

How to use a variable for midi-channel?

Post by Cie » Fri Dec 29, 2006 11:51 am


Purpose: Sending Sysex from my Sequencer to my synth VirusC to control parameters which only can be controlled by sysex.

Problem: My sequencer does not support sending sysex commands but midicc only.

Solution: Within the sequencer sending MidiCC values to MT, then converting it to a Sysex-Message.

How I did it:
Midi-Incoming Message: B3 0C oo (Channel 4, Controller #12, var value)
Translated to: F0 00 20 33 01 10 71 03 50 oo F7 (10: omni / 71: controller page b / 03 channel4 / 50: Controller #80 / oo: var value)

Question: Now I would like to do it more general and assign the channel to a variable, so that I do not have to do all the settings for all 16 Midi-Channels. So in the Midi-Message it would be the B3, and in the Sysex-Message the 03 (before 50 oo F7). When replacing the B3 e.g. with Bpp and the 03 with pp, it does not work. I think the problem is, that in the Midi-Message the channel is a one-digit value whereas the sysex needs a two-digit value.
Is there a solution?
Help would be great. :)

User avatar
Bome Software: Founder
Posts: 2435
Joined: Thu Apr 28, 2005 10:09 pm
Location: Munich, Germany

Post by florian » Tue Jan 02, 2007 5:21 pm


MT classic does not provide a mechanism to separate the channel. Currently, this is only possible with Midi Translator Pro:

Code: Select all

Translator 1: Controller to Sysex with channel mapping
Options: stop=true
Incoming: MIDI pp 0c oo 
  if pp<0xB0 then exit rules, skip Outgoing Action
  if pp>0xBF then exit rules, skip Outgoing Action
Outgoing: MIDI F0 00 20 33 01 10 71 pp 50 oo F7
Here, the MIDI message status byte is replaced with the variable pp. The first 2 rules make sure that the status is in between 0xB0 and 0xBF (don't get confused that MT will translate these numbers to decimal 176 and 191). The last rule will subtract the status byte from pp so that it will only have the channel in the range 00...0x0F.

Let us know how it works!

Regards and happy New Year,

Post Reply