Midi program change in performance mode

  • Hi,


    For the past few days i have been trying to get my Kemper to switch via an external midi track.
    I've kind of gotten it to work in browser mode but the numbers arn't right. When i send PC1 to the kemper it goes to #2, PC2 goes to 3, PC 4 goes to 5 and so on. Highly annoying but atleast it's workable for now.


    I really (REALLY!!) want to use perform mode but i can not get it to switch via midi. All setting are the same, i am on the right channel and a little ''#'' shows up on the right of the display when the track gives a midi command so i know there's something reaching the kemper, but it never changes anything. After the # sometimes shows a small symbol of what looks like a quarter note that has been crossed out.


    I've had this problem with multiple computers, interfaces, tracks and DAW's. Am i missing something?


    Please help!

  • Kemper starts at midi program 00, so you need to set your midi software to start at 00 as well or you will always be one ahead.
    So your performance banks should be
    Bank 1 - 00, bank 2 - 01, bank 3 - 02, bank 4 - 03, etc

  • Page 171 is about expression pedals and remote settings, i dont see how it has anything to do with my question?


    I have read the manual page about my problem (177) about a dozen times and i'm trying exactly what is written there, with no results.


    ''The second method is to send MIDI program changes from your remote controller. There are 128 program changesavailable in MIDI and these are assigned to each Slot as they occur within the Performances, in linear fashion:Rig in Performance 1, Slot 1 loaded by program change 0Rig in Performance 1, Slot 2 loaded by program change 1…Rig in Performance 2, Slot 5 loaded by program change 9MIDI 179…Rig in Performance 26, Slot 3 loaded by program change 127 ''


    If i send a PC to my kemper, be it 1, 2, 50 or 100, it does not respond, let alone switch, in performance mode.

  • Hey Gert,
    I use Midi messages all the time.
    Here is the skinny..
    First Midi Messages are composed using the Hexidecimal number system.
    It starts at 00h decimal starts at 1.
    For the desired preset number to be transmitted it becomes.
    (Decimal Preset number-1)
    So if you want Preset 1 you program 0
    For preset 64 you program 63 and so on.
    What really gets sent is
    00 for preset 1
    3F for preset 64


    Also make sure your message is constructed correctly.


    A Byte is an 8 bit value containing two 4bit nibbles.


    A Midi Program Change message contains three Bytes.
    Header Byte , Value Byte and End of Exclusive Byte


    Header Byte = Cx where C is the upper nibble command for Program Change and x is the lower nibble desired midi channel.


    Value Byte = Desired preset number


    End of Exclusive (EOX) = F7 notates end of a particular message string.
    Quick Midi Channel Decimal to hex table.
    Here is Decimal 1 to 17.


    Note for Midi Channel selection keep them between 1-16 Dec as 17 Dec notates Omni which means any channel. You don't want that.


    1=00
    2=01
    3=02
    4=03
    5= 04
    6=05
    7=06
    8=07
    9=08
    10=09
    11=0A
    12=0B
    13=0C
    14=0D
    15=0E
    16=0F
    17=10 (Omni mode) responds to any and all channel commands. You don't want this.


    Back to the program change for example say you set the Kemper on Midi Channel 4 and you want recall Preset 8
    The program change message


    Preset command header Byte Cx where C is the program change command and x= Dec Midi Channel number-1 becomes C3


    Preset change Value Byte = Desired Dec preset number-1 which becomes in this case
    (8-1)=07


    Last the EOX Byte F7


    The complete message to send would be. C3 07 F7 .


    Any Midi Program Change needs to be constructed like the one above.
    Even MCC messages should be created in a 3 Byte format. Though MCC messages in theory can omit the EOX I would strongly suggest to included it.
    MPC messages must include an EOX Byte.


    The Kemper Midi Channel in this case would be set to 4.


    Search for a Dec to Hex conversion table on the web as it will come in handy for you in your programming endevours.


    Hope this helps.

  • I really admire your detail SgtPepper, but I think that list of numbers is enough to put most people off using midi. I found it quite easy to send patch changes and control changes from a Pro Tools setup.

    Karl


    Kemper Rack OS 9.0.5 - Mac OS X 12.6.7

  • For the past few days i have been trying to get my Kemper to switch via an external midi track.
    I've kind of gotten it to work in browser mode but the numbers arn't right. When i send PC1 to the kemper it goes to #2, PC2 goes to 3, PC 4 goes to 5 and so on. Highly annoying but atleast it's workable for now.

    that's simple: in MIDI, there's not really a convention on if you start counting from 0 upwards or from 1 upwards. as a result, some instruments and effects interpret what you send differently. but that's not a problem because that's nothing that will change. if you see that things don't match up, you just add or subtract 1 to make it work.


    btw: i'm simplifying this thing a little.

    Get in touch with Profiler online support team here

  • Thanks for your detailed responses!!
    I don't understand all of it so i have some learning to do..


    As for now, i just want to use the kemper in performance mode instead of browser mode.


    How is it that the midi PC i send does work when in browser, but not when in performance? I feel like something is not setup right within performance mode since it does not respond at all to any midi pc i give it.

  • Even MCC messages should be created in a 3 Byte format. Though MCC messages in theory can omit the EOX I would strongly suggest to included it.
    MPC messages must include an EOX Byte.

    This is wrong. MIDI program changes comprise of 2 bytes. There is no EOX at the end. In fact, this could mess up the sending of sysex which can always be interrupted by fixed-length messages.

  • Page 171 is about expression pedals and remote settings, i dont see how it has anything to do with my question?

    Guess we are not reading the same chapter (MIDI, switching in perf mode). Blame it on PDF(tm).


    I was referring to the method of selecting the performance number with a CC48 and selecting the slot with a CC50-54, which your device may or may not allow to do .
    Or you can do the math to convert perf nr&slot into the corresponding PC, as explained above.

  • That's the whole point of my post. I'm trying to use the PC corresponding to the right slot in performance but it does not respond to the PC in performance mode. I'm starting to think something is broken.

  • The whole point of my post was giving you an alternative approach to reach your goal.


    FWIW, using both MIDI-floorboard and DAW via Focusrite I just verified with the latest KPA firmware release version that PC in perf mode works as advertised, no matter if omni or fixed channel.
    For a moment you had me doubting, because I use to dwell in browse mode.


    Your problem must be somewhere else, and it seems it's not the cables...


    The # in the display denotes a received PC. No idea why it wouldn't switch, the knob icon stands for received CC.
    Is this a clue that your DAW sends more than the expected PC?
    Check what really goes on the wire, with the DAW inbuilt MIDI monitor, or the likes of MidiOx.


    PC# must be converted to actual perf#&slot#, there is no 1:1 relation.
    The manual hints as follows:
    'You could also use the following formula: (#Performance x 5) - 5 + (#Slot - 1)'


    Hope you get to the bottom of this.

  • As to Timo's point . If a Midi Service Routine is written properly using an F7 termination Byte should Not throw any cog into your buffer service routines. If you happen read an F7 you set an Eox_Service_Flag and leave the interupt. Then check if there are any message service routine flags set in the main loop and act accordingly. If there are no other specifying service flags set you simply clear the EOX recv flag in your service code and be on your way. Your midi service routines should be written in such a manner to be absolutely bullet proof with All possible scenarios considered. So in affect the EOX should insure some sort of action is taken.
    So let me ask you a question. Considering an Mcc message you Can absolutely opt to either omit the Eox or use it is your service routine going to get confused then?
    As a secondary follow up say your receiving a Sysx message you have confirmed the header and product Id but some how a few transmission bytes get corrupted or omitted yet the Eox gets received? Do you loose your midi mind and attempt to service the message or have a mechanism to verify either the proper number of bytes ecpected? Naturally a preset dump would contain some sort of checksum. But I'm talking about say for instance a special command used for some internal function that you want to be private.
    If the message is not correct you just ignore it and clear the service flag.


    In the case of the Pc message if you serviced it before the Eox is detected big deal! what is the difference? You would clear the Eox service flag and be on your way. Its really not that complicated for you to anticipate that is it? Certainly nothing to blow the stack? Right?

  • Gert Jan,


    When reading all above I'm getting a little dizzy.


    Maybe this will help you.


    In performance mode you have to send two messages.
    First up a control change message #32 0 and second a program change (which can be seen in the screen on the left).


    In the manual it states: Rig in Performance 1, Slot 1 loaded by bank select LSB #32: 0 program change 0
    Rig in Performance 1, Slot 2 loaded by bank select LSB #32: 0 program change 1


    When you reach performance 26 Slot 4, you change the control change number to 32 #1 and program change 0 (again)


    In the manual it states: Rig in Performance 26, Slot 3 loaded by bank select LSB #32: 0 program change 127
    Rig in Performance 26, Slot 4 loaded by bank select LSB #32: 1 program change 0


    Cheers!

  • Sorry for the coding protocol banter fellas.
    I'm sure TIMO got the gist.


    As for me I keep the KPA in browse mode and send PC a MCC messages as needed.


    But I have to say what was just quoted from the manual does appear to be a little convoluted at best.
    Reading between the lines I would put it this way.
    #32 0= Bank 1
    PC 0-127= 128/Performance.Slots=Rig#
    On that assumption since there are 5 slots hence the PC=0-124 per Bank.
    Just throw away PC 125,126 and 127,
    After you reach the 124 PC limit you send MCC #32 and new Bank Value
    Send PC =0 and do it all over again.


    But as a fellow guitarist and programmer possibly a more graceful aproach would be.
    MCC #32 VALUE= 0-120 Performance Bank Select.
    PC = 0-4 Slot Select.
    Simple to understand easy to program.
    Would make needing a calculator to get to one particular rig unnecessary.


    Alternatively you could use another MCC # and VALUE= 0-4 to pick the desired slot as well.
    Midi Apples vs Midi Oranges.
    Cheers