Jump to content

Environment:set different patches from diff. midi channels


Recommended Posts

Hi everyone,


I've seen some pretty amazing environment setups here in the forum, so I hope some Environment guru can help me out. I know the basics of Environment and understand the signal flow, but am at a loss to do what I want here.


I drive Logic from a midi guitar, and the midi signal flows like this:


- Strings 1 to 6 are assigned to midi channels 1 to 6;

- When a hold pedal is pressed, strings 1 to 6 jump to channels 11 to 16.


I would like to set up a song that works in the following way:


With the hold pedal RELEASED:


a) the lowest note (regardless of which string it comes from) is assigned to a bass sound and lowered 12 semitones -- let's call it Patch A;

b) all the other notes are assigned to a lead sound -- Patch B.


With the pedal PRESSED:


a) the lowest sound is still lowered 12 semitones and assigned to patch A;

b) all notes but the lowest and highest are assigned to a third sound - Patch C;

b) the highest note is assigned to Patch B.


I'm completely lost here and would deeply appreciate any ideas on how to handle that or any alternatives you can think of. Also, having logic respond to one midi channel per patch is something I never managed to do -- even with "Auto demix by midi channel" the tracks would respond to midi from all channels. Am I missing something here?


Please note that I'm not trying to abuse forum members by asking someone to do the work for me, unless you want to do it as an exercise and so as to help me, which will also be greatly appreciated as well. :)


Thank you,




MacBook Pro 2.53/4GB - Logic 9 - Motu 828MKii - Axon AX100 - Proteus 2000

Link to comment
Share on other sites

Thanks for your response, Christian.


No, I don't need to record, it's just to play.


And I actually set it up differently: I can have the midi guitar send ALL strings on midi channel 1 and ALL string in the HOLD mode to channel 11.


Would that make it easier?


Just a quick explanation: I don't need to change the midi channels for any reason, it's just that the instrument outputs one string per channel by default. It helps with pitch bending and sliding, so it's preferable over collapsing the strings in one channel. So my initial though was to have the midi signal come into Logic as it is, then route it within Logic so as to make it work the way I need. But, if that's not feasible, I can set the hardware the way described above.


Thanks again,



Link to comment
Share on other sites

Whether it's one channel or more channels, the point is that changing the MIDI channel during a sounding note will leave that note sounding. You might have to weave in an All Notes Off command somewhere.




The basic idea:


Notes on channels 1-6 come in from the Physical In . A sustain pedal is used to change notes on channels 2-5 to channels 12-15 (or whatever range you think feasible). The result is fed to a Channel Splitter and from there to three Instrument Channels.


For this to work, you need to grab an incoming CC64 Event, change it to a Meta Event 127 and scale the two values pedal up / pedal down from 0 / 127 to 0 / 10 (which is what you'll add to the MIDI channel later). You do this by using a Transformer set like this:




Note that Data Byte 2 is mapped, so 0 turns into 0 but 127 turns into 10. You feed that Transformer into a second Transformer set like this:




This acts only on channels 2-5 and adds what is specified by the also incoming Meta 127 Event to the channel number (either 0 or 10).


Here you see how notes on channels 1 and 2 are processed depending on the up/down state of the pedal:




The three Monitors are optional but they show what's going on.


The output of Transformer 2 should then be patched into a Channel Splitter Object which has 16 outputs, ordered by MIDI Channel. Patch Output 1 into Instrument 1. Patch Outputs 2,3,4,5 and 6 into Instrument 2 and Outputs 12,13,14 and 15 into Instrument 3.


Check if you can get this to work and see if you're playing disciplined enough to not create hanging notes. I assume the former, but doubt the latter. Let's fix that in session 2 of this course.



Link to comment
Share on other sites

Christian, thanks so much for your help. I'll implement this step and will let you know. :D


Christian, I got the impression that the pedal was part of the guitar controller rig already, which would mean it's already handling the sorting of notes-off in the hardware. I could be wrong though. manofra?


That's correct, Fader8. I'm unsure, though, if pressing the hold pedal will send a NOTE OFF command for those notes. I need to test the hold modes of the Axon and see if that's the case.


Thanks to you both, I really appreciate your help and will keep you posted.



Link to comment
Share on other sites

  • 3 months later...

Hi ski, Christian, and all,


At long last I'm back to this, after a long period in bed!...


Christian, I've implemented your model, and it worked fine. Thanks so much. However, my conceptualization of the entire thing was wrong, and it did not produce the result I needed.


When I started this thread, I thought it would be a matter of taking a certain channel and transform/re-route the midi data coming in. However, the lowest note could come from channels 1, 2, or 3. Likewise, the highest could be on channel 4, 5, or 6.


But what I really need is: to take the lowest note (no matter what midi channel it comes from) and have it play a bass sound. Then, take the highest note and have it play a lead sound, while all other notes in the middle play a pad sound.






Is it possible to achieve that in the environment? Is there an operation that can select the lowest note and the highest note?





Link to comment
Share on other sites


This topic is now archived and is closed to further replies.

  • Create New...