Hello everyone, MSE here. Today I want to show you how I managed to reverse engineer a MIDI Controller from Akai, in order to use it at its full potential in my project.

Why reverse engineer you might ask? Its very easy, because the actual hardware component is unique and very useful and because it is only supposed to be used in its close communication system with Ableton Live, where I wanted to use it in Max MSP.

The starting point was to see what information was going where. For this I used the MIDI controller in its own environment, Ableton, and used a MIDI monitor to see what information was being parsed between the two. And as I was expecting, only the keyboard was sending messages, very simple messages, might I add, all the buttons were on MIDI Channel 1 and all information from the keyboard was on channel 2, so the information won’t overlap at any point in time. But what was making the lights turn up on the MIDI Controller? I knew that Ableton had to send some information, but maybe it was just the driver, which is included in Ableton but not accessible, even to my MIDI monitor, so I fired up Max MSP and created a simple system of counters that would send data back to the MIDI device, the same way it was receiving the data in order to see exactly at which command would the LEDs light up and change colour. After persistent tests, I discovered that the information to control the LEDs was identical to the one each button was sending, but with a different velocity value:
• 0 was LED off
• 1 was solid red
• 2 was clipping red
• 3 was solid green
• 4 was clipping green
• 5 was solid yellow
• 6 was clipping yellow

With this issue solved, all that remained was to create a feedback system where every information that was received, was also sending a response back to the device to activate a specific colour.

It might sound simple, everything said above, but I have to emphasise that fact that coming up to these conclusions took me a good 5 hours. So I hope you find my little experiment useful and I’ll see you in my next post!

Have a good one!