Rack747 (Release 1.11, BeOS R4.5.2)

What's it all about anyway?

Rack747 is by any other name: 'Rack747' + 0.5*808 + 40 (a random number plucked from the nether regions to give a result that is loud, fat, and flies). Each Rack application runs up to 8 individually sequenced voices, each voice consisting of:

  1. a monophonic synth/sequencer in the tradition of the classic TB303, but of vastly extended capabilities, including guitar emulation, FM synthesis, and sample mixing/processing.
  2. an integrated 4 part drum module which can play from up to 128 loaded drum sounds: these can be tuned and panned seperately.
  3. two seperate output channels, each with 3 chained effects. Effects include a tempo locked feedback/delay, sweepable eq, serious distortion, flange, gate, and a full range of filters.
  4. 4 low frequency oscilators which can be seperately assigned to filter and oscilator parameters, and to kit and synth pan.
  5. a bar-by-bar song mode for the creation of whole pieces within the Rack environment.
Each Rack voice (a single 747) runs in its own tempo and time frame, but can be synchronised with its siblings in a variety of ways:: manually, internally, or externally to a MIDI clock. Each 8 voice Rack has a common midi port and system message connection.

As a whole, all running Rack applications share a single common display, midi interface, and bank memory. The display interface provides an integrated mixer for all Racks, plus direct and immediate access to all parameters of the currently selected "top" Rack voice. The midi interface allows midi control of all parameters, as well as direct note on/off control of the synth module. The shared bank memory allows for easy sharing of sequences, songs, and synth parameters between tracks.

In total, a single Rack747 patch runs 8 individually sequenced synth lines and 32 drum parts through a total of 16 3 part effects buses and tweeked by 32 lfos. And if your machine is still running, you can stack multiple patches under the same cheesy interface.

...and if you're not confused already...

...and as if that wasn't enough...

What's in the book?

Strange things to note about strange notable things about the Rack.

It seems like the silliness has ended, with the be media kit looking relatively there, and Yes! there is a Rack for Intel. For those of you who like running antiques theold media kit version is available on request from me: I can even give it to you in a ppc only format.

The other main change is that the Rack has changed from a stack of small synth/sequencer units (747s) to a stack of 8 voice racks of 747s. This is partly to do with better performance for the Rack from the new media kit, and partly for better integration with my sequencer and Rack meta-programmer, Qua. I also feel that this configuration will scale better up to faster single processor machines (the bulk of the Intel world). Previous patch files still work, but load into a single 8 voice module, rather than across the whole Rack network. This should facilitate mixing between multi voice tracks.

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 have to give them a medal and agree instantly). Start, end and begin points are set by the little markers below the velocities.

    The first row gives the notes corresponding to each sequencer step: a blank corresponds to silence. 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. Open a new part by clicking on its number in the lower area of the main window, which should then flash red. This in turn opens controls for that part, which me be played by midi, or set running according to its own sequencer. The part may be selected as the top part by clicking onto the edge of this area.

  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 begin 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 area: the one with the big blue buttons on the top part of the window. 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. Another great hoot for getting around the (hopefully not too confusing) main window is the crossfader on the bottom bit of the screen. This can be assigned left and right by the little selectors below the amplitude controls. This allows several mix parameters to be tweaked simultaneously.

  12. 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.

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.

Sequencer controls

The two central sets of 16 red-on-black numeric fields display the data in the current synth pattern, top line for note, lower one for velocity (amplitude). Setting a note to 0 will correspond to silence. Ties and sustained notes are indicated by a 0 velocity. Every non-zero velocity starts a new attack.

The black and white buttons across the top of the region give a piano style keypad for the current edit step: the step whose note is green rather than red. The register of the note is displayed as a numeral in the center of the key: this can be adjusted up by left click, and down by . The edit note is selected by clicking on the note field for the step to be editted.

The line of red-on-black numeric fields below the sequence display give access to the built-in 4-part drum module.

The "rand" button generates a random 16 note riff in the current sequence, the key (major) given by the first note (the starting point of this riff can, of course, be set anywhere). A left click randomizes notes, a right click, the rhythm.

The "rec" button puts the sequencer into record mode. This functions in two ways.

The "Mode" field controls a few odd extended modes of the sequencer.

The slider controls sequencer tempo.

The "transpose" numeric field gives the transpose level (in semitones/midi note #) of the current sequence. Pressing the transpose button transposes the current sequence that amount and resets the field to 0.

The start and end points are indicated by right and left pointing arrowheads in the gaps between the two rows of sequence data fields. They can be selected by left and right click respectively. The begin point gives the point that the sequence is first started from in its loop. It is indicated by an upwards arrowhead, and is set by a left mouse click with the ALT key down. This is most relevant to the sequence sync function, as this is where the sequencer will be sycn'd from.

The tap control offers many useful facilities for real time editting:

The song editor allows the stringing together of sequences into longer patterns. These are loaded from the given bank. The values of the current sequence, slider, drum pattern and drum mute are loaded respectively from the indicated Rack bank. The song can be disabled by turning the small button in the top left corner off. This is vital for editing a song bar-at-a-time.

Oscilator controls

The 2 central panels are the main synth controls. 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).

The synthesizer module consists of a single oscilator (controlled by the left panel) fed into a single filter (controlled by the right hand pane). The amplitude of the ocillator, and the cutoff point of the filter are controlled by envelopes, whose parameters are controlled by the knobs and sliders in the lower portions of the respective panels.

The "Oscillator" region provides control the Rack's primary sound source, which, when passed through the Filter processor provides rack with its delightful squelch. The osciator is typically a single monophonic sound source, though AltX7 and Oasis provide complex sound sources, which are mixed into a single ouput (which is then fed to the filter).



Filter controls

The "filter" region provides control for the voices filter (i.e. what makes it squelch!).

The menu box controls the filter choice ("cheesy303", "unity"). For the full version it will also provide access to any addon filters (though none are yet available).

The basic parameters are:

The envelope on the oscillator controls the amplitude (volume, gain, whatever) of the main oscilator: disabling this will give you a single sustained note. The filter envelope drives the filter cutoff frequency: how "squealy" a single note is over time. If this is off, the attack and decay parameters will have no affect, and the note will be dependent only on the cutoff, envmod and resonance parameters.



Bus sends and FX controls

This region controls the sends and outputs of each Racks two output buses, and the running of each buses fx loops. Each bus currently has 3 chained fx, which can be allocated to the inbuilt effects (feedback, gate), or the addon fx (distortion, sweepeq, bandpass, bandreject, lowpass, hipass, delay, resonator, and ringmod).

Status region and per-voice controls.

This contains controls specific to each running rack and each open 747. Each rack area has:

The individual voice controls are:



Mixer and cross-fader controls

The "Mixer" region to the right of the status region is the per rack mix.

Then there is the cross-fader. This is the easiest way to control multiple parameters at once. When at left, the parameters 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. Any combination of parameters can be assigned to this control.

LFO controls.

  • The region below the mixer has four sets of LFO controls. These give a variable rate Low Frequency variation on a wide range of parameters.

    The are individually assigned, and their effects are cumulative. The first slider in each set controls rate, the second, depth.

    The LFOs are normally reset to the start of their cycle with each note on, If the reset button is off, they will not be, though a reset can be forced using the song mode commands.

    Bank Control Region

    This region accesses the banks for the patch of the current top rack. It displays labels for the source bank if available, and allows these labels to be created and editted.

    Rack's memory is divided into banks of 8 slots, each slot numbered from 0 to 7. The banks themselves are labeled by letters, 'A', 'B', ... . The running memory of a particular part is also accessible, and is labeled 'sg'. Hence 'sg0' is the running memory of the first part, and 'B3' is the 4th slot in the 2nd memory bank. When patches are saved, all associated memory is saved bank-wise: to keep patches small, it is best to use as much of each bank as you can, rather than openning new banks.

    The Kit Editor

    This window allows edit access to the current kit of the top rack. 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.



    Keyboard shortcuts

    Miscellaneous system controls

    Mainly more midi control values (don't you really want to know where "this" is??):

    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.

    And a bout for some of the addons

    Oasis: the sampler for people who build their House on sand

    Oasis is not a Mirage. In fact, it's a multi-channel, multi-track mixer/sampler and soundfile player.

    It has been designed as both an addon for Rack747, replacing the existing linein and sample oscillators, and as a standalone app. It shares a single window between a maximum of 9 output channels (8 devoted to 303 outs, and 1 devoted to the Oasis application), has slots for up to 64 samples, and has a fuckoff huge cross fader.

    Actually doing it!



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

    2. Start a fully registered version of Rack747-Om-1.11. Select Oasis in the Oscillator field. Note that Oasis will not be running until the Rack is. Press "Start", or send some midi data. You may like to turn the filter off (select filter "unity"), and disable the amp envelope. Or not, as the case may be. While running through the Rack, those Oasis parameters to do with root note and range will come into play (see below). The Oasis channel id corresponds to the respective Rack id.

    The gory details

    Interface elements and shortcuts are pretty much the same as for Rack. There are a few trick keyboard shortcuts, but the only useful one is that function keys 0-9 toggle particular samples on and off (with the SHFT and CTL keys accessing higher ones). Anybody who finds the party tricks wins a free trip to the bahamas (in their mind).

    The oasis window has 3 main areas.

    1. The cross fader is up top. It uses the assignments in the sample area, and drives the selected channels between 0 and the value given by the "Peak" parameter.
    2. The second region gives control buttons, and outs and assigns for the linein. The line may be selected from any usual source (cd/microphone/line). The save format affects the value of samples that must be (or are explicitly with the "save" button) saved to disk. The "rec" button starts recording: this is done in memory until the internal buffers are filled, at which point they go out to disk. "Load" loads a sample into Oasis. "Copy" duplicates the currenty selected sample. "Delete" blats it from oasis. The "gain" pot controls input level to the DACs, and the "pan" pot the pan of this to the output (and not input) stream. The numbered channel assign pots control the level of the line input to the appropriate channel, ans the associated switch control cross fader assignments.
    3. The third region is a set of views for each loaded or recorded sample. Clicking on the region of a sample selects it for the operations decribed above (copy delete, etc).
      1. The slightly embossed text field is the name, clicking on this brings up a text edit to change the name.
      2. The three check buttons right of this (with gray and a red splash being on):
        • "Go" means that this sample is running. This should be on to hear anything! This is toggled by a keyboard shortcut, FUNCTION-KEYn, where n is the sample number.
        • "Loop" indicates the sample will loop.
        • "Rst" means the sample index will be reset to the beginning point at the start of a "note". This is only relevant to Rack747 usage.
      3. The "Gain" "Pan" and "Tune" pots are the master controls for this sample for all these parameters.
      4. The "Root" field is the center note for tuning. Off indicates this sample will not follow Racks pitch. This is only relevant to Rack747 usage.
      5. The "Rng" field is the response range of this sample in terms of midi notes. This is only relevant to Rack747 usage.
      6. Just to the right is a graphic representation of the sample, it's loop start, loop end, and begin points. Figures are in seconds. The left green triangle is loop start time. The right green triangle is loop end. The red triangle is beginning time for the sample (which may be different to the loop start). These may be clicked and dragged. The numbered boxes below the blue area are current position for each channel. These may also be clicked and dragged.
      7. To the right we have sets of pots and crossfade assignments for each channel for this sample.

    AltX7: the compleat FM synthesiser

    AltX7 is a multi oscilator ('operator' in Yamaha terminology) network tuned for FM synthesis. It presents a single 'algorithm' of interconnected oscilators that may be easily tweaked and rebuilt for an enormous variety of pleasing and awesomely ugly sounds.

    There are two kinds of connections between operators available.

    Operators are added to the current algorithm by selecting this option from the very short menu that pops up when you click on empty space on the operator display.

    Connections are made by clicking on an operator with the secondary button. This brings up a red line, which, when dropped on another operator (or the ouput block) will form a connection. It is quite kosher to connect an operator itself: in fact, operator feedback is deliciously chaotic.

    Operators may be shifted around on the graphic display by click and drag. This has no acoustic properties.

    Holding the ALT button while clicking an operator should bring up a control menu. This should present an option for deleting an operator and all its connections from the network.

    The most significant paramater in this game is the ratio between the tune of the modulator and the tune of the carrier. In general, whole number ratios give the sweetest results, as they give emphasise more harmonics from the natural spectrum of the carrier. There is of course a whole smear of beautiful wierdness between sweet spots.

    The 'alfa' (sic) parameter controls the amount of the FM effect.

    An envelope may be added to any connection, so that the timbre (or gain of an ouput connection) will vary over time. Envelopes are shown on the algorithm display as lettered blue boxes. The envelope parameters, 'Attack', 'Hold', and 'Decay' are the respective times that the envelope takes to reach its maximum, stay at its maximum, and then fall back to 0. These values are measured in beats: ie they are locked to the tempo of the Rack.
    Selecting 'new envelope' on the envelope selector will create a new envelope, and put it on the control panel.

    The algorithm buttons load one of a small set of very basic algorithms.

    Faq and trouble shooting guide

    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.

    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 US$45, 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.

    Also of interest for Rack users will be the meta-sequencer, Qua, available in beta form by late July 1998 (in my dreams: 25/4/99). 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 BeWare, or 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-1999, 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@zog.net.au.

    Squelch and enjoy!