GoZone is a MIDI mapping utility program for the ATARI ST. It provides the capabilities found in many hardware mappers. It would probably be best if you would print this off and go ahead and start the program. That way you can see what I'm talking about. Set up your equipment with a master controller into the ST's midi in and your slave units from the ST's midi out. Start out with each slave on a different channel. I have also included a separate file called MAP.DOC which describes three simple example maps I have included. GoZone works only on the monochrome, hi-res monitor. If you find this program to be of value please send a donation to the address listed below. Donations encourage me to continue working on projects like these. Send any suggestions as well. Have fun, Loren Claypool 157 Timberlake Circle Scott Depot, WV 25560 Gozone v1.0 - soft midi control Gozone is a realtime midi control program. It allows the user to define "zones" based on key value and velocity value. Four velocity zones are allowed per key zone and a maximum of 128 key zones (all possible midi notes) may be defined for a maximum of 512 discrete zones. An output midi channel is assigned to each zone. Within a zone the user may optionally define velocity and pitch adjustment values for the notes. Gozone also provides for controller mapping. The user may map continuous controllers to continuous controllers and switch controllers to switch controllers. For continuous controllers, Gozone automatically adjusts the LSB's to correspond with the MSB's (i.e., 32-63 are adjusted when the user adjusts 0-31). The user may assign any controller, along with pitch bend and channel pressure after touch to only work on a fixed midi channel or to be dynamic, that is, to be "active" on the last channel triggered until the controller is reset. All of this provides for extensive controller manipulation. Gozone also allows the user to define a patch change table whereby a patch change request from the master controller may change patch values on any or all midi channels. When the program is first started, a screen is displayed with a menu on the left side. The menu options are: Exit - end program Edit Map - change map values Save Map - save map to disk Load Map - load map from disk Print Map - print map values to printer Perform - enter performance mode. All screens in Gozone use the menu in the same place. Menu options are selected by pointing with the mouse and clicking the left button. Values are changed by using the left button to decrement and the right button to increment. A set of zone definitions, controller mappings, and the patch change table are collectively known as a map. Selecting Edit Map will allow the user to modify the map values. The user may save and load maps to and from disk. Gozone forces a file extension of MAP. Print Map allows the user to obtain a hardcopy of the map. The user may print all of the map, or select to print only the controller mappings, the patch change table, or the zones. Perform puts Gozone into Performance mode. The program uses the map setting to manipulate the data coming into the midi in port and sends it out the midi out port. To exit Performance mode, press F10. The Edit map menu contains the following options: Exit - return to the main menu Next Zone - page to next key zone Prev Zone - page to prev key zone Copy Def - copy the default velocity zone settings to the velocity zones of the current key zones Def Cntrl - define controller mappings Def Patch - define the patch change table Init Map - intialize all map settings A "key zone" is defined by a range of note values (i.e., a low note and a high note). The possible midi notes are 0 to 127. A "velocity zone" is defined by a range of velocity values. The possible velocity values are 0 (no velocity, used by some synths as note off) to 127. A velocity zone within a key zone defines a zone. The default zones at the top allow the user to specify velocity zone settings which may be copied to multiple key zones. It is provided merely as a short cut for zone definitions. With the exception of the pitch adjustment, the edit criteria for the default zones are the same as the performance zones. Gozone does not allow the user to leave gaps between zones or to define conditions which may lead to invalid midi values. The user will notice changes on the screen other than the value being modified. This is to correct possible error conditions. To set the boundaries for a key zone, the user adjusts the high note of the zone. The user may not adjust the low note. The low note of the first key zone will always be 0. The low note of the second key zone will be one note higher than the high note of the first key zone. The high note of the last key zone will be 127. From an initialized map the low note is 0 and the high note is 127. If the user decrements the high note, Gozone will create and maintain another key zone. Try lowering the high note of the initial setting (127) to, say, 120. Select Next Zone from the menu and notice that the low note of this key zone is 121 while the high note is 127. Select Prev Zone. Adjust the high note up by one. Select Next Zone. Notice the low note is now 122. Select Prev Zone. Adjust the high note back to 127. The next zone is now deleted. This approach to key zone definitions makes Gozone self-correcting and does not allow the user the chance to leave gaps in the map definition. The velocity split points in both the default and performance zones may have values of 1 to 127. Notice the initial value in velocity zone 1 is 127. In other words, no velocity zones have been defined. Reduce the split value to 126. Velocity zone 2 is created. When the value of velocity zone 1 is incremented back to 127. Velocity zone 2 is deleted. Experiment. The output channel is the midi channel to be triggered when a note satisfies the requirements for the key zone and the velocity zone. The output note may be modified by a velocity and/or pitch adjustment to be described below. Notice the output note need not be the note played nor have the same velocity value. The edit values for the velocity adjustment are as follows: 1) may be no lower previous velocity split point * -1 2) may be no higher than 127 - current velocity split point. This criteria prevents a value being outside the midi standard range. Example 1 2 3 Velocity split point 64 96 127 For velocity zone 1 the velocity adjustment may be from 0 to 63 " " 2 " " -64 to 31 " " 3 " " -96 to 0. The obvious use for this feature is to allow the triggering of a patch by striking the key very hard, with a velocity of between 96 and 127, but have the tone sound as if the key were struck with medium velocity. In this case a velocity adjustment value between -32 and -64 would cause the desired result. Of course the adjusting output velocity of a lightly struck note is just as easy. When editing the pitch adjustment value of the default zones, the possible values are -127 to 127 (in semitones). In the performance zones, the pitch adjustment may be: 1) no lower than the current low note * -1 2) no higher than 127 - the current high note. Whenever a pitch adjustment value becomes invalid, it is automatically reset to 0. Def Cntrl allows the user to create controller mappings. The user may specify whether a controller is to be dynamic or fixed as described above. Also, the user may assign the output value of a controller to be mapped by midi channel to another controller value. Example: The Mod Wheel (controller 1) may be mapped to breath control (controller 2) on midi channel 1, portamento time (controller 5) on midi channel 6, and volume (controller 7) on midi channel 9, while remaining defined as modulation of all other midi channels. Paging up and down allows access to all defined controllers. Again, Gozone automatically adjust's controllers 32 - 63 to conform to controllers 0 - 31. These controllers are LSB's or least significant bytes of the lower controllers and are used by some manufacturers to provide a finer degree of controller resolution. Also, remember that only continuous controllers may be mapped to continuous controllers and switch controllers to switch controllers. Def Patch allows the user to build a patch change table for a map. Patch 0 is sent as soon as the user enters Performance mode. Entries 1 thru 15 are sent when a patch change is intiated from the master controller. If necessary Gozone will start wrap back to the beginning of the table. Possible values for each patch/midi channel are 0 - 127 and blank. A blank specifies that no change message be sent for the current patch/ channel combination. The change values correspond to patch numbers in each synth so be sure the value is valid for the receiving unit.