O n - T h e - F l y
                         Version BETA.4 (release V1.0)
                        Created by David Terrill (AlphA)
                               ŠAlphaWare 1997

============================================================================
                          ***** UPDATE (2006) *****
                    See OTF.cfg for configuration options.
============================================================================
____________________________________________________________________________

                               Quick Start Guide

The purpose of this document is to help familiarize the user with On-The-Fly 
and reveal some of its less obvious functions/features. This document has 
been quickly thrown together. Use it as a guide while getting to know OTF.


This software is EM@ILWARE. If you use it, you should send me an email 
letting me know what you think. If you don't, then you stink! So, consider 
yourself a beta tester.

alphadog303@hotmail.com

If you use On-The-Fly to record some trax, I'd really like to hear what you 
created!

____________________________________________________________________________

Start On-The-Fly. Wait for the "Alphaware" graphic. Assure that your master 
clock MIDI device is set to transmit a System Real Time (SRT) clock stream. 
MIDI Time Code (MTC) will not work!
____________________________________________________________________________

Start your master clock MIDI device.

Press F2

This is your MASTER CLOCK. Use it to monitor your timing, sync and to adjust 
shuffle settings. The top row of virtual LEDs should illuminate in sequence, 
advancing rightward 1 LED per 16th note as they do on classic Roland drum 
machines. If this is not the case, check your MIDI set-up. The next rows of 4 
LEDs correspond with the 4 down beats of a standard 4/4 beat. The round 
virtual LED also illuminates on each down beats. Finally, the current step is 
displayed numerically above the area labeled "STEP".

When creating patterns with odd time signatures, patterns can shift when 
returning to 4/4. Clicking the 303, 808, 909 and SAMP buttons next to the 
"SYNC-" label will shift the associated module back to the original position. 
E.G, the first STEP# of the module will be on the 1st step of the MASTER CLOCK 
(has yet to be implemented in some modules).

SHUF will delay every other STEP to create a shuffling beat. Select what 
modules shall have shuffle by the 3, 8, 9 and S buttons to the left. 
(Independent module shuffle has yet to be implemented. Currently, all modules 
will shuffle at the same rate). 
____________________________________________________________________________

Press F3.

Enter some notes by clicking the 303 style keyboard buttons. Entering notes 
via left clicking will advance the current STEP# as notes are entered. Right 
click to edit the note values of the current STEP without advancing.

OCT. DWN/UP changes the octave of the current note. 

Enter note length (gate value) by clicking the notation area. Entering note 
values via left clicking will advance the current STEP# as notes are entered. 
Right click to edit the note length of the current STEP without advancing. 
You can also click the note button to cycle through the range of available 
note lengths.

Click the ACC button to toggle the status of ACC (accent) for the current STEP.

Click the SLD button to toggle the status of SLD (slide) for the current STEP.

NOTE: ACC and SLD control the amount of velocity of the note. This is an 
effect from the method I used to make my PAIA FatMan mimic Accents and Slides 
of the classic TB-303. In later versions of OTF, the user will be able 
associate specific MIDI data with ACC and SLD events.
For now:
                         -ACC -SLD = Minimum Velocity
                         -ACC +SLD = Low Velocity
                         +ACC -SLD = High Velocity
                         +ACC +SLD = Maximum Velocity

Use the STEP arrows to change the current STEP. Note: you will always be able 
to access all 16 steps, even if STEPS is set below 16.

Left clicking the STEPS area allows you to set the maximum number of steps in 
the pattern (1-16). This is referred to as "last step" on classic Roland style 
drum machines. Right clicking will allow you to set the maximum number of steps 
in the pattern (4-16) while limiting your options to 4, 8 and 16 (and 32 for 
module 9). This is great for changing time signatures in real time while 
avoiding pattern shifting as an effect of the situation where the MASTR CLOCK 
arrives at the "last step" before you have finished setting your intended value.

The SHIFT arrows shift your pattern by 1 16th note. Notes shifted beyond step 
16 and before step 1 will wrap to the opposite end of the pattern. All 
pattern data is retained while shifting.

Left clicking the PIT button will fill your pattern with random pitch values. 
Right clicking will fill your pattern with the pitch value of the current STEP.

Left clicking the OCT button will fill your pattern with random octave values. 
Right clicking will fill your pattern with the octave value of the current STEP.

Left clicking the GAT button will fill your pattern with random note (gate) 
length. Right clicking will fill your pattern with the note length of the 
current STEP.

Left clicking the ACC button will populate your pattern with accents appearing 
at random positions. Right clicking will fill your pattern with the ACC setting 
of the current STEP.

Left clicking the SLD button will populate your pattern with slides appearing 
at random positions. Right clicking will fill your pattern with the SLD setting 
of the current STEP.

CLEAR will fill the pattern with the lowest note value (C) of the lower octave. 
All note lengths will be set to rests, the STEP# will return to 1 and the STEPS 
(pattern length) will be set to 16.


The 4 green buttons located to the right of the CLEAR button represent the 4 
available pattern banks. These 4 memory banks are stored in RAM for instant 
access! The illuminated bank represents your current pattern.

Right clicking allows you to instantly switch between pattern banks in real time.

Left clicking will make the pattern wait until the 1st down beat before making 
the change. Once clicked with the right mouse button, the selected bank color 
will change to red until STEP 1 of the MASTER CLOCK is reached. Then, the red 
pattern bank will become the current pattern bank and appear bright green in 
color.

You can also use the 4 keys along the top of the numeric key pad "(", ")", "/", 
and "*" to change the current pattern bank. The keys are oriented with the 
graphical positions of the pattern banks.

Dual clicking (clicking with both mouse buttons) will allow you to copy 
patterns. Dual click on a pattern bank. Your curser becomes a red pattern bank 
icon representing the copied bank. Clicking on any bank will copy the pattern 
bank to the selected destination. You can select your destination bank with 
the right mouse button to avoid immediately changing the current pattern to 
the selected bank.

In addition to the 4 pattern banks stored in RAM, you may load and save 
additional patterns to and from 10 (per module) Disk Banks. Holding the shift 
key while pressing numbers 1 through 0 along the top portion of the keyboard 
will save the current pattern to the Disk Bank. Pressing the keys 1-0 (without 
holding Shift key) will load the Disk Bank to the current pattern, provided 
pattern data exists for the selected Disk Bank. Load times may vary depending 
on the speed of your hard drive. Using Disk Banks, while composing, is not 
recommended for floppy users. Later versions of On-The-Fly will utilize a 
manual save feature which will allow the user to store the 10 pattern banks 
in memory until the user either decides to do a disk save or exits the program.

Left clicking MUTE will immediately toggle the module's mute status. When 
muted, the transmission of MIDI data from the module will be halted. The MUTE 
LED will flash while a module is muted. Right clicking will make the mute wait 
until the 1st down beat before toggling mute status. Once clicked using the right 
mouse button, the mute LED will change to solid red until STEP 1 of the MASTER 
CLOCK is reached. Then, the mute status will toggle. In addition, you can use the 
numeric keypad to mute and unmute modules. Key numbers relate to module numbers. 
E.G, Numeric key 3 will toggle the mute status of module 3.
____________________________________________________________________________

Press F8

This is one of two drum pattern generators. The knob controls the ACC (accent) 
level. While holding the curser over the knob, press and hold the left mouse 
button to decrease the value and the right mouse button to increases it. The 
ACC level will be displayed to the right.

Select your drum instrument by left clicking the instrument abbreviations in 
the lower left area. The full name will be displayed in the display area. You 
may now enter 16th notes by left clicking the associated pattern buttons. You 
may also fill an area with 16th notes by holding the left mouse button while 
dragging the mouse over the pattern buttons. This allows you to quickly 
populate the pattern area while avoiding unnecessary clicking. Alternately, 
you can use the right mouse button in the same manner to erase notes.

There are other ways to add notes to the pattern.
You can enter notes in real time by tapping the Enter keys. This is the same 
as entering notes in "Tap Mode" on classic Roland drum machines.

You can use the Del key to remove notes. You can either tap Del to remove 
notes one at a time, or hold Del and notes will be removed as the pattern 
plays. This is the same as using the Clear button on classic Roland drum 
machines.

Just above the pattern area you will notice 4 buttons. Clicking the thin up 
symbol will enter the current instrument to all for up beats of the pattern. 
This is typically be used for Open HiHats.

The down arrow represents the down beat. Select the Bass Drum then click the 
down arrow for a quick 4 on the floor dance beat.

The 2468 button will add the current instrument to the even down beats. 
Try it with the Snare Drum.

The ALL button will fill the pattern with the selected instrument.

Right clicking an instrument's abbreviation will remove all occurrences of 
that instrument from the pattern.

While the curser is over the instrument abbreviation, hold down the left 
mouse button. While continuing to hold the left mouse button, quickly tap 
the right mouse button. This will add the current instrument to the current 
pattern at random positions. You may continue to hold the left mouse button 
and tap the right mouse button to continue adding random notes until all 16 
steps are full. Remember, if you don't like what you get, releasing the left 
mouse button and right clicking will quickly remove all occurrences of the 
current instrument from the pattern.

CLEAR erases all instrument data for the current pattern. Accent data will 
not be cleared.

Use the STEPS area, MUTE, and Pattern Banks just as you did in module 3.
____________________________________________________________________________

Module 9 functions as module 8 does with the 16 note step limit extended to 32.
____________________________________________________________________________

Press F4

At this point, you may want to press the previous F-keys to hide other modules 
and free up screen space.

This is the sample player. You should be familiar with the way OTF works, so I 
won't go in to a lot of detail about entering notes, banks, mute... etc. You 
have 24 available samples separated into 3 groups BREAK, VOCAL, MISC. You may 
use only 1 sample group at a time. Notes are entered in the same manner as the 
drum modules. Moving the mouse over illuminated LEDs in the pattern area will 
display information about the samples in the pattern. You have 4 voices of 
polyphony to work with. 1 and 4 are right channel. 2 and 3 are left. For mono 
output, only use one of the Amiga's audio outputs, leaving the unused RCA socket 
open. The Amiga will rout all audio to the socket in use. Channels will produce 
no sound until the associated PLAY buttons have been activated (button LED to 
the right of the channel must be illuminated). Samples A-H can be independently 
tuned via the FREQ knob. Samples will only be affected by the FREQ knob if the 
LED to the left of the knob has been activated for that sample. The orange rest 
will mute the channel's sample at the point where the rest is entered. The 
channel will remain silent until the next sample is played. Basically, rests cut 
samples. (rests have yet to be implemented) To the right of the rest is a loop 
button which causes samples to loop, once played. Loop lengths depend on sample 
lengths and are not synched with anything.
____________________________________________________________________________

Press F5

This is your virtual LFO. Select between Pulse, Triangle, random (noise) and 
Swooth (saw tooth, ramp). Use the knobs to set the RATE of the LFO and the 
amount of modulation. Click the up and down arrow buttons to set CHAN (MIDI 
Channel) and CTRL# (MIDI Controller) numbers. Use what normally represent 
pattern banks to switch between CHAN and CTRL numbers. The LFO can be applied 
to 4 MIDI controllers stimulatingly. Clear sets CHAN and CTRL to 0. Mute stops 
module data transmission.

Later versions will include multiple, mixable LFOs and have the ability to 
reference the mod value on MIDI controllers and use that value as a base 
before adding modulation. For now, the base is mid.
____________________________________________________________________________

When finished, use the Esc key to exit On-The-Fly.
____________________________________________________________________________

Bugs:

(See source code notes.)
Email bugs to alphadog303@hotmail.com
____________________________________________________________________________

Pattern Layering:

In addition to loading/saving standard drum patterns to the 10 disk banks, 
you may also do "Pattern Layering" (sounds like a good name for it). If your 
drum machine has more instruments available than the module controlling it, 
or if you would like to make a single pattern that will control multiple MIDI 
instruments, you can do the following:

Create a drum pattern. Hold the left Shift key and press a disk bank number 
(keys 1-0 along the top of your keyboard) to save that pattern to disk. Exit 
OTF (you may want to save a copy of OTF.cfg at this point) and open OTF.cfg. 
Change the MIDI channel and/or the instrument numbers so they are associated 
with the MIDI instruments you wish to control on the next layer. Save OTF.cfg 
and start OTF again. Test your new settings and make sure the module is 
controlling your new instruments correctly. Now reload the pattern you 
previously saved to the disk bank. Notice OTF starts playing the pattern just 
as it did before you edited OTF.cfg. Drum patterns are not associated with 
OTF.cfg. Therefore, you can edit OTF.cfg without affecting your existing disk 
patterns. Here's where the cool stuff begins. Notice, since editing OTF.cfg, 
the virtual LED's no longer represent the pattern data loaded from the disk 
bank (unless you did not change the MIDI channel or instrument numbers in 
OTF.cfg). That pattern is on the first layer and you are now on the second. 
Begin adding to the drum pattern. Your original pattern will not be affected 
by the changes you make (unless you CLEAR the pattern). You are actually 
layering new MIDI data on top of the old data. Once you are satisfied with 
your new layered pattern, save your pattern to a Disk Bank. All of the pattern 
layers will be saved. At this point, you can edit OTF.cfg again and add another 
layer to what you've created this far. Or, you can even edit prior layers again 
by using the OTF.cfg settings you used while creating them. You may continue 
adding/editing additional layers as desired.
____________________________________________________________________________

Defaults:

SEE OTF.cfg and/or run OTF_Validator
____________________________________________________________________________

Notes:

This version of On-The-Fly has been tested with an unmodified Amiga A1200 
without any memory or CPU expansions.

On-The-Fly will fit on and run from a standard 880k Amiga floppy. I may make 
a bootable version. However, running from hard drive is highly recommended.

If your Amiga does not have enough memory to run On-The-Fly, try removing the 
"Samples" directory. This will obviously disable the sample module in exchange 
for more free memory. OTF will detect the absence of samples and disable the 
sample module. You may also open OTF.cfg and change the USE SAMPLES setting to 0.

In OTF.cfg you may change both Instrument Numbers and Names (up to 13 characters). 
For example, if you wanted module 8's Bass drum to be named "Booooom! And have it 
control MIDI instrument 24, you can change the line:
36=Bass Drum
to this:
24=Booooom!

Din SYNC via the "2. GAME" port has been removed in this version.

On-The-Fly does not utilize the AGA chipset. This assures compatibility with 
older Amigas.  

On-The-Fly uses a 320 X 200, 32 Color, LoRes screen resolution. This means you 
can use it with very small monitors and still be able to see what you're doing. 
Squinting at small hires details on large goofy monitors, while performing live, 
just doesn't look cool... unless you're down with nerding out retro style. Then, 
anything goes.

This program has proven to be enjoyable and addictive to even those who haven't 
a clue about electronic music. I'm not sure if that is a good thing or a bad thing.

When using the enter key to tap, delete key to clear, shift key and/or disk bank 
keys to load/save and the numeric keypad to change patterns, the actions will 
be applied to the module in use. The module is use is determined by the module 
the mouse pointer is in.

If you are using the keyboard keys to perform a lot of functions on a particular 
module and don't want to worry that the module may switch accidentally (for 
example: you are editing module 8 and you bump the mouse and the pointer moves 
to module 9 therefore causing you to make modifications to the wrong module), 
you can turn on Caps Lock. Caps Lock will not allow the current module to change, 
even if you use the F keys to hide the module. Clicking other modules will not 
cause any actions.

The sample module will be completely revamped in later versions of On-The-Fly. 
I'm not big on samples; therefore, it hasn't been a priority. For now, you're 
stuck with the samples I gave you. :P

I will create a sample builder in the future. The sample builder will never be 
a part of the On-The-Fly core.

Later versions will allow the LFO to modulate sample frequency.

On-The-Fly is strictly designed for creating improvised compositions on the fly, 
in real time. It is not meant for prepared or rehearsed performances. For this 
reason, I almost excluded saving ability. However, I decided it would be convent 
to recall some of my favorite patterns and save them as they develop.

Disk saves are stored as separate files outside of On-The-Fly. Therefore, if you 
have patterns that you whish to keep safe, simply copy them from the patts drawer 
to another location. Alternately, you can simply save all of your patterns by 
copying the "patts" drawer to another location on your hard drive. This also makes 
it possible to share patterns with other On-The-Fly users (provided that I ever 
release this thing).

Later versions of On-The-Fly will allow the user to choose, add and remove modules 
and put them in any order. The user will be able to add and remove modules without 
affecting the core program. I may even open up module creation to the public.

This project has been abandoned due to my acquisition of hardware. I may release 
this as freeware, but I really don't plan to spend any more time on it. On-The-Fly 
has performed its function and served its purpose.

-David Terrill (AlphA)
1997

BigMech.com

                                    ___
                                   _\__\__
                                  /  _____\
                                 _) /_\  \
                                /_________\
                              _     __       _
                             [_] |  |_] |_| [_]
                             | | |_ |   | | | |