Specifications
converter 1.5
2000 - 2005 urr Sound Technologies Inc.
53
IMPORTANT!
Whenever creating an
operation or program which
works with note on
note onnote on
note on
messages, also ensure that
note on
note onnote on
note on messages with a
velocity of 0 are dealt with
properly (for example, passed
over by the midi processor via
the use of the ‘byte-check’
operations), in the same way
as corresponding note off
note offnote off
note off
messages, in order to avoid
stuck notes.
midi input processor
The architecture of the midi processor is structured into 3 levels: the
process list
, which is the list of
programs performed (in sequential order) by the processor; a
program
, which represents a group of
operations;
and the
operations
(also performed in sequential order) which directly perform the midi
data modification through a number of
bytechecks
(or conditional verifiers) and
transforms
. Upon
receiving a complete midi message, the midi processor cycles through the process list to see if the midi
message type should be modified by any of the operations in any of the programs.
The specifics of this architecture are as follows:
•
the process list can contain up to 12 programs
•
each program can contain up to 12 operations
•
each operation consists of 1 statusbyte comparator
(found in the operation parameters menu), 3 data byte
checks, and 4 transforms which are performed if the
current midi message conforms to any of the data byte
checks used.
•
each operation functions on one specific midi message
type (statusbyte value)
•
more than one program or operation can modify a given
midi message (useful if the desired modification requires
more than 4 transforms to complete, such as sysex)
To illustrate how to apply this system to a practical task, let’s consider the design of a program to
perform a keyboard split function at middle C for incoming midi data on channel 1 that will send all note
messages below middle C out on channel 4.
There are two ways in which keyboards transmit note information; one
involves the use of both note on and note off messages, and the other
involves only note on messages which are considered note offs if their
velocities are equal to zero. The program should be designed to support
both methods of note off message transmission in order to function
correctly with all keyboard controllers; we will design our program to
actually convert note on messages with a velocity of zero to actual note
off messages to illustrate one of the ways in which converter can be used
to change the formatting of the midi stream.
Here’s how to implement our keyboard split program:
•
select an empty program slot in the process list (F2), in our case it
should be slot #1 (if there are other programs already on the
processor and you don’t know what they are, you can start with a
‘blank slate’ by pressing [Alt]-[L] and loading EMPTY.SET)
•
go into the program settings menu (F5), label the program as “keyboard split”, and set the
number
of operations
parameter to 3. It is a good idea to always set this parameter to the exact number of
It is a good idea to always set this parameter to the exact number of It is a good idea to always set this parameter to the exact number of
It is a good idea to always set this parameter to the exact number of
operations actually used in the program
operations actually used in the programoperations actually used in the program
operations actually used in the program in order to avoid possibilities for programming errors, even
when the other operations are left to their default values and have been untouched.
Now we have our program. The next step is building the three operations we need for this task:
•
enter the operations list for this program (F6) and select the first slot.
•
go to the operation parameters menu (F5), label the operation as “note on ch. 1”, set the
message
type
to 144 (note on channel 1), set the
# of byte checks
to 2 and the
# of transforms
to 1.
processlist
programs
operations
transformsbytechecks