User's Guide to Melodia / Table Sequencer

Software and documentation Copyright (c) 1993-1994 John Dunn.
All Rights Reserved.

Introduction:

Melodia/TS is one of a series of Melodia algorithmic music
composing programs.  These are attempts to free musical
artists from the tyranny of a tradition that grew out of the
physical limitations of the medium, just as photography freed
visual artists. They do not try to replace the traditional
methods. They do offer a completely new medium with new rules
and with different strengths and limitations.

Overview:

Melodia/TS consists of two video pages: Play, and Compose.
You can combine the Play and Compose pages into one screen
with the "Zoom" menu command, or you can flip between them
with the "Page" command. To exit the program, save files, or
to do some specialized stuff such as setting MIDI sync or
changing the Sequencer or Table data (more about this later),
you can pop up the "File" menu at any time.

The Play page gives you control over which instruments are
playing at any given time, and their rhythms, timbres, and
volumes.  An instrument along with its performance controls is
represented by one of 16 horizontal lines on the Play page and
is called a "voice."

The top two lines of the Play Page control the playing of a
composition by stepping through up to 64 stages.  Each stage
is a snapshot of the current settings of the Play page
connections. The usual process for composing a piece of music
is to set up a pattern on the first stage, then to step
through the following stages and progressively modify the
sound: bring up more voices, fade the current ones out, etc.
Selecting "Strt" will then step through the stages, playing
each one for the number of measures you selected.

The Compose Page is where you select the pitch, timing, and
other relationships, where you compose your music.  Unlike
Melodia/Pro, which has several different algorithmic
processors that you plug together in various ways, Melodia/TS
has but one type of processor, the Table Sequencer. There are
twelve of them, each identical in every way.  Use one or use
them all, but in either case there is only one to learn.

At the bottom of the page are the Box Clocks, which control
rhythm. These are also very different from the clocks in
Melodia/Pro. Melodia/TS clocks are bouncing balls confined
within a box.  You change the rhythm components by resizing
the boxes.  This turns out to be rather fun and surprisingly
musical.  There are six boxes, with each of the four sides of
each box available as a clock which "ticks" each time a ball
hits the box edge. 

On-line Help and Color Codes:

Every active area on the Melodia/TS screen has a built in help
line that is printed at the bottom of the screen when you
press the right mouse button.  The rule is simple: click the
right mouse button to see what an area does, click the left
button to do it.

You can hold the right button down and move the mouse about
the screen to get a quick scan of what all the controls in the
area do.

Each help line will indicate which of the three mouse gestures
you need to use for the function:

"Click" is simply a left mouse click. Often you will get
additional feedback (such as the control changing color) if
you hold the button down for a moment when you click it.

"Dial" means to move the mouse left or right while holding the
left button down.  The control you are changing will be
highlighted while you are dialing it.  When you reach the
desired value, release the left mouse button - the value will
remain, the highlight will go away, and the mouse cursor will
reappear.

"Slide" or "Drag" is similar to Dial, except it is used on the
sliding bar controls and when moving or resizing the clock
boxes. While holding the left mouse button down, slide left or
right.  "Drag" implies you can move up or down as well.  The
value of the control will change as will its position on the
bar. Release the mouse button to select the value.

In addition to the on-line help, the controls have a
consistent color coding that tell you at a glance how a
control functions. 

White, green, cyan (light blue), and magenta (purple) indicate
an active control that can be changed by the mouse.

Yellow labels are informational only and cannot be changed by
the mouse.  Some of these are documented by the on-line help,
but most of them are simply documented as: "Not an active area."

The power behind Melodia's scheme is that most control inputs
take either values or connections.  Values are just that,
numeric values you dial in.  These will be colored white for
values from 0 to 99, and magenta for values from 100 to 127.
Since 0-127 is the MIDI value range, this is also the range
used by Melodia/TS.

Connections are the value at the output of one of the Compose
Page sequencers.  You get these by dialing a value left past
zero. It will turn green and take on the label of the
connected output.

Play Page:

The Play Page is divided into two parts: the top of the page
controls global parameters such as tempo and the actual
sequencing of the stages. It is the computer equivalent of the
conductor.  The rest of the page consists of the sixteen lines
that control the voices. These are like the musicians in the
orchestra.

Voice Controls:

To get sound, the first thing you must do is click on the blue
square on the far left of the voice line you want to "fire
up." When a voice is on, the mute switch will be bright red,
when the voice is off (mute) the switch will be blue.

The Mute/Solo switch is just above the four groups of four
(sixteen total) voice lines.  When in Mute ("M") mode, the
leftmost red/blue mute switches that select and identify which
voice is active can have any combination of voices on or off
that are changed by/remembered by the Page Sequencer on the
top line.  When in Solo ("S") mode the switch setting is not
remembered by or changed by the Page Sequencer.

The column of little dots just after the Mute switch is the
copy protect dot for the entire voice.  There are also copy
protect dots for each group of functions within the voice.
These allow you to protect parts of a page when you copy one
page to another.  More about this later.

The column labeled "Ch" selects the MIDI channel for the
voice. If you are using a multiple line MIDI interface there
will be 16 channels for each line, with the first line at
0-15, the second at 16-31 and so on. You are free to change
the channels at any time, to any value.  This gives you the
ability to freely move from one set of instruments to another.
Only 16 will play at any given time, but you can actually use
dozens of different channels in a single composition.

"Pc" is the Program Change column.  This sends a MIDI Program
Change command to the channel when the voice is first started
(either by turning on the Mute switch or by releasing the Halt
switch), or when the value is changed.

"Tsp" is Transpose.  It is a value that is added to the "Kb"
(Keyboard note value) input.  Think of it as the lowest
possible pitch the voice can play.

When you dial the notes, notice that there are no flats.
Although you can easily set up any scale in any key you wish
within the 12-tone system, the 128 notes recognized by MIDI
are given their absolute C-major names.  The octave of middle
C, for example runs consecutively from MIDI note 60 = C/5.

The next column, "Clk" is actually three items grouped
together with no space between.  Together, they control the
rhythmic feel of the voice. The first two of these control the
actual rhythm, the third controls pitch delay that strongly
influences perceived rhythm.

The first of these, the magenta letter icon, is the Clock
selector. This does not select a Box Clock output directly,
rather it selects one of the Table Sequencers in the Compose
page, also starting with magenta labels A-L. Whatever Box
Clock is driving the Table Sequencer line (this can be changed
rapidly) will also trigger the voice note.

The default is for the first voice to get clock A, the second
to get B, etc.  But this is arbitrary, and you can make
whatever connections you wish.  All clock selectors have a
range of A-L for the 12 Table Sequencer lines.

The note icon controls the action of the clock beat.  You can
change it to one of four settings: a legato (maximum "on"
time) every clock tick, a normal note every clock tick, a note
only when the pitch changes, and a legato note only when the
pitch changes. If you think you should be getting sound from a
voice but aren't, check that you have a note icon with a
double flag (normal note every clock tick).

Last of the three is the Pitch Delay selector. This value can
be changed by dialing from 0 to 9, then A to F, a total of 16.
Its purpose is to delay the pitch for the number of clock
ticks given. At 0 there is no delay; at 1 there is a delay of
one tick; at 2, two ticks; and so on up to a delay of 15 ticks
at F.

To understand this effect, set two voices to the same pitch
pattern and the same clock, then dial a low number into one
(only) of the two voices.  You will hear the pattern bounce
from one voice to another.

"Kb," the Keyboard input (improperly named since there is no
keyboard), determines the pitch of a note.  It is always
combined with "Tps," Transpose, just before being sent to the
MIDI channel.

Along with every note sent to MIDI there is also a value
called "Velocity" (labeled "Vl") that represents to MIDI how
hard you are hitting the key. It is supported by most
synthesizers, usually making the note louder and brighter with
higher values.

There are three Kb inputs, but only two Vl inputs.  The first
Kb uses the first Vl value, and the 2nd and 3rd Kb use the
same, 2nd Vl value. A velocity of 0 tells MIDI to turn the
note off, so if the first Vl is 0, the first Kb note will not
be sent, and if the 2nd Vl is 0, the 2nd and 3rd Kb notes will
not be sent.

For added flexibility, the Kb inputs are combined in different
ways according to whether the 2nd Vl is 0.  If the 2nd Vl is
set to a value (not connection) of 0, the 2nd and 3rd Kb
inputs (which otherwise would be unused since 0 turns their
MIDI note generation off) are added to the 1st Kb input.  If
the 2nd Vl is on (anything other than 0), the value of the
first Kb will be added to the 2nd and 3rd Kb inputs.     

This gives you the option of having multiple pitch inputs to a
single note: When you use the 1st Kb and Vl to produce the
note, and the 2nd Vl is off (set to 0), the 2nd and 3rd Kb
inputs act as additional transpose inputs to the 1st Kb.  

Used another way, and it gives you an easy way to produce
chords: With the 2nd Vl on, the 2nd and 3rd Kb inputs act as
interval offsets to the root value of the 1st Kb input. It
doesn't matter whether the 1st Vl is on or off. If it is on
you get a 3 note chord, if it is off you get two notes.  

Put another way, the 2nd and 3rd Kb inputs will produce two
simultaneous notes if their shared Vl is on (not zero).  The
pitch will be a combination of the respective Kb input plus
the 1st Kb input plus the Tsp (transpose) setting.  

Additionally, a third simultaneous note will be produced if
the 1st Vl is also on, and its pitch will be a combination of
the 1st Kb input plus the Tsp setting.  

Finally, if the 2nd Vl input is off (zero), the 2nd and 3rd Kb
inputs do not produce notes, but their values are added to the
1st Kb, so that the pitch of the single note produced
(assuming the 1st Vl is on) will be a combination of all 3 Kb
inputs plus the Tsp setting.

Following the note controls are the global modulation controls
which, like the Program Change control discussed earlier,
affect all notes generated by the selected MIDI channel.
Because of this, it is best to assign every voice a unique
MIDI channel. If two or more voice use the same MIDI channel,
the last modulation control sent will remain in effect for all
those voices.

"At," Aftertouch, also called Channel Pressure, is supported
in different ways by different synths, sometimes by different
patches on the same synth.  Often it is used as a crossfade
from one sound to another.  Experiment with this one.

All of the inputs following are MIDI Control Change inputs.
MIDI Control Change sends two parameters to the synth, the
control number which identifies what the parameter is used
for, and the value of the parameter.  You only work with the
value to send, the control number will be determined by the
input you use.

MIDI control numbers are more or less standardized, although
few synths recognize all of them.  Most synths support the
standard control numbers for Volume, Modulation, and Pan.
Other control numbers tend to be used for some patches in some
synths, and not used for others.  Control Change numbers used
by Melodia/TS are the most commonly supported, (almost)
standardized ones. However you can optionally change any
Control Change number by running the setup program, "TSSETUP."   

"Fp" is the Foot Pedal controller, MIDI Control Change #4.
There is little agreement on what effect this should have;
different synths use it in different ways, or not at all.

"Pt" is Portamento Time, MIDI Control Change #5.  It is
supported by most synths that are not sample based.  Some
modern sample based synths support it as well, although few of
the older ones do.  This sets the portamento time, and a
second switch input (described next) will turn portamento on
and off.

The column of green dots labeled "PSN" are on/off switches.
The first two are MIDI Control Changes that are interpreted as
full on or full off by most synths. Click on them to switch
from off (0) to on (127).  When on, the green dot turns to a
bright yellow circle.

The first of the three, "P" is the Portamento switch mentioned
above. It is MIDI Control Change #65.  The 2nd switch, "S" is
the Sustain (sometimes called "Damper Pedal") switch, MIDI
Control Change #64. These switches are not uniformly
implemented in all synths. 

The third switch, labeled "N," does not send a Control Change
to MIDI.  Instead, when on it inhibits Melodia from sending
Note-off messages. The acoustic effect of this on most synths
is similar to the Sustain switch, the sounds are layered as
thickly as the synth can handle. The "N" switch is especially
useful when using a Melodia voice line to control light
controllers, which generally do not like to receive MIDI
Note-Off messages. 

"Bc," following the switches, is Breath Controller, MIDI
Control Change #2.  Not uniformly implemented, but when it is
you can often get striking results by using a moving value.
This input is unique because it sends its output to MIDI
whenever it is changed rather than only at the beginning of a
note.  Be careful with this, as a very rapidly moving input
could overload the MIDI line.  Such MIDI clogging does no
harm, but it may cause timing errors.

"Md," is Modulation, MIDI Control Change #1.  It acts like the
modulation wheel on a keyboard synth, usually adding vibrato
or tremolo to the sound.  Modulation is well supported.

"Pan" moves sound from left (Pan value 0) to right (Pan value
127). It is MIDI Control Change #10, and it is supported by
most synths. The arrow at the left of the Pan control is the
polarity switch. Click on it to switch from up to down.  When
down, the ranges for Left and Right are switched.  This is
very useful to control pan of two voices so they move about
but always remain symmetrical.

For a simple example of this, dial the green connection "R8"
(which will generate a random number between 0 and 127) into
two pan inputs of two voices, with one arrow set up and the
other down.  Dial the same clock into the two voices.  You
should get a very live bounce of the sounds as they randomly
pan left and right, but remain separated.

Pan defaults to a mid value, 63, which has a special
significance. When set to this value, Melodia does not send
any Pan message at all. This allows synths such as the Proteus
that loose internal pan settings when they receive an external
message to retain the internal settings.

"Vol," Volume is MIDI Control Change #7, well-supported but
also changeable by Setup.  In the default setup, the Fade
slider control to the right uses the same Control Change
number as the Vol input, with the Fade value limiting the
maximum volume actually sent.

For example, if the Fade slider is set to "9," the maximum
value that Vol will actually send to MIDI is 72 (9 * 8 steps
per Fader click) regardless of the value at the Vol input.

When Fade is set to 0, it acts as a mute for the voice, not
allowing any MIDI signals to pass through to the synth.

The Fade slider becomes especially useful when you start
building a multiple stage composition.  This is because of the
Slew control to its left, which turns the Fade slider into an
automated mixing console.  By setting Slew values to anything
other than 0, the Fade slider will automatically fade from the
value at the last step, toward the setting at the current
step. Volumes will instantly jump to their settings if Slew =
0, or if the Halt control is clicked.

Slew times increase as the value increases and are not
affected by the Tempo setting.  Thus, 0=instant, 1=fastest
slew, 127=slowest.

Automated Mixer Interface:

The Fade sliders may optionally configured to control
automated mixers, independent of the MIDI volume sent by Vol.
There is a powerful advantage of using an automated mixer in
large setups because all inputs not actively producing music
are muted and therefore do not add to the background noise
level.

To control an automated mixer with the Melodia fader controls,
run TSSETUP and select option 6, "Change Fader Control #'s?"
In the default mode, there will be only one option, "Primary
fade base control #," which defaults to "voice," meaning the
faders use the same Control Change as the voice line's Vol
control.  At any time, you can return this option to its
default by giving the input -1.

Melodia assumes the automated mixer uses groups of consecutive
MIDI Control Change messages to control volumes, but beyond
that there is considerable flexibility built in to accommodate
most mixers.

The following example describes how to configure CM
Automation's MX-816 to control 8 stereo synth module outputs,
with each synth using 2 Melodia voice lines.

Run TSSETUP and select option 6, "Change Fader Control #'s?"
then set as follows:

1. Primary fade base control # .. 20   (whatever the MX-816 is set to) 
2. Primary fade channel..........  1   (whatever controls the MX-816)
3. Secondary fade base control#   28   (left is 20-27, right is 28-35)
4. Secondary fade channel........  1   (only 1 MX-816)
6. Initialization Pgm Change # ... 100 (turns off all MX-816 inpust)
7. Shutdown Pgm Change # ......... 101 (turns on  all MX-816 inputs)

The following setup uses two MX-816 mixers (both set up
identically, one used for left front & back, the other for
right front & back) and 8 stereo synth modules to give a
4-channel mix:

1. Primary fade base control # .. 20   (whatever the MX-816 is set to) 
2. Primary fade channel..........  1   (whatever controls the MX-816) 
3. Secondary fade base control#   28   (front is 20-27, back is 28-35) 
4. Secondary fade channel........  1   (both MX set to same channel) 
6. Initialization Pgm Change # ... 100 (turns off all MX-816 inpust)
7. Shutdown Pgm Change # ......... 101 (turns on  all MX-816 inputs)

Conductor Controls:

The two lines of controls at the top of the Play page are
mostly for the Page Sequencer.  You can and probably should
spend a lot of time with Melodia without ever using the Page
Sequencer. But once you have mastered the basics, you will
find that these controls will give you the tools to turn your
sound patterns into complete compositions.

The idea behind the Page Sequencer is to give you tools to
progressively alter your music in stages that can smoothly
transition from one to the next.  There are up to 64 pages,
each of which can last from 1 to 999 measures.  You build your
composition by developing your musical themes, then by copying
each page to the next, and modifying that in some way. Turn
voices on, fade others out, change modulation, musical themes,
etc. At any time you can insert copies of earlier pages,
delete pages, and so on.  Then, when you click on the Strt
control, the pages will play, each for the number of measures
you have specified, from start to finish.

The main page controls are the top line Strt, Stop, and Cont
commands and the blue page set line, plus the measure control.
Before you can use the Page Sequencer, you have to dial in the
number of measures you want a page to play.  You do this by
dialing a number into the rightmost green control on the
second line that initially says "M=Stop." Dial to the right
for a measure count, dial to the left for Stop, Exit, or Loop.   

When in the default Stop mode, Melodia plays the current page
until you select Halt or exit the program.  Stop doesn't stop
playing, it simply stops advancing pages.  Halt, on the line
below, stops and starts playing.

Exit is the same as Stop, except it will also exit the
program. It will only Exit the program if two conditions are
met.  First, you have to be in Play or Cont, second you have
to had opened Melodia with a filename at the command line: TS
MYMUSIC.

By selecting Exit instead of Stop, when you load it with a
file name as described above, it will start playing as soon as
it is called, and exit after it is finished; you can even set
up a DOS batch file that will run a series of compositions
automatically.

To run several pieces from a batch file, save each piece so
that it ends with Exit, then edit a text file (giving it an
extension of ".bat") so that each line calls TS with the file
you want to run. For example, edit a file named MYCOMP.BAT to
look something like this:

TS PART1
TS PART2 
TS PART3 
TS FINALE

Use "Save As.." from the DOS text editor to give the file its
name ("MYCOMP.BAT").  The .BAT file has to be in the main TS
directory.

To run your batch file, simply type its name instead of TS.
If this is all confusing to you, ask DOS for help.  Type "help
edit," or "help copy," or simply "help." If you have DOS
Version 5.0 or later, it will tell you about itself.  For
earlier versions you will have to consult the DOS manual.

The light blue number just to the right of the measure control
is the readout of the current measures played on the current
page. This is set to 0 when the page is first entered, and
starts counting up according to the values defined in the
tempo and time signature.

Tempo, just to the right of Halt, selects the musical tempo in
quarter notes per minute.  The time signature selects the
number of beats per measure / the note value of the beat.  The
default of 4/4 is four quarter notes per measure.  3/4 would
be 3 quarter notes per measure. 2/8 is two eighth notes per
measure. When you change these values, it will affect the
total playing time of your piece.  This will be indicated by
the changed total time indicator on the far right of the line.

To the right of the time signature is the Dots control.  This
turns the write protect dots on and off all at a time.  The
write protect dots are the little green dots just to the left
of each voice line and each of the Aux MIDI and clock lines on
the bottom of the Compose page.  When on (high yellow), the
line is protected from being changed by Pop, Top and Prev.
You can use Dots to turn them all on or off, then click on the
individual dots to selectively flip them.

Pop, Top, and Prev are all ways to copy a previous page onto
the current one.  To use Pop or Top, you will first have to
Push a page onto the page stack.  Then you can fetch it with
Pop, or copy it with Top. Prev simply copies the previous
page, and is perhaps the most useful of these.

Compose Page:

There are two parts to the Compose page.  The Sequencer
modules take up the top three fourths of the page, the Box
Clock modules are on the bottom quarter.

Clocks:

As the name implies, the clocks control the timing of events.
In Melodia/TS there are two types of clocked events.  These
are the actual note triggers in the Play area that send a MIDI
Note On message, discussed in the Play section above; and the
inner loop step of the table sequencer which will be discussed
below.

The clocks in Melodia/TS are unique.  They are a bouncing ball
confined within a box.  The size of the box plus the speed of
the bouncing ball determines the clock rate.  There is a clock
assigned to each of the four sides of a box, four clocks to a
box.  The six boxes are labeled A, E, I, M, Q, and U - which
are the first of the four clocks assigned to the particular
box: A = ABCD, E = EFGH, and so on.

Along the left edge of the screen there is a column of
white/grey clock labels with the yellow label "CK" above.
These turn the clocks on and off.  The green dots to the left
of the labels are the protection dots for each of the six Box
Clocks.

The Box Clocks themselves float in the clear area toward the
bottom of the screen.  You can move them around however you
want and it is ok to overlap them.  The green label on the
upper left corner of the boxes is the "handle" that will move
them around. Click on the label and, while continuing to
depress the left mouse button, slide the box into a new
position and then release the mouse button.

The square dot in the lower right corner is the size control.
Click and drag to change the box size.  The height and width
dimensions will read out on the blue help line at the bottom
of the screen. These numbers relate to the movement of the
ball, so that doubling the number will half the clock rate.

The speed of the ball can be controlled by changing the number
in the lower right corner of the box.  This number represents
MIDI timing ticks.  These are relative clock ticks, not actual
time values.  For example a quarter note is always 24 ticks,
an eighth note 12 ticks, and so on. The actual duration of a
quarter note is set by the Tempo; however long the duration
is, an eighth note will always be half that.

The fastest clock speed you can dial is a rate of 2. This is
one tick on and one tick off, two ticks total. The note value
is a 32nd triplet.

Clocks are automatically synchronized whenever you select Strt
or Halt. However if you are using a second sequencer you may
want to synchronize remotely, or you may want your other
sequencer to know when Melodia/TS has synchronized. Melodia/TS
uses the MIDI Tune Request signal for this. It is used only if
you have enabled Sync send or receive (see File Menu).  If you
have another synth that uses Tune Request, you can disable its
use by Melodia/TS by running the TSSETUP program.

Sequencers:

The Table Sequencers take up the top 3/4th of the Compose
page. There are 12 of them, labeled from A to L.  They run the
full width of the screen, and each one is identical.

The basic idea of these sequencers is to provide smart multi
level stage sequencing, similar in concept to what was
available on the old modular studio synthesizers, but far more
sophisticated.

Each sequencer is composed of an inner loop Pitch Sequencer
with a pitch output that can change at each inner loop clock
tick, and an outer loop Control Sequencer that is incremented
once for each inner loop sequence, and that has 5 control
outputs that change in time with the outer loop. 

Additionally, the Page Sequencer at the top of the Conductor
screen controls the Box Clock settings and all of the input
connections to the top 16 voice lines.

As an overview: the Page Sequencer, which has a total of 64
steps, is the master conductor which controls all the Play
area connections as well as the Box Clock settings.  The Page
Sequencer is stepped by the measure counter (M= on the second
line from the top in the Play area). The twelve Table
Sequencers in the Compose area are actually double sequencers
with an inner loop stepped by the Box Clocks and an outer loop
stepped by the inner loop cycle counter.  That is, the outer
Control Sequencer steps when the inner loop Pitch Sequencer
has cycled a certain number of times as set by the "Rp"
column.

The interactions among these three levels of sequencing gives
a virtually infinite but highly controllable range of musical
patterns.

Pitch Table and Sequencer:

The rows of dots with the gray labels "012...." are used both
to define the inner loop Pitch Sequencer events, and to
address the table of pitches that are the source material for
the music pitches. There are twelve rows to the Pitch Table
and there are twelve Pitch Sequencers, but each of the Pitch
Sequencers can access any of the twelve Pitch Table lines. The
default is for Pitch Sequencer A to use Pitch Table row A, B
to use B, and so on.  But you can change this however you
want, by dialing the L (Line) control just to the right of the
dots area.  

Control Sequencer: 

While the pitches are being generated at the clock rate of the
inner loop Pitch Sequencer, which is generally set to the same
as the MIDI voice that will be playing the sequence, the outer
loop sequencer more slowly steps through its stages.  It is
called the Control Sequencer because it controls the inner
loop direction and repeat count and because it generates a
more slowly changing set of output values that are usually
used for MIDI control inputs such as Velocity and Modulation.

How It Goes Together:

Inner Loop:

1. The clock triggers the next pitch stage of the pitch
   sequencer.

2. When the pitch sequencer reaches its end, it decrements its
   repeat count.

Outer Loop:

3. When the repeat count goes below zero, it triggers the next
   control stage. 

4. The control sequencer sets the next clock direction, a box
   clock connection, a new repeat count, and a new range (blue
   squares) for the pitch sequencer; and new control value
   outputs.

Here is an item by item description of the sequencer controls,
going from left to right.  Remember each horizontal line is
one complete sequencer, and all 12 sequencers are identical.  

Starting with the leftmost column, magenta letters A-D, E-H,
and I-L, labeled "E" at top....

Label and End:

These serve a dual purpose.  First, they are simply the label
names for the sequencers.  When you dial a connection to one
of the sequencers, you will get a lower case letter that
represents the output and an upper case letter that represents
which of the 12 sequencers is generating it. For example the
first connection past 0 is "pA" which indicates it is the
pitch output of the first line sequencer, "A."

The second purpose of the "E" column is to set the end point
of the outer loop stage sequencer.  The numbers to the right
in blue angle brackets indicate the current stage.  When you
click on the magenta label, it will highlight indicating that
this is now the last stage of the sequence.  If you click on a
highlighted label, the end stage will be set to the maximum
stage number (255).  When the end stage is reached, the
sequencer goes to stage 0, and continues (loops).

Stage Hold:

These dots stop the stage counter from incrementing when the
inner loop repeat count goes to zero.  The inner sequencer
will continue playing but it will stay on the same pattern
until the hold is removed by clicking a second time.  The
topmost dot sets and unsets stage hold for all 12 sequencers.

Stage:

The number is the current stage.  Dial left or right to
change. The angle brackets increment or decrement by one.
There are up to 256 stages available, 000 - 255.

Clock:

These are the connections to the Box Clock outputs.  This is
the heartbeat of the sequencer line and of the MIDI line that
is connected to it through its magenta clock input.  Note that
the MIDI voice lines do not directly connect to the Box
Clocks.  The magenta voice clock controls point to a Table
Sequencer line, not to a Box Clock; whichever Box Clock is
driving the sequencer line will also drive the voice note
generation.  This subtlety allows you to switch Box Clock
connections at the Table Sequencer, yet always remain in sync
with the note output.

Autofill:

Clock settings and all other Control Sequencer values have an
autofill feature that saves time when manually setting the
values. The red label above the column sets all values from
the current stage to the End (as set by the Label/End) to the
current value.  Click on the red label to arm it. It will
highlight.  To disarm, click on it again and the highlight
will go out.  When it is highlighted, click on one of the
values below it. The highlight will go out, and all values
from the current position to the End will be changed to the
current value.

Clock Direction:

Select which direction the current pitch sequence will step.
Can be changed each outer loop step.

Repeat Count:

Select how many times to repeat a pitch sequence before
incrementing to the next stage.  Repeat of 0 plays through the
sequence from where it was left by the last stage through to
the end.  Thus a repeat of 0 could play just one note (the
last one) of a sequence.  To insure at least one complete
playing of a pitch sequence, set the repeat count to 1 or
greater.  Up to 15 repeats are allowed per stage, with the
numbers going from 0-9, then A-F.

Pitch Sequencer Hold:

These dots freeze the pitch sequencer, and by side effect also
stop the outer loop stage sequencer.  They are used to stop
the sequencer while you adjust parameters.  Click a second
time to unfreeze.  The top dot freezes all 12 sequencers.

Pitch Table Sequences:

The rows of dots and squares labeled "0123..." display and
allow you to change the inner loop pitch sequences for each
outer loop control stage. The squares indicate the range of
the pitch sequence for the current stage. The red square
indicates the current pitch selection from the pitch table,
which is also a table of 36 pitches by 12 sequencer lines.  

To change the sequence range, click outside of the row of
squares, and slide the mouse left or right.  To select a
pitch, click on the inside of the range on one of the blue
squares or the red square (current pitch selection), and slide
mouse left or right.

Pitch Line Selector:

This column, labeled "L," sets the Pitch Table lines that will
be addressed by the Pitch Table Sequencers.  The default is
for sequencer line A to address table line A, B to B, and so
on. But any sequencer can address any table line and can
change lines at every outer loop step.

Pitch Selector:

Labeled "No," these both display and allow you to change the
pitches in the pitch table.  The specific position of the
pitch in the table is indicated by the red square in the Pitch
Sequencer to the left. Dial left or right to select the pitch.
You can switch between pitch and MIDI value readout by
clicking on the blue dot at the top of the column.

Pitch Invert:

When set (down-arrow) the pitch from the pitch table is
inverted. This is a simple subtraction from 12.  This control
is selected for duration of the outer loop stage, not for the
individual pitch.

Pitch Offset:

This is a value or connection that is added to the pitch
selection before being sent to the output.  This control is
selected for the outer loop control stage, not for the
individual pitch.

Pitch Value Output:

This is a label that indicates the current value of the pitch
output.  This is the actual value that is delivered to a "p"
connection (pA - pL, one for each of the 12 sequencer lines).
You can switch between pitch and MIDI value readout by
clicking on it.

Control Value Output with Slew:

These are labeled S#v - S#x.  When you dial them as a
connection, they read vA - vL, wA - wL, and xA - xL.  They may
be changed on each control sequencer (outer loop) step.  The
cyan single digit number under the label "S" is the slew
control.  This sets the rate of slew that the value will have
when changing from a previous value to the current value.
Lower numbers slew faster, 0 is instant.  Change the slew or
the control value by dialing left or right.

Control Value Output:

The last two columns are simple control values that may be
changed at each control sequencer step.  They are identical to
the above except they do not have a slew control.  The
connection labels are yA - yL, and zA - zL.

Auxiliary MIDI Outputs:

In the lower right corner of the Compose Page.  These allow
you to send just a MIDI Program Change or Control Change to
control additional equipment such as reverb units.  Click on
the blue dot to enable, it will highlight and send the current
Program Change or Control Change (whichever is enabled) to the
MIDI channel that has been set in the leftmost column ("Ch").
When enabled (button is red) every time the value is changed
it is sent to MIDI.

Virtual value connections:

The following connection do not appear as controllable
modules, however they may be used as input connections.

Random value generators:

These 16 connections are labeled ?0 - ?F.  They deliver a new
random number every computer cycle. The range of values
produced by the random generator vary according to which
generator is used:

?0 - ?3 produce a number between 0 and 63 
?4 - ?7 produce a number between 32 and 95 
?8 - ?F produce a number between 0 and 127

Since the voice line inputs on the Play page only look when
their clock ticks, these rapidly changing random numbers are
sampled as needed by the inputs that use them.  The exception
to this are Volume ("Vo") and Breath Control ("Bc") inputs,
which sample continuously. Connecting these inputs to a random
generator will result in MIDI data clog, and will not be
useful (although it will cause no harm).

Fade values:

The 16 Fade slider values on the Play page are available
through virtual process connections.  They are labeled %0 to
%F. Although only 16 steps are setable with the Fade sliders,
when the Faders slew they go through the full 0-127 MIDI value
range. 

MIDI Program Change received:

Whenever a MIDI Program Change is sent to the computer by an
external MIDI device, its value can be accessed by these 16
virtual processes. These are labeled @0 - @F.  If you aren't
generating external Program Changes, these will be 0.

File Menu:

At its most basic level, the File menu lets you load and save
a piece of music, and it lets you exit the program.  Even
these functions can be ignored if you wish.  You can exit
simply by typing the ESC key. If you have modified your music
in any way, you will be notified, and you can type "S" to Save
or "D" to Discard, or you can select those choices with the
mouse from the pop up box.  Unless you have changed the
current name, your music will be given the name "Default."
Next time you enter Melodia/TS, your music will automatically
be loaded.

In order to give maximum flexibility, Melodia/TS uses several
different types of data files; in order to make it easy to
use, different files are handled as a group by the File Menu.
If you prefer, you can ignore the distinction and the program
will keep track of everything automatically.

Save:

The Save box at the upper left of the File menu can be clicked
to save your work at any time.  If there is a check mark in
front of Save, the file had been modified, a dot means no
modification has been made since the last Save.  You can click
on the check mark to force it on or off. If you change a check
to a dot, you will not be asked to save your file when you
exit unless you make new changes to it.  Be careful with this,
as it could cause you to lose work.

Erase:

Erase will erase the music files associated with the current
name. It will ask you for confirmation, giving you the name of
the file set it is about to erase.  If you select "OK," the
files will be lost and you cannot recover them.  You must
always load the files into the workspace before you erase
them.  After you erase, the working name is set to "DEFAULT."

Changing Save Name:

The current working name is in the box under Save and Erase,
in highlighted white text.  You can change this by clicking on
it and then typing a new name.  If you type a DOS-illegal
character, it will be changed to the $ character, which is
legal for DOS filenames.  If you hit a space, all characters
past the space are erased.  When you hit the Enter key, the
new name will become your working name.

If the previous workspace had been modified, you will be asked
to Save or Discard it, then you will be asked whether to Load,
Overwrite, or New.  Load will load the existing file set, if
none is found it will load the default setup.  Overwrite will
do nothing, so that the next time you Save, your current music
will overwrite the old.  It is like "Save as..." in the DOS
editor. New will erase the workspace so you have a new slate
to work with.

Loading Music Files:

The column of names under the current working name are music
files that you can load.  Click on them and they will load,
after first giving you a chance to save the current workspace
if it had been modified.  If you have more saved files than
can be seen in the box, you can scroll them with the green
happy face icon on the right edge of the box.

Three different files are required for a complete music
workspace. These are:

Music (.MUS) files that contain the data in the 64 steps of
the Play area Page Sequencer, which control all the
connections and values of the voice lines in the Play Page.
This is a binary file and is not directly editable except
within Melodia.  If this file is corrupted Melodia will behave
unpredictably.

Sequencer files (.STG) that contain the data in the 256 steps
of the Control Sequencer and the addressing data in the Pitch
Sequencer. This is also a binary file that is not editable
except within Melodia.

Pitch table files (.TBL) that contain the pitches used by the
inner loop Pitch Sequencer.  These files are in ASCII format
and may be edited by a text processor such as DOS EDIT, or may
be generated or modified by an external program.  

The files follow the Track Sequencer dot area layout turned 90
degrees so you can see all 12 lines.  That is, the 12 lines
are shown as the 12 columns of pitch data, and the 36 steps
are arranged as 36 lines of text. It is important that the
positions of the columns not be changed.  If you edit this
file, use Overwrite mode of your text editor so all of the 3
character pitch/octave values are in columns separated by a
single space.

Melodia/TS always saves all three files, and when you load a
workspace it loads the three files if it finds them.  If it
does not find a particular file, it will set the MUS file to
default, and it will (intelligently) generate random values
for STG and TBL files. If you don't want the random values,
use NEW to clear the workspace.

At any time, you can load a work file from another piece of
music into your current work file.  Do this by clicking on the
names Music, Stage or Table in the box below the file area.
Whichever name you click on will get a check mark and the file
name area will change to show just those types of files.
Click on the file name area to load that file into your
current workspace, or click on the checked name to uncheck
(cancel) it.

Rand:

If you click on Stage or Table, in addition to a check mark
you will also see "Rand" appear in the lower right of the File
menu. This gives you the option of generating a new set of
random values for either of these files.  

Stage Rand generates random clock directions, clock repeat
counts, and Pitch Sequencer addressing (dots).  Every other
time you generate Stage Rand, the pitch table Line ("L")
control is also randomized. 

Table Rand generates a new Pitch Table.  The source pitches
used is in the file RNOTE.DAT in the main TS directory.  This
is simply a table of 32 numbers from 0 to 12, arranged in no
particular order.

For each Pitch Table value, Rand generates a random number
from 0 to 31 and selects the value at that position for the
next pitch.  Since there are only 13 pitches allowed (0-12)
and there are 32 table selections, you control the frequency
of particular pitches by repeating them in the RNOTE file.  

The format of this file is very forgiving.  Rand simply looks
for numbers and ignores any other characters.  Since octave
values are generated separately by Rand, if you give numbers
above 12, Rand will strip out the octave part and just use the
0-11 pitch part.  

Sync:

MIDI Sync, Start, Stop, Continue, and Song Number signals can
be sent by Melodia/TS, or it can "listen" for those signals
and be controlled by them.  Click on "Sync" in the File menu
to set the item you want to send or receive.  When MIDI sync
is sent, other sequencers should be set to receive; when sync
is received, one (only) other device should be set to send
sync.  

Start, Stop and Continue are sent by the respective Melodia/TS
conductor commands on the top line of the Play page.  When
S/S/C is set to receive, those MIDI messages will act as a
remote control to Melodia/TS causing to it start, stop, or
continue playing.  Song number, when sending, sends the
current step sequencer number (top line of Play), when
receiving, Melodia/TS will jump to the step sequencer number
sent as a MIDI song number.

Speed Star:

On very complex or very fast pieces a yellow star may start to
blink in the lower right hand corner of the screen.  This is
an indication that your computer is running out of processing
time.

A little blink of the star from time to time is normal.
However a steady showing indicates the timing is inaccurate
and your music will likely run at a different speed on a
faster computer. Reducing overall tempo (top of Play page),
then increasing individual clock rates helps.

About the Author:

Melodia/TS was written by John Dunn.  John has been a pioneer
in computer music and art since the mid 70's when he combined
microcomputers and analog sound and video synthesizers as a
graduate student at the Art Institute of Chicago.  He was one
of the early programmers for Atari video games, and he
developed the first ever professional paint program for a
microcomputer, Cromemco's "Slidemaster," released in 1981.

John went on to write a major paint program for the IBM-PC,
called "Lumena," and founded Time Arts Inc. of Santa Rosa,
California, to market "Computer Tools for Artists." In 1984 he
wrote one of the first algorithmic composing programs for
MIDI, "MusicBox," which was released with full source code to
the public domain two years later. MusicBox is still available
on CompuServe some and other data services that support MIDI.

DISCLAIMER OF WARRANTY:

THIS SOFTWARE IS SOLD "AS IS" AND WITHOUT WARRANTIES AS TO
PERFORMANCE OF MERCHANTABILITY OR ANY OTHER WARRANTIES WHETHER
EXPRESSED OR IMPLIED.  BECAUSE OF THE VARIOUS HARDWARE AND
SOFTWARE ENVIRONMENTS INTO WHICH THIS PROGRAM MAY BE PUT, NO
WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE IS OFFERED.  THE
USER MUST ASSUME THE ENTIRE RISK OF USING THE PROGRAM.  ANY
LIABILITY OF THE SELLER WILL BE LIMITED EXCLUSIVELY TO PRODUCT
REPLACEMENT OR REFUND OF PURCHASE PRICE.

Copyright Notice:

Melodia/TS is Copyright (C) 1993-1994 by John Dunn. All rights
reserved.  Forth nucleus Copyright 1989 LMI.
