multiple channels from one input channel?

DJRickDawson

2014-11-06 12:17:32

is it possible to set midi translator, to take the midi from my midi keyboard (on one single channel), and duplicate it so it can output on any number of required channels simultaneously on a single virtual port, into ableton live 9

eg
IN: midi keyboard channel 1
OUT: all data from midi keyboard to channels 1,2,3,4


How would this be done (if possible)?

never used Midi Translator before.

DJRickDawson

2014-11-06 19:52:00

is it possible to take the data on the channel my keyboard transmits on, and change the channel it is transmitted, using lemur on my iPad to set the correct channel in MIDI translator?

DvlsAdvct

2014-11-07 03:10:17

Hi DJRickDawson

As far as your first post goes, yes, it is definitely doable. You can do it with one translator which would read:

Code: Select all

Translator 1: Notes
Incoming Message: 90 pp qq
Outgoing Message: 90 pp qq 91 pp qq 92 pp qq 93 pp qq
There are a few things happening here. In the Incoming Message there are three bytes of data which make up the complete MIDI message. The 90 is a signal for a Note On message (the 9) on Channel 1 (the 0). The pp and qq are what's called local variables. They tell MIDI Translator that the translator should trigger no matter what the value is. So, for example, if the incoming message was 90 30 qq the translator would only trigger when a Note C3 (30) On (9) from Channel 1 (0) comes in, but with any velocity, no matter how hard you hit it (qq).

So, this translator will receive any signal which is a Note On on Channel 1, and send it out as that same Note On on Channels 1, 2, 3 and 4 (90 pp 91 pp 92 pp 93 pp). The reason we are using qq at the end is so the translators go off no matter how hard you hit the note, and all the notes have the same velocity. Does that make sense?

As far as your second post, you shouldn't need Lemur to change the channel of the notes, as MIDI Translator can handle that itself. Please clarify this, though, as I'm not 100% sure what you mean.

Thanks
Jared

DJRickDawson

2014-11-08 11:39:20

thanks for explaining it. makes sense now.

and using lemur to get it to change the channel, is so that my single midi keyboard can be switched to control different soft synths in ableton live.(which are set to different channels)

DvlsAdvct

2014-11-08 20:20:38

As long as MIDI Translator is receiving the Lemur you'd want to use global variables for it. To make it easy, what kind of interaction would you be using from the Lemur to change the channel? A fader CC message or a button note message?

DJRickDawson

2014-11-12 09:03:57

I can program whatever is the best type of message to send the translator, and fit that into my lemur template.

probably use the radio buttons for selecting.


currently my keyboard goes to all synths, with radio buttons selecting which track in ableton has the speaker switched on.

DvlsAdvct

2014-11-12 16:53:19

So, if you want to have your keyboard also control individual soft synths you'll need to use what's called Gloval Variables. The Lemur will send a different MIDI message to MT to dictate whether you want the keyboard to send to all four synths at once, or one of them individually. So you'll use one global variable with five different values.

We'll use one translator to dictate this. Your radio buttons do not need to send a MIDI Off message (velocity 00) since they are only going to toggle back and forth. We'll still need two translators, though, one for sending to all four channels and one for sending to each individual channel. I'm going to assume the radio buttons on the Lemur will send sequential commands (C0, C#0, D0, D#0, E0) but you can replace those commands in the rules with whatever you want. If everything is sending on the same channel you want to make sure the translators are receiving from individual ports. It would look something like:

Code: Select all

Translator 1: From Lemur
Incoming Message: 91 pp 7F (Incoming Port: Lemur In)
Rules: g0=pp
Outgoing Message: None

Translator 2: All Channels
Incoming Message: 90 pp qq (Incoming Port: Keyboard In)
Rules: if g0!=12 then exit rules, skip outgoing action
Outgoing Message: 90 pp qq 91 pp qq 92 pp qq 93 pp qq

Translator 3: Individual Channels
Incoming Message: 90 pp rr
If g0==12 then exit rules, skip outgoing action
qq=g0+131
Outgoing Message: qq pp rr
So, I'm making some assumptions here that you will need to adjust for. First, I'm assuming that the Lemur is sending C0 through E0 on channel 1 to set the channel. If that isn't the case then you need to adjust the math, if that makes sense. the 12 I use in Translators 2 and 3 is the decimal value of C0, meaning if C0 is the last signal to be sent to MT then the keyboard will send across all 4 channels. If it isn't then it does math (g0+131) and send on individual channels. Since the last note sent to MT to designate channel one would be C#0 (dec: 13) we'd need to add 131 to that value to get the decimal for Channel 1 on message (90 in decimal is 144, so 131+13 is 144, 131 + 14 is 145, etc).

Does that make sense?
Jared