Rack747 (Full Om release 1.01, BeOS R3)

What's in the book?

Long dirty sex and an Apology for Intel Users!!!

Sorry 'bout this, but:
In spite of optimistic announcements to the contrary, it no longer makes sense for me to support Intel platforms without an Intel machine. The Intel demo had enormous problems which had to be debugged over several weeks via guesswork and email. I can now provide an Intel binary for BeOS R3 Rack747-0m-1.00. However, with less than a month before R4, and no binary compatability between Intel R4 and Intel R3, there doesn't seem any point. If any Intel users would like an R3 Rack747 version, I can knock one out, but I'll do this only on demand.

What's it all about anyway?

Rack747 is by any other name: 'Rack303' + 0.5*808 + 40 (a random number plucked from the nether regions to give a result that is loud, fat, and flies). The Rack is a set of monophonic synths, performing a modelling of the classic Roland 303 Bassline. Each synth is associated with its own basic monophonic 16-note sequencer, 4-part 808/909 style drum module, and cheesy effects processor.

All synths in the rack, though running as seperate applications, share a common interface. The sequencers may be locked to each other, sync'd to a midi clock, or simply let freewheel along in whatever order they were started. In song mode, synth, drum and sequence data can be organized into longer patterns.

Strange Psychochemicals, and notes about the demo!!!

The Rack747 half-tab release has functionality equivalent to or better than the previous shareware releases, the last of which was Rack747 5.05. Full current functionality of the Rack is available only in the full-tab release, currently running at Om1.01. This is available directly from me via mail order, and should soon be available on the net through BeDepot (though they've been stuffing me around for 4 months, with no end in sight). What half-tab users get for their money on acquiring a full license are:

  1. The kit editting window.
  2. Extended bank memory.
  3. The ability to load Rack747 add-ons, such as the Oasis sampler, and Twang (a guitar emulator).
  4. The ability to export loops to soundfiles.
  5. The ability to annoy me with feature requests and expect me to listen (though anybody can try to do this, and I might listen, and certainly will if the ideas are good). In fact I enjoy hearing from anybody that uses this baby.

More notes for everybody who's still on board

This release features several slightly unconventional hacks to provide asynchronous control (i.e. simultaneous mouse usage, display updates, and keyboard control). These are done in my own way, not that of R4's asynchronous controls. My method is far dirtier, but far more functional for me and my own personal interface requirements. I've termed these hacks "immoral" rather than "illegal". They may be slightly dangerous. However, they do work for me, and I'm unlikely at this stage to go Be's way: Rack747 is my personal musical notepad, and I present it as such. I'd always call a 5% sacrifice of safety for a 200% boon of functionality a good deal. If you don't think this is a good deal, I'll personally send you a safe version of my library code, "Gloub.so" If enough people want to live on their knees, I'll put the safe library in the distribution with the rad one.

Getting started: a sham tutorial



  1. Do whatever you need to do to enter a relaxed and receptive state of mind.

  2. Click on the suspicious looking purple and white icon. This will start the first synth, create most of the necessary windows, and load up a basic drum kit. Your screen should now be a bizarre collage of purple and leopard skin.

  3. Press the button labelled "Start". You should now have an annoying 303 start pattern and a four to the floor kick.

  4. Start editting and tweaking! The main synth and fx parameters are controlled be the rows of sliders on the main window, and are, if not self-explanatory, at least reasonable counterparts to those of a 202/303, and are covered in detail below.

  5. The synth sequence parameters are displayed as two rows of numbers near the top of the main window. Surprise! surprise! Sequence tempo is controlled by the slider marked "tempo". The 16 main fields corresponding to 1/16 notes at 4/4, and the tempo slider also works on this assumption, (if anyone at any stage thought that a triplet/quintuplet/blah-tuplet option for this was a sane idea, I'd hve to give them a medal and agree instantly). Start, end and begin points are set by the little markers below the velocities.

    The numbers in the first row are "note number", and correspond to the midi note sent in midi transmit mode: 36 is middle C. Admittedly, this might not be as friendly as note names (like C0), but is a trifle more informative than a fake piano keyboard (I've got a funny attitude towards pianos anyway: mucking around with the pitch table gives you a strange idea of what c is). These can be editted with the up and down arrow keys, and the page-up, page-down and home keys. 0 is no note.

    The second line of numbers is the velocity of the note, corresponding to midi velocity, and being what you might call "the accent". 80 is the mid point. Above this you'll get more of a resonance kick. 0 corresponds to no new note sent: slides and sustained notes. This is often a damn fine place to start. Again, the arrow keys and page-up, page-down and home keys are the only sane way to edit this crap. In my dreams, these might be virtual press pads, but after using them for a bit, numbers are sometimes a bit more informative...

  6. The next 2 lines below this are for editting the current drum map. The first marked region brings down a menu for selecting which of four parts is current. Next to this is a mute button: off is on, so to speak, and pressing the mute button (pink light) turns off that part. Next to this is the part select, which, pressed, brings up a menu of available bits and pieces. The range is limited to the current kit, which by default is a mixture of 808 and 909-ish stuff, some live cymbals, and a chunk of daggy latin sounds.

    The next 16 fields are note velocity (accent), with 0 as no note, and 80 as the mid-point. These are best dealt with by the arrow keys, page-up and page-down. More conveniently, there are virtual drum pads just below this in tasteful pink and baby blue. Pink is on, black orff. For a total hoot, press the shift and control buttons with the mouse press. This brings up a cute little pink number, for the ?-plet of that stroke: 2 is indespensible, 3 useful, 4 handy, 5 up to 10 occaisionaly exciting. 17 wierd, and 42 hysterical. To the left of this are pots for tuning, level and pan. Stick close to the center for gross control, and way out for subtlety.

  7. Eventually, you'll get bored. You could try running through the daggy presets. Perhaps you'd like to start a new part. Simple: start up another rack from the desktop, folder, command-line, or the file menu of the main menu. Also, you can start the Rack by clicking on the icon of a saved data file. This will load the whole set, including the newbie with data from that file. In any case, the new rack will join the currently running one, under the same interface, as TB1. Select it: use the f2 key to select the new one, f1, the old, and f-i the i-th. The number of the current "top" rack element's number is displayed to the left of the sequence editor. The "top" synth can also be selected by the corresponding button in the bottom region of the main window. Any one can be started and stopped by the next button in this region.

  8. Having started a new part, start editting it. By default, its kit level will be down, but it has the same default drum map as the first. It has its own fx loop. If you're concerned about things not starting together, use the "sync" parameter. This won't start "slaved" synths, but it will do it's darndest to see that the slaves beging happens at the "masters" start point, irrespective of relative tempo.

  9. By this stage you may be bored with the current waveform. The box of that name, below the sequence editor offers a range of cheesy analogue sounds. Next to this are regions for selecting filter and waveform. More options for these will be available when the add-on api gets finalised.

  10. The proverbial daggy presets are accessed through the bank window: the one with the big blue buttons and a pair of extra sequence editors. The Rack maintains a set of banks common to all synths, with the first bank corresponding to the values of the running synths. The currently accessible bank is set with the "source" parameter: by default this is the first spare bank, "A". The current destination bank is set with the "dest" parameter: by default this is the running banks. The blue buttons have 4 regions, corresponding to sequence, drum-map, slider values, and songs. Pressing the blue button, and entering these regions alternately highlights them and deselects them. On mouse-up, the selected parts of this bank will be sent to the top slot in the destination bank. If instead, the mouse is kept down as you move off the button, a little rack icon will appear, and you can drag and drop onto another button, and the data will be sent to the corresponding slot in the destination bank. This feature can also be used to drag and drop data into songs. If instead of a left click on the mouse, a right click is used, the data direction is reversed: typically data is moved from the running bank into others.

  11. While we're on the subject of other windows, the other way to have fun with more than one Rack module is to use the cross fader on the mix window. This is the other little spare window that appears at startup. It has a short slder for every running synth, duplicating its main mix level, and an assignment (left/right) for the crossfader, which can be used to mix a bit more recklessly.

  12. Song mode is selected by the "mode" field. In song mode, patterns from the banks are selected at sequence end, drum parts can be muted (white is "mute off", red "mute on", blue "don't give a shit"), and wierd commands set off (such as transpose). Other "useful" options of the "mode" field are the various auto-randomize modes, and the "one shot" mode. Steps are appended to the current step by the righ facing triangular button, inserted by the left triangle, deleted by the diamond, and scrolled through by the up and down arrow.
  13. Banks and running synths are loaded and saved to file under the "File" menu,

The gory details

Common interface shortcuts.

Text fields (the white control boxes) can be modified by:

Generally, the sliders can be moved by:

The pots operate similarly to the sliders, but look completely different, and are mainly used for parameters that won't be "ridden". As they work angularly, control sensitivity is dependent on the distance of the mouse from the center of the pot. Otherwise, they can be adjusted by:

Many of the control buttons have a few varying modes, such as save or load, step record or real time record, and these are selected by puching the button with a left or right click.

Main window controls: menu settings.

The menu bar provides access to all the file save and load functions, and toggling of the extra edit windows, the miscellaneous options, and kit editting.

Main window: sequencer controls

Main window: sequence editor

The large block of controls below the top line of buttons is the sequence editor proper. The numeric values correspond to midi note # and midi velocity respectively. This block of controls is twice duplicated on the bank window, where it can be set to edit any running synth or bank slot.

Main control window: synth controls

The 5 central panels are the main synth controls, and controls for the mix between drum machine and synth. The sliders are almost self explanatory, but are best understood by playing with them. They roughly correspond to controls on a 303. Most parameters run from 0 (min) to 1 (max).

Main window: synth specific status region

The last region contains controls specific to individual running 303s.

Main control window: keyboard shortcuts

Main window: miscellaneous system controls

These are mainly midi control values

The Bank Control Window

This window floats away from the main window. It's always left up, though may be hidden.

The Global Mix Window

The mix window provides an alternate set of controls for the total level of each running Rack747. This on the principle of "you never know what you might need in the bush".

Perhaps more usefully, it provides a cross-fader. When at left, the Racks with a "left" assignment are set proportionally to a maximum value given by the "peak" parameter. Similarly to the right, with centered giving the maximum value to all assigned Racks.

The Kit Editor Window

This window allows edit access to the current kit. A kit has 128 slots for samples (numbered 0 to 127), each corresponding to a single drum. When the MIDI spec expands to include the drum module, the index will correspond to the midi note number for that drum.

The name field corresponds to the name that appears in the sequence editor for the particular drum. It is editted by holding down the cursor on that field until the text becomes highlighted, at which point, it may be changed.

The path field gives the full pathname for that sample, which need not be in the Rack "Kits" directory. A drum is added or changed by dragging a sample over the corresponding slot and dropping it. Currently, WAVE, AIFF and raw 16-bit 44100 mono files are properly understood.

Hitting the delete key deletes all currently selected drums. Drums are selected with the mouse, with a shift click adding the drum to the current selection.

The Loop Export Window

This window allows the dumping of one or all of the Rack's loops directly to audio files. It is bought up under the main File menu. It is a standard save panel with 3 additional controls:

When a name is given, the indicated Rack(s) will begin dumping their stuff from the start of their next loop (and will be started if necessary). The file will be called "TKi-name" for Rack i and a file called "name".

By default, all loops are saved. This can cause some nasty audio glitches if several Racks are running, though the point at which it becomes problematic will very from setup to setup. For my BeBox 133 with 24M RAM, 3 at once is OK: after that it's glitch city. It makes more sense to pull them one-at-a-time if you're getting into a bit of a serious tweak.

Loading new pitch tables

This feature is reachable through the "File" menu on the top menu bar. It allows the loading of a new pitch table into all current Racks. These are contained in ascii text files in an inimitably baroque format. Apologies to members of the Bach family.

The first line of the file gives three things:

The rest of the file should be taken up by floating point numbers, indicating the relevant frequencies.

If the file is to be transposed, the "octave" given is certainly not limited to 12 notes. Whatever it's length, though, it will be started at the appropriate note, and spread. I can hear a sigh of relief from the 13 and 17 note equal temperament crew,

The distribution should contain two examples: "standard_pitch_table" is the standard 12 note equally tempered beast that we all know, and some love. "just_pitch_table" gives a 12 note octave based around a standard just (ptolemaic) scale based on C at 256Hz, with the standard accidentals filled in as best as possibly around this scale (1/1, 9/8, 5/4, 4/3, 3/2, 5/3, 15/8, 2/1). It's an interesting and beautiful scale, with many elegant properties.

Available addons

At this stage, November, 1998 there are two addons available. They are only Rack-loadable in the full Rack release. Oasis, however, has it's own micro-app, and can run on it's own as quite a nice sampler/mixer (but without enveloping, filtering, and only rudimentary pitch control)

Faq this, faq that

MIDI specification

With a midi device selected, sequencer running, and transmit turned on, the sequencer will transmit note-ons and note offs for the current playing sequence. Rack glides are transmitted as seperate notes, as midi offers no consistent way of doing this. With or without the sequencer running, but with transmit on, the sliders will transmit midi control data to the appropriate channel.

With midi receive turned on, the rack will respond to noteons, noteoffs and controls. If the sequencer is running, midi note data is overriden, though it will get through briefly. If a noteon is received before the noteoff for the previous note, the rack will glide to that note. Otherwise, it will start a new attack.

The relationship between midi control change messages and sliders is:

These are however configurable through the load/store configuration options in the top menu bar, and the config edit window. These work both on midi in and out, depending on whether they are set.

Known Bugs and Limitations

Future directions.

In many ways, I've been surprised by the way the Rack has grown. Honestly, it was only going to be a 20k bassline emulator. But, at least for me, it's turned into quite a useful compositional sketch pad. It's been staunchly reliable live, and carried my but through gigs when every other machine has broken. I think, with the Om series, most of the work on the main engine is done: the proverbial 90% mark has been reached. It's a crude and simple architecture: great for the crude and simple music that we all love, and it's still comprehensible when your brain has been reduced to psycho-mulch. A few things still to go: integrating the drum module with the MIDI system, upgrading to the new Be media server (when it appears), maybe adding peak level meters, and extending the cross-fader's utility. Mainly though, I'll be creating a public API for add-ons (oscillators, filters, and effects), and writing a few myself. Currently in the wings are:

How about you? any great ideas? If you'd like to see something in the Rack, drop me a line (dak@zog.net.au) and if it works, you'll be seeing it here: in purple and leopard skin.

Contact and Product info.

The Om series Rack747 can be ordered directly from me, or via the usual Be web sites. Version 1.01 is a low $45US, or equivalent in australian dollars. All registered users will be entitled to regular updates of 1.xx BeOS versions of the rack and add-ons, irrespective of platform.

Details for credit card purchase of the full tab version should be finalised by late July,1998. However, BeDepot are being total slackheads, it's November, and they still can't give me a date (or even a "yes we will" or "no we won't": dickwads!).

Also of interest for Rack users will be the meta-sequencer, Qua, available in beta form by late July 1998. This package offers comprehensive hard disk recording, flexible MIDI sequencing and patching, and algorithmic composition facilities. It enables the Rack to be fully automated, controlled by joystick and Geekport (for us fortunate few) objects, and yet still be fully tweakable.

At this stage, I am also offering free licences to anybody willing to help translate documentation into any other languages that users may require.

The demo (half-tab) version of this software, and ordering details for the full version, can be found on the rack web site, http://www.zog.net.au/dak/rack/index.html, or by contacting me by mail at dak@zog.net.au, or dak@cs,latrobe,edu.au. As a last resort, I can be snailmailed at:

Dak c/- 38 Brett st,
Murrumbeena
VIC, Australia, 3163.
though this address may have a long turnaround time.

Authors and acknowledgements

The Rack was written by me, Dak, over 1997-1998, in between gigs, and under the influence of psycho-active substances.

I gratefully acknowledge the assistance of Alistair Riddell (amr@farben.latrobe.edu.au), and Ross Bencina. Those of you in the Win$ world should check out Ross's package, AudioMulch, because it's good enough to make me want to tolerate that reprehensible Gatesian interface.

Correspondence (feedback and bug reports) will be graciously accepted. Post any queries to dak@cs.latrobe.edu.au.

Squelch and enjoy!