-----------------------------
The Atari MIDI Processor Demo
Programmed By Steven Lashower
(C) 1993 ArgoSoft Productions
-----------------------------

About this Demo Program...

     Thank you for downloading this demonstration package of the 
Atari MIDI Processor.  It was suggested to me by a user that it 
would be neat to see the program used to create the demo sequences 
used in "AMP_DEMO.LZH" and "AMPDEMO2.LZH"...so here it is!  It is 
fully functional, expect for the following features which have 
been removed from the program:

               1) File/Block Save
               2) File Import (from other sequencer)
               3) Export to Standard MIDI File.

     If you've enjoyed using this demo, then you'll be happy to 
know that the Atari MIDI Processor is available!  For more 
information, please e-mail: lashower@netcom.com.

                                   Thanks and Enjoy!
                                   Steven Lashower
				   lashower@netcom.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

Part 1 - Introduction

Presenting the Atari MIDI Processor

     The Atari MIDI Processor [AMP] is a highly advanced music 
system designed for both beginning and professional musicians 
alike.  Beginners will like AMP because any piece of sheet music - 
even orchestral arrangements - can easily be entered without any 
knowledge of keyboard playing.  All that is required is a 
rudimentary knowledge of how to read sheet music.

     Unlike similar Atari ST music programs, the Atari MIDI 
Processor uses the ST's MIDI interface instead its built-in, 
three-voice YM-2149 sound generator.  AMP can drive any piece of 
external MIDI equipment including: multiple synthesizers, drum 
machines, additional sequencers, etc.


What Else Does It Do?

     Here's a partial list of AMP's many features:

     *    128 voices (monophonic tracks) are available for 
          entering and editing music.  The first 32 voices are 
          output voices and the other 96 are phrase voices.

     *    Each of the independent output voices can be assigned to 
          transmit simultaneously to any of 16 MIDI channels.  
          These output voices can also be independently muted.

     *    Notes can be entered either through the ST or a MIDI
          keyboard.

     *    Multi-style, real-time graphics display with Karaoke
          lyric support.

     *    Loop around any designated segment of a voice, or an 
          entire voice.  Segments can be repeated up to 255 times, 
          with a provision available for infinite repeat loops.

     *    Almost 1,000,000 notes can be in memory on a 4-meg ST!

     *    Phrases and repeat loops can be used to greatly extend 
          note capacity and can be nested up to 64 levels deep.

     *    While entering or editing music, any four of the 128
          voices can be displayed simultaneously.

     *    Enter and independently edit on each voice: pitch-bend, 
          program change, velocity, modulation wheel, and channel 
          assignments.

     *    Sophisticated control of tempo: change tempo anywhere in 
          the music, or program a rubato tempo (one that varies 
          gradually by specifying the rate of change).

     *    A real-time humanization feature can be used to add 
          "feel" to any piece of music.

     *    Pitch wheel control using a specified rate of change.

     *    Transmit system exclusive messages.

     *    Transpose any segment of a voice, or an entire voice, 
          from one semitone to ten octaves.

     *    Any sequencer can be controlled by AMP.  A MIDI clock 
          (24ppq) is sent while the music is playing (the rate is 
          controlled by the tempo).  The clock also synchronizes
          drum machine patterns/songs and additional external 
          sequencers to AMP playback.

     *    Spreadsheet like access: scroll though a voice (by 
          single note or measure) or across voices.  You can also
          display any measure of any voice immediately.

     *    A complete set of cut and paste tools are included to
          facilitate music entry.

     *    DOS Utilities: format disk, or delete, rename, lock, and 
          unlock files without leaving AMP.

     *    In order to help organize your music, each voice can 
          have a name.  Songs can also be named.

     *    Import music files into AMP from other music programs.

     *    Save AMP files as Standard MIDI Files.  With this 
          feature, AMP can be used as a step entry sequencer to 
          create perfectly timed sequences for the many
          professional sequencers available that support Standard
          MIDI Files.

     *    Written in 100% 68000 machine language.


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

Part 2 - The AMP Tutorial

Loading the Program

     In order to run AMP, you will need the following:

     * Atari ST/TT/Falcon computer with at least 512K of memory
     * The AMP program disk
     * At least one MIDI-compatible synthesizer (with MIDI 
       cables)

     First, connect one MIDI cable from the MIDI-OUT port on the 
ST to the MIDI-IN jack on your synthesizer.  If you wish to enter 
music from your synthesizer, a second MIDI cable should lead from 
the MIDI-OUT jack on your synthesizer to the MIDI-IN port on the 
ST.

     Now to load AMP from floppy disk, insert your backup disk 
(you have made a backup, haven't you?) and double-click on 
AMP_21D.PRG.  In a few seconds, the music editor will appear.

     At this time, make sure that the volume on your monitor is 
turned up.  This will enable you to hear the warning buzzer used 
to signify various error conditions.  Also, make sure your 
synthesizer is on and is able to accept MIDI commands on Channel 
#1.  Now, select a timbre (sound) on your synthesizer with a short 
attack and release, such as a piano, and you're ready to begin!


Program Design

     Every effort has been made to make the Atari MIDI Processor 
an easy program to operate.  It is a very visual system: you place 
MIDI information in separate voices, each of which you can name 
and deal with in a wide variety of ways.  Everything is always 
right in front of you, either a keypress or a mouse click away.


Use of Mouse and/or Key Commands

     AMP has a number of different functions that can be activated 
either by pointing and clicking with the mouse, or by using the 
computer keyboard with pre-programmed mnemonic keys (meaning 
keyboard commands are linked as much as possible to the first 
letter of the function being used, e.g., Copy uses the letter C).  
Using the computer keyboard requires, with a few exceptions, that 
you press down two keys at the same time, normally the Alternate 
or Control Key and a letter.  For example if you wanted to acess 
the Copy Block function, you could press the Alternate key and the 
letter C.  Of course, you could just as easily select Copy Block 
from the Block menu.

     There are a few combinations of mouse button clicking you 
should be aware of.  AMP recognizes two different types of clicks: 
single and double click.

NOTE ---> Unless otherwise specified, all clicks are considered to 
          be a single click.  To click, press and release the left 
          mouse button once.  To double-click, quickly press and 
          release the mouse button twice.

     Every basic function is available all the time.  As you 
become more familiar with the program, you may find yourself 
favoring one or the other methods of control, either mouse or 
computer keyboard, but more than likely you'll be using a 
combination of both.  AMP has been is designed to make it easy for 
you to use, whether you are a brand new user or a seasoned expert.


Entering Notes

     As you can see, Voice #1 is highlighted.  Typing C on the 
ST's keyboard will cause a C to appear in the data entry line.  
Press Return.  A C4Q/mp (C, 4th octave, quarter note, mezzo-piano) 
now appears in Voice #1 below the Measure #1 marker.  The cursor 
has also moved down one line.  Your synthesizer should have also 
played the same note.

     If you didn't hear anything on your synthesizer:

     * Make sure all of the MIDI cables are connected properly.  
       If you need some help, refer back to the beginning of this
       chapter.
     * If there's still no sound,, check with your synthesizer's 
       manual to make sure that it is set up to receive data on 
       Channel #1!

     Since we just entered C, you may be wondering why C4Q/mp 
appeared in Voice #1.  Well, since octave, duration, and velocity 
values weren't specified, the defaults displayed in the Status 
Boxes were used.  You could have easily entered C4Q/MP for the 
same result.  If you wanted a different note, for example, a 
C5E/MF (C, 5th octave, eighth note, mezzo-forte) could have been 
entered.  This would have changed the Status Boxes for the octave, 
duration, and velocity to 5, E, and mf respectively.


MIDI Input

     Having gotten this far, you are now communicating with your 
synthesizer.  Now, let's see if AMP is reading your synthesizer's 
keyboard.  Press a D above middle C on your synthesizer.  A D4 
should appear in the data entry line (D, 4th octave).  Now, press 
Return.  If nothing appeared, check all your cables and try it 
again.  If still no response, check with your synthesizer's manual 
to be sure that it is sending out MIDI information on Channel #1.

     Now, let's enter an E.  Either type an E, or play an E above 
middle C on your keyboard.  Press Return and an E4Q/mp will 
appear below the D4Q/mp.  Do the same for F.  If you make a 
typing error, use the Backspace key to rub-out the last character 
typed.  Escape can be used to clear out the data entry line.


Beats and Measure Markers

     Look at down both the Beats and Meter Status Boxes.  You will 
notice that the current measure contains 4 beats and that we're 
entering notes in 4/4 time.  If we enter another note, the measure 
will contain 5 beats, and that is not allowed in 4/4 time.  Let's 
see what happens: play and enter a G.  You'll notice that a 
Measure Marker with the number 2 in it automatically appears, 
followed by a G4Q/mp.  We're now entering data in Measure #2.


The MIDI Input Buffer

     To complete the scale, play an A, then a B, and then a C on 
your synthesizer.  An A4 will be displayed in the data entry line.  
Pressing Return will cause an A4Q/mp to be entered into Voice #1.  
A B4 will then appear in the data entry line.  The B4 (along with 
the C5) have been stored in AMP's MIDI Input Buffer.  Now, press 
Return.  The C5 will appear in the data entry line.  Press Return 
again and the data entry line will now be clear.  Pressing Clr-
Home at any time will clear out any pending data in the MIDI input 
buffer.

NOTE ---> If you are entering from the console keyboard, the "C" 
          becomes a C5Q/mp because that is closer to a B4 than a 
          C4 is.  AMP will automatically "scale" notes like this 
          whenever an octave is not specified.


Deleting Notes

     Now, move the cursor to point between the C4Q/mp and the 
D4Q/mp.  You can move the cursor up and down either by using the 
Up- and Down-Arrow keys or clicking at the desired location with 
the mouse.  Holding down Shift along with the arrow keys, will 
move the cursor by up or down by measures.

     Enter, or play on your synthesizer, a C#4 (C-sharp, 4th 
octave) followed by a Return.  A C#4Q/mp now appears where the 
cursor was and the cursor has moved down one line.  Since we can't 
have 5 beats in a measure in 4/4 time, you'll hear a beep and the 
message "Too Many Beats" will appear right below the data entry 
line.  To delete the C#, move the cursor to that line and press 
the Control and Delete keys simultaneously.


Undelete

     Deleted notes are kept in a one-note storage buffer.  In case 
you've made a mistake in deleting a note, it is possible to 
"undelete" a note.  To see how Undelete works, move the cursor 
down below C5Q/mp and press Undo.  A new measure bar will now be 
inserted and the C# that you just deleted will now be inserted at 
the cursor.


Polyphony

     The Music Editor allows you to enter or edit music data in a 
"Voice".  There are 128 voices available.  To enter data in 
another voice, use the Left- and Right- arrow keys to scroll left 
or right.  If you'd like, you can also click in any one of the 
voice windows (or in any of the voice name boxes) and that will 
become the highlighted voice.  You can also enter a V followed by 
a number (1-128) and a Return to display that voice in the current 
edit column.  Try entering data in another voice.


Play Music

     Now that you have more than one voice with music data, press 
Alternate+P.  The music you've entered will now be played out to 
your synthesizer.

You will only hear notes entered on Voices #1 through #32.  These 
voices are called Channel Voices and are the voices "played" to 
your synthesizer.  The other voices (numbered #33 through #128) 
are Phrase Voices and they'll be explained shortly.


     Pressing Escape while the music is playing will return you to 
the Music Editor.  Pressing the Space Bar will pause the playback.  
To continue the playback from the paused point, simply press the 
Space Bar again.  If you only want to hear the notes in the 
currently highlighted voice edit column, press P followed by a 
Return.


Sound Select

     Move the cursor to the top of Voice #1 if it is not already 
there.  To change the preset sound, enter an S followed by a 
preset number from 0 to 127 and a Return.  A "Sound #" message 
will be displayed followed by the new preset number.  Each time 
this command is encountered, a new sound ("timbre" or "patch" on 
your synthesizer) will be selected.  These commands can be placed 
anywhere in the music.


Tempo

     To select a Tempo, click on the Tempo Status Box.  The box 
will become highlighted and you may now type in a new tempo.  Use 
Escape to erase the current tempo value and enter any number from 
30 to 350 followed by a Return.  This number represents the tempo 
(in beats per minute: 30=very slow, 350=very fast) at the start of 
the music.  Tempo also determines the rate at which the MIDI Clock 
pulses are sent.

     To change the tempo in the middle of the music, enter a T 
followed by a number from 30 to 350 and a Return.  Whenever this 
command is encountered while the music is playing, the tempo is 
changed.


Repeats

     AMP can repeat blocks of music without using additional 
memory.  The Repeat Loop functions almost identically to BASIC's 
FOR/NEXT loop.  Let's try it out:

     * Move the cursor to the top of Voice #1.
     * Enter REP2 followed by a Return.  A "Repeat x2" message
        will appear in the edit column.
     * Now move to the bottom of the measure.  Enter ENDR followed
       by a Return.  An "*ENDR*" message will be displayed.

     Now play this voice.  The notes between the Repeat (Repeat 
x2) and End Repeat (*ENDR*) will be played twice!  Now delete the 
Repeat x2 and try repeating it 3 times or more.  A repeat of 0 
will play indefinitely.  Repeat loops can also be nested...but 
more on that in the next chapter.


Phrases

     Voices #33-128 are known as the Phrase Voices.  They are only 
played when they are referenced (jumped to) by a Channel Voice.  
Let's demonstrate the use of a phrase voice in order to clear 
things up:

     * Move to the second edit column (using the Right-Arrow 
       key) or clicking on the Voice #2 box with the mouse.
     * Enter V128 followed by Return.  Voice #128 will now be 
       displayed there.
     * Enter some notes. 
     * Then enter RET followed by a Return.  A "*RETURN*" message
       will be displayed in the Voice.
     * Now, move back to Voice #1 (using the Left-Arrow key) or 
       clicking on the Voice #1 box with the mouse. 
     * Move the cursor to the top of the column and enter a 
       J128 and a Return.  A "Jump->128" message will be
       displayed.

     Now play Voice #1.  It will "jump" to Voice #128 and play the 
notes there and then "return" to Voice #1 and continue playing.  
In programming, this is called a subroutine.  In music, it is a 
phrase.


Cut and Paste

     Blocks of music data can easily be manipulated.  Let's try 
it:

     * Move the cursor to the top of the Voice #1.
     * Press the F1 key.  "Start of Block Marked" should now be 
       displayed below the data entry line.
     * Now move the cursor down to the end of Measure #1.
     * Press the F2 key.  "End of Block Marked" is now displayed
       and the block you just marked will become highlighted.

     To "cut" these notes out from the voice, press Alternate+X 
and the selected area will now be placed in the Cut/Paste Buffer.  
To "paste" them right back to where they were, press Alternate+V.

NOTE ----> Data placed in the cut/paste buffer will remain intact 
           until you cut out a new block of data, or until you 
           exit AMP.
  
     Once a block is marked, it can be copied anywhere the cursor 
is pointing in the music by pressing Alternate+C.  In addition, a 
marked block can also be deleted by pressing Alternate+D.

NOTE ----> Once a block is deleted, there is no way for it to be 
           recovered- unless it was placed in the Cut/Paste 
           Buffer.  In that case, just use Alternate+V to recover 
           the block.


Load Music

     Let's try loading in a music file from the disk.  Be sure 
that your AMP program disk is in the drive and we'll load in one 
of the demonstration files.  Press Alternate+L and the GEM File 
Selector will appear.  Select NUT.AMP (Overture to The Nutcracker, 
by Tchaikovsky) by either clicking on the song name or typing it 
in the selection line.  Once the filename is in the selection 
line, press Return or click on OK.

     When the mouse pointer returns from the "busy-bee" back to 
the pointer shape, the music data has been successfully loaded.  
Now, press Alternate+P to hear it.

NOTE ---> Remember that any music data currently in memory will be 
          lost after loading in a new file.


Congratulations!

     You've finished the AMP Tutorial! 


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

Addenum #1 - AMP Command Summary

NOTES AND RESTS
     Note[Accidental][Octave][Duration][Tie][/Velocity]
     Rest[Duration]
          Note: A-G
          Rest: R
          Accidental (Optional): #|F|N
          Octave (Optional): 1-9
          Duration (Optional): D|D.|D..|Dn|Dn:m|^x
               (D=W|H|Q|E|S|T|Z; n,m=1-99; x=1-65535)
          Tie (Optional): )
          Velocity: Vx|ppp|pp|p|mp|mf|f|ff|fff|fn
               (x=0-127, n=1-7)

MEASURES
     M    : Insert measure marker

TEMPO
     Tx   : Change tempo to x (x=30-350)
     TUx  : Tempo up by x (x=0-127)
     TDx  : Tempo down by x (x=0-127)
     TFx  : Tempo faster at rate x/quarter note (x=0-127)
     TSx  : Tempo slower at rate x/quarter note (x=0-127)

REPEATS and PHRASES
     REPx : Repeat following x times (x=0-255, x=0 indefinite)
     ENDR : End of repeated section
     Jx   : Jump to voice x (x=1-128)
     RET  : Return from jump     

TRANSPOSE
     TRUx : Transpose UP by x semitones (x=0-127)
     TRDx : Transpose DOWN by x semitones (x=0-127)
     TRZ  : Reset transpose to zero

PROGRAM SELECT
     Sx   : Select sound (synth preset timbre) x (x=0 to 127)

VELOCITY
     VUx  : Velocity transpose UP by x (x=0-127)
     VDx  : Velocity transpose DOWN by x (x=0-127)
     VEZ  : Reset velocity transpose to zero

CHANNEL PRESSURE (AFTERTOUCH)
     /PRx : Channel Pressure (Aftertouch) = x (x=1-127)

PITCH WHEEL
     PWx  :  Pitch Wheel to x (x=-8192 to 8191)
     PWUx :  Pitch Wheel up at a rate of x/quarter note (x=0-255)
     PWDx :  Pitch Wheel down at a rate of x/quarter note (x=0-255)

PARAMETER CHANGE
     /Px,y : Set parameter number x to y (x=0-127, y=0-127)

SYSTEM EXCLUSIVE MESSAGE
     /Sx  :  Transmit System Exclusive Message x (x=1-16)
     
MIDI CONTROL
    /CHx  : Transmit voice data on MIDI channel x (x=0-16)

CONTROL COMMANDS
     Mx      : Display measure x (x=1-99999)
     Vx      : Display voice x (x=1-128)
     P       : Play notes in current edit column

LYRIC COMMANDS
     L       : Lyric Advance
     Lx      : Lyric goto line x (x=1-9999)

 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

Addenum #2 - Console Keyboard Controls

Up-Arrow or Down-Arrow
     Moves the cursor up or down, respectively.  When the cursor 
nears the top or bottom the the screen, the data is scrolled in 
the appropriate direction.

Left-Arrow or Right-Arrow
     Moves to the voice edit column to the left or right, 
respectively.  These keystrokes select (highlight) the voice 
adjacent to the current voice.  If the adjacent voice is off-
screen, then the voices are scrolled left or right to display that 
voice.
 
Shift+Up-Arrow or Shift+Down-Arrow
     Displays the previous measure or next measure, respectively.  
The cursor will be moved to the beginning of this measure and the 
measure will be displayed at the top of the screen.

Backspace
     Deletes last character typed in the data entry line.  When 
entering data from the console keyboard or synthesizer keyboard, 
an error can be deleted with the BACKSPACE key.  This acts as a 
rub-out key.  If all characters are deleted, the data entry line 
will become empty.  If data is pending in the MIDI input buffer, 
deleting the current entry will cause the next entry to appear.

Control+Delete
     Deletes a note, rest or command.  You can delete a note by 
positioning the cursor and pressing the CONTROL and DELETE keys 
simultaneously.  The note pointed to by the cursor disappears and 
all notes following the cursor moves up one position. The cursor 
remains in the same position.

Undo
     Any note or command can be deleted.  If you make a mistake,
you can "undelete" your previous deletion.  This is also useful if 
you have the same command you want to put into a number of voices.  
Enter the command, delete it, and undelete it in each voice where 
you require it.  To undelete a note, position the cursor and press 
UNDO.  

Clr-Home
     Clr-Home clears all pending input from the MIDI keyboard.  
The data entry line will also be cleared of the current entry.

Escape
     Escape clears the data entry line.

Inert
     Pressing INSERT will clear the data entry line and place its 
contents into a temporary buffer.  Once RETURN is pressed, the 
buffer's contents will be placed into the data entry line.


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

Addenum #3 - GEM Menu Command Summary

The "File" Menu
Alternate-N         New
Alternate-L         Load
Shift+Alternate-S   Save
Alternate-S         Save as...
Alternate-I         Import
Alternate-E         Export
Alternate-M         Merge
Alternate-Z         DOS Shell
Alternate-Q         Quit


The "Block" Menu

Function Key #1     Block Start
Function Key #2     Block End
Alternate-D         Block Delete
Alternate-C         Block Copy
Alternate-X         Block Cut
Alternate-V         Block Paste
Alternate-R         Read Block
Alternate-W         Write Block
Function Key #3     Unmark Block


The "MIDI" Menu

Alternate-P         Play
Alternate-A         Assign Voices
Control-M           MIDI Configuration
Control-E           Edit System Exclusive Messages
Alternate-H         Humanize


The "Extras" Menu

Control-I           Song Title
Control-V           Name Voice
Control-P           Preferences
Control-C           Clock Display
Alternate-G         Graphics
Control-L           Lyric Editor
