midi channels in one midi device/instrument

nedrush's icon

i just picked up a korg padkontrol (pardon me if this becomes a hardware specific thread but have to ask) and got excited that i can have various scene on the padkontrol on various midi channels, hoping that i could route separate channels into one midi track and thus one device/instrument. I set up one scene with the pads on midi channel 1 and the second on midi channel 2.

now, using a midi select object @ch1 with the midi track in ableton set to channel 1 i get midi data, and the same if i @ch 2 and have the midi track on channel 2, but, my hopes were that i could have ableton midi track to 'all channels; and have two midi select objects, one @ch 1 and the other @ch 2, but i dont get separate data between scenes, and i only get data on @ch 1 even if i'm on scene 2 (midi channel 2).

so really my question is, how the f can i have multiple midi channels going into one track and device and be able to get data from all of them.

i basically want to build a device that uses different midi data on individual channels to do stuff, and cant get a result.

thanks
ned.

David's icon

Prepare yourself for a huge disapointment.

Ready?

It´s impossible! Ableton Live changes the channel of all midi data to 1. Why? I don´t know! It´s one of the great mysteries of Ableton. You can only hope (like me) that Live 9 (if it will ever be released) will change this.

Just to clarify: the problem has nothing to do with max4live but only with the way Live processes midi data. The very moment your midi data runs through a Live midi channel all channel information is lost and set to channel 1.

nedrush's icon

i had a feeling this would be the case. seems weird that its not mentioned in the documentation, or maybe it is and i didnt navigate to it.

i guess a work around would be to spread all midi notes across multiple scenes.

nick rothwell | project cassiel's icon

Instruments (including Max for Live instruments) can receive on multiple MIDI channels - you have to route the MIDI in from other MIDI tracks.

Mike S's icon

Hello Old Fred,

Is this still the case? Can't pick out midi devices by name or channel info in Max for Live?

benniy's icon

this will get a little complicated and unpractical as for setup, but i think it's easy to achieve as for coding.
you will need to "outsource" your midi-splitting: have a standalone (or better to say non-m4l but solely max-patch) do this stuff.
make your channel separation there and send to different "send" objects. e.g. ch 1 --> "send channel1" / channel 2 --> "send channel2".
receive your channels by making own, tiny "receive"-patches. they only need to contain midi-in to midi-out and e.g. your "receive channel1" hooked up to the same midi out. i think this should work. otherwise you can get the job done via udp.

to_the_sun's icon

It's possible to create a couple devices that can take MIDI filtered to them by channel upon entering Live and then send it where you need using send and receive. The caveat being the unpredictable latency introduced when using s/r to send information between devices.

I had the idea of using program changes to indicate pseudo-channels changes, sending all the MIDI through the ordinary Live routings. The idea was to insert a program change before every MIDI event to indicate the "channel" it should be on. Then a device on the receiving end would either listen or ignore based on the program change matching the "channel" it's looking for.

Are the ordinary Live sends between tracks expected to have less latency or is there a comparable lag inherent there as well?

to_the_sun's icon

I received an answer to my question here

Max Patch
Copy patch and select New From Clipboard in Max.

In implementing my idea I ran into some issues so I modified it slightly and it now seems to be working very well. Taken directly from my work, this first bit of code

Max Patch
Copy patch and select New From Clipboard in Max.

takes midi events in list format prepended with their intended channel, stores the event in a coll and sends only a corresponding program change directly out of the device. In the receiving device,

[v ---id] [+ 1] represents the channel being listened for; when it gets a program change of that value it knows there is a MIDI event to extract from the coll.

Ross Barradell's icon

Hi,

I was wondering if this may get round an issue I have.

I have an expert sleepers Es5 to send sample accurate midi to my devices (mainly for clocking purposes) but due to the fact that Live restricts everything to channel 1 on receipt of midi in a channel, I can only address a single channel on each midi output. Presumably dropping your device in front of the es5 plugin and the other half of your device on the sending midi tracks , would allow me to address more than one channel?

Ross Barradell's icon

Ignore that, I've sorted it.