# Import UserActionsBase to extend it.
from ClyphX_Pro.clyphx_pro.UserActionsBase import UserActionsBase
## from variables.py import *
source_vars=[
["position","sourcename","SENDLetter","MIDI CH","MIDI CC","source-led--note"],
[1,"input","-",1,102],
[2,"Pedalboard","K",1,104,12],
[3,"Distortion","I",1,105,24],
[4,"microcosm","E",1,106],
[5,"blooper","C",1,108],
[6,"mtlasm.856","B",1,109],
[7,"MOOD","J",2,105],
[8,"tensor","A",1,105],
[9,"ottobit jr.","D",2,108],
[10,"H9 exevntide(DESK)","G",2,110],
[11,"CXM 1978","F",2,112],
[12,"Volante","I",2,102],
[13,"MIC1 - Input 9","-",1,110],
[14,"MIC2 - Input 10","-",1,111],
[15,"MIC3 - Input 11","-",1,112],
[16,"MIC3 - Input 12","-",1,113],
]
submix_vars=[
["Position","NAME","mono(1)/stereo(2)","MIDI CH","MIDI CC","Ableton IN","RME IN"],
[1,"re-record",2,13,104],
[2,"Pedalboard",1,13,106],
[3,"Filter",1,14,108],
[4,"microcosm",2,13,108],
[5,"blooper",1,13,110],
[6,"856mtlasm",1,13,111],
[7,"MOOD",1,14,107],
[8,"tensor",1,13,107],
[9,"ottobit",2,14,110],
[10,"H9 Desk",2,14,112],
[11,"CXM 1978",2,14,114],
[12,"VOLANTE",2,14,104],
[13,"PHONES",2,13,112],
[14,"MAIN OUT",2,13,116],
[15,"PHONES2",2,13,114],
[16,"ATEM",2,14,102],
]
## transition Hotfix for old mixer matrix
mic_matrix=[0]*4

SOURCES=('INPUT','Pedalboard','Dist','Microcosm','blooper','856','MOOD','Tensor','ottobit','H9','CXM','Volante')
TARGETS=('Rec','Pedalboard','Dist','Microcosm','blooper','856','MOOD','Tensor','ottobit','H9','CXM','Volante')
SOURCELIGHTS=('11','9','0','10','19','16','18','17','8','2','1','3','')
VOLLIGHTS=('G0','D#0','E0','F0','F#0')
INPUTS=('BASS MIC (1)','INP2 (Pickup)', 'INP3', 'Mic84 (4)')
INPLIGHTS=('G#0','A0', 'A#0', 'B0')
EXPSOURCES=("fcb-exp1", "fcb-exp2", "fcb-exp3", "fcb-exp4", "moogexp")
EXPTARGETS=('\"M-CXM\" / DEV(\"CC-CXM-1\") p7 b1','\"M-Trem\" / DEV(\"CC-Trem-1\") p1 b1','\"M-Phaser\" / DEV(\"CC-Phaser\") p2 b1','\"M-Strymon\" / DEV(\"CC-Strymon-1\") p8 b1','\"M-Moog\" / DEV(\"CC-MOOG-MP201\") b1 p1','\"M-Whammy\" / DEV(\"CC-Whammy\") p1 b1','\"M-H9\" / DEV(\"CC-H9-p2\") p8 b1;','\"M-microcosm\" / DEV(\"CC-microcosm-1\") p3 b1','\"M-Tensor\" / DEV(\"CC-Tensor-1\") p8 b1','856','\"M-MOOD\" / DEV(\"CC-MOOD-1\") p8 b1','\"M-blooper\" / DEV(\"CC-blooper-2\") p8 b1','\"M-otto\" / DEV(\"CC-otto-1\") p8 b1', '\"M-Trem\" / DEV(\"CC-Trem-1\") p2 b1', 'L/DEV(\"Delay\") p8 b1', '\"BASStoFX\"/DEV(\"EXPtoFX\") p8 b1', '5', '6', '7','8')
EXPSTRINGS=('CXM Exp','Tremotron depth','Phaser exp','Volante exp','Filter lowpass','Whammy Pedal','H9 expression','Microcosm exp','Tensor expression','mtl.asm 856','Mood expression','Blooper exp','ottobit exp','Tremotron rate','int. DELAY Feedback','BASSFX SENDS','5','6','7','8')
EXPLIGHTS=('F1','F#1', 'G1', '')
LPX_LOOPLIGHTS = ('C-1','C#-1','D-1','D#-1','G#-1','A-1','A#-1','B-1')
LPX_BAR_SLOT_LED = ('C-2','C#-2','D-2','D#-2','G#-2','A-2','A#-2','B-2')
LPX_BEAT_LED = ('C1','C#1','D1','D#1')
LPX_LEDCLIP = "\"LPX\" / CLIP(\"LPXSTATE1\") ";
loopstatus_matrix = [0] * 16
routes=['']*15
matrix = [0] * 192
submixtotal = 12
mixstateclip = "\"LPMINI3\"/CLIP(\"MIXSTATE\") NOTES(%s) "
fxsends = (7,5,4,8,3,10,9,11,2,6,1)
sendletters = ("A","B","C","D","E","F","G","H","I","J","K","L","M")
# Array to save Sends of a track
sends = [0] * 12
otto_cc_notes = (1,13,17,21,25,29,33,37,41,46,50,54,58,74,78,83,87,91,95,99,103,107,111,115,119,127,0)
otto_cc_names = ('-12','-11','-10','-9','-8','-7','-6','-5','-4','-3','-2','-1','0','1','2','3','4','5','6','7','8','9','10','11','12','MUTE','OFF')
otto_cc_matrix = [12] * 6

# Your class must extend UserActionsBase.
class ExampleActions(UserActionsBase):

# Your class must implement this method.
def create_actions(self):
self.add_global_action('namerecclip', self.name_recclip)
self.add_global_action('qntclip', self.name_quant_beat_clip)
self.add_global_action('setvar', self.set_vars)
self.add_global_action('oscmatrix', self.osc_matrix)
self.add_global_action('matrixstate', self.matrix_state)
self.add_clip_action('matrixsave', self.matrix_save)
self.add_clip_action('matrixload', self.matrix_load)
self.add_global_action('matrixrecall', self.matrix_recall)
self.add_global_action('submixrecall', self.submix_recall)
self.add_global_action('selectphones', self.select_phones_submix)
self.add_global_action('expbind', self.exp_bind)
self.add_global_action('volled', self.vol_led)
self.add_global_action('inpled', self.inp_led)
self.add_global_action('moodstate', self.moodstate)
self.add_global_action('loopstatusled', self.loopstatusled)
self.add_global_action('barslotled', self.barslotled)
self.add_global_action('muteled', self.muteled)
self.add_global_action('muteledoff', self.muteledoff)
self.add_global_action('montorec', self.mon_to_rec)

self.add_global_action('micmatrix', self.mic_matrix)
self.add_global_action('selplayingscene', self.selplayingscene)

self.add_global_action('ottostep_inc', self.ottostep_inc)
self.add_global_action('ottostep_dec', self.ottostep_dec)
self.add_global_action('ottostep_matrix', self.ottostep_matrix)
self.add_global_action('ottostep_mute', self.ottostep_mute)
self.add_global_action('ottostep_reset', self.ottostep_reset)
self.add_global_action('ottostep_matrix_send', self.ottostep_matrix_send)

self.add_track_action('montosends', self.mon_to_sends)
self.add_track_action('copysends', self.copy_sends)
self.add_track_action('clearsends', self.clear_sends)
self.add_track_action('loopstatus', self.loopstatus)

def name_recclip(self, action_def, args):
""" determines the name of the desired recordingclip and triggers it"""
#login: [0] loops [1] looplength beat or bars
self.canonical_parent.show_message('loopnaming')
vars = args.split();
quant_clip_name = '\"QUANT_BEAT_%sbar\"' % vars[1]
self.canonical_parent.clyphx_pro_component.trigger_action_list('%%quantbeatclip%%=%s;' % quant_clip_name)

if vars[1].find("beat")>0:
rec_clip_name = '\"rec-%sloops-%s\"' % (vars[0], vars[1])
ua_clip_name = '\"unarm-%sloops-%s\"' % (vars[0], vars[1])
else:
rec_clip_name = '\"rec-%sloops-%sbar\"' % (vars[0], vars[1])
rec_clip_name_l2 = '\"rec-loopx-%sbar\"' % vars[1]
ua_clip_name = '\"unarm-%sloops-%sbar\"' % (vars[0], vars[1])
ua_clip_name_l2 = '\"unarm-loopx-%sbar\"' % vars[1]

self.canonical_parent.clyphx_pro_component.trigger_action_list('%%recclip%%=%s; %%uaclip%%=%s; %%recclip2%%=%s; %%uaclip2%%=%s;' % (rec_clip_name, ua_clip_name, rec_clip_name_l2,ua_clip_name_l2))
self.canonical_parent.log_message('action def: %s' % action_def)
self.canonical_parent.log_message('args: %s' % args)
## self.canonical_parent.show_message('first arg: %s , 2nd arg: %s, loopname: %s' % (vars[0], vars [1],rec_clip_name_l2))

def name_quant_beat_clip(self, action_def, args):
quant_clip_name = '\"QUANT_BEAT_%sbar\"' % args
self.canonical_parent.clyphx_pro_component.trigger_action_list('%%quantbeatclip%%=%s;' % quant_clip_name)
self.canonical_parent.show_message('beatclipname: %s' % quant_clip_name)

def set_vars(self,__,args):
vars=args.split();
i=0
while i<len(vars): self.canonical_parent.clyphx_pro_component.trigger_action_list('%%%s%%=%s;' % (vars[i],vars[i+1])) ## self.canonical_parent.show_message('first arg: %s , 2nd arg: %s' % (vars[0], vars [1])) print(vars[i],vars[i+1]) i=i+2 def osc_matrix(self,__,args): vars=args.split(); matrixrow=int(vars[0])//12+1; mb=int(vars[0]); ms=int(vars[1]); vol=int(vars[2]); cell=mb+ms-1; matrix[cell]=int(vars[2]); routes[matrixrow]=''; for x in range(12): if (int(matrix[x+mb])>0):
routes[matrixrow]=routes[matrixrow]+SOURCES[x]+" "+str(matrix[x+mb])+", ";
message="osc int /matrix/%s/%s %s " % (matrixrow, vars[1], vars[2])
message=str(routes[matrixrow])
message2="osc str /routes%s '%s' " % (matrixrow, routes[matrixrow])

## self.canonical_parent.show_message(message2)
self.canonical_parent.clyphx_pro_component.trigger_action_list(message)
self.canonical_parent.clyphx_pro_component.trigger_action_list(message2)

def mic_matrix(self,__,args):
vars=args.split()
if (int(vars[2])==144):
mic_matrix[int(vars[0])-1]=int(vars[1])
## log_message="mic %s set to %s vol" % (vars[0],vars[1])
## self.canonical_parent.show_message(log_message)
## self.canonical_parent.log_message(log_message)
## else:
## self.canonical_parent.show_message(" mic not on phones submix vasr 2 is"+vars[2])

def matrix_state(self,__,args):
vars=int(args);
x = 0
for x in range(12):
cell=(x+vars)
if int(matrix[cell])>0:
cmd="\"LPMINI3\"/CLIP(\"MIXSTATE\") NOTES(%s) OFF" % (SOURCELIGHTS[x])
##self.canonical_parent.show_message("LIGHT ON: "+cmd)
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
else:
cmd="\"LPMINI3\"/CLIP(\"MIXSTATE\") NOTES(%s) ON" % (SOURCELIGHTS[x])
##self.canonical_parent.show_message("LIGHT OFF : "+cmd)
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)

def matrix_save(self,action_def,args):
clip = action_def["clip"]
self.canonical_parent.show_message("matrixsaved")
if clip:
if action_def["xtrigger"] != clip:
clip.name = str(matrix)
else:
self.canonical_parent.log_message("Error: Tried to rename the Xtrigger clip itself")

def submix_recall(self,action_def,args):
self.canonical_parent.log_message("SUBMIX RECALL")
global matrix
if int(args) in range(1,17):
self.canonical_parent.log_message("only SUBMIX %s recall" % (str(args)))
submix_recall=int(args)
submix_ch=str(submix_vars[submix_recall][3])
submix_cc=str(submix_vars[submix_recall][4])
submix_cmd="MIDI CC %s %s 127" % (submix_ch, submix_cc)
self.canonical_parent.clyphx_pro_component.trigger_action_list(submix_cmd)
#self.canonical_parent.log_message(submix_cmd)
for x in range(1,submixtotal+1):
input_ch=str(source_vars[x][3])
input_cc=str(source_vars[x][4])
matrix_pos=(submix_recall-1)*12+x-1
matrix_vol_value=str(matrix[matrix_pos])
midi_cmd="MIDI CC %s %s %s" % (input_ch,input_cc,matrix_vol_value)
self.canonical_parent.clyphx_pro_component.trigger_action_list(midi_cmd)
#self.canonical_parent.log_message(midi_cmd)

def select_phones_submix(self,action_def,args):
self.canonical_parent.log_message("select Phones Submix")
submix_ch=str(submix_vars[13][3])
submix_cc=str(submix_vars[13][4])
submix_cmd="MIDI CC %s %s 127" % (submix_ch, submix_cc)
self.canonical_parent.clyphx_pro_component.trigger_action_list(submix_cmd)
return

def matrix_recall(self,action_def,args):
for x in range(1,17):
self.submix_recall(action_def,x)
self.canonical_parent.log_message("Matrix recall function %s" % x)
self.select_phones_submix(action_def, args)

def matrix_load(self,action_def,args):
global matrix
clip = action_def["clip"]
if clip:
if action_def["xtrigger"] != clip:
matrixstring = eval(clip.name)
matrix=list(map(int, matrixstring))
#self.canonical_parent.log_message("matrix loaded: %s" % matrix)
else:
self.canonical_parent.log_message("Error: Tried to rename the Xtrigger clip itself")

def exp_bind(self,__,args):
vars=args.split()
cmd="BIND %s %s" % (EXPSOURCES[int(vars[0])], EXPTARGETS[int(vars[1])])
cmd2='%%%s_target%%=%s;' % (EXPSOURCES[int(vars[0])],EXPSTRINGS[int(vars[1])])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
self.canonical_parent.show_message("EXP COMMAND "+cmd)
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd2)

def vol_led(self,__,args):
volled=int(args)
length=len(VOLLIGHTS)
if volled == 0 :
cmd="\"LPMINI3\"/CLIP(\"MIXSTATE\") NOTES(%s) OFF" % (VOLLIGHTS[0])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
cmd="\"LPMINI3\"/CLIP(\"MIXSTATE\") NOTES(%s) OFF" % (VOLLIGHTS[1])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
for x in range(2,length):
cmd="\"LPMINI3\"/CLIP(\"MIXSTATE\") NOTES(%s) ON" % (VOLLIGHTS[x])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
else:
cmd="\"LPMINI3\"/CLIP(\"MIXSTATE\") NOTES(%s) ON" % (VOLLIGHTS[0])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
cmd="\"LPMINI3\"/CLIP(\"MIXSTATE\") NOTES(%s) ON" % (VOLLIGHTS[1])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
for x in range(1,length-1):
if x == volled :
cmd="\"LPMINI3\"/CLIP(\"MIXSTATE\") NOTES(%s) OFF" % (VOLLIGHTS[x+1])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
else:
cmd="\"LPMINI3\"/CLIP(\"MIXSTATE\") NOTES(%s) ON" % (VOLLIGHTS[x+1])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)

return

def inp_led(self,__,args):
inpled=int(args)
for x in range(0,4):
if x == inpled :
cmd="\"LPMINI3\"/CLIP(\"MIXSTATE\") NOTES(%s) OFF" % (INPLIGHTS[x])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
else :
cmd="\"LPMINI3\"/CLIP(\"MIXSTATE\") NOTES(%s) ON" % (INPLIGHTS[x])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)

def moodstate(self,__,args):
channels=args.split()
midi_cc = int(channels[0])+int(channels[1])
cmd = "MIDI CC 11 103 %s" % (midi_cc)
self.canonical_parent.show_message('action: %s' % cmd)
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)

def mon_to_sends(self, action_def, args):
track = action_def['track']
track_index = list(self.song().tracks).index(action_def['track'])+1
for x in range(0,11):
cell = 144+fxsends[x]
# hier kommt der wert aus der MIX-Matrix, if schleife min-MAX?
sends[x] = matrix[cell]
action='%s/SEND %s %s' % (track_index, sendletters[x], sends[x])
self.canonical_parent.show_message('action: %s' % action)
self.canonical_parent.clyphx_pro_component.trigger_action_list(action)

def mon_to_rec(self, action_def, args):
self.canonical_parent.show_message("Monitor to rec")
## select submix re-record
submix_midi_action="MIDI CC %s %s 127" % (submix_vars[1][3],submix_vars[1][4])
self.canonical_parent.clyphx_pro_component.trigger_action_list(submix_midi_action)
for x in range(1,13):
vol=0
cell_row=143
vol=int(matrix[x+cell_row]);
RME_mixer_action="MIDI CC %s %s %s \n" % (source_vars[x][3],source_vars[x][4],vol)
## self.canonical_parent.clyphx_pro_component.log_message(RME_mixer_action)
if (source_vars[x][3]!=0):
self.canonical_parent.clyphx_pro_component.trigger_action_list(RME_mixer_action)
for i in range(0,4):
RME_mixer_action="MIDI CC %s %s %s" % (source_vars[13+i][3],source_vars[13+i][4],mic_matrix[i])
self.canonical_parent.clyphx_pro_component.trigger_action_list(RME_mixer_action)
## select MON submix
submix_midi_action="MIDI CC %s %s 127" % (submix_vars[13][3],submix_vars[13][4])
self.canonical_parent.clyphx_pro_component.trigger_action_list(submix_midi_action)

def copy_sends(self, action_def, args):
track_index = list(self.song().tracks).index(action_def['track'])
sends = list(self.ChainMixerDevice().Sends)
self.canonical_parent.log_message('sends: %s' % sends)
self.canonical_parent.log_message('args: %s' % args)

def clear_sends(self, action_def, args):
track = action_def['track']
track_index = list(self.song().tracks).index(action_def['track'])+1
for x in range(0,11):
action='%s/SEND %s 0' % (track_index, sendletters[x])
self.canonical_parent.show_message('action: %s' % action)
self.canonical_parent.clyphx_pro_component.trigger_action_list(action)

def loopstatus(self, action_def, args):
matrix_string = "slots playing : ";
track_index = list(self.song().tracks).index(action_def['track'])
for x in range (0,8):
loopstatus_matrix[x]=self.song().tracks[track_index+x].playing_slot_index+1
matrix_string += "+ Track(%s): %s +" % (x,loopstatus_matrix[x])
## self.canonical_parent.show_message('loopmatrix: %s' % matrix_string)

def loopstatusled(self, action_def, args):
for x in range(0,8):
if int(loopstatus_matrix[x])>0:
cmd="%s NOTES(%s) OFF" % (LPX_LEDCLIP, LPX_LOOPLIGHTS[x])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
else:
cmd="%s NOTES(%s) ON" % (LPX_LEDCLIP, LPX_LOOPLIGHTS[x])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
message = ' count total: %s - last loopmatrix clip etc %s' % (x, cmd)
## self.canonical_parent.show_message(message)

def barslotled(self, action_def, args):
leds=args.split()
if int(leds[0]) <=4 : for x in range (0,4): cmd="%s NOTES(%s) GATE >16" % (LPX_LEDCLIP,LPX_BAR_SLOT_LED[x])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
if (int(leds[0])-1) == x:
cmd="%s NOTES(%s) OFF" % (LPX_LEDCLIP,LPX_BAR_SLOT_LED[x])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
else:
cmd="%s NOTES(%s) ON" % (LPX_LEDCLIP,LPX_BAR_SLOT_LED[x])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
elif int(leds[0]) <=8:
for x in range (0,4):
cmd="%s NOTES(%s) GATE <16" % (LPX_LEDCLIP,LPX_BAR_SLOT_LED[x])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
if (int(leds[0])-1) == x+4:
cmd="%s NOTES(%s) OFF" % (LPX_LEDCLIP,LPX_BAR_SLOT_LED[x])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)

else:
cmd="%s NOTES(%s) ON" % (LPX_LEDCLIP,LPX_BAR_SLOT_LED[x])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)

if int(leds[1]) <=4 : for x in range (0,4): cmd="%s NOTES(%s) GATE >16" % (LPX_LEDCLIP,LPX_BAR_SLOT_LED[x+4])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
if (int(leds[1])-1) == x:
cmd="%s NOTES(%s) OFF" % (LPX_LEDCLIP,LPX_BAR_SLOT_LED[x+4])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
else:
cmd="%s NOTES(%s) ON" % (LPX_LEDCLIP,LPX_BAR_SLOT_LED[x+4])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
elif int(leds[1]) <=8:
for x in range (0,4):
cmd="%s NOTES(%s) GATE <16" % (LPX_LEDCLIP,LPX_BAR_SLOT_LED[x+4])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
if (int(leds[1])-1) == x+4:
cmd="%s NOTES(%s) OFF" % (LPX_LEDCLIP,LPX_BAR_SLOT_LED[x+4])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)

else:
cmd="%s NOTES(%s) ON" % (LPX_LEDCLIP,LPX_BAR_SLOT_LED[x+4])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)

def muteled(self, action_def, args):
return
def muteledoff(self, action_def, args):
return

def selplayingscene(self, action_def, args):
sceneid=1;
self.canonical_parent.show_message("select actual playing scene")

def ottostep_inc(self, action_def, args):
step=int(args)
if otto_cc_matrix[step] < 24:
otto_cc_matrix[step]=otto_cc_matrix[step]+1
cmd="\"M-otto\" / DEV(\"CC-otto-steps\") B1 P%s %s" % (step+1,otto_cc_notes[otto_cc_matrix[step]])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
self.canonical_parent.log_message("command : %s " % cmd)

def ottostep_dec(self, action_def, args):
step=int(args)
if otto_cc_matrix[step] in range(1,25):
otto_cc_matrix[step]=otto_cc_matrix[step]-1
cmd="\"M-otto\" / DEV(\"CC-otto-steps\") B1 P%s %s" % (step+1,otto_cc_notes[otto_cc_matrix[step]])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
self.canonical_parent.log_message("command : %s " % cmd)

def ottostep_matrix(self, action_def, args):
steps=list(args.split())
maxargs = len(steps)
self.canonical_parent.log_message("steps list : %s, len: %s" % (steps,maxargs))
for x in range (0,int(maxargs)):
if "MUTE" in steps[x].upper():
otto_cc_matrix[x] = 25
elif "OFF" in steps[x].upper():
otto_cc_matrix[x] = 26
else:
for y in range (0,25):
if steps[x] == otto_cc_names[y]:
otto_cc_matrix[x] = y
for x in range(0,6):
cmd="\"M-otto\" / DEV(\"CC-otto-steps\") B1 P%s %s" % (x+1,otto_cc_notes[otto_cc_matrix[x]])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
self.canonical_parent.log_message("command : %s " % cmd)

def ottostep_mute(self, action_def, args):
step=int(args)
otto_cc_matrix[step]=25
cmd="\"M-otto\" / DEV(\"CC-otto-steps\") B1 P%s %s" % (step+1,otto_cc_notes[otto_cc_matrix[step]])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
self.canonical_parent.log_message("command : %s " % cmd)

def ottostep_reset(self, action_def, args):
step=int(args)
otto_cc_matrix[step]=12
cmd="\"M-otto\" / DEV(\"CC-otto-steps\") B1 P%s %s" % (step+1,otto_cc_notes[otto_cc_matrix[step]])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
self.canonical_parent.log_message("command : %s " % cmd)

def ottostep_matrix_send(self, action_def, args):
for x in range(0,6):
cmd="\"M-otto\" / DEV(\"CC-otto-steps\") B1 P%s %s" % (x+1,otto_cc_notes[otto_cc_matrix[x]])
self.canonical_parent.clyphx_pro_component.trigger_action_list(cmd)
self.canonical_parent.log_message("command : %s " % cmd)

 

go to the Master Research Overview