I wrote RhythmLab because I couldn't find any software which would easily let me construct and visualize polyrhythms (rhythms in which a measure is divided into different subdivisions in different voices: for example, 5 against 7). RhythmLab is distributed under the Gnu General Public Licence as a tarball (click here to download) containing source and an x86 Linux executable linked against libc6, gtk 1.2.1, and audiofile 0.16. You'll probably want some percussion samples, as well (see under Links). The code is intended to be portable to other Linux architectures and other POSIX platforms supporting OSS and pthreads, but hasn't been tested (patches are welcome).
(appearance may vary depending on selected theme)
From left to right and, within that, top to bottom:
Volume scale: by default, is adjustable from 0 to 11. All volumes are relative: increasing the volume of one track won't necessarily make the overall volume lounder, because the other tracks will become softer to compensate.
Period scale: controls the the number of beats into which this track is divided.
Change wavefile button: brings up a file selection dialog to choose a new sample. (The engine also can generate square waves itself, but there's no user interface to do so yet: you need to edit the savefiles directly.)
Delete track button: deletes this track.
Balance scale: if < 0, makes the right channel softer: if > 0, makes the left softer. (I use this to help me pick out a particular track, by setting one track to be one channel and all the others to be the other, and then twiddling the channel volumes with a mixer or the balance knob on my stereo.)
Pattern area: controls the relative volume of each beat, and displays which beat is current. The area is divided into rectangles arranged left to right, one for each beat. Clicking in the upper half of the rectangle makes the (again, relative) volume for that beat louder, and clicking in the lower half makes it softer. When you move the mouse within the pattern area, a label just below the top displays the current beat you're over, its current relative volume, and whether clicking would make it louder or softer. (If gtk is very cramped for space, I think it makes this label 0-height. Either resize the window to be bigger, or bug me to implement scrollbars.) At the very top, the current sample file's name is displayed (or "NONE", for a square wave or empty sample).
Bpm scale: controls the speed at which the rhythms are played, in beats per minute. In constant-measure-time mode, the beat specified is the one with the highest period. (In constant-beat-time mode, it doesn't matter, because all beats are the same length.)
New Track button: creates a new track with volume 5, period 1 and an zero-volume sample waveform.