if {0} {
control selected drones from midi slider/knob
copyright (c) 2011 S Jagannathan.
released under GPL 2.0.
}
proc assign-drones {cc} { ;# assigns selected drones to midi cc
set sel [get-drone selected] ;# get selected drones
;# set cc as dronal array variable's index
;# and store selected drones & their initial volumes
global dronal
set dronal($cc) [list $sel [get-drone volume $sel]] ;# get-drone is din built in command
}
proc midi-cc {status cc value} { ;# called when user operates midi controller
global dronal
foreach ass [array names dronal] {
if {$cc eq $ass} { ;# cc matches one of our drones assignments
set pair $dronal($ass) ;# get drones & initial volumes for this assignment
set drones [lindex $pair 0] ;# get the attached drones
set vols [lindex $pair 1] ;# get the initial volumes
;# run thru the drones list and assign volume from 0 to initial drone volume based on midi
;# slider position
for {set i 0; set j [llength $drones]} {$i < $j} {incr i} {
set idrone [lindex $drones $i]
set ivol [lindex $vols $i]
set-drone volume $idrone [getval 0 $ivol $value] ;# set-drone is din built in command
}
}
}
}