rack303 (Beta release 4.04, dr9)
Overview
"rack303" is a rack of monophonic synths, performing a
modelling of the classic Roland 303 Bassline. Each synth is
associated with its own crude monophonic sequencer, and seperately
sends and receives MIDI note and control data. Presently,
the sequencers are limited to 16 notes: 4 beats of sixteenths.
In other words, this is a snappy little techno groove generator.
This release provides a few more features, and has bloated somewhat
over the original. It now offers a crude sequencer edit/record facility,
4 LFOs, function key shortcuts, full midi in and out, and a couple
of extra controllers. If you have Dual-66, you may not be able to rack
up as many as previously. The added functionality more than compensates.
The midi setup is fully configurable. There is an optional flashing mentronome thingy,
and additional single window editors for all the sequences in the memory bank, and
in the running synths. The sequence start and end points are now entered via the
bar on the synth editor. For dr9, the menus are now displayed on a menu bar, rather
than the browser app menu.
I've also 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
The first 303 to be run creates the main control page, and
opens the midi in/out ports.
Subsequent launches of the 303, up to the hard limit (8: if anybody can creatively use
more, I'll extend it), create
a status/control region, at the bottom of the main window,
specific to the new synth/sequencer pair.
The screen is divided into four areas:
-
The top line and menu bar display system general settings.
-
The menu bar provides access to all the save and load functions, and toggling of the extra
edit windows, and the miscellaneous options.
The sequence/slider settings for either the running synths (the data displayed in the edit window)
or 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. These can be also dropped onto the icon for a load on
startup.
-
The global sequence edit window provides an edit page for every (potentially) running 303s
sequence. Likewise, the bank editor provides a single page edit for all the sequences in the
current memory bank.
-
The load configuration option loads an ascii file controlling parameter to midi control number
relationships. The format for these files is obvious from the example file, and will certainly
change to an inbuilt editor fairly soon, at which point the "save configuration" option will
start to work (presently it does nothing: edit the config file in a text editor if you need to).
The distribution includes a file to restore the normal defaults, and one to run the 303 off
the controls of a promix01 in local mode.
-
The "Metrognome" option controls the flashing light in the edit window.
-
First in the next line is the name of the "top" 303, the one which is
currently being controlled by the sliders and screen knobs.
-
Two text fields adjacent to this 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 next two text fields 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.
-
The next three lines give 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. See the note below about midi note 0.
-
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 "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.
-
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
-
Two sets of 16 text controls display the data in the current sequence,
one line for midi note#, and one for velocity (amplitude).
These
can be editted, set to off (by note 0), tied to the previous note
(by setting velocity to 0) or have their ties removed (by any other
velocity). This is a fairly
crude mechanism, but is about as good as it will get for a package that
doesn't claim to be a "real" midi sequencer. If you want to use such,
connect it to the 303s midi in port.
-
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 initially 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.
-
The Mode slide controls more a few odd extended modes of the makeshift sequencer.
"normal" mode is what it is, "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. "shuffle" picks a random sequence from between the first two sequences in the
song. ":song" mode is...
-
The song text field is an arbitrary length string of sequence numbers,
seperated by spaces, used when the sequencer mode is
"song". For instance, "1 2 0 2 0 1 1 1 2", plays sequences 1,2,0,3,0,... from the memory bank
in a loop.
These are loaded at the end of a sequence, so the loop proper will not start until the
initial sequence has played. I consider this fairly wierd and will change it as soon as some of
the more pressing dr9 problems go away.
-
The next 10 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.
-
The "slideri"
buttons store (right click) and load (left click)
synth settings to and from an area common to the 303 rack.
-
The first 4 sliders control the operation specific to the filter.
-
The next 2 sliders (feedback/delay) control the delay line.
-
"Glide" controls the 303's rude portamento effect.
-
"Amp" controls the output amplitude of this particular synth.
"A-Decy" controls the amplitude decay parameter.
"Pan" controls the L/R panning of this synth in the output mix.
-
The "Osc" slider controls the oscillator wave form (saw, square, sine,
noise, thin square, and triangle).
-
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.
-
The last region contains controls specific to individual
running 303s.
-
The first 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 "mute" button turns sound off for this particular 303, without
altering sequencer status.
-
The next two lines give sequencer status ("Play/Pause"), whether
it is muted (by an "M"). an
indication of which area the 303's sequence was loaded from ("seqi" or
"rand"), 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).
-
The next line gives the midi receive channel. Currently understood is
noteon, noteoff, and keypress messages, and control data, which is
sent to the sliders.
-
The next line 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 following line gives a sequence to lock onto. When the indicated 303
hits the start of its cycle, this 303 will receive a start message from
it. This continues until the sync lock is turned off.
As well, the computer keyboard is used to provide shortcuts.