                               THE MIDI-AX

                       Preliminary User's Reference

BRACKET OBJECTS

The play screen and several of the menus contain text, values, or open 
mode sequence keys surrounded by the symbols <>.  I refer to these 
throughout the reference as bracket objects.  They are similar to those 
used on the Fingers screen.  If they contain text, changing the value 
cycles though possibilities rather than setting a value.  They use the 
convention left click to change by 1, right click by 4, or shift click to 
go to the limit value.

MENUS

The program has two main menus, Fingers and MIDI-Ax.  The last used menu 
can be accessed by left clicking on the letters ME on the bottom right 
corner of the screen.  Switch menus by clicking on the word Fingers or 
MIDI-Ax located just above the Quit or Back to KCS options.  Right 
clicking will take you back to KCS if you are in MPE.  Control clicking 
will take you to the Ax Options page. 

PLAY SCREENS

The program has two main play screens, the Fingers screen, which is very 
similar to the screen of the Fingers program and the MIDI-Ax screen. 
Selecting the No Fingers option on the Ax Options page activates the   
MIDI-Ax screen.

The top of the Fingers screen is almost identical to the 13 column Fingers 
screen (you probably don't want to mess with 16 column).  If sliders 1 - 
28 are defined, you will see crossmarks showing the slider positions on 
the corresponding Fingers separating lines.  The first 14 sliders use the 
top half of the lines.  You will see hash marks providing a visual 
indication for the separation between the top and bottom halves of the 
screen and a wider hash-mark indicating the location of the horizontal 
center of the screen as used when gestures are playing.

The Line control lines are somewhat different from those in Fingers and 
this difference is described below.  The control and bottom lines are also 
different and these differences are described in their sections below.

This reference assumes that the reader is familiar with Fingers and/or has 
access to the manual.

The MIDI-Ax screen has all of the Fingers data removed.  The main play 
area for gestures is the rectangle which would enclose the Fingers score 
if it were there.  Stronger indications are given of the separation of 
this area into four quadrants.  Slider information may appear in the score 
area, depending on the settings of certain toggle switches.

The line which would contain Fingers delay settings contains mute switches 
for all 16 channels.  The mute does not always apply to the first note of 
a new gesture.  The lines which would contain line controls contain 
program numbers, transposes and pitch and velocity limits for the four 
channels currently used by Fingers.  Changing a program will always send 
the newly selected program change.  The transposes and limits do what is 
expected, but you should look in the slider's section for a more complete 
description.  This display is not updated when the values are changed by 
sliders, regardless of the settings of the corresponding toggle switches. 

GESTURES

The two parameters in edit brackets are referred to as P1 and P2.  Unless 
otherwise specified, pitch follows the x position of the mouse and 
velocity the y position.  Each mouse button is treated independently.   
The action of pressing a mouse button, possibly moving it around and 
releasing it is called a gesture.  The music created by this action may 
also be included in the definition.

When a gesture is playing single notes, clicking on the vertical center 
line will produce C4 (MIDI note 60) and clicking on the horizontal center 
line will produce a velocity of 64.  When the gesture is playing sequences 
and is using x and y to control pitch and velocity, clicking on the 
vertical center line will play the sequence untransposed in pitch, while 
clicking on the horizontal center line will play it untransposed in 
velocity.  

A gesture that continues to generate notes while the mouse is held down is 
said to repeat.  Gestures can repeat at either a constant time separation 
or, if the gesture is playing a sequence, using the sequence times.  If 
sequence times are used, a tempo adjustment is applied which works exactly 
as in Fingers.  Various ways of altering the tempo are discussed in 
various places below.  A repeating gesture may be 'held' by holding down a 
shift key while releasing the mouse button.  Holds are discussed in detail 
in a later section.  

Gestures can be affected in many ways by sliders.  See the Sliders section 
for details. Likewise, gestures can alter slider values.  See the Gesture 
Sliders section for details.

Fingers        A mouse click modifies the score or player positions in the 
               same way that it would in Fingers itself.  Clicking on a 
               slider sets its value.
        
Note           Play a note on channel P1.  If repeated and held, P2 if 
               not blank is the number of notes played after hold.

NoteRep        Like Note, but repeats at last time separation.

Gliss          Like Note, but moving the mouse while holding a button 
               glissandos from one note to the next.

NoteSeq        Play the first note of sequence P1, on channel P2 if not 
               blank.  Whenever P2 is a channel, it can also be a sequence 
               start event if Rechannelize Seq Starts is on.  Continue 
               playing sequence if repeat is turned on. 

NotSeqR        Like NoteSeq, but always repeats.

NotSTem        Like NotSeqR, but Tempo gets faster as mouse moves up the 
               screen and velocity is sequence vel.

SeqGlis        First note is like NoteSeq, but dragging to the right 
               glissandos subsequent notes of sequence, while dragging to 
               left glisses the end of the sequence.  P2 is channel.

SGlsAbs        Glissando taking pitch and channel of x'th note of sequence 
               and combining y velocity with sequence velocity.  P2 is 
               channel.

NotSeqY        Take channel and velocity from y'th note of sequence P1 
               (top is note 1, etc.) and pitch from both x pos and 
               sequence note.  P2 as in Note.

NotSqYR        Like NotSeqY, but repeats.

SeqYGls        Combines Gliss and NotSeqY.

SqYGls!        Like SeqYGls, but a new note is triggered on drags in y 
               direction as well as x direction.  

NOTE: The above four modes are designed to allow channel splits in the y 
direction.  NOT ALL SLIDER features are supported in these modes.       

PosSeqX        Play Sequence P1 starting with the x'th note.  Initial 
               pitch transpose is 0, but dragging in x direction creates a 
               transpose relative to initial x position.  If sequence 
               loops, it loops back to the starting point used, not to the 
               start of the sequence.  If seq is longer than x, start at x 
               mod seqlength.  P2 as in Note.

PosSqXT        Like PosSeqX, but tempo follows y and velocity is as 
               programmed.

PosSqXN        Like PosSeqX, but the number of notes played after a hold 
               follows y.  The top line gives indefinite looping, the 
               bottom line gives 0 and each line up gives one more.

PosSqXC        Like PosSeqX, but P2 is MIDI channel if not blank.

DblSeq         Pitch and timing information are taken from sequence P1, as 
               in NotSeqR.  Channel and velocity come from the y'th note 
               in sequence P2.  Sequence P2 has the role here that P1 has 
               in NotSeqY etc.  If the No Velocity Mix switch is off, the 
               velocity used is the sum of two velocities, - 64.  NOT ALL 
               FEATURES are supported in this mode. 

NotSeqN        Like NoteSeq, but P2 is number of notes to play after hold.

NotSqYN        Like NoteSeq, but y is number of notes to play after hold, 
               as in PosSqXN.

NSeqT2         Like NotSeqR, but second variable is a qwerty key that 
               controls tempo.  Top row keys (1-0), give the time 
               separations and tempo adjustments from the Tempo Tables on 
               the Options page.  Each row down doubles the time values 
               from the row above, i.e. Q is half the speed of 1, A is 1/4 
               the speed of 1, etc.

NSqT2Ny        Like NSeqT2, but notes played after a hold follows y as in 
               NotSqYN.

PSeqT2         Like PosSeqX, but tempo follows P2 as in NSeqT2.

PST2Ny         Like PSeqT2, but notes after hold follows y.

St Seq         Start Sequence P1 on channel P2.  Pitch and velocity are 
               tranposed according to the x and y as in NotSeqR.  This 
               differs from NotSeqR, in that the sequence that is started 
               will play to completion (but not loop), whether or not 
               you let go of the mouse.  Transposes and rechannelization 
               will not follow actions made after the sequence is started. 
               If any Seq ST mode, is looped, each trigger point will 
               start a new version of the sequence, using the current co-
               ordinates and parameters.  The tempo adjustment for the 
               sequence will be the Reset adjustment for the button used, 
               as set on the Options page.

St SeqR        Like St Seq, but holding down the mouse always causes 
               looping.

St SeqG        Like St Seq, but dragging the mouse creates a glissando, 
               starting a new copy of sequence P1 for each x value 
               crossed.

St SeqT        Like StSeqR, but the tempo adjustment follows y and 
               velocity transpose is 0.

St SqGT        Combines the attributes of St SeqG and StSeqT.

St SqT2        Like St Seq, but P2 controls the tempo adjustment of the 
               started sequence.

Note that three glissando modes are repeated here for convenient grouping.

GlissTy        Like Gliss, but the time separation follows y.

SeqGlsY        Like SeqGlis, but time separations or tempo adjustments 
               follow y.

SGlsATy        Like SGlsAbs, but tempo adjustment or time separation 
               follows y.

For what it's worth: So far, the modes I find most useful are Note, 
NoteRep, Gliss, NotSeqR, NotSTem, SGlsAbs, PosSqXC and the gliss ty modes. 
I've used many of the others and the only ones I have real doubts about 
are the ones which follow a sequence position in y, which may be too 
counter-intuitive to be useful. 

THE CONTROL LINE

The second line from the bottom is called the control line.  It contains 
ten bracket objects whose settings determine the actions that the program 
takes in response to mouse actions and key presses.  These bracket objects 
work similarly to values surrounded by arithmetic ikons in Fingers, except 
that in six of them the data is displayed in text form, instead of as a 
value.  The other four select data values that can appear in several 
different formats.  In each case a left click advances one unit and a 
right click advances 4.  A shift click goes to the limit value.  Once the 
limit is reached, further unshifted clicks cause the value to cycle.

The leftmost bracket object selects the left mouse mode within Fingers. 
This setting is only used if the left mouse mode is set to Fingers.  In 
general, I have not found that Fingers works  really well with the mouse 
play modes, but I probably haven't tried the right combinations.  The 
Fingers program change table does work well with mouse gestures.

The next three bracket objects select the playing mode and parameters for 
playing gestures with the left mouse.  The first object shows the play 
mode and is one of the text fields listed above.  The next two are the 
parameters P1 and P2, whose uses are described above. 

The next three bracket objects do the same for the right mouse.  The last 
three select the current uses for the Qwerty, Function and Numeric 
sections of the keyboard.  Note that the Qwerty keys are defined as the 
numeric keys 1 - 0 and the three rows of 10 keys each below them.  An 
extremely powerful part of the program is the ability to use these keys to 
change gesture parameters while a gesture is in progress.

THE BOTTOM LINE

There are five action buttons and 12 toggle switches  on the bottom line 
of the play screen and many more toggles on the MIDI-Ax Options and Toggle 
Switches pages.  Some toggles appear in both places.  Where two identical 
toggles appear side to side, they are separate switches independently 
affecting gestures made with the two mouse buttons.  The <> and SF 
switches are identical to the <> and Shift switches in Fingers.  The St, 
Co, XX and ME buttons are identical to the Start, Con, Stop and Menu 
buttons in Fingers.  Right clicking on ME gets you back to KCS and shift 
clicking gets you to Ax Options. 

The P button is a pause button.  While it is on, the clock stops.  If 
nothing seems to repeat when it should, you probably turned it on and 
forgot about it. 

The other six pairs of switches on the bottom line are, from left to 
right:

R (Repeat)     Force all gestures to repeat.

H (Holds)      Force all repeating gestures to be held upon release.

L (Loop)       Cause held gestures that play sequences to loop at the end 
               of the sequence.  If this switch is not on, held gestures 
               end at the end of the sequence.

S (Seq Times)  Cause sequence play modes to use the recorded  event times 
               with the current tempo adjustment, instead of playing 
               evenly spaced notes.

T(Tempo Reset) Causes each new repeating gesture to start with the Reset 
               time separation or adjustment, instead of using the value 
               that the previous gesture ended with.

THE KEYBOARD

The keyboard is divided into five groups of keys; the modifier keys, 
(Control, Alternate and the two Shift keys), primarily modify the effect 
of mouse clicks and mouse button releases.  The Qwerty keys, the function 
keys and the numeric keypad keys each have multiple uses that can be 
selected using the three rightmost bracket objects on the control line.  
The remaining keys are called action keys and each has a specific function 
that may depend on whether a gesture is currently active.  Each of the 
keys in the qwerty, function and numeric groups can be programmed to set 
specific values for any of the control line parameters.  This is described 
in the Key Overrides section.

MODIFIER KEYS

Right Shift    Holding down this key while pressing a mouse button causes 
               the gesture to repeat, unless it is a glissando mode.  It 
               will repeat at the last time separation or tempo adjustment 
               unless the reset switch for the button is set, in which 
               case the repeat rate will reset.  Notes will be equally 
               spaced, unless sequence times are relevant for the mode 
               selected and the sequence time switch is on. 

Holding down Right Shift while releasing a button when play is repeating 
or a timed gliss is active will cause the gesture to be 'held'.  Play 
continues and can be modified as  described in the HOLDS section.

Alternate      If the Alt/Pause button on the options page is off, 
               pressing the Alternate key while any mouse button is down 
               causes the gesture to start repeating (if it is not 
               already), at a rate which increases as the mouse moves up 
               the screen (like NotSTem).  Once the key is released, tempo 
               stops changing.  If Alt/Pause is on, holding down pause 
               button causes time to stop for any gestures in progress or 
               holds that are grabbed.

Control        If Control/Tempo is on, pressing this key causes the 
               velocity of a repeating active gesture to follow the y 
               position of the mouse.  This is relative to the current 
               tempo, i.e. tempo does not change until the mouse moves up 
               or down.  Unlike Alternate, the velocity stops changing as 
               the mouse is dragged and the effect continues after the key 
               is released.  This effect is not active if sequence times 
               are active and available for the current mode. 

If Control/Tempo is off, holding Control while starting a gesture causes 
the program to ignore initial pitch and velocity transposes from the mouse 
position.
        
Left Shift     If Shift/Reset is on and a sequence play mode is active, 
               pressing Left Shift at the start of a gesture causes the 
               gesture to use the last starting and ending points of the 
               sequence.  Otherwise, if  Control/Tempo is on, this key has 
               the same effect as Control, except that velocity continues 
               to follow y movement (faster and louder!).  If 
               Control/Tempo is off, holding down this key while starting 
               a non-glissando gesture causes the gesture to repeat and 
               the effect of the tempo reset switch to be reversed.  In 
               any case, if a PosSeq mode is active, holding this key at 
               the start of a gesture causes the sequence to play 
               backward.  If Left Shift Holds is on, holding LS while 
               releasing a gesture causes the gesture to hold and forces 
               the loop switch for the hold to on.

Further uses for these keys are described in the Holds section.

ACTION KEYS

Escape  Pressing this key causes the next qwerty, function, or 
numeric keypad key to select the corresponding function for 
that keyset.  The functions are in the same order as seen 
using the arithmetic ikons surrounding the bracket objects. 


If a key override is active for the key pressed after Escape, that key is 
treated as not overridden and the above use of Escape is bypassed. 

Tab            Start Fingers playing.

- (Minus)      If a gesture is active and the gesture is playing a 
               sequence, this sets the loopback point in the sequence to 
               the last note played.  If no gesture is active, this is 
               equivalent to a left click on the < ikon for the qwerty 
               bracket.

_(Uscore)      If a gesture is active, this resets the loopback point to 
               the start of the sequence.  If not, this is the same as a 
               right click on the < for qwerty.

=              If a gesture is active, this sets the loop point of the 
               sequence as the last note played, i.e. the next note loops. 
               The time between the last note and the loop note is the 
               time of the next note in the sequence, which now acts like 
               a  DE event.  If the mode is a glissando mode, this instead 
               toggles the repeat gliss switch on the options page.  If no 
               gesture is active, this is a left click on the > for 
               qwerty.

+              This is a right click on the > for qwerty.

`              If a gesture is active, this clears the loop point.  If the 
               gesture is a glissando gesture, this toggles the timed 
               glissando switch. 

[              If a current gesture is playing a sequence, toggle 
               palindrome mode , i.e. alternate forward and reverse play.

]              Like =, but reduce the loop time to the time since the last 
               note, so the loop happens immediately.

Backspace      If the current gesture is repeating, halve the tempo.

Help           Double the tempo of a current gesture.

Undo           Clear any sequences that were started by ST events in 
               sequences or by ST Seq modes.

Clr/Home       Clear all holds.

Insert         If not currently recording, copy the sequence used in the 
               current gesture to the next slot including any temporary 
               changes to start and end points and loop times.  If no 
               gesture is active, cause the next gesture that uses a 
               sequence as P1 to selected the most recently recorded 
               sequence.

Up             Immediately play back the next note of current gestures.

Down           Like above, but if a sequence is playing, go to first note. 
               Unlike ], does not affect later loops.

Left           Toggle repeat states of current gestures.

Right          Reverse sequence direction of current gestures.

Space bar      Tap tempo.  If sequence is not repeating, set time 
               separation  as difference between last note time and tap 
               time.  If sequence is repeating,  set separation to  time 
               difference between taps.  Not valid if sequence times are 
               used.

'              Set up the most recent hold for grabbing.  If not 
               applicable, start at the bottom of the list and work up.

:              Set up all holds for grabbing.  The next mouse click drags 
               them all. 

!              Send the most recent value of all sliders.

@              Reset all sliders for which the reset flag is on and send 
               values.

#              Like @, but ignore the reset flag.

$              Clear scaling on all sliders.

%              Mute all holds.

^              Unmute all holds.

&              Set all minimum velocity settings to -99, the equivalent of 
               disabling them.

RECORDING KEYS

The following action keys support the programs ability to record into KCS 
sequences.  Unlike Fingers, this process is integrated into the playback 
part of the program, so that sequences created by the program can be 
played with gestures from within the program.  Note that recording is done 
at the resolution set in the Steps per Beat section of the Fingers Options 
menu.

Return         Start a new recording on the next available sequence.

Delete         End the current recording and display the sequence number 
               in the top left corner.

?              The next mouse press ends the current recording and plays 
               the newly recording sequence in NotSeqR mode with sequence 
               times.  The sequence will play back untransposed regardless 
               of the current mouse position, but can be dragged around 
               like any other.  THIS IS ONE OF THE MOST POWERFUL FEATURES 
               OF THE PROGRAM!

\              End the current recording and play back as a  hold.  If 
               alternate is pressed at the same time, align is treated as 
               off even if it was on.

| (shift \)    Like \, but next press starts new recording.

"              Cancel the current recording.

}              If recording and a gesture is in progress, end both gesture 
               and recording and play back sequence as a 'grabbed' hold.

>              Start a new recording and automatically play it back when 
               it reaches the length of the most recently finished 
               recording.

QWERTY KEYS

Within this program , the alphabetic keys, the numeric keys in the 
typewriter part of the keyboard and four punctuation keys (; , . /) are 
collectively called the qwerty keys.  These keys function in different 
modes and the use in each mode is listed below.  In many modes, they are 
treated as a string of 40 keys in 4 rows of 10 starting at the top left. 
The position of a key in this string is called its key number (kn).  The 
column selected is referred to as col and the row as row.

Fingers        In this mode the keys act as they would in Fingers.

HoldOff        Turn off hold number kn.

HoldMut        Mute or unmute hold kn.

HoldGrb        Setup a grab of hold kn.

HoldRev        If hold kn is playing a sequence, reverse direction.

Tempo          If a gesture is repeating, pressing a key on the top row 
               causes the tempo to speed up (1 - 5), or slow down (6 - 0), 
               with the extreme values doubling or halving.  The other 
               three rows set tempos, with q being very fast thru / being 
               very slow.

KCSPlay        Interpret the key pressed as a KCS open mode sequence and 
               play it once as a hold.  Multiple copies of the same 
               sequence can be played.  Note that the key is treated as a 
               KCS sequence number, not as an offset. Keys Y, Z, ;,, ',', 
               '.' and ./ play as seqs 00 -05.

KCSLoop        As above, but sequence loops.

MuteChan       Mute notes on channel kn.

Sliders        Allows the adjustment of slider values, as described in the 
               sliders section.

LeftMse        Select the left mouse play mode as mode kn.  Note that some 
               modes appear twice in the list.

LeftP1         Set the value of P1 for the left mouse.  Note that modes 
               which use the same kind of parameter share values, but 
               modes which use different kinds do not.

LeftP2         ditto P2.

LeftGet        Copy the contents of mouse state kn to the left mouse play 
               data.

LeftStor       Save the current left mouse play data in state kn.

H Shift        The first of a series of modes which allow holds 1-10 to be 
               modified by using one of the ten qwerty key columns.  The 
               selected hold will be shifted back or forward in time 
               according to the corresponding hold shift value from the 
               Hold Qwerty Keys menu.  A positive value delays the hold. 
               Units are in terms of 384 spb.

H Loop         Pressing a key in the top row causes hold number col to 
               loop with the next note.  This only applies if a sequence 
               is playing.  A key in the second row causes hold col to 
               loop immediately.  The third row unloops and the bottom row 
               plays the next note immediately and can be used with holds 
               that are not playing a sequence.

H Tempo        The tempo adjustment or time separation (whichever is 
               appropriate) of the selected hold is changed by the 
               programmed amount.  Use values of 127 and -127 to do 
               doubles and halves.

Hold X         The selected hold is treated as though it were dragged the 
               programmed number of columns in the left-right direction.

Hold Y         Like Hold X, but acts like an up-down drag.  Positive 
               values are like dragging up, increasing velocity in most 
               modes.


Right...       These do the same things to the right mouse play data that 
               the Left ... do to the left play data.

H T Set        Set the time separation or tempo adjustment of the selected 
               hold to the programmed value.

SngPlay        This mode allows you to play songs programmed in the KCS 
               Song mode.  Up to ten(!) songs can be played at once and 
               all song mode features except tempo are supported.  ST 
               events will be processed, unlike in KCS.  The segment 
               repeat count is, however, treated as 99 (loop forever) if 
               any value other than 1 is programmed.

Pressing a key in the top row starts or restarts the selected song.  The 
song always plays in the hold of its number and will end anything using 
that hold before starting.  If you need more than one copy of the song 
playing at once, you need to copy it.

Pressing a key in the second row will cause the current segment of the 
selected song to stop looping when it finishes its current segment. 

Pressing a key in the third row will cause the current segment of the 
selected song to loop.  Pressing a key in the bottom row will cause the 
song to advance immediately.

SngLoop        Exactly as above, but the song loops as soon as it finishes 
               playing.

1-4            Imm Unlike the other song qwerty modes, this mode selects 
               the song by row.  Song # row immediately advances to 
               segment # col.  This will start the song if it is not 
               playing.

1-4            Nxt Like above, but the song completes its current segment 
               before advancing,.

5-8 Imm
5-8 Nxt        Like above, but add 4 to the song number processed.

SlidTog        Toggle the disable switch for slider kn.  A 0 or * will 
               appear in the lower right to show the new status.  Useful 
               to interact with sliders that are being played 
               automatically by KCS or Fingers in a way that is simpler 
               and less awkward than the scaling feature.

        
GetNext        Pressing a key selects the mousestate for the next mouse 
               press. 
FUNCTION KEYS

For all modes but tempo, these keys act like qwerty keys in the 
corresponding qwerty mode.  For tempo, they select the time separation or 
tempo adjustment from the tempo table on the options page.  If no gesture 
is active, the next gesture started will use the selected tempo.  This is 
more useful than the qwerty tempo mode.

NUMERIC KEYPAD KEYS

Most of these modes duplicate modes available with the qwerty keys.  For 
these modes, the keypad is treated as four rows of four keys and one row 
of two, with kn advancing from left to right.  The other two modes are the 
ones that I find most useful.

Toggles        Each pair of keys toggles a pair of switches (one for each 
               button)  from the bottom line or the options page. () 
               toggles repeats, /* holds, 78 hold looping, 9- sequence 
               times,  45 tempo resets, 6+ sequence resets, 12 record 
               switches.  Enter turns on and off the pause button.

DecInc         The pairs of keys are assigned to decrement and increment 
               other variables on the control line.  A shift press moves 
               the value by 4 units.  () and /* do the play modes, the 
               next two rows do P1 and P2 for each button.  1 and 2 do the 
               qwerty mode, 0 and . do the function key mode.  Enter is 
               still the pause button.

HOLDS

Perhaps the most powerful single feature of the program is the hold 
feature.  This allows any repeating gesture to continue to repeat after 
the mouse is released.  The mouse can then be used to make new gestures, 
which can also be 'held'.  The 'held' gestures can later be modified with 
the mouse or keyboard.

A repeating gesture is 'held' by holding down the right shift key while 
releasing the mouse button.  The left shift key can be used if its switch 
on the options page is on.  The auto-hold switches on the bottom line will 
force holds for all gestures.

When a gesture is 'held', it continues to play as though the mouse button 
were still held and neither the mouse position nor play parameters were 
changed.  A number or letter appears at the right of the screen.  This 
character switches between regular and reverse video with each note (if 
single notes are played), or with each loop (if a sequence is being 
played).  The character is the qwerty key that can be used to control the 
hold in one of the applicable modes.  The mute, off and reverse modes do 
the obvious things.  Grabbing the hold is more interesting!

If the key for an active hold is pressed with the GrbHold option, the 
flashing key turns to a flashing '!' and the hold is ready for 'grabbing'. 
As many holds as desired can be set up at once.  If a mouse button is 
pressed while one or more holds are in this state, a new gesture is NOT 
started.  Instead, all of these holds can now be dragged through changes 
in their x and y co-ordinates.  Each hold will act as though the mouse 
were still playing it at the place where it was released.  If the mouse is 
dragged, the effective x and y values will change, RELATIVE to the release 
values.

Grabbed holds will also respond to changes in the mouse play parameters, 
double and half-times, the resync (up-arrow) key and the alternate key if 
Alt/pause is on. 

All current holds can be cleared by pressing Clr/Home.  Holds can also be 
controlled by using the mouse and modifier keys, as shown below.

Unmodified     Setup hold for grabbing.

Right Shift    Grab hold.  Obviously, it can only be moved to the left.

Left Shift     Grab Hold.  Reverse the effect of mouse motions, i.e. 
               moving to the left increases pitch, moving down increases 
               velocity.

Control        Turn off.

Alternate      Mute/Unmute

Cont/Alt       Reverse sequence play direction.

Cont/LS Resync Play next note immediately and go to first note of sequence 
               if applicable. 

GLISSANDOS

The glissando modes are an extension of the mouse glissando that Bob 
Melvin developed as part of his Caged Artist editor series.  They have a 
number of extra wrinkles.  Once a glissando has started, it can be changed 
to a repeating note by tapping tempo with the space bar, or using the 
repeat toggle (left arrow). 

If the Repeat Glissando switch on the options page is on, then moving the 
mouse while a glissando repeats will cause notes to be played in both 
modes at once.  If mono glissando is on, the note off for the old note 
will be sent after the note on for the new note.  I haven't tried this, 
but it should avoid envelope retriggering in monophonic patches on some 
synths at least.  If Timed Gliss is on, glissando notes will be separated 
by at least the current time separation used by repeats.  The repeat 
glissando switch serves double duty.  If timed gliss is on,  this switch 
allows the x value used to determine pitch to change by only +- 1 from the 
previous value.  Thus, a single glissando sweep with the button held down 
will play all notes between the start and end, in time. 

If both of these switches are on, glissandos that are NOT repeating can be 
hold.  If you drag the mouse and release it with a shift button or the 
hold switch down, the glissando will be held.  The rest of the notes of 
the gesture will be played.  If the loop switch is on or the left shift 
key was used, the hold will loop back to the original note played when 
done.  The grab hold feature will not work normally with held glissandos.

Timed sequence glissando modes will use programmed sequence times if the 
sequence time switch is on.

TIME SEPARATIONS AND TEMPO ADJUSTMENTS

When a gesture repeats, it can either play evenly spaced notes or notes 
that are separated by times that are proportional to sequence times.  
There are a variety of ways to modify these values while playing a 
gesture, using mouse motion, tap tempo, action, function or qwerty keys. 
These are all described in the appropriate sections. 

These values can also be set on the Ax Options menu.  You will see two 
Repeat Times settings, one for each button and two Reset Times settings. 
You will also see two pairs of Adjust settings.  When a gesture is 
initiated, the Repeat value will be used, unless the corresponding Tempo 
Reset switch is on, in which case the Reset value will be copied to the 
Repeat value and used.  This allows you to always start a gesture at the 
same tempo, regardless of what you did to the previous gesture.

The Repeat Times are stored in steps at a 384 spb clock.  The Adjusts are 
in Fingers units, i.e. a value of 16 causes a sequence recorded at 24 spb 
to play back as is it was recorded.  Note that the resolution at which 
sequences are recorded by the program is set on the Fingers Options menu 
and doubling this resolution requires you to halve the tempo adjustment to 
get playback at the original tempo.  I usually record sequences for 
playback by this program at 24 spb, to allow maximum leeway in changing 
the playback rate.

Note also that changing the master tempo affects all playback times.

The Tempo Tables in the middle of the options page are used in some 
gesture modes and are also used when the function keys are in Tempo mode. 
The values on the left are time separations, the values on the right are 
tempo adjustments.

SLIDERS

The program contains 42 'virtual sliders'.  These are values that can be 
set in a large variety of ways while the program is playing.  Each of 
these sliders can do up to four different things.  These things include 
the sending of most kinds of MIDI continuous controller data and modifying 
a great many of the programs internal data structures.  They give the 
program a degree of power greater than I had anticipated when I started 
out.

28 of the 42 sliders appear on the screen as vertical lines, with a short 
horizontal crossmark to indicate the slider's current value.  These 
vertical lines are identical to the column separators used by Fingers.  
The other 14 sliders are not shown on the screen and are only controllable 
from MIDI, Fingers or KCS sequences.

DEFINING SLIDERS

To define a slider, or edit the definition of an existing slider, click on 
Sliders on the MIDI - Ax menu and select the slider that you wish to edit. 
Each slider can control up to four independent things and the slider 
screen has four columns of data that are used to program these controls.  
Care should be taken in defining sliders, as the program does not always 
check data for validity.  Below those four columns are fields for data 
that pertains to the slider as a whole.  We will start by discussing these 
parameters.

GLOBAL PARAMETERS

Minimum        The smallest numeric value of the slider.  An on-screen 
               slider is set to this value by clicking at the bottom.  If 
               controlled by MIDI, a 0 input sets the slider to this 
               value.

Maximum        The largest numeric value.

Current        The current value.

Reset          A reset value.  Pressing # from play sets all sliders to 
               their reset values.  Reset is also a toggle switch.  @ 
               resets only those sliders for which the switch is on.

Scale          If the Scale switch is on, the value of the slider is 
               scaled according to the scale value, which can come from 
               another slider. 
Small/Large 
Qwerty         The amounts that the slider can be changed using the qwerty 
               keys, as described below.

Min Change     The smallest change allowed for a slider value.  Useful to 
               avoid MIDI and CPU loading when controlling via MIDI.

Max Change     If non-zero, this acts as a 'slew-rate' limiter and 
               prevents the slider from changing by more than this value 
               at any one event.

Name           The slider name is displayed above the exit buttons and can 
               be edited.

Disable        A toggle switch that can disable the slider completely 
               without removing it from memory.

Exit Buttons   These are shown in caps and do what they say. 

INDIVIDUAL PARAMETERS

The following parameters are definable independently for each of four 
outputs that the slider can have.

Type           The type of data that the slider is controlling.  Type is a 
               bracket object.  The meaning of the other parameters is 
               dependent on the Type setting.  The interaction between 
               type and Param causes the user interface to by slower than 
               it should be.  Note that to eliminate unnecessary 
               computing, the program  will assume that all columns to the 
               left of an 'Off' column are also Off.  The types and their 
               effect on the other column entries are described in a 
               section below.

Param          Each data type has a choice of parameters that can be 
               affected.  The parameter selections are discussed in more 
               detail in the Types section below.

Channel/P1     The meaning of this field depends on the Type and Param 
               settings.  Most often, it is a Fingers Line number or MIDI 
               channel.

Parm 2         Also dependent on type and param.  Most often, it is 
               unused.

Mode           There are four modes in which the slider can send values. 
               Direct sends the value of the slider itself.  Inverted 
               sends the value that would be obtained by reversing the 
               roles of the Minimum and Maximum settings.  Scaled allows 
               you to rescale the slider, or to send data for only part of 
               the sliders range.  If a slider column is scaled, it will 
               send data only if the slider's value is between Minimum Use 
               and Maximum Use.  If the slider's value is Min Use, it will 
               send as data the value Minimum Send, If Max use it will 
               send Max Send.  If in-between, it will interpolate.  Max 
               Use must be >= Min Use, but there is no such restriction on 
               the send values.

Quadratic mode is similar to Scaled, but the interpolation is done 
quadratically, i.e. when the slider is close to Min Use, changes have a 
smaller effect than when it is close to Max Use.

Min/Max 
Use/Send       These are discussed under Mode.  For a few Type/Param 
               combinations, these values may be used in other ways.

Out Of Range   If the Send flag is on for a scaled or quadratiic slider, 
               an out of range value will be treated as a limit value. 
               Otherwise, it will be ignored.

SLIDERS BY TYPE

Controller     Send the selected controller type and channel over MIDI. 
               Record it if external MIDI would be recorded.  CC #'s 1 - 
               17, after-touch and pitch-bend are supported.  The value 
               sent for pitch bend is the high byte, so a value of 64 
               means no pitch bend.

Tx 7 Parm      Send a TX 7 parameter change sysex message on the selected 
               channel.  No value checking.  My attempt to create one of 
               my most desired instruments, a 6-op FM synth with flexible 
               modulation.

Fingers        Usually this sets the selected Fingers value for the Line 
               shown as Channel.  The V % 4 parameters allow you to 
               distinguish between musically identical notes by the last 
               two bits in velocity.  This is more useful with sequence 
               data than with Fingers but is implemented with both.  You 
               can modulate the pitch or velocity of those notes whose 
               (untransposed) velocities last two bits add up to 0, 1 , 2 
               or 3.  (The % sign is used as that is the C symbol for the 
               arithmetic mod operation and I couldn't think of anything 
               better.  Basically, a vel of 64 will be affected by a V%4=0 
               mod, a 65 by a v%4=1, etc).  These transposes are in 
               addition to those done to the Line as a whole.

Fing Mute      This must be used in Direct mode.  Mute the line if the 
               value is between Min Use and Max Use and unmute it 
               otherwise.  Mute rev does the reverse.

Fing Min Vel   Set the minimum velocity (after transposes) for which a 
               note can be sent.  Negative values have meaning here, as a 
               value of -30 means that a transposed velocity between 0 and 
               -30 is treated as a velocity of 1 and a transposed vel    
               <-30 is muted. 

Fing Element   This sets the value of a Fingers element (If a pitch, it 
               sets the MIDI note number).  The P1 field is the column and 
               the Parm 2 field is the row.   Unless a scaled mode is 
               used, the Minimum Send value is used as an offset and is 
               added to the slider value to get the new element. 

Left Mouse
Right Mouse    These types affect gestures played by the two mouse 
               buttons.  The Pitch and velocity transpose Params also 
               affect held gestures.  The other Params only affect 
               gestures that are playing while the slider is moved.  The 
               delay param moves the current gesture ahead or back in 
               time.  It works in 'relative' mode, i.e. the program looks 
               for the change between the new value and the hold.  Sliders 
               in relative mode can give confusing results if they are 
               controlled from MIDI and the controller was moved when the 
               program was on a menu page, as the last value may not 
               correspond to the location of the physical controller at 
               the start of the gesture.

Sequence
Hold Notes     These params affect the P1 and P2 settings of the control 
               line for the gesture.  Sequence only has an effect if the 
               mode is using a sequence number as P1.  Values are treated 
               as KCS sequences offsets (0 = seq 1, 9 = seq A, 35 = seq 
               00).  Hold Notes only has an effect if P2 is the number of 
               notes to play after a hold.

Channel        This type of slider affects notes that are played as a 
               function of the MIDI channel that they are played on.  The 
               program doesn't care whether the notes are from a current 
               gesture, a held gesture, a sequence played from qwerty, or 
               a 'hidden' sequence start.  The pitch and velocity 
               transposes affect Fingers lines assigned to the channel 
               used, while the other Params have no affect on notes played 
               directly by Fingers lines.  Note that transposes by channel 
               will cause sequences that are recorded by the program to 
               play back transposed from the way they were originally 
               played.  This occurs because the program transposes the 
               pitch once when the gesture is played and a second time 
               when the recorded gesture (which includes the transposes) 
               is replayed. 

Most of the params available here are discussed in the section on Fingers 
type.  The Min Vel, Max Vel, Min Pit and Max Pit params allow you to 
specify a range of pitches or velocities for which notes are sent.  
Several points must be made here.  These ONLY affect notes played by 
sequences, however started.  They also do not affect the first event of a 
sequence played by a gesture.  If this is a problem, insert a DE at the 
start of the sequence.  One interesting way to use them is do double a 
part on two channels and use a slider to change the split point as the 
music plays.

Sliders        Four parameters are available to allow sliders to change 
               other sliders.  Value allows you to 'chain' sliders 
               together, useful if you want to modify a whole bunch of 
               Fingers elements at the same time.  Minimum and maximum 
               values are obvious.  Scale allows you to use a slider to 
               scale the output of another.  A value of 32 causes the 
               output to be the programmed output, a value of -32 causes 
               the output to be the negative of the programmed output and 
               in-between values result in lesser outputs.  A somewhat 
               clumsy way to allow the user to interact with sliders that 
               are controlled from Fingers or KCS sequences.

Holds          This type of slider affects holds that are active at the 
               time the slider is moved and have no effect on holds that 
               are started after the slider is moved.  The Channel is the 
               hold number affected.  The slider works in relative mode, 
               i.e. the data being modified is changed by the change in 
               slider value.  The params X position and Y position have 
               the same effect as grabbing the hold and moving it 
               horizontally or vertically.  The others are described in 
               the Left and Right mouse section.

Tempo          This type sets the tempo to the slider output value.  The 
               Param allows you to take the value times 2 or times 4, as 
               well as directly.

Sequence       This type allows sliders to affect sequence data. The 
               changes are permanent.  The offset feature used in Fingers 
               elements is used here.  Durations > 255 are not supported 
               and data checking is not done.

Fing Rand      This slider type allows you to change the probability or 
               amount for random changes in Fingers elements.  These 
               changes are programmed with ? or  next to the element in 
               the Fingers score.  If a probability is being affected, a 
               P1 setting of 2 or more changes the  probability, while a 
               setting of 1 changes the ?

CHANGING SLIDER VALUES

Slider values can be changed in many ways and these are described below.

Mouse Clicks   The first 28 sliders are shown on the screen in two rows of 
               14 vertical lines (coinciding with the separating lines of 
               Fingers), with horizontal crossmarks at the slider 
               locations.  A mouse click with a button whose play mode is 
               Fingers will move a slider to the selected location, as 
               will a Control click if the Control/Sliders toggle is on.

Qwerty Kbd     If the mode for the qwerty keys is set to sliders, qwerty 
               keypresses can be used to change slider values.  If neither 
               vertical qwerty sliders nor qwerty slider pairs in on, keys 
               1 and 2 decrease or increase slider 1 by the large qwerty 
               values, while Q and W make small changes.  The top five 
               blocks of four keys affect sliders 1-5 and the bottom 
               blocks 6-10.  If Vertical is on, each column of keys 
               affects a slider.  If pairs is on, only large changes can 
               be made and sliders 1-10 are controlled by the top half of 
               the keyboard, while 15-24 are controlled by the bottom 
               half.

KCS            When this program is released, I may do an update of KCS 
               which includes a set slider event.  In the interest of 
               comparability, I am instead using CU events, which are not 
               used for their normal meaning in the program.  If a CU 
               event is encountered by the sequence play code, the Vel 
               value will be treated as a slider number, the Note value 
               will be treated as a slider value and the Dur value will be 
               treated as a sign.  Use a DUR of 0 for positive settings 
               and any other value for negative.

If a CU event is the first event of the sequence AND it is played by a 
gesture, it will be ignored.  In any case, mixing CU events and note data 
will create sequences that do not play properly in KCS itself.

The other two ways to set sliders deserve sections of their own.

MIDI SLIDERS

The MIDI Sliders screen, accessible from either the menu or the Sliders 
screen, allows you to direct the control of sliders from  external MIDI or 
continuous controllers.  At the top is a place to set the MIDI channels 
which are used to control sliders.  The channel entered and the channel 
one above are used.  Sliders can be affected by any of the 19 controller 
types that sliders can send.  The number to the right of the controller 
type is the slider number set by the controller on the specified channel, 
while the number two to the right is the slider number set by the 
controller on the channel one above the entered channel. 

If the Use Note Velocities flag is on, notes of pitch C1 - C#4 will set 
the corresponding slider to their note velocity.  Although this promises 
to be a very interesting interface, I haven't had the chance to play with 
it.

Finally, the four Fingers lines can be used to set slider values.  The 
difference between Pitch and Pit send is that Pitch uses the untransposed 
pitch, while Pit Send uses the transposed pitch.  The Send mode also is 
disabled if the line is muted, while the direct modes work even if the 
line is muted. 

In all of these cases, a value of 0 sets the slider to its lowest possible 
value, while a value of 127 sets the slider to its largest.  If the pix 
flag is on for a Fingers mode, a value of 24 (pitch C1) sets the slider to 
its minimum value and a value of 84 (C6) sets the max.

GESTURE SLIDER CONTROL

Slider values can also be changed by mouse gestures.  Indeed, gestures can 
be used only to change sliders, while Fingers lines and KCS sequences are 
playing the music.  The user interface for editing this feature is not 
great, so you will need patience. 

To edit the effect of left mouse gestures on sliders, click on Left Slider 
on the menu.  To edit the effect of right gestures click on the word Right 
on the same line. 

Once you do this, you will see a screen divided into four areas.  The 
effect of gestures on sliders is programmed independently for each of the 
four quadrants of the screen.  Unfortunately their is no copy function and 
no way to redefine the whole gesture for each quadrant.

At the top of each quadrant is a bracket object which determines the way a 
gesture in the quadrant is interpreted (Lets call it the Quadrant Mode). 
The possibilities are Gesture, Both (gesture and slider values) and 
Sliders (ignore gesture, just set or change slider values).  If this 
object is set to Gesture, everything else in the quadrant is ignored.  If 
the mouse mode is Fingers, everything on the screen is ignored and any 
click is treated as a Fingers click.

The next six lines in each quadrant determine how sliders are affected if 
the quadrant mode is either Sliders or Both.  The Absolute X and Y values 
are used to have the slider track the absolute position of the mouse 
within the quadrant.  If a slider number is specified for absolute x, 
clicking at the left edge of the quadrant sets the slider to its minimum 
value, while clicking at the right edge sets the maximum.  The Follow 
flags determine whether dragging the mouse during a gesture continues to 
affect the slider.

The next four lines are used only to control sliders when the mouse is 
dragged in one of the four main directions after the press.  The first 
parameter on each line is the slider number, the second is a scale factor, 
which may be positive or negative.  If the scale factor is 0, dragging 
will have no effect.  The third parameter is the Init flag.  If it is on, 
initiating a gesture will set the slider to the Init value to the right of 
the flag.

The two bottom lines affect the gesture when the quadrant mode is Both. 
The x and y bracket objects determine whether X and Y positions are to be 
treated normally, centered around the quadrant center, or ignored.  The 
Drag x and y flags determine whether dragging in the x and y direction 
will have the normal effect on a gesture.
        
THE AX OPTIONS PAGE

Clicking on Ax Options brings up a menu with seven pairs of toggle 
switches and a variety of other objects.  The toggles switches are in 
pairs, one for the left mouse and one for the right.  Two of these pairs 
duplicate switches available on the bottom line.  The rest are:

Mono Gliss     Causes glissandos to send note off events after note ons, 
               which can prevent retriggering on mono patches.

Repeat Gliss   When this switch is off, a repeating glissando does not 
               retrigger by mouse motion.  When it is on, both mouse 
               motion and the repeat retrigger the gliss.  This also 
               effects playback of timed glisses, as described above.  Can 
               also be switched by pressing ` during a gliss gesture.

Seq  Reset     If this switch is on, changing the sequence being played 
               while a gesture is playing causes the new sequence to play 
               from the beginning.

Record Holds   If record is enabled, this switch enables the recording of 
               holds created by the button.

Timed Gliss    When this switch is on, the minimum time between glissando 
               notes is the time separation, or the notes adjusted 
               sequence time.

Also on the Options page:

Align          When the align switch is on, the lengths of all sequences 
               recorded by the program are quantize to a multiple of the 
               align value.

Tap Quantize   These two values quantize the time separations used by the 
               tap tempo feature.  Like the repeat times, values are 
               entered at a resolution of 384 spb.

Record Length  This is a recording length in steps.  If the bracket to the 
               right is set to Off, it is ignored.  If it is set to Play, 
               any sequence recording will automatically end when the 
               length, in steps, is reached and the new sequence will be 
               looped as a hold.  If it is set to Play/Rec, the next note 
               will start a new recording, creating mouse play 
               Frippertronics possibilities.

Min Events     The minimum effective length of a sequence whose length is 
               reduced with the ] or = keys.

Echo Channel   A channel for sending controllers to be rechannelize to the 
               last channel used by either or both buttons.  Useful if you 
               are using one or both buttons to play on one channel at a 
               time and switching channels a lot.  The bracket object has 
               four states, off, left, right and last.  The program 
               rechannelizes controller messages on the echo channel to 
               the last note played by a gesture or held gesture on the 
               selected button(s).  Be careful!  It will be very confusing 
               if you echo onto multiple channels playing at once. 
TEMPO TABLES

The tempo tables contain the tempo adjustments or time separations that 
will be selected for an active gesture if a function key is pressed while 
the function keys are in tempo mode.   If no gesture is active when the 
function key is pressed, the next gesture started will use the selected 
value.
        
B/A  V/A       These sets of 16 switches allow breath controller or volume 
               data to be converted to after-touch.  A lot of instruments 
               respond to after-touch, which is an awkward controller to 
               use with a mouse play program.  I usually merge controllers 
               from an MCS2 which can send all flavors of CC messages, but 
               does not send AT.  I don't use these much now that I have 
               sliders.

THE TOGGLE SWITCHES PAGE

A number of additional switches are on a page reached by selecting Toggle 
Switches from the menu.

Left Shift 
Holds          This switch enables creation of holds by releasing a 
               gesture with the left shift key down.

Rechannelize 
Seq Starts     This switch affects mouse play modes for which P2 is a MIDI 
               channel for rechannelization.   If it is on, P2 can moved 
               'past' channel 16 and be set to start a sequence instead of 
               playing a note.  The specified sequence is started, 
               transposed in pitch by the difference between the note that 
               would have played on C4 and transposed in velocity by vel - 
               64.  Seq start values of P2 are shown in red on a color 
               monitor.

Seq Cycle 
Trig           When this switch is on and the ? key is used to terminate a 
               recording with the next mouse press, it will cause the 
               program to also end the recording and start playback when 
               the sequence played by the current gesture loops.

No Fingers 
Recording      Disables the recording of Fingers and external MIDI data. 
               Note that recording of Fingers data will not start in any 
               case unless return is pressed to start a recording.  The 
               RECORD DISABLED button on the Fingers menu should be 
               ignored.

Mouse state 
tempos         If this switch is on, selecting a mouse state (see below) 
               copies the tempos as well as the mode and parameter 
               settings.

Control/Tempo  This switch causes the Control and Left Shift keys to 
               modify gesture tempos as described in the modifier keys 
               section.

Alt/Pause      This switch turns the Alternate key into a pause button for 
               current gestures only.

Rec Play 
Trig           This is like sequence cycle trig, but the trigger occurs on 
               the next note of the current gesture, instead of waiting 
               for a sequence to loop.  Both of these features play back 
               the sequence untransposed, but allow dragging.  They give 
               some interesting extended improvisational capability.

Mouse State 
Programs       This switch enables the sending of programs when a new 
               mouse state is selected.

No Velocity 
Mix            This switch disables velocity mixing when the DblSeq mode 
               is used.

Shift Resets 
Start/End      This switch causes a sequence play gesture started while 
               left shift is down to use the starting and ending points 
               used by the last gesture with that button, instead of 
               playing the whole sequence.

Control
/Sliders       This switch causes a mouse press with the control key down 
               to alter slider values and not start a gesture.

Vertical 
Qwerty Sliders Discussed in sliders section.

No Fingers     Disables playing of Fingers and selects the MIDI-Ax play 
               screen.


Automatic 
Slider Display Causes values changed by sliders controlled from MIDI, 
               Fingers, or gestures to be updated on screen.  Useful to 
               keep track of what's going on when setting up a piece, but 
               should usually be off to conserve CPU power when actually 
               playing.

Programs Start 
Sequences      If this switch is on, program changes on one of the MIDI 
               slider channels start sequences whose offsets are the 
               program number (0 - 127).  The sequence plays once.  A good 
               way to send a set of program changes or specific slider 
               values.  If the switch is off, programs 0 - 31 (or 1 - 32) 
               activate groups of programs from the Fingers Program Change 
               Table. Programs 0 -7 mimic the first 8 keys of the top row, 
               8-15 mimic the first 8 of the second row, etc.  Optimized 
               for use with devices like an MCS 2 that use banks of 8 
               programs.

Show Hold 
Channels       If this switch is on, the channel number or sequence key of 
               each hold started will be shown to its left.

Update 
Slider Numeric If this switch is on, as sliders change the numeric value 
               will be shown on the screen.  Better for setting up than 
               play.

Qwerty Slider 
Pairs          See sliders section.

Sequence Change 
Delay          If this is on, changing the sequence of a gesture will not 
               affect the gesture until the original sequence would loop.

Channel 
16 Drums       Disables pitch transposes for channel 16.  This does not 
               affect transposes specifically directed at channel 16, or 
               transposes of a Fingers line playing on 16.

New Segment    Resets Pitch

New Segment    Resets Vel

These flags cause a song to reset any transposes made by the user when it 
advances to a new segment.

Show Slider Names
Show Slider Qwerty
Show Slider Values  Enables different types of slider informational 
                    display on the initial MIDI-Ax screen.  Disabling them 
                    avoids screen clutter and is recommended if you don't 
                    need them.

Record Qwerty
/Fingers       Activates recording for notes played by sequences that were 
               started with hidden sequence starts, by Fingers, or as 
               holds.

Auto Finger 
Elements       Causes any change in a Fingers element value caused by a 
               slider to be shown on the screen, even if the Auto display 
               toggle is off..

MOUSE STATES

Mouse states provide the only way of storing presets in the program.  A 
mouse state contains a mouse play mode, its two parameters, the settings 
of most of the switches that are independent for the two buttons and the 
repeat and reset times and adjustments.  Program changes can be added 
using the edit mouse state option.
        
Mouse states can be saved using the Save Mouse State menu option or the 
Str qwerty keyboard modes.  They can be recalled by using one of the Get 
keyboard modes, (LeftGet, RghtGet and GetNext,).  Note that tempo 
information and the reset switch setting are not gotten unless the Mouse 
state tempos switch is on.  They can also be recalled using the Key 
Overrides feature.

Mouse states are automatically given a name which is identical to the 
screen display of the state being copied.  The edit mouse state option 
allows you to change this name, add a description, or specify program 
changes to be sent when the state is selected.  These programs are not 
sent unless Mouse state programs is on.

Note that editing the name of the state DOES NOT change what it does, even 
if it looks like it should.  A reference list of mouse state names can be 
printed by clicking on Print Mouse States.  A list of names and 
descriptions can be printed by shift clicking.

KEY OVERRIDES

Key overrides allow you to redefine the meaning of any qwerty, function, 
or numeric key to change anything in the control line.  When you select 
Key Overrides, the program will display all active overrides and ask for 
the key you wish to change.  Press a key in any of the three groups to 
create or change the override for that key.  You can specify any 
combination of Fingers mode, qwerty key mode, function key mode, numeric 
key mode and left and right mouse states.  Specify a mouse state of 0 if 
you don't want this feature. 

Obviously, you want to use keys which you do not expect to use for their 
normal meaning during the course of the piece.  I often use keys from the 
numeric keypad.  Pressing escape, followed by a key which has been 
overridden, will temporarily restore the normal meaning to the key.

The program will assume that you want to use any key that you call up from 
this page as an override and will set the active switch accordingly.  If 
you want to restore the normal meaning to the key, you must turn the 
active switch off.

HOLD QWERTY KEYS

Selecting this menu item allows you to specify the values used by the H 
Shift, H Tempo, Hold X, Hold Y and H T Set qwerty modes, as described in 
the section on qwerty keys.  Normally, you will want pairs of opposite 
sign for the modes that change rather than set values (all but H T Set).
Remember that the tempo mode will use the time sep or tempo adjust value, 
depending on whether the hold is using sequence times.  Also remember that 
127 and -127 in H Tempo are codes for double and half time.

FINGERS CHANGES

There are a number of changes to the Fingers part of the program.  One of 
the most powerful changes has been discussed in the Sliders and MIDI 
Sliders sections.  Sliders can control any element in the Fingers score 
and many other aspects of the Fingers part of the program.  Note that a 
line's pitch and velocity can also be transposed by sliders assigned to 
its MIDI channel.  This allows you to add two independent sources of 
transpose.  Sliders can also be controlled by the Fingers score itself. 
This allows, among other things, the lines to 'talk' to each other.  Other 
changes to the Fingers part of the program are discussed below:

STARTING SEQUENCES FROM FINGERS

A Fingers line can be made to start a KCS open mode sequence instead of, 
or in addition to, playing its note.  The started sequence will follow the 
pitch of the Fingers line that started it, unless it is on channel 16 and 
the Channel 16 Drums switch is on.  A pitch of C4 will result in an 
untransposed sequence.  To get a line to start sequences, set its program 
change number to a value between 112 and 127 (Shift clicking on the right 
ikon will get you to 120 , on the left back to 0).  The program will now 
interpret the S/L value as 1 more than a KCS open mode sequence offset 
number (i.e. a value of 1 refers to seq 1, 10 to seq A, 36 to seq 00, 
etc.). 

No program change is set when the PG value for a line  is >= 112.  If the 
program change table is used when a line has PG >= 112, the program number 
will be sent over MIDI, but the line will not be updated.  I promise a 
better interface in the future.

The way the sequence start works depends on the program number according 
to the following table:

112            Use the line's tempo adjustment, play the note as well.  Do 
               not follow the lines velocity.

113            Like 112, but use the default tempo adjustment instead.  
               (16 for 24 steps p beat, etc.)

114            Like 112, but force the started sequence to play on the 
               line's channel.

115            Like 114, using default tempo adjustment.

116-119         Like 112 - 115, but do not play the note.

120-127        Like 112 - 119, but the started sequence is transposed in 
               velocity according to the velocity of the note that would 
               be played.  64 gives no transpose.

If the note is played along with the sequence, it will use the S/L value 
normally.  This eliminates a level of control, but that won't matter with 
percussive sounds.  Different S/L elements can be made to use different 
modes of starting the sequence, as adding 128 to the S/L value is treated 
as adding 1 to the PG number.

LINKING LINES TOGETHER

If you look at the line control display of the Fingers screen, you will 
see that the areas in which you can click to move a line ikon to the 
bottom and set a constant value have been eliminated.  The only way to set 
a constant value is to create a 'virtual' column that is one element long 
using end of column markers.  You can still reverse the direction of a 
line ikon by clicking on one of the four arrows located next to each other 
in the line display.  These arrows will turn to *'s if the program gets 
confused and moves the ikon to the bottom.

To the right of the arrows are two objects that consist of the letter 'L', 
a one digit bracket object and the characters *TPVS.  The letter L stands 
for link and these objects can link lines together in a variety of ways. 
Each 'L' is a toggle switch for the object and if it is not lit up, the 
rest of the object is ignored.  If the bracket object shows a 1 - 4, the 
number is the number of the line to be linked and the linking will occur 
after every note.  Note that the line within brackets is linked to the 
line whose display is used. 

If the number is 5 - 8, subtract 4 to get the number of the line to be 
linked and linking will occur when the time series recycles.  Linking a 
line to itself will be ignored if the link is on every note, but can be 
used if the linking is on time series recycle.

The *, T, P, V and S are toggle switches which determine which aspects of 
the linked line are to be linked.  If the * is lit-up, the next note on 
the link line will be scheduled to play as soon as the programmed initial 
delay for the linked line has passed.  If the T, P, V, or S are lit-up, 
the corresponding line ikons will be moved to the top of their current 
columns. Column links will be ignored here.  Any combination of toggle 
switches can be lit up at one time.

OTHER CHANGES

When moving line ikons with the right mouse button, different ikons for 
the same line can be linked.  Control clicking links the pitch series, 
with the series moved, left Shift links Vel, Alternate links S/L and right 
Shift links all.  This is useful if several series have the same length 
and you want to keep them together.

Program changes received on one of the MIDI Slider channels send program 
changes from the Program Change Table, unless the Programs Start Sequences 
toggle is on.  Shift clicking on a rest element of either type turns it 
back to play.

The Program Change Table will be active if the qwerty mode is Fingers, 
unless the Fingers left mouse mode is Edit and the edit cursor is actually 
up.  Other keys that are used in Fingers edit will retain their MIDI-Ax 
meanings unless an edit cursor is up.

DISK I/O AND TEXT

The program supports three kinds of disk files and each is a super-set of 
the one before.  .FIN files are almost identical to those created by 
Fingers itself and are compatible with that program.  .APP files contain 
Fingers data plus all data that is unique to the MIDI-Ax, but do not 
contain any KCS data.  The .APP extension is an artifact of a previous 
working title of the program.  .CMB files contain everything a .APP file 
contains, plus the complete contents of the current  KCS .ALL and .ENV 
files. 

.FIN files are loaded or saved from the Fingers menu. .APP and .CMB files 
are selected from the MIDI-Ax menu.  Click on the initials for the file 
type you want.

Click on the word sliders on the Load line to load slider data only.  You 
will be loading from a .APP file, but the program will ignore all data 
except for slider definitions, MIDI slider assignments and gesture slider 
controls.

When the program is run as an MPE module, it will load DEFAULT.APP if it 
can find it.  If it is run stand-alone,it will load DEFAULT.CMB.

Clicking on Text will allow you to edit the KCS text area.  This will be 
saved in a .CMB file, or, of course, in a .ALL file from KCS if you are in 
MPE.  It will not be saved in the file types.

'HIDDEN' SEQUENCE STARTS        

There are several ways in which the program will start sequences without 
giving you any visual indication or, indeed, any way to interact with them 
other than by stopping them all with the Undo key.  All of these modes are 
polyphonic, i.e. many copies of the same sequence can play at once (unlike 
KCS open mode).  The various Seq St modes are described with the mouse 
play modes. 

If Rechannelize sequence starts is on, sequences can be 'rechannelized' to 
sequence starts.  Each note of the sequence will then be effectively 
replaced with an ST event for the specified sequence.  The current tempo 
adjust of the button controlling the gesture will be used.

ST events within sequences that are being played by gestures will be 
treated as sequence start events.  In this case, if the sequence that is 
playing is rechannelized, the sequence started by the ST event will be 
also.  Fingers lines can also start sequences, as described in the Fingers 
section.

Unlike sequences played by gestures or held sequences, hidden sequences 
ignore ST events.


-------------- end of file ---------------------------------------------
 
