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

Logic 9 Logic cannot handle MIDI program change - why not?

Discussion in 'Logic 9' started by lotus49, Mar 27, 2010.

  1. lotus49

    lotus49 New Member

    I have been struggling for days to get Logic 9 to respond appropriately to MIDI program change messages.

    I would expect Logic automatically to respond to program changes messages from my keyboard but it doesn't do anything. I have checked that they are being sent correctly (with an app called MIDI Monitor) and all the other MIDI events (eg keys, slider, rotary knobs etc) work exactly as I would expect.

    I particularly want to use this with FM8 as I have a lot of presets but I have tried with numerous different plug-ins and it doesn't work with any of them.

    I know I can map a single MIDI event to a command such as "Next Plug-in Setting or EXS Instrument" but that's no use as it doesn't accept an argument and the MIDI program change message is followed by a value that changes as shown by this output from MIDI Monitor:

    21:35:07.313 From MK-449C USB MIDI Keyboard Program 1 5
    21:35:09.306 From MK-449C USB MIDI Keyboard Program 1 6
    21:35:12.466 From MK-449C USB MIDI Keyboard Program 1 22

    I find it hard to believe that I am the only Logic user who wants to change presets from the keyboard, but I have scoured the net and found nothing of any use. Can it really be the case that Logic lacks this basic functionality?

    I would be very grateful for any help with this as I am getting nowhere in a hurry.
  3. Petrosil

    Petrosil Member

    You are aware that Logic uses incoming Program Change messages on MIDI channel 1 to switch Channel Strip Performances?

    Performances are Channel Strip Settings settings that are assigned to a certain Program Change number. You create Performances by saving a normal Channel Strip Setting as Performance (and assigning a certain Program Change number during the save operation).

    Now to switch presets of software instruments via Program Change message you have to send the Program Change messages on a MIDI channel other than 1. Simply change the send MIDI channel of your controller keyboard to any MIDI channel from 2-16.


  4. chugbry

    chugbry New Member

    Yep, or you can create custom midi message changes in the environment within multi instruments too.


  5. lotus49

    lotus49 New Member

    Thank you very much Manfred. Although this hasn't sorted out my problem entirely, it's got me a lot closer.

    I probably should have pointed out that while I am both musical and very technical, not both at the same time. I have been playing the clavichord and baroque flute for a long time but that experience hasn't been very useful with electronic music making to which I am very new. I am learning fast but there is so much to learn that I have only scratched the surface so far.

    I changed the global channel on my keyboard to 2 (it had been 1) and with the first plug-in I tested it with (Novation V-Station) it worked perfectly straight away.

    Unfortunately, it didn't seem to work on ES1, EFM or FM8 (these synths really have imaginative names don't they :)). The most important thing is that I have at last managed to get this to work at all so I know that there is nothing fundamentally wrong (except for my level of knowledge).
  6. lotus49

    lotus49 New Member


    I am sorry for my ignorance, but could you explain in a little more detail what you mean? I am new to electronic music and while I am happy to read through the documentation to understand this, there is a lot to read and I don't know where start.

    Thanks for taking the time to help me.
  7. Petrosil

    Petrosil Member

    Please note that not all software instruments respond to Program Change messages (for software instruments this is no standard feature as for hardware instruments). The ones shipped with Logic surely do not, and the Native Instruments FM8 probably does not.


  8. Eli

    Eli Senior member

    Like Manfred says, none of the built in Logic instruments respond to program changes. If you insist on wanting to work this way (which isn't really an optimal way to work in Logic) you need to create Channel Strip Settings with the instrument patches called up that you want, and then save them as a Performance from under the Channel Strip Settings menu. Then te Channel Strip Setting will respond to program changes.

    But why not just load up multiple instruments?
  9. lotus49

    lotus49 New Member

    I have looked into FM8 a bit more and there was an unlabelled toggle button on the interface that I had missed. Once I had changed MIDI channel and clicked on this toggle I was able to change the presets in FM8.

    FM8 seems to number its presets 1-128 rather than 0-127, which is what my keyboard sends, but that's a very minor irritant.

    To answer Eli's question as to why not just load multiple instruments: partly because it hadn't occurred to me to do it like that (and I can see now that might be a good idea), but mainly because I usually want to change presets from the keyboard when I am improvising. Going back to my computer and adding another instrument and changing to the correct preset interrupts the flow rather.

    Thanks for all your help. I'm pleased to have this working on FM8 and to know not to bother trying on the built-in Logic plug-ins.
  10. Petrosil

    Petrosil Member

    This is only a matter of labeling. The logical program change numbers (which are the actual MIDI events) are always 0-127. But a lot of manufacturers prefer to label their presets from 1-128 (some even split up their presets in subgroups, e.g. A1-16, B1-16 ... H1-16).
    Maybe they think a preset number 0 might be confused with "no preset loaded" or preset 10 by some users. I guess not all users may know that 0 is the first digit in the digital domain (no matter if you count in binary, decimal or hexadecimal systems). On a telephones numeric keypad for example key 0 is located after key 9, while on a computer keyboard it is located before key 1. So labeling the presets from 1-128 should be clear to all users.


  11. Peter Ostry

    Peter Ostry Administrator Staff Member

    I think you missed Manfred's suggestion to use Performances. "Performances" are a Logic function. Read in the manual about this option. It lets you load channelstrip settings on the fly. Means, you play with one setting, then send a program change and play with another setting. Which, in your case, would be the same instrument with another preset.

    If Performances are too slow for you, you can load the instrument in multiple channelstrips and switch or fade between the channelstrips. This is the fastes method available – faster than switching the instrument itself – but it is more complicated. Try the Performances first.
  12. mrl

    mrl New Member

    Hi all,
    Thanks for the helpful post. This has been confusing me for awhile.

    The one caveat I see with Logic not receiving Program Change data on Ch 1 is that the Midi Program Chase function ONLY works on Ch 1.
    Therefore when I write program changes (several within a bar sometimes for orch stuff) on channel 2, Logic will not chase the message on the fly. By chase on the fly I mean automatically sending the last message in the timeline just by dropping the playhead. Of course it sends when you actually play over the spot, but chase is more ideal.

    My work around is going into each region and changing the channel to 1 manually via the event editor, as Logic will SEND the PC message on 1. It's a pain.

  13. rsn

    rsn New Member

    PCHG During Record Mode - Non-Functional?

    So, yes, this is a very helpful thread for 'Play' mode, but the real power of on the fly pchg use from a controller is during a recording session, thus recording the pchg event for future playback. Is this basic MIDI event response and recording transaction simply beyond the scope of Apple's development group? Or, hopefully, I have a blind spot and have not found the obscure documentation that explains how to do this. MOTU had this working fine in what, 1987?

    Thanks for any assistance before I am forced to abandon Logic and head toward Live or elsewhere.

Share This Page