Update: PatchMaster
is the new version of KeyMaster. It's written in Ruby, and
the Github repo has all
the source code.
The description below is for the C64/Atari ST version of
KeyMaster.
KeyMaster is no longer actively developed. What's worse,
the code is essentially lost: I have no way of reading the C64 or Atari ST
code any more, and I'm not sure where the BeOS code went. Some day, I hope to
rewrite it for Linux or Mac OS X.
Visit the old on-line help for
KeyMaster.
KeyMaster is realtime MIDI performance software that I
designed, wrote, evolved, and used live from 1986–1993. It allowed a
performer to totally reconfigure his MIDI setup instantaneously while playing.
With KeyMaster a performer can split controlling
keyboards, layer MIDI channels, transpose them, send program changes
and system exclusive messages, limit controller and velocity values,
and much more. At the stomp of a footswitch (or any other MIDI
event), an entire MIDI system can be totally reconfigured.
Songs are collections of patches. A patch is a
group of MIDI pathways on which sit patch elements that can
modify the MIDI data. The simplest pathway connects one MIDI device
directly to another. Chains are collections of songs, so you can step
through a night's set without touching the computer.
The first incarnation of KeyMaster was for the
Commodore 64, and I later ported it to the Atari ST and finally the BeOS.
KeyMaster's current features:
- Split the MIDI data into multiple paths, letting you layer synths.
- Transpose a MIDI channel.
- Split a MIDI channel (limit low/high notes).
- Send info (patch changes, controller values, sysex, MIDI clock
start, etc.)on patch
enter and send info on patch exit.
- System exclusive messages can be parameterized, so a MIDI controller's
value can be plugged into a sysex message.
- Display current song/patch name in a synth's display via sysex.
- Max/min, scaling, and inversion of values (controller, note velocity,
aftertouch, etc.)
- When receive specified controller change, program, note, etc., jump
to next patch, totally reconfiguring the entire MIDI setup
- new transposes, keyboard splits, program changes,
controller/velocity limits, controller/velocity remapping, etc.
- Remap controllers, within a channel or from channel to channel.
- Select program changes by name (currently requires hand-entry of
non-General MIDI program names).
- Panic button sends all-notes-off messages on all MIDI channels.
- Simple sysex librarian (this will probably become a separate
application).
- Save chains in separate files for night-to-night set changes.
Potential new features:
- Plug-in architecture for patch elements.
- Trigger playback of on-disk samples during performance.
- Record performance to standard MIDI files (simple sequencer).
- Play stored MIDI sequences along with live performance.
- Trigger playback of sysex files.
- Cross-fade between two MIDI instruments.
- More sophisticated filtering.
- Multiple instruments/channels treated as one virtual instrument.
- Merge MIDI inputs (many-to-one).
- One-to-many MIDI channel mapping (via virtual instruments).
- Functions (A+B, A*B, etc.) applicable to MIDI data.
- Use BeOS as realtime MIDI controller (e.g., via clock to a
software LFO).
- Setups stored in Be's database, which will allow queries, etc.
- Display MIDI input/output in realtime (good for MIDI setup debugging).
- Crank video-on-disk out to video output, triggered by MIDI events.
- Realtime generation of audio data (subtractive synthesis, additive
synthesis, FM synthesis) triggered, modified, or played by MIDI
data.