             The Groove Analogue Sequencer Simulator

                           Tim Wright


Overview.

     The Groove Analogue Sequencer Simulator is a program for the 
Atari  ST range of computers which is designed to  replicate  the 
effects of early "analogue" sequencers using modern MIDI equipped 
sound creation devices. 

     Patterns  can be created and sent to a number  of  different 
MIDI devices, producing both notes and also such effects as pitch 
bend,   patch  change,   or  controller.  Patterns  can  also  be 
transposed in real time utilising either the mouse or MIDI  input 
from a suitable controller keyboard.

     Once created,  patterns can be stored in a memory bank,  and 
then  chained  using a second,  "song play"  mode  allowing  more 
complex arrangements to be built up. 

     Finally,  Patterns,  Groups  and Songs can be saved  to  and 
loaded from disk. 

Loading the Program.

     To load the program,  simply insert the disk containing  the 
program and switch on the computer.  When the directory  appears, 
double  click on the icon labelled "GROOVE.PRG".  The  simulation 
will now load and run automatically.

Using the Program.

     When first loaded,  the program defaults into "Pattern Data" 
mode.  other modes may be selected by clicking upon the four main 
icons in the lower middle of the screen, labelled "Pattern Data", 
"Pattern Routing", "Disk" and "Pattern Chain". Each of these four 
sections  will  be covered in more detail below,  but here  is  a 
brief description of each section.

"Pattern Data" is the section where the raw numbers are  entered. 
Three tracks are provided,  each with sixteen steps.  These three 
tracks  produce MIDI information when passed through the  Pattern 
routing stage.

"Pattern  Routing"  takes the information provided  by  the  Data 
section  and turns it into MIDI output.  Eight output  "sections" 
are provided.  Each one can have a different event type and  MIDI 
channel, and use any (or all) of the data tracks. 

"Disk" is simply the section allowing loading and saving of data.

"Pattern Chain" allows you to take saved patterns and chain  them 
automatically, thus producing longer pieces of music which change 
rhythmically.  Theoretically  up  to  600 bars of  music  can  be 
sequenced.

     To  the  right of the mode selection icons are  three  other 
boxes.  These are,  from top to bottom, the Transport window, the 
Transpose  window,  and the Tempo window.  The  Transport  window 
acts  similarly to a tape deck,  whilst the other windows act  as 
would be expected.  Please note... in all cases where a value may 
be changed,  press the left mouse button to decrease it,  and the 
right mouse button to increase it.  Also note that in some cases, 
holding the left shift key will cause changes of one octave.
     To  the  left  of the mode select icons  lies  the  sequence 
storage  box.  This allows up to twelve patterns to be stored  in 
memory,  and  later switched automatically using  pattern  change 
mode.  For  each memory you have three buttons,  which behave  as 
might be expected.

"Save" stores the current sequence in the memory location, unless 
the location is locked.

"Load" copies the memory location into the current sequence.

"Lock"  allows  a  memory location to  be  protected  to  prevent 
accidental erasure.

     Please note ... Some options are not available in all modes.

     Finally, above the mode select window and directly below the 
various   mode  screens,   lies  a  status  bar  which   provides 
information  as to the current mode of the program,  and  to  its 
left, the MIDI information box. This is now briefly explained.

     The  MIDI  information box shows how the program  will  deal 
with incoming MIDI information.  This can be in one of two modes, 
Transpose  or Data,  and these are toggled by clicking  with  the 
mouse upon the box itself.  In transpose mode, incoming notes are 
used to set the Transpose value of the program;  C3 is defined as 
no transposition.  In Data mode,  the mouse must be over a  value 
and the program must be in the Pattern Data mode.  In this  case, 
playing  notes  will  cause that value to be  inserted  into  the 
corresponding  location,  allowing  a form of step  time  musical 
entry over MIDI.  Please note that upon leaving the Pattern  data 
screen, MIDI mode defaults automatically to Transpose.

Pattern Data.

     This section of the program consists of three  tracks,  each 
split into two main areas.  The left hand area controls the order 
in  which data is sent out (into the Pattern Routing  stage)  and 
the right hand area displays the data itself.  The left hand area 
is broken into three separate options. 

     The  first two or these are the "First step" option and  the 
"Last step" option. These allow you to delineate a range of steps 
which  are active.  For example,  of the first step it 2 and  the 
last  step is 11,  then steps 1,12,13,14,15 and 16 will never  be 
played.

     The third option is direction. This determines the manner in 
which the program decides which order the steps should be  played 
in. These are listed below.

"Forward"  - In this mode the step will cycle from first step  to 
last step, and the loop back to first step. E.G. 1,2,3,4,1,2,3,4.

"Backward"  - This simply reverses the above  mode.  Given  first 
step or 1 and last step of 4, we would produce 4,3,2,1,4,3,2,1.

"Shuttle" - This is a combination of the above two  methods,  and 
would result in 1,2,3,4,3,2,1,2,3,4 and so on.

"Random"  -  The program picks a random value between  first  and 
last steps inclusive. For example 1,3,4,2,4,3,3,1,2...

"Single" - The program plays the first step repeatedly. 1,1,1,1.

     The right hand area of the screen consists of sixteen steps, 
each of which can be broken into three areas.  A first  value,  a 
second value, and a pair of indicator lights.

     The  two  values  are simply those  numbers  which  will  be 
transmitted  when  the sequencer is running.  For  those  of  you 
unfamiliar  with  MIDI,  in a note type event  the  first  number 
designates the pitch of the note in the following manner.  60  is 
C3,  each  number  above or below designates an interval  of  one 
semitone.  Hence,  72 is C4,  57 is A2.  The second number is the 
velocity  value;  this  will commonly determine the  loudness  or 
timbre of a sound.  Note that in some event types (program change 
for example) the second value is ignored.

     The two indicator lights are set up like this; the left hand 
light  is  an indicator which will light whenever  that  step  is 
being played.  The right hand indicator indicates whether a  step 
is active or not,  and can be changed by clicking on it;  if  the 
light is out, then when that step is played then no event will be 
generated by this channel.

Pattern Routing.

     The  pattern routing section is where you decide  what  will 
happen  to the data generated by the  previous  section.  Several 
channels  are available and these are displayed down the  screen. 
Each channel has six different parameters,  which may be  changed 
using the mouse. 

     The  first  is  the  type of  data  to  be  generated.  This 
determines which kind of MIDI information will be  generated,  if 
any.  If the type is set to "OFF", then no data will be generated 
by  this channel.  NOTE will generate notes,  CTRL will  generate 
control change events. In this case, the first number defines the 
control  to  be moved,  the second number its new  value.  A  few 
useful controller numbers are listed below.

01 - Modulation.
05 - Portamento time.
07 - Main volume.

     PROGRAM events send program changes; in this case the second 
value is ignored. Finally, PITCH sends pitch bend values. 

     The  next  parameter is the channel on which  the  resulting 
MIDI  date is to be transmitted;  this can vary between  one  and 
sixteen.   Note  that  more  than  one  of  the  groups  can   be 
transmitting on the same MIDI channel if required.

     The  third parameter simply selects whether the track is  to 
be affected by the transpose factor.  If the word is "greyed out" 
then  the  transpose factor will have no  effect,  otherwise  the 
pitch will be changed.  Note that transpose is only ever  applied 
to NOTE events,  regardless of this setting- you cannot transpose 
pitch bend messages.

     The remaining three parameter determine which of the  tracks 
in  the  data  screen  are  to  applied  to  this  channel.   Any 
combination is allowed,  but the results are unpredictable unless 
you know how the program determines them; this is now explained.

     If  none of the selected track is generating  a  note,  then 
nothing will be generated (obviously).  If one (and only) one  of 
the tracks is active,  then this will be the event  produced.  If 
more  than  one track is producing output,  then the  events  are 
added.  However,  to prevent huge numbers being  generated,  each 
added  number has a constant removed from it;  60.  Hence  adding 
values of 64 and 64 would produce 68, whilst adding 62, 52 and 43 
would produce 37. In terms of note values, 60 corresponds to C3.

Disk.

     In  this  screen  you can load or save  either  the  current 
sequence, the group of stored sequences or the current song chain 
to or from disk. Selecting any item displays a file selector.

     When saving data,  please ensure you use the suggested  file 
extension  or  you  will  not  be able  to  see  the  files  when 
attempting  to  reload them (although typing the  names  directly 
will still work).

Pattern Chain.

     This  section is where you can arrange a number of  patterns 
into a sequence and they will play back in order.  There are  two 
main  sections.  At the top of the screen there are 150  numbers; 
these represent the 150 possible steps.  At the bottom there is a 
status bar.

     The steps can be changed by clicking on them with either the 
left or right button.  Numbers one through to nine correspond  to 
the  memories  one to nine,  whilst memories ten  to  twelve  are 
referred to as A,B and C respectively. 

     The status bar has five different variables,  each of  which 
will affect how the song plays back. Firstly, there is the length 
variable.  This determines how many steps each pattern should  be 
played  through  before moving onto the  next  pattern.  This  is 
defined  because  different  tracks in each  pattern  may  be  of 
different length. Note that this may be set to any number between 
one and sixty four; by selecting higher numbers, each pattern may 
be defined to play more than once for each "bar". 

     The second variable is closely linked with the  third;  they 
define the first and last step which will be played. For example, 
two and six would mean that bars 2,3,4,5 and 6 were played.

     The fourth variable, loop, is greyed out if switched off and 
shown in clear white if switched on. When off, after the song has 
reached the end of the last bar it will automatically stop.  When 
switched on,  the song will loop back and start playing from  the 
start again when it finishes.

     The final variable,  "bar",  simply shows which of the steps 
shown above the computer is currently playing.  Please note  that 
upon pressing stop, the computer always returns to the bar listed 
as the first step. Therefore, if you change the first step whilst 
the computer is stopped,  the bar may not always be  correct;  to 
update the program simply press the stop icon once.

Other Information.

     This  program was written in STOS Basic.  This means it  may 
not  work on newer models of the Atari range;  whilst  it  should 
work  on  the STFM and STE,  it hasn't been tested  except  on  a 
rather battered STM. In particular, I doubt it will work with the 
TT or Falcon.

-----------------------------------------------------------------
     Any bugs, suggestions, comments etc. should be e-mailed to 

     T.J.Wright@city.ac.uk

although that will probably expire in about six weeks. Failing 
that, you could snail-mail to...

     Tim Wright,
     21 Borough Road,
     Isleworth,
     MIDDLESEX,
     TW7 5DT,
     ENGLAND.

Tim Wright,
14th August 1994.
