# # midi devices config # dnew 0 "M Audio Delta 1010LT" rw dnew 1 "USB Midi Cable" rw dnew 2 "TR" rw dnew 3 "USB MIDI Interface" rw #dmtcrx {nil} dclktx {0 1 2 3} # setup some channels inew xp {0 0} onew xp {0 0} inew xp10 {0 9} onew xp10 {0 9} inew mwxt {3 0} onew mwxt {3 0} inew mwxt2 {3 1} onew mwxt2 {3 1} inew mwxt3 {3 2} onew mwxt3 {3 2} inew mwxt4 {3 3} onew mwxt4 {3 3} inew mwxt5 {3 4} onew mwxt5 {3 4} inew nord {1 0} onew nord {1 0} inew nord2 {1 1} onew nord2 {1 1} inew nord3 {1 2} onew nord3 {1 2} inew nord4 {1 3} onew nord4 {1 3} inew nord5 {1 4} onew nord5 {1 4} diev 1 {} doev 1 {} inew triton {2 0} onew triton {2 0} metrocf {non {1 3} 84 127} {non {1 3} 79 100} m rec # some filter rules # proc ctldrop ctlno { for i in [ilist] { fmap {ctl $i $ctlno} {none} } } proc ctlmap ic oc { for i in [ilist] { fmap {ctl $i $ic} {ctl [getc] $oc} } } # unmute all tracks proc nosolo { for i in [tlist] { unmute $i } } # mute all tracks but current proc solo { for i in [tlist] { mute $i } unmute [gett] } # turn on general midi (send sysex) proc gmon devnum { xnew gmon xadd $devnum { 0xF0 0x7E 0x7F 0x09 0x01 0xF7 } } # configure an instrument for a given general midi patch proc gmp patch { oaddev { pc [geto] ($patch - 1) } } # XV-2020 specific macros # configures a instrument with the given bank/patch or bank rhythm # bank 1,2,3,4 corresponds to preset A,B,C,D # patches/rhythmes are counted from 1 to 128 proc xvp bank patch { oaddev { xpc [geto] ($patch - 1) (87 * 128 + (64 + $bank - 1)) } } proc xvr bank patch { oaddev { xpc [geto] ($patch - 1) (86 * 128 + (64 + $bank - 1)) } } # generate a sysex message that set param rec # address (a0,a1,a2,a3) to val proc xvparam a0 a1 a2 a3 val { return { \ 0xf0 0x41 0x7f 0x00 0x10 0x12 $a0 $a1 $a2 $a3 $val \ 128 - ($a0 + $a1 + $a2 + $a3 + $val) % 128 \ 0xf7 } } # controllers config proc vol val { oaddev {ctl [geto] 7 $val}; } proc bal val { oaddev {ctl [geto] 8 $val}; } proc pan val { oaddev {ctl [geto] 10 $val}; } proc reverb val { oaddev {ctl [geto] 91 $val}; } proc chorus val { oaddev {ctl [geto] 93 $val}; } # set RPN/NRPN to the given value for the current chan proc rpn addr val { oaddev {rpn [geto] $addr $val} } proc nrpn addr val { oaddev {nrpn [geto] $addr $val} } # Set internal and external clock proc int_clk { dmtcrx nil } proc add_ext_clk { dnew 4 "j2a_bridge" ro } proc del_ext_clk { ddel 4 } proc ext_clk { dmtcrx 4 } proc nl_met { metrocf {non {1 3} 64 127} {non {1 3} 71 100} } proc tr_met { metrocf {non {2 0} 64 127} {non {2 0} 71 100} } proc xp_met { metrocf {non {3 9} 48 127} {non {3 9} 64 100} } proc nsoft name devnum input { dnew $devnum $input wo inew $name {$devnum 0} onew $name {$devnum 0} } proc dsoft name { ci $name let devnum = [igetd] idel co $name odel ddel $devnum }