Rack747 (Shareware release 5.05, BeOS PR3)
Version 5.04 by any other name is version 5.05
Well, actually there are some differences. Mainly in dealing with stability under the stress
of simultaneous loadings. The next version will change heaps, and hopefully include a few
things that have been suggested blah, blah, blah, ... . Hopefully the stupid x86 compiler will
work as well. Yee hah. The interface is much the same, so here (slackly) are the docos for 5.04.
What you've all been waiting for, ... (fanfare crescendo ....)
The Rack has been reborn!
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 big difference for previous
users of the rack303 is the name change, and the addition of a drum module.
Overview
The Rack is a rack of monophonic synths, performing a
modelling of the classic Roland 303 Bassline. Each synth is
associated with its own basic monophonic 16-note sequencer, and 4-part drum module.
Each seperately
sends and receives MIDI note and control data. 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, control and note data can be
organized into longer patterns.
Yup! It's shareware.
This is the first version where I feel pretty good about removing the Beta tag. As such,
I'm opting for a shareware license scheme. If you like this software, and feel ethically
inclined, send $30.30 US to me, and sleep peacefully at nights knowing that you are in
some way contributing to me staying up late and making the rack a better place for
us all to live in. Cheque or money order is the go, and should be made payable to
David Karla. I would love to be able to take credit cards, but that is still a no go.
As of now, January 1998, I can be snailmailed at:
114 Highett street
Richmond
VIC, Australia, 3121.
Failing this, my contact details 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:
c/- 38 Brett st,
Murrumbeena
VIC, Australia, 3163.
though this address may have a long turnaround time.
All registered shareware users will be given full licenses when the rack goes
commercial. You'll be saving yourself precious dollars, be contributing to a great thing,
have a clean conscience, and receive upgrades in the mail. I'll also be far more
strongly inclined to incorporte your own kooky ideas of how this beast should tick.
Advertising break: the commercial release will feature many waveforms, optional tempo
locking for key parameters, and a bigger internal memory.
If you don't feel so inclined, I won't hate you, or anything. We're all scumbags at heart.
Send some mail anyway. If you're
writing interesting software, or could lend assistance translating this dodgy manual into other languages, I could be interested in a trade.
And it's always nice to
get bug reports and feature suggestions, Enough soapbox: back to the manual.
What's new, what's old, what's it all about anyway?
Release Notes for 5.04
This version is largely a more stablilization of 5.03. The appearance has
changed substantially. Several memory leaks have been fixed.
-
The song editor has been revamped to the point of usability.
-
Drum parts can be sequenced.
-
Drum mutes can also be sequenced.
Release Notes for 5.03
This release provides a few more features, and has bloated somewhat
over the original (both it's software and hardware predecessor):
-
The default save file directory has moved. Previously, this was in home/config/settings/rack303.
It's now in {home of rack binary}/Patches.
-
A drum module for every 303.
-
4 LFOs.
-
function key shortcuts
-
full configurable midi in and out
-
a couple
of extra controllers, particularly for envelope attack.
-
an optional flashing mentronome thingy,
-
additional single window editors for all the sequences in the memory bank, and
in the running synths.
-
a seperate mix window
-
song mode for sequences and slider settings
-
line input waveform, where the audio feed is pumped straight into the filter and out again.
-
sample and hold waveform.
I've debated whether there's any advantage in keeping the 303's
in their own address space and adding a message passing overhead on
top of the DSP. One advantage is that the 303's don't actually
have to have anything in common other than the protocol which
defines their relationship to the window. As long as they are syncable, there are a wider
range of twisted musical possibilities.
The previous versions "hack" and "fwack" are
now obsolete, as the display control problem with LFOs is ironed out.
There is
another version "slim303" which doesn't carry around as much baggage.
Other, more interesting interchangeable variants will follow.
The other advantage is more pressing: the single address space version which I
prototyped clapped out much more quickly.
Usage
Rack747 can be launched from the terminal or desktop. Currently there are no command-line
options. Drag and drop hasn't worked properly since dr8, but it's one of the little things that
should be back soon. This fires up a single synth sequencer pair.
The first Rack app to be run creates the main control window, and a companion window containing
all the bank access controls, and
opens the midi in/out ports. Channels are added by launching
more Rack's, either from the desktop
or terminal.
Subsequent launches of the Rack, up to the hard limit (8: if anybody can creatively use
more, I'll extend it), append details to the
status/control region (bottom of the main window)
specific to the new synth/sequencer pair.
All Racks share this single window. The "top" Rack is the one whose number is in the upper left
hand corner, and whose parameters are currently displayed.
This can be selected by function key (f1-f8), or the left button (marked "TBi") in the status area.
The parameter memory is generally independent of the running synths, and offers the ability to
build songs, edit away from a running synth, and copy parameters from one synth to another.
Generally, the sliders can be moved by:
-
Clicking to a position on the bar.
-
Grabbing the knob and riding it.
-
Modifying the numeric field.
-
Sending appropriate midi data.
Text fields can be modified by:
-
The usual click, edit, and return.
-
Using the arrow keys to scroll through values.
-
Hitting "page up" to bring it to its maximum value, "page down" for its minimum value, and "home"
for its median value.
-
Some fields correspond to midi values.
-
The TAB key shifts to the next field in the window (irrespective of whether its a text field or not).
This is only especially useful for the edit displays.
-
The CTL and SHIFT keys increase the step size by 2, 5, and 10
(if both are down) respectively.
For buttons with multiple functions (ie save/load), left click does a load, and right click does a store.
The screen is divided into four vague areas:
Menu Settings.
The menu bar provides access to all the file save and load functions, and toggling of the extra
edit windows, and the miscellaneous options.
-
The sequence/slider settings for the running synths (the data displayed in the edit window)
and the memory bank can be saved and loaded interchangeably. A set of patterns can be
created interctively, saved to disk, reloaded into the memory (or back into the running synths),
twisted to your hearts content. The default save directory is "{rack home}/Patches".
Loading the config sets all midi channels and sync parameters, as well as the relationship between
sliders and midi controllers.
-
The global sequence edit window provides an edit page for every (potentially) running 303's
sequence. Likewise, the bank editor provides a single page edit for all the sequences in the
current memory bank. These behave identically to the normal edit window (see below).
-
The global mix window provides 8 small sliders for the amplitude of each synth.
-
The config editor edits the current running midi control configuration.
-
The "Metrognome" option controls the flashing light in the edit window.
The Bank Control Window
This window floats away from the main window. Quitting it simply activates the
main window.
The Config button loads the configuration stored in the current bank (left click)
or stores the running one in the bank (right click). The ascii config
files used in earlier versions have disappeared.
-
The bank exchange button swaps the synth and sequencer settings for the
current (at present only) memory bank with the corresponding running values.
-
The "Seqi" buttons load (on a left mouse click)
and store (on a right click) sequence data into common storage.
This data also includes the tempo, start and end point settings, and
sequencer mode.
-
The "Drumi" buttons load (on a left mouse click)
and store (on a right click) drum map data into common storage.
-
The "Slideri"
buttons store (right click) and load (left click)
synth settings to and from an area common to the 303 rack.
-
The "Songi" correspond to the bank-stored songs. As
usual, a left click loads from the bank, and a right click stores to it.
-
The "Alli" correspond to a load of all parameters: Drumi, Seqi, Slideri and Songi.
General System controls
These are mainly midi control values
-
First is the number of the "top" 303, the one which is
currently being controlled by the sliders and screen knobs. This appears in the upper left corner
of the screen.
-
Two fields in the upper right corner give the midi TX/RX port. This is
currently only "midi1" and "midi2", but will eventually include a
few surprises, such as our GeekPort object (in the planning stages),
which, in the current state of play, may never see light.
-
The two fields below this give channel nos for global midi TX/RX. These
channels will send note, and most importantly, control data to whichever
303 is in the top display, irrespective of its own midi channel settings.
This can be particularly useful for controlling the 303's from another
controller: we have been using local mode on a Yamaha Promix.
Sequencer controls
-
The "start" button
starts the sequencer, and the "stop" button stops it.
-
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.
-
A left click gives real time mode.In this mode,
you are given a 1 cycle visual count in, followed by a one shot
record cycle. The mechanism of the recorder is crude, but usable.
It simply grabs the current note on, and stores it in the current
sequence position, effectively trimming it to a 1/16th note
duration. Quick passages of notes may well lose bits, as if more than
one note is played over a sequence cell duration, only the last is used,
and that is placed in the cell.
-
A right click gives a step record mode. In which every midi note-on
(or keypress) stores that note at the given position, and bumps a
position counter on.
-
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.
A value of - for a pattern indicates "don't care", allowing
this parameter to be editted dynamically. The drum mute ('DM') section has 4 colored fields for
drum mutes, corresponding to drum part 0 to 3 respectively. By default, they are blue ("don't care"):
white turns the mute off (i.e. that part will be heard), red corresponds to mute on for that part.
The diamond shaped knob deletes the current step, the left facing arrow inserts a step
before the current one. The right facing arrow appends a new step after the current one.
The up arrow scrolls forward through the current song, the down arrow: backwards.
Each song step is loaded at the end of a sequence, so the loop proper will not start until the
initial sequence has played. Tempos, and start and end points, are loaded with sequences, so you can use this to create some fairly crazy lines.
-
The Mode field controls a few odd extended modes of the sequencer.
- "normal" mode is what it is, an interminable loop.
- "rand note" randomizes notes at the end of a sequencs,
- "rand beat" randomizes the rhythmic pattern, leaving notes intact,
- "rand all" does what it says: only for the brave, or lovers of aleoratic music.
- "shuffle" picks a random memory bank sequence from between the first two sequences in the
song list.
-
"song" mode plays the synth from the song field, loading synth &/or sequence parameters automatically from the indicated memory banks.
-
"one-shot" plays the sequence once and then stops. This is handy if you have something that you
like scaring small children with, but don't want to be drilled into your head.
Highly modulated noise at 300bpm is a case in point.
The large block of controls below these buttons is the sequence editor proper. The values here
correspond to midi note # and midi velocity respectively.
-
The slider controls sequencer tempo.
-
The "trans" text field transposes the current sequence by a given
amount. It is reset to 0 immediately after acting. It responds to the up and
down arrow keys.
-
Two sets of 16 text controls display the data in the current sequence,
one line for midi note#, and 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 line of text controls below this give access to the built-in 4-part drum module.
-
A single
part is displayed at any time, selected by the pull-down menu at the left of this row: click on
the number to activate the menu.
-
The check box to the right of this controls muting of this drum part.
-
The inset string field next to this controls a pull-down menu to select an instrument from those
available, This is presently limited, but later releases will enable this to be configured.
-
The 16 text controls indicate the drum velocities for this part, or 0 if there's nothing happening
on this part of the beat.
-
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
simultaneous L/R mouse click. This is most relevant to the sequence sync function, as this is
where the sequencer will be syn'd from.
Synth controls
The next 14 or so lines are controls for the synth itself. The sliders
are almost self explanatory, and 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 first 5 sliders control the operation specific to the filter:
- Cutoff: filter cutoff point.
- Red: filter resonance
- Env: the breadth of the filters sweep
- F-Attack: the filters attack rate
- F-Decay: the filter's decay rate
-
The next 2 sliders (feedback/delay) control the delay line:
- feedback: controls the amount of feedback in the line
- delay: controls the delay time
-
"Glide" controls the 303's rude portamento effect.0
-
The next 6 controls affect the overall mix of the part.
- A-Attack: controls the amplitude attack envelope of the synth.
- A-Decay: controls the amplitude decay parameter of the synth.
- Synth level controls the output amplitude of this particular synth.
- Kit level controls the output amplitude of it's associated drum module.
- Mix level controls the level of both parts together.
- Pan controls the L/R panning of both synth and drum parts in the output mix.
-
The "Osc" slider controls the oscillator wave form (saw, square, sine,
noise, thin square, triangle, linein and sample). In this case, it's certainly a
case of what you hear is what you get, except
the two audio-in waveforms, "linein" and "sample". These work in conjunction with the
sequencer to chop up the input. The linein mode takes a continuous feed. The "sample"
waveform takes the audio input from the first sequencer cycle. Both waveforms are
crudely gated, as audio noise produces annoying crap through the filter.
-
The four sets of LFO controls give a variable rate LFO on
oscillator frequency, filter cutoff, pan, and amplitude, respectively.
The first in each set controls rate, the second, depth. The LFOs are
reset with each note on, if the reset button is checked, otherwise not.
Synth specific status region
The last region contains controls specific to individual
running 303s.
-
The left button sets the selected 303 to be "top" (i.e. under control
of the screen sliders and buttons). It may have a different label if
a different version of the 303 is running under it.
-
The start/stop button does what it says...
-
The "mute" checkbox turns sound off for this particular 303, without
altering sequencer status.
-
Next to this is the "sync" field. This gives a particular synth/sequencer to lock onto.
When the indicated 303
hits the start of its cycle, this 303 will receive a start message from
it, resetting it to its "beginning" note (note: not the sequence start point).
This continues until the sync lock is turned off.
-
The next field gives the midi receive channel. This takes precedence over the global
receive setting.
-
The next field gives the midi transmit channel. Control
messages are sent from the sliders, and note on/off from the
sequenceer. This can be damned useful for pre-hearing sequences if
you have a midi keyboard and some headphones handy.
-
The rest of the line gives sequencer status ("Play/Stop/Rec"), an
indication of which area the 303's sequence was loaded from ("seqi" or
"rand", or "stepi"), and a 3 digit indicator for the pan level of it's output
(this can be useful for distinguishing between a number of running
channels).
As well, the computer keyboard is used to provide shortcuts.
-
The function keys, f1-f8, are used to select a particular 303 and
make it the top one. For this to work, the focus must be on the main
window: you may have to hit a TAB or ENTER to do this to do this.
-
In a similar manner, CTL-function key toggles the mute of the corresponding
303.
-
SHIFT, in conjunction with the function keys starts/stops a sequencer.
The relationship between midi control change messages and sliders is:
- B_PAN controls the pan.
- B_MODULATION controls filter resonance.
- B_BREATH_CTRL controls the filter envmod.
- 0x10 controls the cutoff frequency.
- 0x11 controls the feedback.
- 0x12 controls the tempo.
- 0x13 controls the amplitude slider.
- 0x14 controls the LFO-1 rate.
- 0x15 controls the LFO-1 depth.
- 0x16 controls the LFO-2 rate.
- 0x17 controls the LFO-2 depth.
- 0x18 controls the LFO-3 rate.
- 0x19 controls the LFO-3 depth.
- 0x1a controls the LFO-4 rate.
- 0x1b controls the LFO-4 depth.
- controller 0x0c controls the delay factor.
- controller 0x0d controls the decay parameter.
- controller 0x0e controls the glide parameter.
- controller 0x0f controls the amplitude decay parameter.
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
-
There is a bit of lag in the keyboard/external sequencer response. It's
not measurable, but more of a feel thing, and probably no worse than that
in a lot of old analog gear anyway. This
seems to do with the fact that the audio subscriber (as I understand it)
doesn't like buffer sizes less than 4k.
-
The default sequence gets very annoying.
-
Control change information occasionally gets mangled. This happens
somewhere between my keyboard and the BMidi interface, and might not
be a problem on other setups.
Authors
David Karla (dak@cs.latrobe.edu.au)
I gratefully acknowledge the assistance of
Alistair Riddell (amr@farben.latrobe.edu.au), and
Ross Bencina
Correspondence (feedback and bug reports) will be graciously
accepted. Post any queries to dak@cs.latrobe.edu.au.
Squelch and enjoy!