Transmit to all midi channels (omni)

4 posts / 0 new
Last post
paulster44's picture
Transmit to all midi channels (omni)

Would like to know if it's possible to transmit omni from a note value assigned to a button.. (or any control actually)


Richard Crane
Richard Crane's picture

I'm not sure what you are asking, and I suspect others may not be either. Do you want a one button send to something that puts it in Omni mode? Or do you want to switch all following BCF/R transmissions to the same thing on all 16 Channels? I don't think that you can do the later with a BCF/R but a MIDISolutions Event Processor would be able to do that (and could be switched by the BCF/R).

Mark van den Berg
Mark van den Berg's picture

Reading your question I felt the same ambiguity as Richard.
But if you want to make a BCF/R element (button/encoder/fader) send the same MIDI message to all 16 channels, you can define what BC Manager calls a "custom output" statement. (Internally this works via a ".tx" statement.)

However, you should keep in mind that an element's custom output definition is restricted to 127 bytes.
Naturally, each "hard-coded" MIDI byte (except $FE in fact) takes up 1 byte, but e.g. the "val" identifier (standing for the element's current value) takes up 2. And a ".tx" statement itself takes up 2 bytes as well. (See section 14.6.6 in "BC MIDI Implementation.pdf" for further details.)
So if you want to duplicate one or more messages for each of the 16 MIDI channels, the definition for a single channel can maximally take up (127-2) div 16 = 7 bytes.

A MIDI Note On message consists of 3 bytes, and if these are all "hard-coded" (not containing "val" or so), the definition of the message simply takes up 3 bytes.
So a button has more than enough room for a "hard-coded" Note On message duplicated on all 16 channels.
For instance:
.tx   $90 $40 $64   $91 $40 $64   $92 $40 $64   $93 $40 $64   ...   $9F $40 $64

For an encoder, you'd probably want to do something with the encoder's value, so you'd need something like
.tx   $90 val $64   $91 val $64   $92 val $64   $93 val $64   ...   $9F val $64
Here each "val" takes up 2 bytes, so each message takes up 4 bytes, which is still well below the maximum.

Hope this helps,

paulster44's picture

Awesome, Thanks Mark.  What I needed to know.
Thanks Richard, sorry for my lack of clarity.