Thursday, May 29, 2014

MIDI drivers and a UI surrogate

So, I wrote drivers for all the MIDI I/O on my groovebox. This would be 1x MIDI input and 3x MIDI output. Now this gadget happily sends and receives all kinds of MIDI data. The main thing still missing is the SysEx data support but I have no use for it, at least for now. I’ll add it later if I actually need it.

Now, how do I know the I/O ports actually work? Well, I created a simple UI test plugin using Max For Live



The plugin acts as a temporary user interface replacement for my groovebox. It will be replaced with an actual HW UI when I get it designed, up and running.

The plugin waits for mouse clicks on its buttons. When a click happens, it sends the button click information to my HW groovebox using my computer’s MIDI output. The groovebox deciphers what should be done with this button click and sends back user interface control information (using it’s own MIDI output), such as “change the colour of button #6 from black to orange”. All this makes it really easy to see that the groovebox’s firmware is actually working as it should.

Currently the plugin displays the following information correctly:
- Note on/off.
- Note pitch.
- Play position in the pattern.
- Amount of unused CPU.

To test the other two MIDI output ports also work as they should, I’m using them to send sequenced MIDI data into my computer. One of the MIDI outputs is playing a simple electro house bassline and the other one is playing a repeating one note loop. I’ve setup the Ableton Live so that there are two soft synths playing these midi notes.

Here’s a quick recap of what the MIDI ports are being used for at this point of development:
- MIDI Input 1 = Receive UI event information from computer (Max For Live plugin).
- MIDI Output 1 = Send UI control information to computer (Max For Live plugin).
- MIDI Output 2 = Send electro house bassline MIDI notes to computer.
- MIDI Output 3 = Send repeating one note loop to computer.

Creating this plugin was a really slow process for me, since I had no previous experience with Max. I spent lots of time RTFM'ing, browsing through examples, experimenting, swearing and taking baby steps towards my intended goal. Eventually I got the first few features working as they should and felt happy about it. There's still a lot for me to learn about the Max environment, so I expect to do a lot more RTFM'ing and swearing in the upcoming months.

If you're wondering what MIDI interface I'm using to connect my groovebox with my computer, it's all handled by MOTU Midi Express 128.



No comments:

Post a Comment