Monday, January 4, 2016

Play the Kaossilator and Kaoss Pad with any Din MIDI equipment



Due to popular demand after my post about how to Play the Korg Kaossilator Pro(+) and the Kaoss Pad (+) with standard MIDI controllers (solder-free tweak), here is an update of the tweak that adds the option to use DIN connections (alone and in any DIN-USB mix).

To quickly summarise my initial problem: the Korg Kaoss devices are designed to be played via their touch pads. Accordingly, the MIDI implementation is tailored around corresponding commands. In practice: MIDI controllers send a note on command to play a tone, while the Kaoss devices expect a control change # 74 (to signal that the touch pad was pressed), and then control changes # 12 and # 13 (to define the X and Y coordinates on the pad) to make a sound. This is a very consequent design choice, however, I frequently struggle to hit exact notes which would be very beneficial at times.

After already posting a way to circumvent this problem by making a small device that translates all USB MIDI messages for the Kaoss devices, this idea is elaborated by adding MIDI DINs here. While this greatly improves the usability for computer-free life performances, unfortunately it cannot be implemented without assembling a small electronic circuit. However, this circuit is particularly simple, very cheap, and comprehensive instructions are posted here.

After adding the DINs in hardware, get the latest Kontroller firmware and change the following parameters in the beginning of Kontroller.ino with the Arduino IDE:

  • USB on/off
  • DIN on/off
  • MIDI channel
  • enable/disable modulation of the X-axis (the note's pitch) by your keyboard's pitch wheel
  • enable/disable notes velocity to define the Y-axis (often a filter or delay)
  • enable/disable a control change # (which can be freely chosen) to define the Y-axis
  • enable/disable aftertouch to modify the Y-axis value
  • enable/disable indication of played notes on the built-in LED of the Teensy (Why not?)

For DIN connectivity, the MIDI library needs to be installed. Connect your Teensy board and, in the Tools menu, select Board: "Teensy LC""Teensy 3.1" or "Teensy 3.2" with USB type: "MIDI". Then press Upload in the Sketch menu.


The Kontroller firmware is now under the umbrella of my MDMA project.

Update: a solder-free DIN solution without USB connectivity


3 comments:

Unknown said... Best Blogger Tips[Reply to comment]Best Blogger Templates

in any way it solves the problem with midi sync/clock that both kaoss got?

Unknown said... Best Blogger Tips[Reply to comment]Best Blogger Templates

Hi, I doubt you still follow these comments, but it's worth a shot. I'm using an UNO with a midi shield for DIN in/out.

I included the arduino midi library. When I try to compile kontroler.ino I get the following error messages:

Arduino: 1.8.13 (Windows 10), Board: "Arduino Uno"

Kontroller:23:1: error: 'define' does not name a type; did you mean 'rewind'?

define DIN

^~~~~~

rewind

C:\Users\mrdav\Desktop\Dev\Kontroller\Kontroller.ino: In function 'void OnNoteOn(byte, byte, byte)':

Kontroller:56:18: error: 'INPUT_MIDI_CHANNEL' was not declared in this scope

if (channel == INPUT_MIDI_CHANNEL) {

^~~~~~~~~~~~~~~~~~

Kontroller:57:5: error: 'xPad' was not declared in this scope

xPad = note;

^~~~

C:\Users\mrdav\Desktop\Dev\Kontroller\Kontroller.ino:57:5: note: suggested alternative: 'yPad'

xPad = note;

^~~~

yPad

C:\Users\mrdav\Desktop\Dev\Kontroller\Kontroller.ino: In function 'void OnNoteOff(byte, byte, byte)':

Kontroller:85:18: error: 'INPUT_MIDI_CHANNEL' was not declared in this scope

if (channel == INPUT_MIDI_CHANNEL) {

^~~~~~~~~~~~~~~~~~

Kontroller:86:17: error: 'xPad' was not declared in this scope

if (note == xPad) {

^~~~

C:\Users\mrdav\Desktop\Dev\Kontroller\Kontroller.ino:86:17: note: suggested alternative: 'yPad'

if (note == xPad) {

^~~~

yPad

C:\Users\mrdav\Desktop\Dev\Kontroller\Kontroller.ino: In function 'void OnPitchChange(byte, int)':

Kontroller:102:18: error: 'INPUT_MIDI_CHANNEL' was not declared in this scope

if (channel == INPUT_MIDI_CHANNEL) {

^~~~~~~~~~~~~~~~~~

C:\Users\mrdav\Desktop\Dev\Kontroller\Kontroller.ino: In function 'void OnControlChange(byte, byte, byte)':

Kontroller:118:18: error: 'INPUT_MIDI_CHANNEL' was not declared in this scope

if (channel == INPUT_MIDI_CHANNEL) {

^~~~~~~~~~~~~~~~~~

C:\Users\mrdav\Desktop\Dev\Kontroller\Kontroller.ino: In function 'void OnAfterTouch(byte, byte)':

Kontroller:135:18: error: 'INPUT_MIDI_CHANNEL' was not declared in this scope

if (channel == INPUT_MIDI_CHANNEL) {

^~~~~~~~~~~~~~~~~~

exit status 1

'define' does not name a type; did you mean 'rewind'?



This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Kino said... Best Blogger Tips[Reply to comment]Best Blogger Templates

Hi, Please I have a question. I'm trying to connect an alesis Q25 keyboard to the kaossilator pro+ with a retrokits RK-002 with firmware adapter to kaossilator cable, but it doesn't work. From retrokits they answer me.
" it looks like alesis has not enabled the ground connection on the q25 so it can not power the cable". " If you have another MIDI device with a THRU port you can try and place it in-between the Alesis and the kaossilator. This device can be an old synth module or a thru box".
How can I fix the problem?. Thanks.