----------------------------- 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