Patterner 1.5
-------------

PATTERNER 1.5 is shareware. The shareware contribution is $15.--.
PATTERNER is (C) 1989-93 by Peter Kienle/B'Brox Productions.
This is a fully functional version, nothing is disabled.
You are encouraged to pass the software on to other interested
people provided you include ALL files from the PATTERNER folder.
We cannot be responsible for any damage resulting from the
(mis)use of this program.

PATTERNER was programmed entirely in assembly language. Resources
were created using ORCS (Otto's Resource Contruction Set), then
transformed into assembly source by Transrsc.ttp. All programming
and debugging was done with the fantastic Devpac 3.
Since many of PATTERNER's graphics routines are writing directly
to the ST screen it will not work in anything else but ST mono
(640x400x2) and ST medium (640x200x4) resolution. The program has
been tested on ST, STacy and MEGA STe. I doubt it will run on a
TT or a Falcon 030.

A version 2 is in the works which will hopefully will feature a
greatly improved interface and GEM compatibility.


I know that this is a very cryptic documentation. If there is ANY
interest in the program I will be happy to provide more information.

For information, shareware contributions, constructive
criticism, comments etc, please contact:

Peter Kienle
1502 S. Olive Street
Bloomington, IN 47401
Phone:(812) 334 3022
GEnie: M.HERZIG

Bloomington, July 15th, 1993

Table Of Contents
-----------------
Topic                                                    Line #

General Concept                                          103
Starting PATTERNER the first time                        205
Main Screen
   Active Items                                          226
   Passive items                                         564
Menu Selections
   PATTERNER 1.5                                         588
   File
   #------SYSTEM------#
      Save                                               597
      Load                                               620
   #------BEAT--------#
      Save                                               642
      Load                                               645
      Edit                                               648
   #----PATTERN-------#
      Save/ Load/ Edit                                   689
   #----SONG----------#
      Save/ Load/ Edit                                   694
   #---SCALE----------#
      Save/ Load/ Edit                                   699
   #----MIDI MACRO----#
      Save/ Load/ Edit                                   704
   #----CYCLES--------#
      Load                                               711
      Edit                                               715
   Create New Folder...
   Delete File...
   Quit
Edit
   *------Set Block----*
      Beat/Scale/M-Mac/Pattern/Song                      826
      Cut                                                830
      Copy                                               834
      Move                                               838
      Paste                                              842
      Delete                                             846
      Save Buffer                                        849
      Load Buffer                                        853
      Clear Buffer                                       857
Flags
   MIDI Macro enable                                     864
   Note Offs                                             867
   Velocity 0 = Note off                                 875
   F3 Tic Cycle                                          884
   F4 Beat cycle                                         888
   F5 Pattern Cycle                                      892
   F6 Song Cycle                                         896
   F7 Manual Cycle (1-4)                                 899
Defaults
   V Velocity...                                         908
   K MIDI Macros...                                      913
   (F1) Beat Micros...                                   930
   (F2) Scale Micros...                                  1018
   F MIDI IN Filter...                                   1059
   O MIDI Output                                         1074
   M MIDI Shut Up!                                       1080
-------------------------------------------------------------------

General Concept
---------------
Before running PATTERNER you should read this.
PATTERNER is an unusual MIDI program in that it is not a sequencer
or MIDI recorder in any way. If you are looking for a tool to
play Bach Fugues from your MIDI keyboard, PATTERNER is not for
you. If you don't have the time to work with the program for some
hours before you get out anything usefull you'll hate it.
Actually you can create 'conventional' music with it, although it
takes you a lot more time, and PATTERNER is certainly not made
for that purpose.

PATTERNER grew out of a rhythm programmer that would make it
easier to create drum patterns for MIDI drum machines (or sound
modules with drum sounds). This is where the 'graphic' approach
comes from. The core of the program is a grid with 32x16
positions that can either be empty or filled. When playback is
on, the first column of sixteen fields is scanned from bottom to
top. When the playback routine finds an empty field it sends a
MIDI Note Off message, a MIDI Note On when a field is filled.
After a slight delay (determined by playback speed) the next
column is scanned. This goes on until all 32 columns have been
scanned through - then playback starts over at first column. This
unit of 32x16 grid fields is called a BEAT.

When a filled field is found, what MIDI Note On is exactly sent?
What keynumber (pitch) and velocity (volume), what MIDI channel?
Attached to every BEAT is a list of note numbers and MIDI
channels. This list has sixteen entries, one for every of the
sixteen lines in the BEAT. If the playback routine finds a filled
field at column three, line five, it will look up the fifth
keynumber in the attached list and send the Note On message to
the MIDI channel also specified at position five in the list. By
the way, these lists are called SCALES. If you remember the
rhythm programmer, you would use SCALES to make your rhythm
compatible with different sound sources. Not all drum sound
sources have the same instrument on the same keynumber.

What about velocity?
Each filled grid position in a BEAT can hold an individual
velocity value. This value can be changed by special tools or
manually by the user.

Now you see why it is pretty far removed from 'ordinary'
sequencing. There are no complete MIDI messages stored in
PATTERNER but they are built at playback time from interacting
data structures.

Of course you can have more BEATS in memory than just one. In
fact up to 2^15 (32768) if your computer has enough memory.
Each BEAT can use its own SCALE - but doesn't have to.

When playing back you can of course switch BEATS to play back a
sequence of BEATS. Or you can build a list of what BEATS the
program should play back in what order. This is called a PATTERN.
A PATTERN can hold a list of up to 2^15 BEATS. If a PATTERN has
been played back to its last BEAT entry, it starts over.

Finally you can assemble playback lists for PATTERNS. In musical
terms you would think about a PATTERN as a measure or phrase. Put
PATTERNS in a playback list and you have created a SONG.

This works pretty much like you would work on older drum
machines.

Remember how every BEAT looks up its MIDI keynumbers in a SCALE
that is attached to it? There's another structure available that
can be attached to BEATS. Suppose you want to switch your sound
module to a certain patch before playing back a certain BEAT. To
do this you would enter MIDI data into a structure called a
MIDI MACRO. MIDI MACROs are just that: They can hold any MIDI
DATA chunk (wether it makes sense or not). If the BEAT is set up
to use an attached MIDI MACRO this data chunk is sent out through
the MIDI port just prior to scanning the BEAT grid. In our
example the MIDI MACRO will send its programm change data to the
sound module before the BEAT is scanned. MIDI MACROS can be
attached to BEATS in the same way like SCALES. Each BEAT can use
a different MIDI MACRO but doesn't have to.

You can see now that PATTERNER assembles MIDI data while it
runs. There is also something like a little 'programming
language', well, not quite. But suppose you were able to insert a
subroutine that would, for example, transpose a SCALE up by a
half note. PATTERNER checks if a BEAT uses a MIDI MACRO, sends
that data if required, then scans through the BEAT grid and then
jumps to a special routine that transposes the SCALE attached to
that BEAT. As the playback routine repeatedly plays over and over
through that BEAT the attached SCALE goes higher and higher.
Imagine if you could create such subroutines and use most of the
tools in them that you also use to work on the different data
structures (such as altering the contents of a BEAT, for
example). Add to that the possibility to jump into a different
user routine AFTER each scanned column, and after each finished
BEAT, and after each finished PATTERN, and each finished SONG.
Put different user routines in all of those places. Use random
numbers and look up parameters, do some math on them and feed
them back to where they came from. This system is called CYCLER
and comes with a library of user routines that can be used to
access most of PATTERNERs internal data.

Now start the program (if you haven't already)...

Starting PATTERNER the first time
---------------------------------
After loading an un-initialized copy of PATTERNER for the first
time you will be presented with the registration procedure.
Now, as I said, this is a fully functional version of the
program and the registration box is left from the time when
PATTERNER tried to be a comercial program.

While it doesn't matter what (or if) you fill in the Name &
Address dialog fields the first field MUST contain:
'Beeblexx'
That's the password and all characters have to be entered, case
is important, too. After this procedure is finished you will
never be confronted with this box again.


Main Screen
==============================================================
Active Items:
-------------

  00001 of 00001 : No Name..
Current BEAT display. Brings up BEAT BANK selector box when
clicked. You can also select BEAT BANK EDIT from the File menu or
press <CONTROL>B to get there.


  M-Mac
Reads 'M-Mac' if current BEAT does not use its attached MIDI
MACRO. Reads 'M-Mac' if current BEAT uses its attached MIDI
MACRO. Click on this display to toggle the flag on/off. Pressing the
<INSERT> button does the same.


  Beat Grid Display
A 32x16 fields grid in which positions can be filled or cleared using
the mouse. Click on a clear position to fill it or on a filled
position to clear it. Works like the zoom mode in many drawing
programs. All positions that are filled are set to the Velocity
Default value (see Velocity in Defaults menu). The velocity
of individual filled Grid positions can be altered by
ALTERNATE/left-clicking. This will bring up the Velocity box.
Individual filled positions' velocity can be increased by holding
down the right mouse button while pressing the left mouse button over
the respective GRID position. Note that the velocity is displayed in
steps:
Value displayed                        Interpretation
-----------------------------------------------------------
Mono  Color                            Decimal  Dexadecimal
-----------------------------------------------------------
0     crossed                          0        $0
1     black 2                          7        $7
2     green 2                          15       $F
3     red 2                            23       $17
4     black 3                          31       $1F
5     green 3                          39       $27
6     red 3                            47       $2F
7     black 4                          55       $37
8     green 4                          63       $3F
9     red 4                            71       $47
A     black 5                          79       $4F
B     green 5                          87       $57
C     red 5                            95       $5F
D     black 6                          103      $67
E     green 6                          111      $6F
F     red 6                            119      $77
M     red/green/black                  127      $7F
-----------------------------------------------------------


  Sixteen Manual Sound Buttons
(vertical row to the left of the Display Grid).
Left-clicking on any of these fields sends a MIDI Note On message.
The keynumber and MIDI Channel are looked up at the corresponding
position in the attached SCALE. This uses the default velocity.
Right-click to send a Note Off. You don't want to use this to play
along live but only to hear what notes are on which channel - control
purposes.


  Sixteen Mute Buttons
(vertical row to the right of the Display Grid).
A selected mute button silences the respective playback channel. Can
also be used for testing things. Mutes are set/cleared by
left-clicking. ALTERNATE/Click to set/clear all mutes. CONTROL/Click
to reverse current selection pattern.


  Speed:<SYS>
BEAT internal playback speed control. Left-click over this display
to let the current BEAT use either the system speed (<SYS>) or the
BEAT's internal speed (00120). Hold down the right mouse button while
left-clicking to take over the current system speed as the BEAT's new
internal speed. Every BEAT can use either the system speed or its own
independent internal speed.


  Tics:00
Every BEAT can have from 1 to 32 columns, called TICS. Click this
display to bring up the Edit Beat Tics box.
   Beat Number:00001 <not editable>
   Name: No Name.. <editable>
   Select Beat Tics:
   12 16 24 32 User:
Select pre-defined value or enter user value (1-32) in User field and
select User button. Exit with OK to take new settings over.


   BEAT BANK Scroll Bars
(at the very bottom of the Grid Display window)
Use arrow buttons to scroll forward/backward through the BEAT BANK.
This wraps around if at beginning/end of BANK contents.
Grab slider box to move bigger distances.


>>Stuff on the right screen half
  Edit Pattern
Each PATTERN represents a list of BEATS that will then be played back
in this order upon PATTERN playback. This button brings up the
PATTERN EDITOR.
   <EDIT PATTERN> Number:00001 Name:No Name...
      Number/Name of PATTERN can be used to search by entering number
      or name and double-click. Search starts at end of PATTERN BANK.
   <SELECT BEAT> Number:00001 Name:No Name...
      Displays contents of BEAT BANK which are available to build
      PATTERN. Number/Name search is possible.
   >>Insert>>
      Click this button to insert currently selected BEAT into
      PATTERN at current osition. You can also double-click desired
      BEAT entry to insert it.
   Scrollbars/Arrow buttons in the BEAT BANK selector box work like
      normal.
   <INSERT BEAT> Number:00001 Name:No Name...
      Displays which PATTERN you are currently working on. These
      cannot perform a search.
   Scrollbars/Arrow buttons work normal.
   Clear
      Clears all contents from the current PATTERN.
   Delete
      Deletes the currently selected entry in the displayed PATTERN.
   Ready
      Exit PATTERN EDITOR.


  Edit Song
Each SONG holds a list of PATTERNS that will be played back in this
order. Works exactly the same like the PATTERN EDITOR.


  Stop
Playback stop button. Stops all playback operations. Pressing <ESC>
does the same.


  Channel Info Column
Displays the contents of the current SCALE in short form. Each column
entry can be clicked to select/de-select it. The selection pattern
in this column has a few purposes:
1) Some of the available graphic commands work only on selected SOUND
CHANNELS.
2) Many BEAT & SCALE Micro commands work only on selected SOUND
CHANNELS.
3) The selection pattern is used as a 16bit in/output parameter in
CYCLES.
ALT/click to select/de-select whole column
CONTROL/click to reverse current selection pattern.


  Graphic-commands
Switches between 'graphics-commands' and (extended) 'channel Info' if
clicked.

General about Graphic-commands:
Most graphics commands affect only selected SOUND CHANNELS (as in
Channel Info Column) in the currently displayed BEAT.

Clear
Clear all selected SOUND CHANNELS in grid.

Fill
Fill all selected SOUND CHANNELS in grid. The velocity value is set
according to the status of the Default Velocity box.

Invert
Clear all filled/fill all clear positions of selected SOUND CHANNELS.
Uses DEFAULT VELOCITY.

Undo
Retrieve previous contents of Display Grid from undo-buffer.

MirrorX
Mirror ALL Display Grid contents at X-axis. Uses DEFAULT VELOCITY.

MirrorY
Mirror ALL Display Grid contents at Y-axis. Uses DEFAULT VELOCITY.

Shift X
w/left Shift: Scroll all selected SOUND CHANNELS from right to left
with wrap-around.
w/left Shift+ALT: Scroll all selected SOUND CHANNELS from right to
left and don't wrap.
w/right Shift: Scroll right w/ warp.
w/right Shift+ALT: Scroll right w/o wrap.

Shift Y
w/left Shift: Scrolls contents of ALL SOUND CHANNELS up.
w/right SHIFT: Scrolls contents of ALL SOUND CHANNELS up.

MIDI Macro Launch Pad
Like pressing keys <0>-<9> on the number pad, clicking <0>-<9> in
this display will launch the associated MIDI Macros. See also 'MIDI
Macros...' in Defaults menu.


   (extended) Channel Info
Displays text comments from current SCALE instead of Graphics
commands panel. This is display only. The comments can only be
altered from inside the SCALE EDITOR.


  Update
Forces PATTERNER to udate the main screen according to Playback
parameters. For example the currently played BEAT doesn't necessarily
have to be the one displayed. This functions looks up its parameters
directly in the Playback routine.


  Pause
Pauses playback like on a tape recorder.


  (System) Speed Display
Up arrow raises Speed to maximum 255. Wraps around to 1. Down arrow
lowers Speed to minimum 1 and wraps around to 255. Playback Speed is
NOT a metronome setting! All BEATS that are played back use this
playback speed unless they are set to internal speed.


  B
Plays back current BEAT. At BEAT end it starts over. Hold down right
mouse button while doing this to display Number/Name of current BEAT.


  P
Plays back current PATTERN. At PATTERN end it starts over. w/right
mouse button to display Number/Name of current PATTERN.


  S
Plays back current SONG. At SONG end it starts over. w/right mouse
button to display Number/Name of current SONG.


  Scale:
This switches between Scale:/MIDI Macro mode.

Scale mode:
Display number and name of displayed SCALE. Use arrow buttons to
scroll up/down through the SCALE BANK. Wrap-around.

Use
Will tell the current BEAT to use the currently selected SCALE.

Edit
This brings up the SCALE EDITOR.
   Top row:
CH = SOUND CHANNEL selectors (like MAIN PAGE Channel Info column)
Key/Note = Keynumber/Note name
MIDI-CH = MIDI channels
User Name = click here to edit comment column.
A cursor will appear in the top column field (Channel 0). Exit by
pressing <RETURN>.

   From left to right:
CHANNEL SELECTOR column. Works just like the Main Page thing. Most
SCALE edit functions are only affected if the CHANNEL is selected.

Select/De-select individual channels.
Select/De-select all by clicking with ALTERNATE
Reverse selection pattern by clicking with CONTROL

Display of current MIDI Note numbers, note names, octave.

These values can be entered/edited in two ways.
1) Use edit buttons on the right side in this box. Only selected
channels are affected.
2) Any MIDI keyboard (or transmitter) capable of sending MIDI Note On
messages can be hooked up to the ST. Pressing a key on the MIDI
keyboard will be received from PATTERNER and used to set ALL selected
SOUND CHANNELS according to the received note.

MIDI Channels
Use up/down arrows to raise/lower MIDI channels of ALL selected SOUND
CHANNELS.

Comment column
Edit contents by clicking over User Name.

Current Scale selector
Displays Number/Name of current SCALE.
Use up/down arrows to scroll through SCALE BANK.

Scroll up/Scroll down
Scroll the complete contents of the current SCALE up or down w/ wrap.

Trans up/Trans down
Raise/lower the keynumbers of all selected SOUND CHANNELS by 1.

Octave up/Octave down
Raise/lower the keynumbers of all selected SOUND CHANNELS by 12
(octave).

Reset MIDI channels
MIDI channels on all selected SOUND CHANNELS are set to channel 1.

Ready
Exit SCALE EDITOR.


>>Main Page box:MIDI Macro Mode
Displays Number/Name of current MIDI Macro
Use arrow up/down keys to scroll through the MIDI MACRO BANK w/wrap.

Use
Attach the current MIDI MACRO to the current BEAT.

Edit
Brings up the MIDI MACRO EDITOR.

   MIDI MACRO Text Editor on the left:
Lets you enter all necessary characters (0-9,a-f,comma,space). The
edit keys (arrow up/down/left/right, etc) work pretty much as
expected. When entering data you can enter hexadeciaml numbers using
a '$' character (such as in '$f0'). Enter binary numbers with a '%'
sign ('%110011'). Decimal numbers can be entered without any special
character ('127'). You can use commas or blanks in between digits.


Compile (ESC)
PATTERNER tries to create MIDI bytes (whatever that means) from the
numbers in the editor window. When displaying the compiled window
contents it will try to put MIDI status bytes (numbers above 127, bit
7 set) on the beginning of a new line.

Clear
Clear current MIDI MACRO.

Help (HELP)
Bring up help text (quit with keypress).

   Display format:
Hex - display in hex numbers
Dec - Display in Dec numbers
Symbolic - not implemented!

Ready
Exit MIDI MACRO EDITOR (<RETURN> not possible!).



Passive items:
--------------

   Scale: 00001 No Name...
Attached SCALE display. Tells you which SCALE from the SCALE BANK is
currently attached to the displayed BEAT.


   M-Mac: 00001 No Name...
Attached MIDI MACRO display. Tells you which MIDI MACRO from the MIDI
MACRO BANK is currently attached to the displayed BEAT.


   POS
Mouse pointer position display. Whenever the mouse pointer is
anywhere over the BEAT GRID this will display its exact position.
This is hooked in to the VBL interrupt. While I can switch it off
when opening a dialog that I own, PATTERNER will continue the display
when you open a Desk Accessory. Looks ugly.


Menu Selections
===============

   PATTERNER 1.5
Brings up the info box. This contains data about memory usage of the
current system.


File
#------SYSTEM------#--------------------------------------------
Save/ Load

  Save
Save selected or all BANKS of the current system to disk. Brings up
the SAVE SYSTEM box with following information:
Path:(currently unused)
Beat Bank:
Pattern Bank:
Song Bank:
Scale Bank:
M_Macro Bank:
Cycles:(currently unused)
Fill in the desired name for each BANK you wish to save and select
the text field (so that it is white letters on black ground).
PATTERNER creates the correct file suffixes when saving.

Continue
Brings up the GEM file selector and asks for the name of the .SYS
file. A .SYS file stores a list of file names of all the BANKS it
saves.

Abort
Stop operation.


  Load
Use file selector to choose .SYS file. When the .SYS file has been
loaded you'll see the LOAD SYSTEM box:
Path:(currently unused)
Beat Bank:<name of BEAT BANK>
Pattern Bank:<name of PATTERN BANK>
Song Bank:<name of SONG BANK>
Scale Bank:<name of SCALE BANK>
M_Macro Bank:<name of MIDI MACRO BANK>
Cycles:(currently unused)
All BANK-file names of the SYSTEM are displayed. You can only load
parts of the SYSTEM by deselecting selected BANKS simply by clicking
over the name display.


==================================================================
Following operations are all BANK operations and work the same for
BEAT, PATTERN, SONG, SCALE & MIDI MACRO BANK

#------BEAT--------#
Save/ Load/ Edit ^B

  Save
Use GEM file selector to save BEAT BANK. Use .BEA suffix.

  Load
Use GEM file selector to load BEAT BANK.

  Edit
Bring up the BEAT BANK editor. Displays Number/Name of current BEAT
(the one selected in the window). You can execute a BANK entry search
by:
a) Fill in the full/partial name of the BEAT you are looking for in
the Name field. Then double-click the Name field. The search
routine is not very flexible and starts to search from the BANK end
to the first match. This obviously makes only sense in VERY BIG
BANKS.
b) Fill in the Number of the target BEAT and double-click to go
there.

Rename
Enter Name in Name field and click Rename to rename selected BEAT.

New entry
Brings up the new BEAT box with following information:
Number:00001
Name:No Name..(enter desired name of new BEAT)
Select number of Tics (12 16 24 32 & USER)
User value can any value from 1 to 32.
Click OK to create new BEAT. Cancel to abort.

Clear
The whole BEAT BANK is cleared (except for one entry which is
stripped off all data).

Delete
The currently selected BEAT is deleted from the BANK.

Use the scroll/arrow gadgets to move through the BEAT BANK as usual.

Load/Save Bank
These two buttons have the same function like Load/Save in the File
menu.

Ready
Exit BEAT EDITOR.


#----PATTERN-------#
Save/ Load/ Edit ^P
>>operates like BEAT BANK


#----SONG----------#
Save/ Load/ Edit ^S
>>operates like BEAT BANK


#---SCALE----------#
Save/ Load/ Edit ^A
>>operates like BEAT BANK


#----MIDI MACRO----#
Save/ Load/ Edit ^M
>>operates like BEAT BANK


#----CYCLES--------#
Load/ Edit       ^C

  Load
Load a .CYC file into PATTERNER. This will enable the CYCLE entries
in the Defaults menu.

  Edit
Brings up the CYCLE programmer.
There can be eight independent subroutines, which are created in this
dialog box. After creating a .CYC file in the CYCLE programmer it can
be loaded into PATTERNER. When the proper switches are activated the
created subroutines can be tied into the playback loop.

1) TIC CYCLE
Will be executed everytime a column of the edit GRID (TIC) has been
finished.

2) BEAT CYCLE
Executed after every finished BEAT.

3) PATTERN CYCLE
After every finished PATTERN.

4) SONG CYCLE
After every finished SONG.

5) MANUAL CYCLE 1
After pressing the <1> key.

6) MANUAL CYCLE 2
Press the <2> key.

7) MANUAL CYCLE 3
Press the <3> key.

8) MANUAL CYCLE 4
Press the <4> key.

Find some programming examples and tips in the file CYCLER.TXT.

In the CYCLE programmer box:
Select which CYCLE you want to work on:
TIC      BEAT     PATTERN   SONG
MANUAL 1 MANUAL 2 MANUAL 3  MANUAL 4

Reset
Clears the contents of ALL CYCLEs in memory.

>>Right side: CYCLER library
Displays Number/Name of currently selected subroutine. Name/Number
search in the library works like in the BANK selector.

ID:(yet unsupported)

>>INSERT>>
To insert currently selected library entry into the current CYCLE at
current position. (You can also double-click the desired entry in the
library to insert it).

Scroll/arrow gadgets work as usual. You CANNOT select routines below
10 as they are used in every CYCLE and CYCLER inserts them
automatically.

All entries in the library window are displayed like:
<number><name><[inputs outputs]>
For details see CYCLER.TXT.

Load Library
Use GEM selector to load .LIB file. This is what you should do first
when entering this dialog.

>>Right side: work CYCLE
Delete
Removes the currently selected entry from a CYCLE.

Clear:
Clears the currently displayed CYCLE (except default routines).

Display of Number: <position in CYCLE>
Display of Name: <routine name as in library>

In addition you see the CYCLE start routine and CYCLE END routine
neither is deletable.

Scroll/arrow gadgets work as expected.

Save Source
Saves the source code of ALL CYCLES. Use a .SRC suffix. This source
code actually consists only of index numbers referring to the routine
library.

Load Source
Load a CYCLE source code file. .SRC files are very
'library-dependent'. Don't try to load a .SRC file before loading a
library file. Also loading a .SRC file that was created with another
library can cause problems.

Save Code
This will check if inputs/outputs in all CYCLES match up and then
create an assembly file. Use a .CYC ending.

Ready
Exit the CYCLE programmer. This will not erase the contents of this
dialog.
----------------------------------------------------------------

Create New Folder...


Delete File...


Quit

================================================================
Edit
*------Set Block----*

   Beat/Scale/M-Mac/Pattern/Song
Select block start/end in desired BANK. PATTERNER will not accept
overlapping end/start markers.

   Cut
Copy selected block to buffer. Leaves source BANK untouched! After
this operation PASTE, SAVE BUFFER are available.

   Copy
Inserts the selected block in front of the current selected BANK
entry. The edit buffer is not altered. Destination BANK=Source BANK.

   Move
Same like Copy although the selected block will be removed from its
BANK after the copy operation. Destination BANK=Source BANK.

   Paste
The current block buffer is inserted in front of the currently
selected BANK entry.

   Delete
The selected BLOCK is removed from its BANK.

   Save Buffer
The block buffer is saved to disk. (.BUF). The buffer will 'know'
from what BANK it came from.

   Load Buffer
A buffer can be loaded from disk. Again, the buffer data contains an
identifier so PATTERNER knows what type of data is in the buffer.

   Clear Buffer
Clear all buffer contents.

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

Flags

MIDI Macro enable
Globally enables/disables the use of MIDI MACROS for any BEAT.

Note Offs
If selected, PATTERNER will send out a MIDI NOTE OFF messages for
every clear GRID position. This produces usually a staccato effect
and also slows down the system. When this flag is off PATTERNER will
ONLY send Note On messages. However, you can control the length of
notes by entering a Note On with velocity 0 on the respective Sound
Channel.

Velocity 0 = Note off
If selected all GRID entries with velocity 0 will be interpreted as
NOTE OFF messages for the respective key.


>>The following menu entries are only selectable if you have loaded
a .CYC file. Each flag decides if the current system should use the
respective CYCLE routine

F3 Tic Cycle
Enable/Disable the use of the Tic CYCLE user routine AFTER playback
of each TIC.

F4 Beat cycle
Enable/Disable the use of the BEAT CYCLE user routine AFTER playback
of each BEAT.

F5 Pattern Cycle
Enable/Disable the use of the PATTERN CYCLE user routine AFTER
playback of each PATTERN.

F6 Song Cycle
Enable/Disable the use of the SONG CYCLE user routine AFTER playback.

F7 Manual Cycle (1-4)
Enable/Disable the use of all four Manual CYCLE user routines. If
enabled these routines can be launched at ANY time (during playback
or not) by pressing keys <1> to <4>.

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

Defaults

V Velocity...
This box lets you select the MIDI velocity default value. This value
is used by PATTERNER when drawing in the BEAT GRID, or with many GRID
fill operations.

K MIDI Macros...
In this box you can set each of the number pad keys <0>-<9> to launch
a different MIDI Macro. Simply select the key you wish to use and
then select the desired MIDI MACRO with the BANK selector.

--------------------------------------------------------------
General Microcommands:
One single simple operation executed on the currently selected BANK
item. Use the range control panel in each Microcommand box to:
Single - affect only current BANK item
Local - affect only selected block area (as selected in Set Block)
Global - affect ALL BANK entries
Redraw enable - to update the screen while making the changes.
Press the <F1> key to launch the currently selected BEAT MicroCommand
using the set parameters.
Press the <F2> key to do the same with SCALE MicroCommands.

(F1) Beat Micros...

   New Velocity
Set all filled GRID positions on selected SOUND CHANNELS to Default
Velocity.

   Up Velocity
Create a Velocity curve increasing from bottom to top of GRID.

   Down Velocity
Create a Velocity curve increasing from top to bottm of GRID.

   Left Velocity
Velocity curve increasing left to right. Only selected SOUND CHANNELs
affected.

   Right Velocity
Velocity curve increasing right to left. Only selected SOUND CHANNELs
affected.

   Random Fill
Fills all selected SOUND CHANNELs with a random pattern. Uses Default
Velocity.

   Random AND
Performs an AND operation with a random value on all selected SOUND
CHANNELS.

   Random Tics
Set TIC value of current BEAT to random value.

   Random Scale
Set current BEAT to use a random selection from the current SCALE
BANK.

   Random MMac
Set current BEAT to use a random selection from the current MIDI
MACRO BANK.

   Use Scale
Sets the current BEAT to use the current SCALE. This can be used to
set groups of BEATs to use the same SCALE.

   Use MMac
Sets the current BEAT to use the current MIDI MACRO.

   SYS/Speed
Toggle current BEAT between internal/SYS speed.

   Set Tics
Set the TIC value of current BEAT to the Tics value of current BEAT.
Makes sense if you want to make a group of BEATs have the same TIC
value like the one currently displayed in the GRID.

   Flip MMC Flag
Toggles BEAT MIDI MACRO enable flag on/off.

   Clear BEAT
Clear all selected SOUND CHANNELS in the current BEAT.

   Inc. Velocity
Increase velocity by 1 on all filled GRID positions on selected SOUND
CHANNELS. If values exceed maximum (M) they are wrapped to 1.

   Dec. Velocity
Decrease velocity by 1 on all filled GRID positions on selected SOUND
CHANNELS. If values are below minimum (0) they are wrapped to M.

   Rnd.Velocity
Sets all filled GRID positions on selected SOUND CHANNELS to a
random Velocity.

   Set Speed
Sets the internal speed of the current BEAT to the speed of the
currently selected BEAT. (Used to set groups of BEATS).

   Set MMC Flag
Sets the MMC flag in the current BEAT.

   Set SYS/Speed
Sets the current BEAT to use SYSTEM Speed.

   M.Cycle 1-4
Lets you launch MANUAL CYCLES 1-4 via BEAT MicroCommand.

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

(F2) Scale Micros...

   Transpose Up
Transpose keynumbers on selected SOUND CHANNELS of current SCALE up
by 1 half step. Numbers exceeding MIDI keynumber range start over at
minimum. Same command as used in SCALE EDITOR.

   Transpose Down
Transpose keynumbers on selected SOUND CHANNELS of current SCALE down
by 1 half step. Number below MIDI keynumber range start over at
maximum. Also used in SCALE EDITOR.

   Scroll Up
Scroll contents of all SOUND CHANNELS of current SCALE up. Wrap
around. Also used in SCALE EDITOR.

   Scroll Down
Scroll contents of all SOUND CHANNELS of current SCALE down. Wrap
around. Used in SCALE EDITOR.

   Reset Keys
Set keynumbers on all selected SOUND CHANNELS in the current SCALE to
0.

   Reset MIDI
Set MIDI channels on all selected SOUND CHANNELS in current SCALE to
1. Also used in SCALE EDITOR.

   Octave Up
Transpose keynumbers on all selected SOUND CHANNELS in current SCALE
up by one octave (12 halfsteps). Used in SCALE EDITOR.

   Octave Down
Transpose keynumbers on all selected SOUND CHANNELS in current SCALE
down by one octave. Used in SCALE EDITOR.

   M.Cycle 1-4
Launch MANUAL CYCLES 1-4 by pressing <F2>.

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

F MIDI IN Filter...
PATTERNER receives all incoming MIDI messages and stores them in an
internal buffer where they can be picked up from user routines.
This filter lets you control what gets into the buffer:
Filter Off: everything
Filter On: picks up only what you select
Get MIDI Note Number: you will find ONLY the actual MIDI note numbers
from Note ON/OFF commands. The rest of the MIDI message is
stripped.
Get MIDI Velocity: Get only velocity values. Strip everything else
off.
If both buttons are selected you will find MIDI note numbers followed
by velocities in the buffer. The MIDI status byte will be stripped.


O MIDI Output
Toggles between MIDI port output and internal sound chip output.
Internal Output uses the ST sound chip and plays only up to three
pitches at the same time.


M MIDI Shut Up!
Sends an all NOTES OFF message to all connected devices.
-------------------------------------------------------------------------
Appendix 1 - Keyboard shortcuts

<B>            Start BEAT playback
<ESC>          Stop any playback
<P>            Start PATTERN playback
<S>            Start SONG playback
<HELP>         Update main page
<UNDO>         Pause playback
<F1>           Launch BEAT MicroCommand
<F2>           Launch SCALE MicroCommand
<F3>           Toggle TIC CYCLE flag
<F4>           Toggle BEAT CYCLE flag
<F5>           Toggle PATTERN CYCLE flag
<F6>           Toggle SONG CYCLE flag
<F7>           Toggle MANUAL CYCLES flag
<1>            Launch MANUAL CYCLE 1
<2>            Launch MANUAL CYCLE 2
<3>            Launch MANUAL CYCLE 3
<4>            Launch MANUAL CYCLE 4
<INSERT>       Toggle BEAT MIDI MACRO enable flag
<V>            Open DEFAULT VELOCITY box
<M>            MIDI shut up!
<F>            Open MIDI In Filter box
<K>            Open MIDI MACRO keyboard box
<O>            Toggle internal/external sound
<CNTL/B>       Open BEAT BANK box
<CNTL/P>       Open PATTERN BANK box
<CNTL/S>       Open SONG BANK box
<CNTL/A>       Open SCALE BANK box
<CNTL/M>       Open MIDI MACRO BANK box
<CNTL/C>       Open CYCLE programmer
<ALT/T>        Open TICS box
<ALT/P>        Open PATTERN editor
<ALT/S>        Open SONG editor
<ALT/A>        Toggle main page SCALE/MIDI MACRO control box
<ALT/D>        Toggle between graphics commands/extended SCALE
               display
<ALT/U>        Use BUTTON on main page
<ALT/E>        Open SCALE/MIDI Macro editor
<NUMBERPAD/0>  Launch MIDI MACRO attached to this key
<NUMBERPAD/1>  Launch attached MIDI MACRO
<NUMBERPAD/2>  Launch attached MIDI MACRO
<NUMBERPAD/3>  Launch attached MIDI MACRO
<NUMBERPAD/4>  Launch attached MIDI MACRO
<NUMBERPAD/5>  Launch attached MIDI MACRO
<NUMBERPAD/6>  Launch attached MIDI MACRO
<NUMBERPAD/7>  Launch attached MIDI MACRO
<NUMBERPAD/8>  Launch attached MIDI MACRO
<NUMBERPAD/9>  Launch attached MIDI MACRO


Appendix 2 - MIDI data basics

Status byte    Data 1         Data 2      Description
-----------------------------------------------------
$80            note number    velocity    NOTE OFF
$90            note number    velocity    NOTE ON
$A0            pitch number   value       POLY PRESSURE
$B0            number         value       CONTINUOUS CONTROLLER
$B0            $7A            $00/$7F     LOCAL KEYBOARDS ON/OFF
$B0            $7B            $00         ALL NOTES OFF
$B0            $7C            $00         OMNI OFF
$B0            $7D            $00         OMNI ON
$B0            $7E            $00         MONO ON/POLY OFF
$B0            $7F            $00         POLY ON/MONO OFF
$C0            programm number            PROGRAMM CHANGE
$D0            value                      CHANNEL PRESSURE
$E0            low byte       high byte   PITCH BEND
$F0            manufacturerID data        SYSTEM EXCLUSIVE
$F8                                       TIMING CLOCK
$FA                                       SONG START
$FB                                       SONG CONTINUE
$FC                                       SONG STOP
$FE                                       ACTIVE SENSING
$FF                                       SYSTEM RESET

MIDI channels are present in the status byte in bits 0-3 (example:
NOTE OFF = $80 on channel 0, $85 = NOTE OFF on channel 5). Keep in
mind that PATTERNER and most MIDI devices display MIDI channels from
1-16. Internally this is represented from 0-15 or $0-$F.

--------------------------------------------------------------------
There are four weird sounding error messages you can get when you
load formerly unrelated BANKS (BANKS that have been created
independently):

Out-of-range-BEAT error in one or more PATTERN(s)
This happens if you load a PATTERN that tries to access BEATS not
present in the current BEAT BANK. To avoid any crashes PATERNER
resets all out-of-range accesses to use BEAT 1.

Out-of-range-PATTERN error in one or more SONG(s)
If you load a SONG that accesses non present PATTERNS. Again,
out-of-range accesses are reset.

Out-of-range-SCALE error in one or more BEAT(s)
Loading a BEAT BANK that tries to access non existent SCALES. All
out-of-range accesses are reset.

Out-of-range-MMac error in one or more BEAT(s)
Loading a BEAT BANK that tries to access non existent MIDI MACROS.
All out-of-range accesses are reset.
