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 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 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: BEAT internal playback speed control. Left-click over this display to let the current BEAT use either the system speed () 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 Name: No Name.. 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. 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.