Surfing The Forge: Sound & MIDI Projects On SourceForge

When I began collecting links for the Linux Sound & Music Applications pages I frequented a variety of announcement and news services. Some of those services are no longer with us, some have been superceded by more comprehensive and modern channels, and a few have remained as primary sources for new and updated Linux audio software. SourceForge is one of those long-lived services that have remained relevant to my searches for new and interesting sound and music applications, so I decided to surf the Forge to find recent and maybe some not-so-recent developments in the world of Linux audio.

Let's Go Surfing Now

The following article represents only a small fraction of the software I discovered. However, it also represents the greater part of the viable software that I found. SF lists projects that are at various stages of development, including those at the "idea" stage. Fortunately there's no need to waste time looking at file listings - SF nicely indicates activity in a project's files base, and a quick glance at the activity metrics will tell the tale of the project's liveliness. As a matter of fact, the majority of projects I investigated had no files uploaded yet to the public files areas or to CVS/SVN repositories. Ideas are still easier to make than plans, plans are easier to make than to realize, and realization is still the result of long and often intense labor. Nevertheless, I don't bemoan this situation, I'm happy to see what ambitions and concepts are out there. Indeed, some of the projects I discovered were truly "out there", but in this article I've focused on three of the most practical and completely developed productions. Two of these projects were unknown to me until I found them on SF, and one is a long-standing projects with a strong history of development that I simply hadn't got around to profiling.


Nathaniel Roe's MidiRandomizer (Figure 1) is a neat Java-based utility for the production of musical phrases through a weighted selection of parameter values for pitches and rhythms. The generated phrases can be exported as standard MIDI files and/or as TiMidity-compatible PAT files, and favorite arrangements of randomization factors can be saved for later invocation.

Figure 1. MidiRandomizer

The program is organized in a single window and is very easy to use. Pattern lengths can be freely defined up to 256 beats (the display updates to reflect the current pattern length), and up to 100 patterns can be created in a single run of the program. Quantization factors can be set for a note's onset time and for its duration, and the author has included a randomization factor for portamento (a smooth gliding effect between notes), a nice touch when generating lines for monophonic instruments. The GUI is interactive, so you can click & drag the mouse over the bar graphs to set values as curves. The values themselves are the relative weights that determine the probability of the selection of a parameter and its associated range of possible values.

MidiRandomizer is like an Old School UNIX utility: It is designed for one job, it does that job very well, and it is intended to be a part of a more complex toolchain for music composition. Whether you need some variations on a particular theme or want some fresh material for your work, MidiRandomizer may be the tool you need for the job.

Fx FloorBoards

When I saw the screenshots for Colin Willcocks' Fx Floorboards software I was impressed by the eye-candy (Figure 2), but as I delved further into the project I realized that I'd somehow overlooked some amazing software. Colin has designed a series of programs for editing the Boss GT processors, a line of multi-effects pedalboards for guitarists. The software communicates with the hardware devices through a standard 2-way MIDI connection, and apparently all features of the hardware are accessible through the programs. I say "apparently" because I have no GT pedalboard, but given these editors I'm tempted to plunk down some dollars for one. Supported models include the GT-3/6/8/10, the GT-6b/10b (for bass guitars), and the GT-Pro, some of which are available for cheap on the various Internet auction sites.

Figure 2. GT-3 Fx Floorboard

The Fx Floorboards software is sophisticated in appearance and rich in features, so much so that I initially assumed it was a well-polished commercial product. But no, this is software libre, fully GPL'd, with source code publicly available. Kudos to Colin for creating a professional-quality product, complete with a custom-coded C++ DSP engine and a visually striking GUI based on the good looks of Qt4. Alas, I can say little more about the Fx Floorboards until I get one of the supported devices, but this software is so attractive that I'm convinced I need to support Boss a little more. Meanwhile I welcome reports from users who have tried Colin's cool programs. Links to examples would be nice too, so don't hesitate to demonstrate.

By the way, the downloadable versions are statically linked, which means that you don't need to have the latest Qt4 or other dependency. You can download the software, make your MIDI connections, fire up the your Fx Floorboard of choice, and away you go. Alas, the compiled versions are available only for 32-bit systems, but perhaps some enterprising packager could build it for 64-bit boxes. After all, the source code is publicly available. If you do build it for distribution to 64-bit systems be sure to contact Colin and let him know about your efforts.

Figure 3. Editing parameters in Fx Floorboard

Update! Just as I wrapped up this article a friend loaned me his GT-3. I was able to test the unit with Colin's program for the 3, and I was most pleased by the results. The program works in two modes, one for bulk transfers and one for realtime parameter edits (Figure 3). Both worked as advertised, and I must admit that I had a tough time tearing myself away from the fun I was having with the system. Parameter updates were fast, all edits were reported on the device's display, and the device's sound quality was excellent. The GT pedalboards are often available for low prices on the common auction sites, so if you've ever wanted to set up a powerful computer-controlled guitar processing system the combination of the GT hardware and the Fx Floorboards software provides an excellent low-cost solution.


I've profiled various front-ends for Csound, but perhaps I've tended to focus too much on GUI-based environments. Csound is itself a programming language with its native interface on the command-line, and as such it lends itself to targeting and processing by other text-based software, such as athenaCL. According to its developers athenaCL is

an open-source, object-oriented composition tool written in Python. The system can be scripted and embedded, and includes integrated instrument libraries, post-tonal and microtonal pitch modeling tools, multiple-format graphical outputs, and musical output in Csound, MIDI, audio file, XML, and text formats.

Strictly speaking, athenaCL is not a front-end for another program. It is a self-contained environment with multiple output targets and it requires no other software beyond its immediate dependencies. In many ways athenaCL is similar to environments such as blue and Common Music/GRACE. It provides a toolkit of routines especially suited to composers working with algorithms for the creation of musical phrases and forms, but it does not presuppose any particular musical style. Although highly deterministic musics can be composed with athenaCL its greater strength lies in its tools and utilities for the creation of form as the outcome of probabilities and varying degrees of randomness applied to the materials of music, e.g. pitch sets, rhythmic series, harmonies, and large-scale formal structures.

Let's take a quick look at how athenaCL works. In the following example I'll create an event list and route it to one of the Csound instruments included with the athenaCL package. I start by opening the athenaCL interpreter:

  dlphilp@64studio:~/athenaCL$ python 

  athenaCL 1.4.9 (on linux2 via terminal threading off)
  Enter "cmd" to see all commands. For help enter "?".
  Enter "c" for copyright, "w" for warranty, "r" for credits.

  [PI()TI()] ::

Next I declare a new Texture (instrument) :

  [PI()TI()] :: tin
  name this texture: texture-dp-01
  enter instrument number:
  (3,4,5,6,11,12 ...)
  or "?" for instrument help: ?
  csoundNative instruments:
  3      sineDrone                        
  4      sineUnitEnvelope                 
  5      sawDrone                         
  6      sawUnitEnvelope                  
  11     noiseWhite                       
  12     noisePitched                     
  enter instrument number: 60 (additiveBellBright)
  TI texture-dp-01 created.

Now I ask athenaCL to create a new Event List :

  [PI(auto)TI(texture-dp-01)] :: eln
  name an EventList. use a ".xml" extension: eln-dp-01.xml
  save in this directory? (y, n, or cancel): y
  save this file? (y, n, or cancel): y
  EventList eln-dp-01 complete:

At this point I'm working only with the default generative routines and values, all of which may be completely replaced for your own purposes. Those defaults include the Csound orc/sco targets, the format for the audio file created by Csound, and the standard MIDI file output. AthenaCL also provides handy playback functions for listening to and evaluating the output, including a MIDI file player and Csound rendering. Unfortunately I've run out of space, but it suffices to say that athenaCL provides just about everything you'd want in an environment dedicated to algorithmic music composition. The athenaCL Web site refers to its "... tools for stochastic, chaotic, cellular automata-based, Markov-based, wave-form, fractional noise (1/f), genetic, Xenakis sieve, linear and exponential break-point segments, masks, and various other algorithmic models", enough variety to keep an experimental composer busy for a few (or more) years.

Documentation is copious and thorough. Christopher Ariza's excellent manual should be required reading, but the system is easy to learn, and thanks to its smart defaults a new user can have the system up & running in a very short time. Composers familiar with the purposes of athenaCL's generators and modifying routines will have no trouble adapting the system to their needs. AthenaCL is a powerful and flexible environment for algorithmic composition, one of the finest I've encountered. This article has revealed only the most superficial aspects of the system, and I urge interested readers to try it for themselves. AthenaCL will definitely see further exploration and use here at Studio Dave.


I hope you've enjoyed this tiny tour of SourceForge delights. Of course you can run your own "surf & deploy" missions and possibly find a significant number of programs I could have reviewed. Feel free to let us know of anything you think should be mentioned here, and be sure to let the author(s) know what you think of their work.

Load Disqus comments