You are on page 1of 2

Command Line Options for MIDI Transformation Example with Midicable 2.

4:
Convert Controller to start-stop: Ctrl #5,Chn1, 64..127 = start, 0..63=stop
TR1=FFFF40,B00540,FA,1 (start)
TR2=FFFF40,B00500,FC,1 (stop)
Convert a controller to NRPN (#1,all channels) (eg. AWE32 cutoff)
TR1=F0FF,B001,00637F,03 ( add NRPN MSB-127 )
TR2=F0FF,B001,006215,03 ( add NRPN LSB-21 - AWE32 Filter Cutoff)
TR3=F0FF,B001,000600,03 ( add Data MSB 0 )
TR4=F0FF,B001,002680,01 ( convert Ctrl to Data LSB )
Convert Note Velocity to additional Pitchbend (funny "detuned Piano")
TR1=F000FF,900000,808040,01 (convert Note-On velo[0] to NoteOff event)
TR2=F0,90,E00080,03 (add pitchbend w. velocity to )
Convert Note Velocity to (additional) channel Aftertouch. All Channels
TR1=F000FF,900000,808040,01 (convert Note-On velo[0] to NoteOff event)
TR2=F0,90,A081,03 (add channel pressure w/ Data2)
Convert Note Velocity to Aftertouch and fix Note Velo to 127
TR1=F000FF,900000,808040,01 (convert Note-On velo[0] to NoteOff event)
TR2=F0,90,A081,03 (add channel pressure w/ Data2)
TR3=F0,90,00807F,01 (for all NoteOn set Data2 to 127
Fix Note Velocity to 127
TR1=F000FF,900000,808040,01 (convert Note-On velo[0] to NoteOff event)
TR2=F0,90,00807F,01 (for all NoteOn set Data2 to 127
Convert Active Sense to Bass Drum, MidiClk to HiHat
TR1=FF,FE,99247F,03
TR2=FF,F8,992C40,03

Reference:
TRx=MASK,TRIGGER,VALUE,FUNC
x = 1..4
MASK
up to 3 bytes (and a 4th obsolete byte)
TRIGGER
up to 3 bytes (and a 4th obsolete byte)
This 2 patterns are used to compare the message:
if ( (Message And MASK ) = TRIGGER ) then DoTransf(....)
the AND is a bitwise AND between the two 32bit values.
MASK and TRIGGER must be written in MOTOROLA Notation,
This has the advantage, that 90 and 9000 and 900000 is the same.
If this camparisom is true, then the Result is setted to VALUE,
but...
if first VALUE byte (status byte) is invalid (i,e, < $80)
then the message is not changed.
If channel is not masked, then it is unchanged.
if VALUE data bytes are invalid (Hi-bit set, $80), the original
data is kept. $81 uses the other data byte (data1<->data2).
A value of 008080 means unchanged message. Cryptic, but it is.
Some Patterns:
to match Controller on all channels, use TR1=F0,B0,...

Some Warnings:
You cannot split Notes by velocity into different Midi channels -
The NoteOff-events will get lost !

You might also like