Dienstag, 19. Januar 2010

Using the Launchpad to Control NI Reaktor

The Novation Website lists as one of the key features for their Launchpad, that it can be used by Max/MSP and Reaktor as a Trigger-Platform. As a Reaktor user I was very interested in using the Launchpad to control step sequencers. Thankfully Novation has published a Launchpad Programmers Reference, which enables the Developer to create their own applications for the Launchpad. There are 2 important things you have consider when developing a Launchpad control:
  1. Launchpad communicates only via MIDI
  2. There is no way of requesting the current state of the Launchpad
Basically you tell Launchpad via MIDI Note and CC Message, which buttons you want to light up in which color. On the other side the Launchpad transmits a Note On message when a button is pressed, transmitting the location of the button (as note number) and if the button was pressed (velocity = 127) or released (velocity = 0). This way you can also use the Launchpad as Keyboard/Drumpad. We will be considering several options for controlling a Reaktor ensemble, preferably a Step Sequencer like the DSQ32 or my Own Scale Step Sequencer. The bottom line is, making Launchpad work properly with Reaktor is a bitch.The problem is, that Reaktor currently (current Version 5.5) does not support OSC in host mode. As far as i am concerned, it doesn't even make sense in trying to create anything using OSC until NI comes around to implementing OSC in host mode. Don't quite understand what the problem is for them. In any case we need an intermediate process/application/plugin that stores the current state of our Launchpad and sends the right data to the ensemble that we want to control.
To get proper control of an ensemble in an host environment, you have to resort to MIDI messages. These messages have to be routed to the ensemble in some way and the best way to accomplish this is by sending Midi message via a virtual MIDI Port. On the PC you have to resort to MIDI Yoke, which I found only partly reliable. On the Mac you can easily create a virtual MIDI Port with the Audio-Midi-Setup using the IAC Driver.
I wrote an Application in Java, that stores the different Launchpad states I conceived to control the DSQ-32. It used MIDI Yoke on the PC to send the MIDI Data through the host, i.e. Ableton Live. I modified DSQ-32 in such a way that the Buttons would respond to a sequence of MIDI CCs. After some trouble got my results and posted a short performance with my Launchpad <-> Java Application <-> Ableton Live <-> Reaktor DSQ-32 on Youtube:

I chose the DSQ-32 because of all the tiny buttons. Unfortunately the result was not 100% satisfying because the bidirectional communication did not quite work as well as I had hoped for. This was mainly due to some limitations in which way Live handles (it filters duplicate CC Values!!) midi messages.

In the meanwhile I purchased an iPad and Max4Live and will abandon developing for the Launchpad and Reaktor. Let's hope the next version of Reaktor will be able to handle OSC in the the future.