-
Notifications
You must be signed in to change notification settings - Fork 0
Components
"The time has come," the Walrus said,
"To talk of many things:
Of shoes - and ships - and sealing wax -
Of cabbages - and kings -
And why the sea is boiling hot -
And whether pigs have wings."-- Lewis Carroll, Through the Looking-Glass
This section describes the things that make up a KeyMaster project: instruments, songs, patches, connections, set lists, named messages, and triggers.
The name "message" will be used to mean any MIDI message such as a note on message or a sysex message. A "named message" is the thing described below (basically a list of MIDI messages that has a name).
An instrument represents either a MIDI input coming from a controller such as a keyboard into KeyMaster or a MIDI output going from KeyMaster to a synth, drum machine, or other device. Each instrument specifies which MIDI port it uses by name and may have a display name that is different than the port name.
A song is a named list of patches that allow you to control your MIDI setup. A song can have any number of patches. You can step forward and backward through the patches in a song using the GUI movement keys or triggers.
When a song becomes the current song, its first patch is made the current patch.
A song also has a tempo for the master MIDI clock and a switch that determines if the clock should be started when the song becomes active.
A patch is a named collection of connections that can modify the MIDI data. See Patches for much more detail about how patches work.
A patch also has optional start and stop named messages. See below for more about named messages. The start named message is sent to all outputs used within a patch when the patch is entered, and the stop named message is sent to the same outputs when the patch is exited.
A patch can also send program changes to one or more output instruments when it starts. Each entry specifies an output instrument, a channel, and optionally a bank MSB, bank LSB, and program number. If a bank is specified the bank change (MSB first, then LSB) is sent before the program change.
A connection connects an input instrument to an output instrument. Both can either use all channels or one specific channel, which may be different for the input and the output. If an input uses one channel then all other incoming data on that channel from that instrument is ignored for this connection only. All of that input's channels may be used by other connections in the same patch. See Patches for more detail about how connections work.
A connection can optionally specify a zone: a range of keys outside of which all MIDI note (note on, note off, and poly pressure) data will be ignored. Since a patch can contain multiple connections, this lets you split and layer your controllers, sending some notes to some synths but not others, doubling up outputs in the same zone (optionally transposing notes), or even overlapping zones.
A connection can transpose all notes by a fixed value. If a transposition would cause a note number to be out of range (lower than 0 or higher than 127), then the note is filtered out.
A connection can modify controller messages by filtering them out, limiting them to min/max values, or translating them to a completely different controller number. When min/max values are specified, you can also make sure that the 0 and/or 127 values are always passed through even if they're out of the min/max range. See Patches#controller-mappings for more detail.
Each connection has a message filter with an independent on/off toggle for each MIDI message type: notes, polyphonic pressure, channel pressure, program change, pitch bend, controller, song pointer, song select, tune request, sysex, clock, start/continue/stop, and system reset. By default sysex messages are filtered out; all other types pass through.
A set list is a list of songs. A song can appear in more than one set list. One special set list called "All Songs" contains the list of all songs in alphabetical order. It's special because it can't be deleted, edited (except for creating new songs or deleting songs), or reordered.
A named message is a list of MIDI messages with a name. Named messages can be sent via triggers (see below) and can be sent when a patch starts or stops.
Named messages are sent to all output instruments. The MIDI bytes are sent from KeyMaster with channels unchanged. If a named message contains channel messages then the receiver will of course ignore all except those on the channels it's configured to receive.
A trigger looks for a particular "trigger input" and performs some action when it is seen.
Trigger Inputs:
- Any computer key press
- A non-sysex MIDI message from a particular input instrument
A single trigger may respond to both a key press and a MIDI message.
Trigger Actions:
- Move to next or previous song or patch
- Toggle the master MIDI clock (start or stop)
- Send a MIDI panic message (all-notes-off on all channels)
- Send a "super-panic": individual note-off messages for every note on every MIDI channel
- Send a named message
- Tutorial
- Components: songs, patches, connections
- Patches and connections
- Tips and Tricks
- Screenshots
- Changes between versions
- To Do list, including bugs and new features