1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Logic X Embedding Program Change

Discussion in 'Logic Pro X' started by peterlemer, Oct 11, 2015.

  1. peterlemer

    peterlemer Senior member

    Is it possible to embed EXS24 PC commands in a MIDI region?

  3. CSeye

    CSeye Senior member


    In the EXS 24 Options>Preferences, you can set up Previous Instrument, and Next Instrument. Select "Program Change" in the pop up for each. I set "1" for Previous, and "2" for Next.

    In the Event list, you can add a Program change where you want it. Set the Channel column to something other than 1. Enter 1 or 2 in the Value column.

    Previous and Next are relative to the currently selected Instrument, and not like a GM/hardware module program change. If Classic Piano is currently selected, then Next switches to Grand piano. But, if you stop, then manaully select Acoustic Bass>Unplugged, then Next is Upright Ballad.

    This is fiddly and probably now what you want.
  4. Peter Ostry

    Peter Ostry Administrator Staff Member

    Phew ... this will go wrong sooner or later. Imagine stopping your playback between Previous/Next events and start again, executing the program change twice.

    I would use two tracks and mute.
  5. CSeye

    CSeye Senior member

    Using two or more tracks is a more sensible solution.

    Maybe the Previous/Next approach works with a folder of favorites with a select group of instruments prearranged in a sequence. Perhaps for live performance.

    I have to say, the factory presets switched without any lag or delay that would be expected with sample instruments.
  6. Peter Ostry

    Peter Ostry Administrator Staff Member

    Why? If there is time to insert Program Changes I believe it is for a mix, composition or arrangement. There is enough time to adjust the automation.

    The drawback of the 2-track method is, that you have to alias, duplicate or move the MIDI regions.


    If there is a pause while the sound switches, the Logic Performances can work. You assign Program Changes for channelstrip settings and load them via events in the track. Another solution involves the environment, you can switch a cable switcher by PC and send the notes of one track to several instrument channelstrips selectively. For both methods, performance and switch, you need to send MIDI to the outside (i.e. an IAC bus) and get it back in, because internally generated events cannot be used in Logic.
  7. CSeye

    CSeye Senior member

    My concern is having control over the assigned sound. Let's say a phrase has a mix of Next and Previous EXS24 program changes. If listening to the region as it plays back in cycle mode, the Instruments can move beyond the intended assigment as Next and Previous are relative to the current preset. This can work if carefully placing Next and Previous program changes so that the phrase begins with the intended sound.

    What you describe above is beyond me at the moment. Time to do some some homework.
  8. Tangra

    Tangra Senior member

    Hi guys,

    There is a very elegant way to use a single track and switch between EXS instruments without any gabs or hangs. I think I have published this old-school method long time ago here or in some other forums - can not remember. So here it is again...

    Prototype One

    1. Create a Channel Splitter object in the Environment and cable its channel Pins to several Instruments loaded with different patches (max Instrument amount - 16).
    2. Create a Track in the Main Window for the Channel Splitter.
    3. Open the Key Command dialog and assign KC for "Select same MIDI Channel" and for "Event Channel" 1-16. You will need those KC for quick event Channel Editing directly in the Piano Roll, which will save time to edit events in the Event List.
    4. Record or draw a MIDI region, open the Piano roll and change the MIDI Channel for selected events. This will switch to the correspondent Instrument according to the Channel Splitter cabling.


    Macro Tool Project

    It is a good idea to have a Patch/Channel Monitoring. It can be done easily just by using a Transformer and a Text Fader objects packed into a Macro. This Macro detects the Event MIDI Channel and switches the Text Fader accordingly. All you have to do is to double click the Text Fader to open its dialog and create Patch Names for each Channel. Here is the Environment setup.


    Macro as Float

    Download the AG Template Song and open it. The default Screenset #1 recalls the Macro as small float window so you can preview the Patch/Channel switching. It will update when you select a different Channel Event in the Piano Roll or in the Event list etc. Screenset #2 recalls the Environment Mixer layer so you can cable more Instruments to that Channel Splitter.
    Note: I have enabled the H (hide) buttons for the EXS tracks. Use the Global H button to hide those Tracks cause we do not need them in case you use Single master track. If you need those tracks for Multi-Timbral purpose just enable them.


    AG Multi Channel Track Switcher - DOWNLOAD

    BTW. There is way to switch the MIDI Channels (Instruments) in real time and record the external MIDI as true MIDI Channel data using the AG Environment Channel Switcher which comes with the AG Logic X Toolkit Pro.
    I demonstrate that switcher in this Youtube Video (time: 0.46).


    Last edited: Oct 13, 2015
  9. Peter Ostry

    Peter Ostry Administrator Staff Member

    The channel-method Tangra mentioned above schould work well. With this, you decide per MIDI channel which instance of EXS should play. In other words: you change the MIDI channel of your notes in the score and they sound different.

    Let's summarize (no particular order of methods):

    1. Route to EXS instances by MIDI channel
    The MIDI channel of a note determines which of several EXS instances plays. You need one instrument track and as many channeltrips (not tracks) as you have EXS instances.
    Pro: No MIDI routing via a MIDI port
    Con: Note-offs not controlled. (Edit: This is wrong, note-offs are maintained well.)
    Con: Probably cumbersome changes since the Logic score does not support note colors by channel.​

    2. Route to EXS instances by Program Changes
    Program Changes are sent to the outside of Logic and come back as "external" MIDI (via an IAC bus). A switch routes the notes to the selected EXS instance. You need one Instrument track and as many channeltrips (not tracks) as you have EXS instances.
    Pro: Easy switch-point setting by position of Program Changes.
    Con: External MIDI routing required.
    Con: Note-offs not controlled. Don't switch the sound while a previous note is still playing.​

    3. Switch EXS instruments by Perfomances
    A Logic "Performance" is a Program Change assigned to a saved channelstrip setting. In fact, every PC loads a setting into the channelstrip of your Instrument track. You need just your instrument track and channelstrip.
    Pro: Easy switch-point setting by position of Program Changes.
    Con: External MIDI routing required.
    Con: Channelstrip settings get loaded – works only in pauses with silence.​

    4. Switch/Blend EXS instruments by automation
    You have two or more instrument tracks with different sounds. Automation controls which EXS is audible. This is my clear favorite.
    Pro: No MIDI routing involved.
    Pro: Hard and soft switching is possible (mutes or fades).
    Con: You need your regions on more than one instrument track (can be aliases though).​
  10. Tangra

    Tangra Senior member

    Hi Peter. I do appreciate your skills, but I think you are not correct about the Note Offs. This is related to the setup I offer in my previous post so I'd like to fix your error comment if you do not mind? :thmbup:

    1. Each MIDI event knows its ON and OFF status when it is sequenced in Logic. All events are sent from the Single MIDI Track via Channel Splitter to several Channel Strips, where the channel routing is direct via separate cables. This guarantees no hanging Note events during switching even there are some long layering Note events. This method allows you to set different Channels for a Polyphonic chord - i.e each Note event of that Chord can play different MIDI Channel/Patch without any hanging.
    Try next. Open my AG Template I provide in my previous post. Create new MIDI Region and draw two long Half notes for example.
    Set the 1st Note to legato the second Note a little bit. Set both Notes to different MIDI Channels and play.
    Is there any Note hanging during the legato/channel switching ?

    2. Regarding the Score editing we do not need Colors. Read my previous post Key Command instructions. For example my Event MIDI Channel KC are:
    Option+Cmd+1 = Ch.1;
    Option+Cmd+2 = Ch.2;
    Select a Note in the Score or any Editor (it plays the Channel Patch). Hit a given KC to change the MIDI Channel of the selected Note(s).
    Last edited: Oct 13, 2015
  11. Peter Ostry

    Peter Ostry Administrator Staff Member

    Oh sorry. :rolleyes:
    Yes, you are right. It isn't a switch, it is a channel splitter, so the note-offs will always pass through on their own channel.

    I don't know. Depending on the music he may want to see where the sound changes are. On the other hand he can certainly hear where they are. If he wants to use your tool and is happy with "invisible" switchpoint then well, it is definitely a good solution.

    I think it boils down to two methods which are worth to try and they deliver different results:
    • Selecting EXS instances by note channel
    • Multiple tracks with automation
    It just depends if he wants hard switches or the possibility for soft switches and fades/blends.
  12. CSeye

    CSeye Senior member

    Last edited: Oct 14, 2015
  13. CSeye

    CSeye Senior member

    Thank you for clearly indicating the required steps.
    Very helpful!!!
  14. Tangra

    Tangra Senior member

    If we are talking about the Score there are at least two visible aids:
    1. The Articulation labels you draw in the Score - Arco; Pizz etc. It is assumed that they correspond to the MIDI Channel switching.
    2. The Float Environment Text Monitor updates (shows the current Articulation/Channel) during, Event selection, Play, Timeline scrolling, etc.

    I agree that it is an old-school method which does not show a global overview in the Main Window timeline, that's why I invested into
    the AG Logic Articulation Switcher development which is based on TBA control points shown as Text articulation names.
    The other advantage is that this TBA technology can send true Articulation Map per control point including: two Key Switches;
    Program Change and two Control Change messages as well as KS Latch which is essential for today Instruments.
    Last edited: Oct 14, 2015
  15. Tangra

    Tangra Senior member

    Hi Wally, nice to hear from you! I had a look at that link. As you say there is some relevance between both topics. If you want to switch the MIDI Channels (EXS24 Instruments in this case case) on the fly via Program Change sent from the Global Single Track (Ch.All) Inspector, you need to patch the AG Environment Channel Switcher tool. That tool can be controlled via Key Switches or Program Change. As far as I remember you own AG Logic Toolkit Pro - do not you?
    If you are interested let me know. I'll provide a quick guide how to do that.

    Last edited: Oct 14, 2015
  16. CSeye

    CSeye Senior member

    Hi Ivan,

    Yes, I do have the Toolkit Pro.
    A quick guide would be appreciated when you have time.

  17. peterlemer

    peterlemer Senior member

    fascinating comments, chaps. I am not getting these posts though, even though I have checked the boxes to get email copies. I have only had the very first response from CSEye from monday - and none others.

    Surprised to see so much has been said since then

    Any clues as to why?


Share This Page