Give Me 3 Synths, Part 2
In this second installment I'll profile Minicomputer, a subtractive synthesizer with some familiar aspects, unique characteristics, and terrific sounds. Let's take a look under its hood and see what makes the Minicomputer run.
Minicomputer
Malte Steiner is no stranger to audio software development. His hYdra program was one of the earliest graphic editors for the files produced by the Csound hetro audio analysis utility, and a version for Java (hYdraJ) is still available. Recently he has turned his talents towards the software profiled in this article, his Minicomputer software synthesizer for Linux.
According to the description on its Web page, Minicomputer is designed especially for making sounds typically associated with experimental music in the industrial and grindcore styles. It is essentially a monophonic subtractive synthesizer architecture similar to amSynth, but with a considerably expanded design. Minicomputer is fully controllable with MIDI and employs JACK for its realtime audio output.
Alas, it's unlikely that your favorite Linux distribution currently includes Minicomputer in its repositories, so you'll need to fire up your development environment and compile the synth yourself. Thankfully the process is quite simple and the synth's dependencies are minimal. You'll need the library and development packages for JACK and ALSA, along with the FLTK GUI toolkit, liblo (for communication using OSC), the pthreads package, and the Scons build utility. All these dependencies should be available in your distribution's primary repositories.
When the necessary parts are in place simply issue the scons command in the Minicomputer top level directory and within a few moments you'll have a complete Minicomputer system. The build process creates two programs, the minicomputer engine and the miniEdit GUI. By separating the synthesis engine from the user interface independent developers can make custom GUIs for the program or enable it for no GUI at all. In my opinion this client/server distinction is a most valuable design consideration, one I'd like to see more synths use.
As of version 1.1 Minicomputer has no install routine. You may copy the engine and GUI components anywhere in your system PATH, or you can run those components from the Minicomputer top level directory. Create a $HOME/.minicomputer directory, populate it with the files found in the Minicomputer source code's factoryPresets (sic) directory, and now this synth is ready to roar.
Making Sound: The Basics
To make sounds with Minicomputer you need to start the engine first and then fire up the GUI. Open a terminal window, start the minicomputer engine, then open another window and start the miniEdit GUI (Figure 1). If you use a JACK connection utility such as QJackCtl you should see Minicomputer's connections appear in the utility's Audio and ALSA MIDI connection panels (JACK MIDI connectivity is planned but not implemented yet). In QJackCtl you can simply connect the the top level port names to achieve the results seen in Figures 2 and 3. By default the synth routes each sound tab to its own audio output port and MIDI channel. Thus, sound 1 is automatically connected to the first ALSA playback port and MIDI channel 1, sound 2 is routed to playback port 2 and MIDI channel 2, and so forth. Of course, the JACK audio connections may be switched freely, but the MIDI channelization is hard-coded. If needed, MIDI channel workarounds are available with midirgui or Pure Data.
The default audio routing may cause some confusion. For example, if you have only a pair of outputs in JACK (i.e. stereo out) you won't hear the sounds created on tabs 3 through 8. Reroute the output from thoes tabs to your stereo ports and you should hear their sounds added to the sounds from tabs 1 and 2. Figure 4 shows how I hook up Minicomputer to my M-Audio Delta 66 to hear a layered sound made from all eight sound tabs. The process may seem a bit tedious, but it does have great flexibility. On the MIDI side, you can choose to create big layered sounds by driving all channels with a single sequence. Alternately, you can create a multitimbral (albeit monophonic) synthesizer by routing a different MIDI sequence to each sound tab.
When the miniEdit GUI appears it will automatically load the contents of your $HOME/.minicomputer presets directory. Minicomputer's memory holds up to 512 single sounds and 128 Multis. Thirty-two preset single sounds are included along with one demonstration Multi.
Minicomputer's lowest level is the single sound tab. Each tab consists of a pair of oscillators whose combined output is routed into a complex system of filters and rich modulation capabilities. The filter configuration is especially notable, with three filters working in parallel. This system can add vocal-like characteristics to your sounds quite easily, and each filter is capable of resonance (i.e. the filter overdrives itself into oscillation). Resonance must be managed closely else the sound quickly reaches distortion levels, but the GUI makes it easy to control.
The modulation capabilities are impressive, with seventeen possible modulation sources. These sources include the synth's own envelope generators (EGs, of which there are six) and oscillators, MIDI note-on and velocity values, MIDI controllers, and so forth. Each oscillator accepts up to four modulation sources, and the output amplitude and delay line can each take one source. The synth is very responsive to these sources, so be sure to remember to employ them in your Minicomputer programming sessions.
Advanced Sound Creation
The top level of Minicomputer's synthesis method is the Multi. This level is simply a layered sound consisting of the sound tabs you wish to include, from one up to all eight tabs. Obviously this capability lends itself to the creation of rich and animated layered sounds, or you can address each sound separately by its own MIDI channel. Given its output flexibility, you can further process each sound by routing it to its own external processor before sending it to your final audio output ports.
I made my first Multi simply by using eight of the supplied single sounds that weren't used in the Demo Multi. I left all single characteristics at their default values and tweaked everything in realtime while a sequencer played a single looping sequence sent to all eight sounds to create an eight-sound layer for monophonic play. As I mentioned earlier, I could also route eight separate MIDI streams into Minicomputer for monophonic multitimbral fun and games.
When I was happy with my design I stored the Multi as DPs 1st. I closed the synth, then re-opened it to check whether the save process worked correctly. It did, I opened my Multi without troubles and with all my settings intact.
Help And Documentation
The author can be reached directly by email or on the Linux Audio Developers mail list. He welcomes user input and suggestions for improvement, and I imagine that he wouldn't mind if you send him some custom patches.
Documentation comes in the form of a 10-page user's manual in PDF format. English is not Malte's native language, but he more than adequately describes the program's modes of operation and its internal architecture. All users should consider the manual required reading, regardless of experience. Minicomputer has many unique features, some of which may be overlooked in casual use.
By the way, Malte has uploaded some excellent audio demonstrations of Minicomputer (demo 1, demo 2, demo3) on the synth's Web site, be sure to check them out.
Known Problems
Minicomputer is a relatvely new addition to the Linux audio arsenal, so it's not surprising that it has a few problematic aspects. The GUI can't be resized, though you can set its colors and a few other FLTK options from the command prompt. As I mentioned, JACK MIDI is not supported, but it is a planned improvement. An installer will also be added to future packages, but at this time the user will need to build the program from its source code.
I'd like to see a separate mixer section, perhaps with support for LADSPA plugins. Of course, the connectivity capabilties of JACK can route Minicomputer's output to any other JACK client, including effects processors such as the JACK Rack.
Outro
Minicomputer is an excellent synth with some great possibilities. While its author emphasizes its effectiveness in hardcore sound styles I found it to be an excellent straightforward subtractive synth with some uncommon filtering capabilities. The variety of modulation sources guarantees hours of experimentation with rock-steady performance (0 xruns) under JACK After overcoming some initial confusion I can now sail smoothly through a Minicomputer programming session, and I plan to exploit its many features for sounds in future compositions. In sum, Minicomputer makes great sounds and I like it. Recommended++ Linux audio software.