File Downloads

12MB

[\]



ATARI (12MB)













































































































































































































MIDIMAX Demo Version 1.1
By Larry Herzberg
Copyright 1989 CodeHead Software
All Rights Reserved.
DEMONSTRATION PROGRAM NOTES
MAXDEM11.PRG is a demonstration version of MIDIMAX version 1.1. It
is identical to MIDIMAX version 1.1 in most respects, but the Save File
options have been disabled, and the Play option operates on a two
minute timer.
MAXDEM11.ARC may be freely distributed, but only in its original
.ARC form, complete with this text file and the example files
KEYBCTRL.MMX and PROGCTRL.MMX.
MIDIMAX is an extremely flexible MIDI program with many powerful
features. Here are just a few of the things it enables you to do.
>>>>> Create MIDI macros, extended series of MIDI commands, triggerable
by any MIDI event. Every MIDI macro has one trigger event and up to
eight triggered events. They are organized into "MIDIMACRO" files,
each containing up to sixteen independent macros. MIDIMAX 1.1 allows
you to keep up to eight MIDIMACRO files in memory at once, and to
switch between them either manually or via any MIDI trigger! That's up
to 128 MIDI macros resident in memory at any given time, and all it
takes is one MIDI macro to:
----> Set up your entire MIDI system with multiple program changes,
channel modes, song selections and more.
----> Remap controllers; for instance, convert incoming mod wheel data
into outgoing volume data.
----> Relay or filter out any particular MIDI event or general class of
events to or from any channel; turn your ST into an intelligent
thru-box.
>>>>> Remap the keyboard any way you like with MIDIMAX's "MIDICHORD"
feature. MIDICHORD allows you to:
----> Create harmonic maps covering every note from C-2 to G8. When
you include a given trigger note in such a map, MIDICHORD will output
up to 18 triggered notes on any channel or combination of channels.
This enables you to play things in real time that used to be impossible
for one human being to execute.
----> Keep up to eight MIDICHORD maps in memory at once, and switch
between them either manually or via any MIDI trigger!
----> Unlimited keyboard splitting! Using MIDICHORD, you can split a
single-channel controller into as many distinct key-range/channel zones
>>> MIDIMAX v1.1 Demo Program Notes <<<
as you like. And since any key can be assigned any note, you can even
divide one physical keyboard into several "logical" keyboards having
the same key-range. Then, using a MIDIMACRO file, you can route
different controls to different zones!
>>>>> Both MIDICHORD and MIDIMACRO are themselves fully
MIDI-controllable in Play mode. You can even use MIDIMACRO to turn
itself on and off!
>>>>> MIDIMAX can be run either as a program or a desk accessory. As
an accessory, it can be run right out of your sequencer or patch
librarian program, as long as those applications use the standard GEM
menu bar. One of the main advantages of accessories is that once
you've entered data into them, the information remains intact until you
turn off the computer, even if you run other programs in the mean time.
This can save you valuable setup time during a performance.
To run MAXDEM11.PRG as a desk accessory, just rename it
MAXDEM11.ACC and keep it on the main directory of your boot-up disk
(the one you have in drive "A" when you first turn on the computer);
then it will always register itself in the drop-down menu named
In order to fully understand how to implement all of MIDIMAX's
features, you should read the MIDIMAX manual, which includes both quick
reference sections and detailed tutorials. The manual is, of course,
included when you purchase MIDIMAX for $49.95 from:
CodeHead Software
Los Angeles, CA 90004
Major credit cards accepted.
Here are a few pointers on running MAXDEM11.PRG...
Always turn your controller on BEFORE you run MAXDEM11.PRG.
Turning it off and on while the program is running can have
unpredictable results.
Since MAXDEM11.PRG has a 2-minute Play mode time limit, it might
cut you off in the middle of some inspired flourish, with controllers
in various awkward positions and many notes hanging. To be polite, it
will then attempt to "re-normalize" your system. Here's what it does:
1) All triggered notes are turned off on all channels, individually
(not just using All Notes Off commands, which some synths do not
2) Sustain pedal (control #64) is turned off on all channels.
3) Mod wheel (control #1) is set to 0 on all channels.
4) Pitch Wheel is set to mid (no effect) position on all channels.
5) MIDI volume (control #7) is set to maximum on all channels.
>>> MIDIMAX v1.1 Demo Program Notes <<<
This is necessary because some synths remember their last MIDI volume
settings, even after they are turned off!
Although this is NOT a manual, the following section covers what
you should know about the Play Menu before experimenting with the
example files.
The Play Menu allows for every possible combination of Play modes.
Mouse clicks, key presses, and MIDI macros employing meta events (see
MIDIMAX manual) provide optional ways of changing Play modes at any
Simple Thru:
It's called "simple" because whatever comes into the MIDI-In port
is echoed to the MIDI-Out port without modification. When this button
is selected, it means that MIDICHORD and MIDIMACRO are both off
(although MIDIMACRO remains on "standby" in order to turn itself on via
MIDI if the proper trigger is received). When the "Simple Thru" button
is NOT selected, however, the thru function is still active unless you
have written a MIDI macro to explicitly filter out whatever channel
your controller is transmitting over (and have turned MIDIMACRO on, of
course).
MIDICHORD:
If there is at least one MIDICHORD map in memory, selecting this
button will activate MIDICHORD. Otherwise the button will be
disabled.
Striking the space bar will toggle MIDICHORD on and off.
MIDIMACRO:
If there is at least one MIDI macro in memory, selecting this
button will activate MIDIMACRO. Otherwise the button will be
disabled.
Striking any "qwerty" key on the computer (except for keys "1"
through "8", the spacebar, and Return) will toggle MIDIMACRO on and
If there is at least one MIDICHORD map and one MIDI macro in
memory, selecting this button will activate both MIDICHORD and
MIDIMACRO. Otherwise, the button will be disabled.
Of the four buttons listed above, only one can be selected at a
"Current MIDICHORD Map:" Buttons (F1 through F8):
If a MIDICHORD map has been loaded into (or created in) a given
buffer, selecting its corresponding button -- either by clicking on it,
pressing its associated function key (those big gray keys above the
ST's qwerty keyboard), or by including a MIDICHORD On/Map Change event
>>> MIDIMAX v1.1 Demo Program Notes <<<
as a triggered event in a MIDI macro -- will make it the "current" map,
that is, the one MIDICHORD will play if activated. If no file has been
loaded into a given buffer, or no map has been created there, its
button will be disabled. If the map in the selected buffer has been
saved to disk, its filename will appear in the box immediately
underneath these buttons. Otherwise the word "Untitled" will appear
"Current MIDIMACRO File:" Buttons (1 through 8):
If a MIDIMACRO file has been loaded into (or created in) a given
buffer, selecting its corresponding button -- either by clicking on it,
pressing its associated key (1 through 8 on the top row of the ST's
qwerty keyboard), or by including a MIDIMACRO On/File Change event as a
triggered event in a MIDI macro -- will make it the "current" file,
that is, the one MIDIMACRO will play if activated. If no file has been
loaded into a given buffer, or no file has been created there, its
button will be disabled. If the file in the selected buffer has been
saved to disk, its filename will appear in the box immediately
underneath these buttons. Otherwise the word "Untitled" will appear
Mute Function:
Whenever you turn off MIDICHORD or MIDIMACRO, or any time there is
a MIDICHORD map or MIDIMACRO file change, MIDIMAX makes sure that any
notes they might have been triggering are turned off. This prevents
the dreaded "hanging note" syndrome. MIDIMAX 1.1 has three ways of
doing this.
----> "Hands Off". When you select this option, play mode changes that
require muting will be delayed until the number of note-offs received
from the controller is equal to the number of note-ons received
(although the change you've requested will immediately appear on the
Play Menu). This effectively eliminates the need for muting
altogether, making such play mode changes much faster! You should be
aware, however, that your playing style will affect the way "Hands Off"
muting works. If your style is very legato (that is, if you do not
release a note until after the next one is played), you might not
achieve the desired result at the desired moment.
----> "Individual Offs". A record is kept of the last ten note-ons
received from the controller. Then, when muting is called for, those
note-ons are checked against the list of triggers stored in the active
MIDICHORD map and/or the active MIDIMACRO file (depending on the
current Play mode) and, if a match is found, individual note-off
commands are output for each trigger and triggered note. This method
is usually fail-safe (unless you play the keyboard with your forearms),
but it can be a bit slow, depending on the number of note-offs that
must be output.
----> "All Notes Offs" is usually a little faster than "Individual
Offs", especially if you're triggering a lot of notes with MIDICHORD.
It works by outputting sixteen All Notes Off commands, one for each
MIDI channel, each time muting is necessary. The only problem with
this option is that not all synthesizers "read" All Notes Off commands.
>>> MIDIMAX v1.1 Demo Program Notes <<<
Refer to your synths' MIDI specs, and experiment to see which mute
function works best on your system in any particular situation.
Allows you to link changes in MIDICHORD maps to changes in
MIDIMACRO files, or vice versa. If you link "MMO to MCD", selecting a
given MIDICHORD map number will also select the MIDIMACRO buffer of the
same number. Selecting a given MIDIMACRO buffer, however, will have no
effect on the current MIDICHORD map. Linking "MCD to MMO" reverses
this relationship.
If linkage is enabled, it is also active when a MIDI event triggers
a change, so if you've set up a a more complex relationship between
maps and macro files than a simple one-to-one correspondence (via
triggered events in MIDI macros), select the "None" button in the
"Link:" box.
MIDIMAX Menu:
Terminates Play mode and returns you to the MIDIMAX Menu. This
button can be selected with the mouse or by pressing Return.
The Play Menu retains all settings if you leave it to edit a file.
Demonstration Files
Two MIDIMAX bulk files (which contain all eight MIDICHORD map
buffers and all eight MIDIMACRO file buffers, along with their
associated filenames) have been included in MAXDEM11.ARC: KEYBCTRL.MMX
and PROGCTRL.MMX. To load either one into MIDIMAX, just click on "Bulk
Load" on the MIDIMAX Menu, then double-click on either filename when
the file selector appears.
These two bulk files are basically identical, but have one
important difference: KEYBCTRL.MMX uses a filtered key-zone on your
controller (C1 through G#1) to control MIDICHORD map and MIDIMACRO file
changes, while PROGCTRL.MMX uses a filtered group of program changes (1
through 9) to accomplish the same result. Both consist of functionally
equivalent MIDICHORD maps and MIDIMACRO files, but the maps have been
truncated in KEYBCTRL.MMX to allow for the filtered key-zone, and
"thru-macros" for program changes have been left out of all the
MIDIMACRO files in PROGCTRL.MMX to allow for the filtered group of
program changes. (Of course, outgoing program changes could be added
to the filtered group of program changes as triggered events, but since
each MIDI system is set up differently, you are the one most qualified
to do that).
In order for these demonstration files to work properly, you should
configure your system as follows:
1) Your controller MUST be set to transmit on channel 1, because
that is the channel these MIDI macros are set to respond to. If your
controller is capable of transmitting on several channels at once, you
should make sure that only one channel is routed to MIDIMAX. It's
perfectly alright to use a split keyboard, but not one in which the
>>> MIDIMAX v1.1 Demo Program Notes <<<
key-zones overlap; overlapping zones will cause MIDICHORD to
double-trigger notes. If you want to use overlapping zones, write a
MIDICHORD map to do this for you.
2) If you are using your controller also as a sound module, you
MUST turn Local Control Off; otherwise half of the macro files won't
work properly. If this can not be done manually on your controller,
you might be able to do it via MIDI. Try adding it (as a control
change) to the SYSSETUP.MMO macro file which has been included in both
bulk files, or to any other macro file (see MIDIMAX manual). The
control change that turns Local Control Off is #122 with a value of 0.
To turn Local Control On again, use control change #122 with a value of
3) Configure four sound modules to receive on channels 1, 2, 3, and
4 respectively. Be sure to turn Omni Off and Poly On on each of them.
These are the default settings on most synths.
4) Be sure to turn your controller on BEFORE running MIDIMAX, or at
least before entering the Play Menu.
5) While you are free to select maps and macro files manually with
the mouse or a key-press, I suggest that you use the MIDI triggering
system at first. This will insure that you're playing each MIDICHORD
map with its intended MIDIMACRO file.
6) To play either demo bulk file, first turn on both MIDICHORD and
MIDIMACRO on. Manually, click on Both or press the spacebar followed
by any qwerty key (other than 1 through 8, which control MIDIMACRO file
changes). Via MIDI, just hit C1 if you're playing KEYBCTRL.MMX; with
PROGCTRL.MMX, simply press program change #1 (NOTE: many controllers
are "off by one" in their program assignments; you might have to press
program 2 when I refer to program 1, etc. Also, make sure that your
controller is on the right "bank" of programs).
Now, for simplicity's sake, I'm going to describe only KEYBCTRL.MMX
in detail; afterwards, I'll explain the minor ways in which
PROGCTRL.MMX differs from it.
When you play KEYBCTRL.MMX, the following notes will trigger the
following changes in MIDICHORD maps and MIDIMACRO files:
********** C1 (MIDI note #36): **********
Turns on MIDIMACRO and selects buffer #1 (KEYBCTRL.MMO); it also
turns on MIDICHORD and selects map #1 (THRUX234.MCD).
KEYBCTRL.MMO includes "thru macros" for all control changes,
program changes, pitch wheel and aftertouch events.
THRUX234.MCD takes notes from your controller's transmission
channel (channel 1, in this case), outputs them and echoes them to
channels 2, 3, and 4.
********** C#1 (MIDI note #37): **********
>>> MIDIMAX v1.1 Demo Program Notes <<<
Selects MIDICHORD map #2 (DIMINSHD.MCD) and MIDIMACRO buffer #1
(THRUX234.MCD).
DIMINSHD.MCD is a simple C diminished chord scale, starting on A1.
********** D1 (MIDI note #38): **********
Selects MIDICHORD map #3 (CMAJ4TET.MCD) and MIDIMACRO buffer #1
(THRUX234.MCD).
CMAJ4TET.MCD is a simple C Major chord scale with root voicings and
passing chords, starting on A1.
********** D#1 (MIDI note #39): **********
Selects MIDICHORD map #1 (THRUX234.MCD) and MIDIMACRO buffer #4
(SUS_CTRL.MMO).
SUS_CTRL.MMO filters the sustain pedal and uses it to switch
between two MIDICHORD maps. Pressing the sustain pedal will switch to
MIDICHORD map #4 (BIG_SUS.MCD, which uses several major-sustained chord
voicings); releasing it will switch back to map #1.
If you are using your controller also as a sound module, be sure to
turn Local Control Off. If you can't do that, turn down its volume.
********** E1 (MIDI note #40): **********
Selects MIDICHORD map #5 (SPLITKEY.MCD) and MIDIMACRO buffer #5
(SPLITKEY.MMO). More than any of the other pairings of maps and macro
buffers, these two were written to be played together.
SPLITKEY.MCD effectively splits the keyboard into three zones.
Keys from A1 through B2 will trigger their notes on channel 2, C3
through F#4 will trigger their notes on channel 3, and G4 through C6
will trigger their notes on channel 4.
SPLITKEY.MMO filters out incoming notes on channel 1. It also
routes the mod wheel only to channel 2, the sustain pedal only to
channel 3, and the pitch wheel only to channel 4.
If you are using your controller also as a sound module, be sure to
turn Local Control Off. If you can't do that, turn down its volume.
********** F1 (MIDI note #41): **********
Selects MIDICHORD map #6 (MULTIKEY.MCD) and MIDIMACRO buffer #6
(MULTIKEY.MMO).
MULTIKEY.MCD splits the keyboard into four zones. A1 through B2
triggers notes on channel 1, C3 through B3 triggers notes on channel 2,
C4 through B4 triggers notes on channel 3, and C5 through C6 triggers
notes on channel 4. The main difference between this file and
>>> MIDIMAX v1.1 Demo Program Notes <<<
SPLITKEY.MCD is that the triggered notes are all in the same range
(MIDI octave 3). This effectively divides one physical controller into
four "logical" controllers.
MULTIKEY.MMO, unlike SPLITKEY.MMO, does not route different controllers
to different channels; all controllers are routed to all channels.
Trigger notes on channel 1 are still filtered out, however (the notes
you hear over channel 1 are triggered notes).
Once again, if you are using your controller also as a sound
module, be sure to turn Local Control Off. If you can't do that, turn
down its volume.
********** F#1 (MIDI note #42): **********
Selects MIDICHORD buffer #7 when a map resides there.
********** G1 (MIDI note #43): **********
Selects MIDICHORD buffer #8 when a map resides there.
********** G#1 (MIDI note #44): **********
Turns off both MIDICHORD and MIDIMACRO.
That's the main "system" of MIDICHORD maps and MIDIMACRO files in
KEYBCTRL.MMX. However, there are four other MIDIMACRO files included
in this bulk file which are not technically part of the system, but
illustrate some of MIDIMAX's other capabilities. MOD__VOL.MMO,
AFTERMOD.MMO, SYSSETUP.MMO and NO_MAP.MMO can each be accessed by
manually switching to MIDIMACRO buffers 2, 3, 7 and 8 respectively.
MOD__VOL.MMO reverses the standard functions of the mod wheel and
the MIDI volume pedal. When this file is selected, incoming mod wheel
data on channel 1 will be filtered and output as volume data on
channels 1, 2, 3, and 4, while incoming volume pedal data on channel 1
will be filtered and output as mod wheel data (interpreted by most
synths as vibrato) on channels 1, 2, 3, and 4.
Note that some synths do not recognize these data types, especially
MIDI volume.
When you're finished experimenting with this macro file, I
recommend that you exit it via MIDI by pressing one of the control keys
on the controller. That way, maximum volume settings will
automatically be transmitted on all four channels.
AFTERMOD.MMO filters incoming aftertouch data on channel 1 (either
channel pressure or poly key pressure) and outputs it as mod wheel data
on channels 1, 2, 3, and 4.
SYSSETUP.MMO demonstrates how to implement a complete system setup
using several MIDI macros that have been "chained" together by the same
trigger event, which in this case is program change #1. Pressing that
>>> MIDIMAX v1.1 Demo Program Notes <<<
patch change (remember that the numbering system on your controller
might be different) will initiate the following events:
Program changes 1, 2, 3, and 4 will be output over channels 1, 2,
3, and 4 respectively. Omni Off, Poly On and maximum MIDI volume
commands will be output over all four channels. The System Common
(non-channel) events Song Select #3 and Start will then be output,
followed by the MIDIMAX meta commands "Turn on MIDIMACRO and change to
buffer #1" and "Turn on MIDICHORD and change to map #1".
That is ALL this macro file was written to do. There are no
thru-macros included.
NO_MAP.MMO does precisely what it's name implies; unlike the other
MIDIMACRO files, which are meant to always function with MIDICHORD
maps, this file includes thru-macros for note-on and note-off events,
as well as all other necessary thru-macros. Although it can function
with a map, it shouldn't, since the trigger note will be echoed to all
channels, and in some cases twice.
PROGCTRL.MMX functions just like KEYBCTRL.MMX, except that program
changes 1 through 9 are substituted for notes C1 through G#1, there are
no thru-macros for program changes (except in NO_MAP.MMO), and all of
the MIDICHORD maps have been expanded to make use of the lower octaves,
filled with a simple thru map in most cases (since this generally
sounds better than chords in the lower octaves).
Although all of the MIDIMACRO files have the same names in both
bulk files (except for KEYBCTRL.MMO and PROGCTRL.MMO), be aware that
they do contain the previously mentioned differences; if you save them
individually, be sure to do so into two different folders.
Trouble Shooting
Symptom #1:
The thru-function appears not to be working when you are on the
MIDIMAX Menu or in Controller Entry mode on the MIDICHORD Editor.
First, make sure that the MIDI-Out of your controller is connected
to the MIDI-In of your computer. If it is, test the cable.
If that isn't the problem, make sure that your controller and sound
module(s) are configured to transmit and receive on the same channel.
Symptom #2:
Nothing happens when you try to enter notes in Controller Entry on
the MIDICHORD Editor, or when you try to enter any particular event in
Controller Entry mode during MIDIMACRO Event Entry.
First, check the MIDI cable.
>>> MIDIMAX v1.1 Demo Program Notes <<<
If that isn't the problem, your controller might be outputting MIDI
events in "running status" mode. In this mode, a "status byte"
identifying the type of event being output is not sent before every
packet of data bytes, but only when the type of event is changing.
Note-ons, note-offs, control changes, program changes, channel
pressure, poly key pressure and pitch wheel all have their own unique
status bytes, as do several other events. MIDIMAX can handle running
status just fine, but it's got to receive that first status byte so
that it knows what kind of data it's dealing with. If you hit some
program changes, then switch to Controller Entry and try to enter a
program change, MIDIMACRO won't receive the all-important program
change status byte; it will just wait patiently until it gets a status
byte of some sort.
Happily, there's a simple way to deal with this problem. Just make
sure that your controller outputs some other kind of MIDI event --
besides the one you want to enter, that is -- before you switch to
MIDIMACRO's Controller Entry mode. On the MIDIMAX Menu or in the
MIDICHORD Editor, there's no need to do this first; if the problem
crops up, just fiddle with some control other than whatever you are
trying to transmit, and then begin playing regularly again.
Symptom #3:
In Controller Entry mode on the MIDICHORD Editor, a given program
change button does not properly initiate the Next and Previous Trigger
options.
First, remember that some synthesizers output program change
numbers through MIDI that do not match up with the program numbers
written on the controller. Sometimes they are "off by one". If your
controller distinguishes between different banks of sounds (like
Preset, Internal, or Cartridge), they may be off by as many as
thirty-two or sixty-four. To see exactly what number is being output,
you can use MIDIMACRO's Controller Entry mode, then click on "Edit This
Macro" to see MIDIMAX's analysis of it.
If the numbering is correct, you might be encountering another
version of the "running status" problem (see Symptom #2, above). Some
controllers never output the same patch change twice, if there has been
no intervening event. If that's the case, you can simply alternate
between two consecutive patch change numbers (like 1 and 2) to utilize
the controller-actuated Previous Trigger option, or 5 and 6 to use the
Next Trigger option.
Symptom #4:
Sometimes when you are playing a file, you get a "MIDI Error" or
"MIDI Buffer Full" message on your controller or one of your sound
modules. Occasionally there is an audible glitch.
This annoying little problem can develop when you route too much
MIDI data through a synthesizer with a relatively small (or slow) MIDI
>>> MIDIMAX v1.1 Demo Program Notes <<<
buffer. It might occur when you're playing a large MIDICHORD file very
quickly, or when you're outputting more than four or five channels of
continuous controller data simultaneously. There's no way to really
cure this problem, but there are a couple of ways of "treating" it.
1) If it's your controller that's glitching (that is, if your
controller is also a sound module), try disconnecting it from the
MIDI-Out chain originating at the computer.
2) Configure your synths in such a way as to allow for the
transmission of continuous controller data over fewer channels.
Symptom #5:
When you output a large number of triggered notes via MIDICHORD, a
synthesizer lags behind your playing, and audible glitches occur.
Usually, the lagging synthesizer will be your controller, if it
also happens to be one of the sound modules you are triggering via
MIDICHORD. Some synths are faster than others when it comes to dealing
with large amounts of received MIDI data, especially if they're
simultaneously transmitting MIDI data. In general, it's best not to
use your controller as a MIDI-triggered sound module; if that's not
practical (or if the problem has nothing to do with your controller),
try splitting up your triggered notes between several synthesizers
receiving on different MIDI channels.
Symptom #6:
When you're running MIDIMAX as an accessory out of a sequencer or
patch librarian, either it doesn't work right, or the host program
doesn't work right.
Although MIDIMAX uses only standard operating system calls, there
is unfortunately no way to guarantee that it will run compatibly (as an
accessory) out of all other programs. Sequencers, in particular, often
reconfigure the ST's operating system at a very low level, and although
MIDIMAX checks for the most likely reconfigurations, it can't check for
them all.
If you discover an incompatibility, however, you can still run
MIDIMAX as an accessory off the desktop. This will save you some setup
time during a performance situation.
Thank you for your interest in MIDIMAX. Hope to hear from you
CodeHead Software
Los Angeles, CA 90004
>>> MIDIMAX v1.1 Demo Program Notes <<<


































































































































































Created by
CD2HTML (© 1997 by Falk Petro)