Difference between revisions of "Kemper KPA External Control"
m (→MIDI SysEx) |
m (→MIDI SysEx) |
||
| Line 528: | Line 528: | ||
# 0xF7 - SysEx End | # 0xF7 - SysEx End | ||
| − | Example: < | + | Example: <code>F0-00-20-33-02-7F-...-F7</code>, where ... is variable. |
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 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. | ||
Revision as of 16:36, 7 February 2016
The KPA has extensive, intuitive support for external controllers, and some products are made specifically for control of the KPA. The three main types of control are analog expression pedals/footswitches, MIDI, and the Kemper Remote.
Expression Pedals
The KPA has 2 stereo jacks on the back of the unit that can be connected to expression pedals or footswitches. Expression pedals should be stereo and connected with a stereo cable. Footswitches can be mono or stereo. Additionally, up to 4 expression pedals can be connected to the Kemper Remote.
System Menu Settings
Pages 5-10 cover how expression pedals behave. Pedals 1 and 2 cover the two inputs on the back of the KPA, while Pedals 3-6 refer to inputs on the official Kemper remote. The setup done here is simply mapping the pedal's anolog input to that appropriate MIDI CC # (1 for wah wah, 7 for volume, 4 for pitch, and 73 for monitor volume).
Note: if you only have one expression pedal, you can still use it to control wah, volume, and pitch with some additional MIDI setup below. You should set it to CC# 1 (Wah Wah). The KPA is actually very smart about this, and you don't really ever need more than one expression pedal, unless you like to have dedicated pedals, or have your wah/pitch with a spring in it to push it back to heel position, or do some crazy stuff where you jump between pedals.
Pedal Type refers to the polarity of the expression pedal - type 1 is the normal type (Roland), while type 2 is reversed (Yamaha).
This is also where you would come to calibrate a new pedal, or after updating your KPA's firmware/OS. You simply press the button then do a full sweep. Be sure to calibrate any pedal that you add to the KPA or after you update the KPA's firmware/OS.
MIDI Assignments and Settings
Page 14 has some checkbox settings for allowing an expression pedal that was set to Wah Wah on pages 5-10 or MIDI CC 1 to also control volume or pitch-shifting, when not being used for a wah wah effect. It also has settings for sending the KPA's MIDI clock to external devices and setting the MIDI global channel (omni by default). And you can also see the current MIDI CC values for 4 of the most likely used CC's, controlling modulation, pitch, volume, and monitor volume.
Note, if you link a wah pedal to volume, when you disable a wah effect on a rig, the pedal will not begin to control volume until you put it fully in the toe position - this prevents a jump in volume if your wah pedal is not in toe position when you turn it off. Similarly, if wah is linked to pitch, when you disable wah/enable pitch, the pedal will not begin to affect the pitch until it is brought fully to the heel position, again to prevent the pitch jumping on the transition.
Rig Menu Volume Pedal Settings
Page 5 of the Rig menu has some settings specific to using an expression pedal for volume control.
- Lock Vol. Pedal - this setting will lock the current volume pedal settings below to apply to all rigs
- Wah Pedal to Vol. - this is a rig-level override of the System Menu page 14 pedal linking option above
- Location - this refers to a volume pedal's placement in the signal chain. Since a dedicated volume pedal doesn't require an effect slot like wah wah or pitch (whammy), you use this parameter to set where it should affect the signal.
- Range - this refers to whether the volume pedal should boost when moving from heel position to toe position (when set to right of center) or cut when moving from toe to heel position (when set left of center)
Analog Footswitches
The Kemper also supports analog mono and stereo momentary footswitches. They are set up the similarly to expression pedals on pages 5-6 of the System menu. The difference is instead of being mapped to wah wah, volume, pitch, and monitor volume, it can be assigned to enable/disable any of the sections or blocks in the signal chain, as well switch to tuner, tap in the tap tempo, and switch to the previous or next rig. In the case of a stereo/dual footswitch, each one can be independently assigned to different parameters.
Using a MIDI Footcontroller
System Menu Settings
While in Browser mode, page 12 allows you to assign the current rig to a MIDI Program Change number, as well as view all the MIDI assignments. Note, these are only for Browser mode, not performance mode, where more than MIDI bank of 128 rigs each can be assigned.
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 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.
| CC # | Valid Values | What it controls |
|---|---|---|
| 1 | x | Wah Wah position on any enabled wah wah effect. Volume if "wah to volume" linking is checked and all wah wah effects are disabled or not present on current rig. Pitch if "wah to pitch" linking is checked and all wah wah effects are disabled or not present on current rig. |
| 4 | x | Pitch position for Pedal Pitch or Pedal Vinyl Stop effects |
| 6 | N/A | Part of an NRPN message; see MIDI NRPN below |
| 7 | x | Volume - controls the volume of the rig as specified per rig in the Rig Menu page 5. |
| 16 | Any | Toggles all stomps on/off |
| 17 | 0/1 | 0: Stomp A Off; 1: Stomp A On |
| 18 | 0/1 | 0: Stomp B Off; 1: Stomp B On |
| 19 | 0/1 | 0: Stomp C Off; 1: Stomp C On |
| 20 | 0/1 | 0: Stomp D Off; 1: Stomp D On |
| 22 | 0/1 | 0: Effect X Off; 1: Effect X On |
| 24 | 0/1 | 0: Effect Mod Off; 1: Effect Mod On |
| 26 | 0/1 | 0: Delay Off; 1: Delay On |
| 27 | 0/1 | 0: Delay Off (with tail); 1: Delay On |
| 28 | 0/1 | 0: Reverb Off; 1: Reverb On |
| 29 | 0/1 | 0: Reverb Off (with tail); 1: Reverb On |
| 30 | 1/0 | Sets Tempo Tap If your floorboard supports separate events on “pressing” and “releasing” a button, send 1 when “pressed” and 0 when “released”. If the floorboard can only send one event, use value 0. When value 1 has been sent and no value 0 for 3 seconds, the Beat Scanner1 is being activated. |
| 31 | 1/0 | 1: Show Tuner; 0: Hide Tuner |
| 33 | 0/1 | 0: Rotary Speaker slow; 1: Rotary Speaker fast |
| 38 | N/A | Part of an NRPN message; see MIDI NRPN below |
| 47 | [0,124] | (Performance Mode only) Directly select a performance index. The performance will be loaded when a slot selection is sent (CC50-54). If no slot is selected, the performance index selection is disabled after a few seconds. When disabled, the KPA sends the current performance index and slot back to the device. This can be used to keep the MIDI controller and KPA in sync. |
| 48 | 1/0 |
|
| 49 | 1/0 |
|
| 50 | 1 | (Performance Mode only) Select Slot 1 of current performance. |
| 51 | 1 | (Performance Mode only) Select Slot 2 of current performance. |
| 52 | 1 | (Performance Mode only) Select Slot 3 of current performance. |
| 53 | 1 | (Performance Mode only) Select Slot 4 of current performance. |
| 54 | 1 | (Performance Mode only) Select Slot 5 of current performance. |
| 68 | x | Sets Delay Mix to x |
| 69 | x | Sets Delay Feedback to x |
| 70 | x | Sets Reverb Mix to x |
| 71 | x | Sets Reverb Time to x |
| 72 | x | Sets Amplifier Gain to x |
| 73 | x | Sets Monitor Volume to x |
| 98 | N/A | Part of an NRPN message; see MIDI NRPN below |
| 99 | N/A | Part of an NRPN message; see MIDI NRPN below |
Most foot controllers support some form of programming what each footswitch will send, and if the footswitch should toggle its value. For example, if you assign FS1 to turn Stomp A on/off, you should be able to set FS1 to light up after pressing it (and it sends a 1 (on) value, indicating you've turned it on. Now if you press it again, the light turns off, and it sends a 0 (off) value.
This brings up a curious issue. If you change rigs where Stomp A is on when the rig is loaded, how does the MIDI footcontroller know what state to set FS1? The footcontroller itself must store a set of rigs containing the default on/off state of each footswitch, matching the corresponding rigs in the KPA.
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
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
- CC 98: Value is the Least Significant Byte (LSB) of the desired address
- CC 06: Value is the Most Significant Byte (MSB) of the desired value
- CC 38: Value is the Least Significant Byte (LSB) of the desired value
While the NRPN spec allows CC 38 to be optional, the KPA requires it. The 4 CC's named above must be received in order, and the NRPN message is processed as soon as CC 38 is received. Once an address has been selected via CC's 99 and 98, multiple values can be sent without sending 99/98 each time to reselect the address - only 06/38 needs to be sent.
Some footcontrollers support NRPN 14-bit addressing but not 14-bit values via CC's 06 and 38. The KPA allows CC 119 to send the value in this case. So the footcontroller can be programmed to send an NRPN as 99:address MSB, 98:address LSB, 119:7-bit value. The 7-bit value is mapped to the appropriate 14-bit value - 128 becomes 16,384, 64 becomes 8,192, while 0 remains 0.
Since each CC message can carry a value from 0-128, NRPN addresses and values each have a range of 128 x 128, which is 16,384.
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MIDI SysEx
MIDI also has the ability to send 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 SysEx common format is:
- 0xF0 - SysEx Start
- 3 bytes for Manufacturer ID (0x002033 for Kemper)
- 1 byte for product type (0x02 for Kemper Profiling Amp)
- 1 byte for device ID (0x7F for Omni)
- x bytes for the message (this is the device-specific part)
- 0xF7 - SysEx End
Example: F0-00-20-33-02-7F-...-F7, where ... is variable.
The Kemper MIDI SysEx protocol gets pretty intense, and I'll leave it to those interested to refer to the 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
| Function Code | Function | Address Size | Data Size | Notes | Example |
|---|---|---|---|---|---|
| 0x01 | Single Parameter Change | 2 bytes | 2 bytes | Same as doing an NRPN change |
F0-00-20-33-02-7F- 01-00-4A-04-40-00- F7 |
| 0x02 | Multi Parameter Change | 2 bytes | 2n bytes | Address is the starting address; you can send as many pairs of data bytes as you want to change - each pair will write to the next address in sequence | F0-00-20-33-02-7F- 02-00-4A-00-00-03-00-01-00-01-4C-4F-..-..- F7 |
| 0x03 | String Parameter Change | 2 bytes | n bytes + final 0x00 byte | Strings must have a final null (0x00) byte to terminate the string. String data is 1 byte per character, encoded as ASCII. String addresses overlap with parameter addresses. | F0-00-20-33-02-7F- 03-00-00-01-48-65-6C-6C-6F-00- F7 |
| 0x04 | BLOB Change | 2 bytes | 2 byte offset + 2 byte size + n byte data | Only a null (0x00) offset is currently supported. Not sure what this would be used for except overwriting amp/cab profile data? | |
| 0x06 | Extended Parameter Change | 5 bytes | 2n bytes | Same as 0x02 but uses 5 bytes for address | |
| 0x07 | Extended String Change | 5 bytes | n bytes + 0x00 End Byte | Same as 0x03 but uses 5 bytes for address | |
| 0x41 | Single Parameter Request | 2 bytes | 0 bytes | returns the corresponding 0x01 SysEx message | F0-00-20-33-02-7F- 41-00-4A-04- F7 |
| 0x42 | Multiple Parameter Request | 2 bytes | 0 bytes | returns the corresponding 0x02 SysEx message. May contain up to 128 values as byte pairs. | F0-00-20-33-02-7F- 42-00-4A-00- F7 |
| 0x43 | String Request | 2 bytes | 0 bytes | returns the corresponding 0x03 SysEx message | F0-00-20-33-02-7F- 43-00-00-01- F7 |
| 0x47 | Extended String Request | 5 bytes | 0 bytes | returns the corresponding 0x07 SysEx message, but may return the corresponding 0x03 message if the address is < 16,384 | |
| 0x7C | Request Parameter as String | 2 bytes | 2 bytes | this returns an 0x3C response that otherwise matches the request, plus the string response after the 2 byte data portion. The string response is the KPA's string representation of that parameter value. For instance, Delay Volume value 8,192 is the midpoint value, which displays in the KPA as "<0.0>". | F0-00-20-33-02-7F- 7C-00-4A-04-40-00- F7 returns F0-00-20-33-02-7F- 3C-00-4A-04-40-00-3C-30-2E-30-3E-00- F7 |
Behringer FCB1010 - UnO4Kemper
A popular foot controller for the Kemper is the Behringer FCB1010 with a UnO4Kemper EPROM chip installed. The UnO4Kemper firmware is an unofficial firmware for the FCB1010 made by a 3rd party author. It comes on an EPROM chip that can be switched out for the factory chip after opening the FCB1010 up.
This firmware will instantly turn your FCB1010 into a dedicated Kemper controller. The main advantage of this chip is it is as plug and play as you will find to get a working pedalboard for the Kemper, other than the official Kemper Remote. The bad part is that it makes the FCB1010 only work with the Kemper and you cannot do advanced customization of how the controller operates. Also, if Kemper updates the KPA software to add new features, there is no method to update your current UnO4Kemper chip to support those features - you will have to purchase a new chip once the UnO4Kemper firmware is updated to support the feature.
