hatestheinternet

BeagleBoargan

Now that the we have a functioning MIDI to SID chip device thanks to the Arduino, we need something to actually feed it MIDI. In the earliest incarnation of the BeagleBorgan, I was planning on using a BeagleBone Black thus was developing a Qt version of the management application.

While the software was working perfectly on Xubuntu machines, my Black's PMIC fried before I ever tried it on a real-school BeagleBone. It did work a resonable semblence of properly (minus a small sorting bug in the combo boxes when new patches are added) and I was able to load/save and tweak the various channel's patches while playing a MIDI file using both pmidi and RoseGarden. RoseGarden and the Qt application are what I used to make this short Vine.

No longer having HDMI and therefore monitor capability, I blew up everything I'd written on the Linux side and used a modified version of my Tommy robot's event queue to roll a fresh, new C-based version. For the interface, I begrudgingly turned to the world of rainbows and unicorns and re-implemented everything the Qt app did using JQuery UI and WebSockets. (Or at least am currently as the Qt application was shaky but mostly feature-complete.)

As the project progresses, however, don't fear a Black requiring additional work as I'm going to be choosing GPIO pins that avoid those claimed by the HDMI functionality so the instructions you find here should be pretty much plug and play with either model.

In the grand scheme of things, the BeagleBoard is the center of the whole project. It's going to be responsible for receiving keypresses from the organ's meatspace presence and converting them in to MIDI events to be sent to SIDI. As such, one of its core services is a wrapper around the host system's ALSA MIDI sequencer.

Key or pedal presses are compared to the bus' previous state and the appropriate Note On/Note Off events are generated on instruments 1 through 3 (which correspond to the organ's Solo, Accompaniment and Pedals respectively). During normal operation, these events bypass the system's MIDI sequencer and are passed directly in to SIDI's queue. Plans are on the table, however, for an "exposed" mode which will sever this connection and send the appropriate events through ALSA.

The presets are an entirely Kraslophone-specific construct and are used to change which patches (currently implemented as .ini format files containing the various parameters to be send to the SID) as well as the starting octave for the layer of inputs to which it is assigned.

These patches are managed entirely by the BeagleBoargan application and are described here (Note: link missing as I haven't written it yet) and any patches needed for a "performance" can be assigned to the organ's existing voicing preset switches (or at least will eventually when it's time for final assembly).

If you have an Xubutnu box with QtCreator kicking around, you might be interested in checking out the early Qt Application. It really only works with files played through the system sequencer, but it does work. I've pretty much abandoned it, but it's a pretty good indication of where the web application is going.

A better place to start would be with the web application as it's where most of the development is focused.