Changes

Kemper KPA External Control

1,330 bytes added, 22:08, 7 February 2016
m
Using a MIDI Footcontroller
While in Performance mode, page 13 allows assigning external devices to the MIDI Out and Thru ports, as well as giving them device names, and specifying which channels the Kemper should use to communicate with them.
=== MIDI Programming Reference ===This section contains reference material for controlling the KPA by CC (Continuous Control ), NRPN (Non-registered Parameter Numbers), or SysEx (System Exclusive) MIDI messages. These go from least to most complicated, and similarly most to least supported. ==== MIDI Continuous Control ====
The KPA responds to a number of MIDI CC messages. These are enough for generic MIDI foot controllers to perform normal functionality. You can change cycle through rigs in Browse mode, and bank up/down and select any of the 5 rigs assigned to the slots in Performance mode. You can turn on/off any of the 8 effects, tap tempo, display the tuner, and switch the rotary speaker effect's speed. In addition to the expression pedal functions above of controlling wah wah, pitch, volume, and monitor volume, one could be used to control delay/reverb mix and feedback/time, as well as amplifier gain.
MIDI CC is the most widely supported part of the MIDI protocol by various MIDI footcontrollers; however, you will notice that there are hundreds of parameters for dozens of effects, as well as the amp, cab, input, output, and tonestack blocks that are not able to be controlled via CC, given the list above. MIDI CC supports 7-bits for the CC channel number and 7-bits for the value, meaning a maximum of 128 parameters can be controlled with only 0-127 distinct values to communicate. The MIDI specification gives 2 ways to deal with this: NPRN and Sysex.
==== MIDI NRPN ====
[https://en.wikipedia.org/wiki/NRPN NRPN (Non-registered Parameter Numbers)] uses a set of 4 different CC messages to exponentially increase both the size of possible addresses and values that a device can send/receive. The exact specification is below:
# CC 99: Value is the Most significant Byte (MSB) of the desired address
|}
==== MIDI SysEx ====
MIDI also has the ability to send [https://en.wikipedia.org/wiki/MIDI#System_Exclusive_messages SysEx (System Exclusive)] messages. SysEx messages are proprietary protocols that each manufacturer can create for each of their devices. They use a common beginning and ending indicators, as well as manufacturer and device identifiers, so that devices that cannot interpret them know to ignore the message; and they can be incorporated into streams of MIDI messages between lots of devices in a MIDI ring without causing chaos.
The Kemper MIDI SysEx protocol gets pretty intense, and I'll leave it to those interested to refer to the [http://www.kemper-amps.com/page/render/lang/en/p/170/id/27/cat/30/do/Kemper_Profiling_Amplifier___Downloads.html Kemper MIDI documentation]. For most users, SysEx will never be necessary. Where this really comes in handy is for software programs that want to communicate with KPA via MIDI. The big items that SysEx offer beyond NRPN above are string manipulation and requesting parameter values from the KPA. These would allow a program to act as an editor, or an advanced floorboard to maintain two-way communication with the KPA, displaying the KPA's current values and keeping on/off states in sync.
The x bytes above have a common scheme for Kemper SysEx messages, where the first byte is the function code. This is followed by an instance code, which is always 0x00. This is followed by the address, then the data.  Depending on the function code, the address may be 2 bytes or 4 bytes, and the data can be variable length. '''The 2 byte addresses use the NRPN addresses above.''' I am not sure what the extended addresses referenced below are - the MIDI documentation does not list any. Similarly, '''all 2 byte values use integer values of 0 - 16,384 for min to max''', although this may correspond to different display values on the KPA (for instance, a value of 0 might be "-5.0", 8,192 might be "<0.0>", and 16,384 would be "+5.0" - this depends on what the parameter actually is). '''Strings use single byte characters encoded using [http://www.asciitable.com/ ASCII].''' I am not sure what the addresses for the string values are, but the documentation does say that the numeric settings' addresses overlap with the strings. So, to get all the tags for an Amplifier profile, I would imagine you'd use the first address for Amplifier parameters listed in the NRPN reference above, and iterate +1 for all available tags. ''However, from my research, this does not match how the tags are structured in the .kipr files when they are saved.''
{|class="wikitable"