2 buttons to shift MIDI channel up/down?

Jagian

2015-02-08 16:56:08

Hi all:

I have a question about this:
is't possible to use 2 buttons (that send NOTE ON/OFF each one) and mapping to shift up/down MIDI Channels?
...i mean press button 1 and MIDI channel shift down successively, and when press button 2 MIDI channel shift up successively. Its like all 2 buttons you can find in MIDI controllers to change MIDI channel up/down.
Any hints will be appreciated, thanks.

DvlsAdvct

2015-02-10 18:11:47

Hi Jagian.

This is very easy, and requires three translators. One to move the channel up, one to move the channel down, and one to pass the MIDI commands through. I'm going to assume the buttons are on different channels, but replace the incoming messages as needed. It should look as follows.

Code: Select all

Translator 1: Channel Down
Incoming Message: 91 00 7F
Rules: g0=g0-1
if g0<144 then g0=144
Outgoing Action: None

Translator 2: Channel Up
91 01 7F
Rules: g0=g0+1
if g0>159 then g0=159
Outgoing Action: None

Translator 3: MIDI Passthrough
Incoming Action: 90 pp qq
Outgoing Action: g0 pp qq
The g0 values are decimal for 90-9F (Note One channel 1 through Note On channel 16. The pp qq in the third translator represent local variables, so no matter what note is received on Channel 1, no matter the velocity, the only thing that changes is the channel. Does that make sense?
Jared

Jagian

2015-02-11 05:38:35

Thanks DvlsAdvct for this brilliant help.

I' ve tested and works amazing, very nice. I realize just one issue: this translators just send note ON messages, so the notes plays in an endless loop. So i just use your translator as a template to complement it with 3 translators to achieve note OFF:

Code: Select all

For NOTE ON (your translators a bit modified)

Translator 1: Channel Down
Incoming Message: 90 97 qq  < < change this to permit velocity changes during playing. Inputs in CH 1.
Rules: g0=g0-1
if g0<144 then g0=144
Outgoing Action: None

Translator 2: Channel Up
Incoming Message: 90 98 qq
Rules: g0=g0+1
if g0>159 then g0=159
Outgoing Action: None

Translator 3: MIDI Passthrough
Incoming Action: 90 pp qq
Outgoing Action: g0 pp qq

For NOTE OFF (the new translators)

Translator 4: Channel Down
Incoming Message: 80 97 qq
Rules: h0=h0-1
if h0<144 then h0=144
Outgoing Action: None

Translator 5: Channel Up
Incoming Message: 80 98 qq
Rules: h0=h0+1
if h0>159 then h0=159
Outgoing Action: None

Translator 6: MIDI Passthrough
Incoming Action: 80 pp qq
Outgoing Action: h0 pp 00 < < velocity 0
Works nicely. I have a MIDI keyboard with 63 inputs (notes) i decided to use the 2 last high notes (97/98) for control MIDI shift channel, so this is the reason to setup all on the same channel. Maybe i could use after, a kind of MIDI note/range filter because this notes send sound each time i press them (when use piano, synths, etc).

My keyboard has also modulation wheel and pitch bend, that sadly as expected, doesn't change with the notes ON/OFF. I dont know if is possible to use translators for these controls change MIDI channel simultaneously with the notes of the keyboard?

Well thanks a lot for your help. All of you are really genius.

DvlsAdvct

2015-02-11 21:24:59

Yup, totally doable to use the pitch and modulation wheels. in those cases, though, use their specific messages. So incoming would be B0 xx pp (replace xx with the actual note, but leave pp) and the outgoing message would be whatever global variable you assign for B0-BF.
Make sense?
Jared