hatestheinternet

Qt Application

In the beginning, there was Qt. After a fried PMIC, however, it was abandoned. With that in mind, it will still work more or less as it should in that you can load and save patches, update the parameters for the voices, and play most simple MIDI files using the system sequencer (I would recommned using RoseGarden as it allows you to remap the instruments used in a file's tracks, although pmidi will work). It was also never actually connected to the organ's meatspace presence.

On first launch, the application will create a directory called .kraslophone under whatever Qt reports as the current user's home. This directory will eventually contain a kphonerc file containing system-wide settings (SID volume, serial port for SIDI, etc) and a patches directory which will store the various user-created patches (which is a fancy way of saying lots of small .ini files).

The application will fail to launch if it can't find SIDI, so you'll need access to your Arduino to do anything. If you're not running as root, you'll also need to make sure the user has read/write access (ie, on Debian-derived systems, is in the dialout group) to whatever device is assigned to the Arduino (usually /dev/ttyACM0). Note that it also in no way verifies SIDI is actually connected to that port and the many serial port based dragons that exist in here would make it a no-go out of the box on Windows.

Also, as the application attaches itself to the system's ALSA sequencer, running as a non-root user will require the same read/write access to the system sequencer device (usually /dev/snd/seq). On most systems, this can be accomplished by adding them to the audio group, however my BeagleBone always created the sequencer files writable only by root, so you may need to make some udev rules as well.

If It Works

If all goes well, it should launch in to a full-screen application, most of which can be ignored. The only things worth mentioning in this window (outside of Volume, which is self-explanatory) are the controls for the three channels at the bottom.

QT ApplicationQT App Channels

If you've ever played with any kind of synthesizer, the controls for each of the channels will look pretty familiar. The Octave roller can be ignored as it only affects keypresses which can be "generated" using the two rows of ... buttons at the top, but they're ultimatley useless.

Patches can be loaded using the dropdown menu in the top right of each channel and saved by clicking on the disk icon. Note that this is around where I left off so the patch bank doesn't fire the data changed signal and can mess up selected indices.

The four checkboxes down the side are the waveforms supported by the SID's oscillator. "N" represents the noise voice which may not play nice with others, so be careful with this one.

The many sliders in the middle control pulse width (single slider on the left) and the shape of the channel's envelope (Attack, Decay, Sustain, Release respectively).

Some settings not being saved in patches plus the failure to fire a data changed signal on update can be attributed to me being around here when my BBB died. At that point, any work I did was solely aimed at smoothing out the interface between SIDI and the system sequencer.

As it stands, a successful launch will see you able to play with the SID chip's settings and play MIDI files through the system sequencer using the "Kraslophone" output device that should appear. Remember the 3 voices are mapped to instruments 1, 2, and 3, so you're going to need to use something like RoseGarden to be able to map the tracks you want to the voices. Multiple tracks using the same instrument is technically supported, but very highly recommended against.

To verify the application's successfully attached to the system's sequencer, use the aconnect command:

jay@minimac:~$ aconnect -o
client 128: 'Kraslophone' [type=user]
    0 'SIDI            '
jay@minimac:~$

Now we've got that out of the way, you should probably move on to the web application, which isn't really a "web" application, but I call it that to distinguish it from this one.

TL;DR

  • This monstrosity lives here on GitHub
  • The Qt Application is old, pretty much abandoned, and will probably never be more than it is (hack away if you'd like, though)
  • Check permissions on system sequencer and the Arduino's serial device
  • The SID chip's voices correspond to MIDI instruments 1, 2, and 3
  • Some MIDI players don't send Note Off events when stopped. Restarting the application will reset the chip