Heres the scriptlet for controlling over SysEx I mentioned.
// Declare various kinds of parameters
var
StudioSet_Select : Subrange Parameter 1..64 = 1
Part01_Receive : Discrete Parameter "Off","On" = "Off"
Part02_Receive : Discrete Parameter "Off","On" = "Off"
Part03_Receive : Discrete Parameter "Off","On" = "Off"
Part04_Receive : Discrete Parameter "Off","On" = "Off"
Part05_Receive : Discrete Parameter "Off","On" = "Off"
Part06_Receive : Discrete Parameter "Off","On" = "Off"
Part07_Receive : Discrete Parameter "Off","On" = "Off"
Part08_Receive : Discrete Parameter "Off","On" = "Off"
Part09_Receive : Discrete Parameter "Off","On" = "Off"
Part10_Receive : Discrete Parameter "Off","On" = "Off"
Part11_Receive : Discrete Parameter "Off","On" = "Off"
Part12_Receive : Discrete Parameter "Off","On" = "Off"
Part13_Receive : Discrete Parameter "Off","On" = "Off"
Part14_Receive : Discrete Parameter "Off","On" = "Off"
Part15_Receive : Discrete Parameter "Off","On" = "Off"
Part16_Receive : Discrete Parameter "Off","On" = "Off"
Part01_Level : Continuous Parameter = 0.0
Part02_Level : Continuous Parameter = 0.0
Part03_Level : Continuous Parameter = 0.0
Part04_Level : Continuous Parameter = 0.0
Part05_Level : Continuous Parameter = 0.0
Part06_Level : Continuous Parameter = 0.0
Part07_Level : Continuous Parameter = 0.0
Part08_Level : Continuous Parameter = 0.0
Part09_Level : Continuous Parameter = 0.0
Part10_Level : Continuous Parameter = 0.0
Part11_Level : Continuous Parameter = 0.0
Part12_Level : Continuous Parameter = 0.0
Part13_Level : Continuous Parameter = 0.0
Part14_Level : Continuous Parameter = 0.0
Part15_Level : Continuous Parameter = 0.0
Part16_Level : Continuous Parameter = 0.0
// Studio Set Change Via Sysex
Function SetupSysexChange( function_number: integer, value: integer )
var
partChangeSysex : SysexMessage = # F0 41 7F 00 00 64 12 01 00 00 04 00 00 F7
checksum : integer
checksum = 128 - ( (24 + 00 + 01 + function_number + value ) % 128 )
SM_ChangeValue(partChangeSysex, 10, function_number)
SM_ChangeValue(partChangeSysex, 11, value)
SM_ChangeValue(partChangeSysex, 12, checksum)
SendSysexNow(partChangeSysex)
End
On ParameterValueChanged(p: Subrange, index: integer) matching StudioSet_Select
SetupSysexChange( 4, 85 )
SetupSysexChange( 5, 0 )
SetupSysexChange( 6, p-1 )
End
// This directly mutates the part irrespective of midi channel using sysex commands
//
// Function numbers are on page 12 of the Integra7 midi implementation manaual
// and are equal to the last part of the address from the Studio Set Part Section
// and must first be converted from hexadecimal to decimal
// (ie: 0A = 10)
//
Function StudioSetPartChange( part: integer, function_number: integer, value: integer )
var
partChangeSysex : SysexMessage = # F0 41 7F 00 00 64 12 18 00 20 00 00 00 F7 // '19 is part 1' 11 and 12 (last 2) are volume and checksum, respectively
checksum : integer
checksum = 128 - ( (24 + 00 + (31 + part) + function_number + value ) % 128 )
SM_ChangeValue(partChangeSysex, 9, 31 + part)
SM_ChangeValue(partChangeSysex, 10, function_number)
SM_ChangeValue(partChangeSysex, 11, value)
SM_ChangeValue(partChangeSysex, 12, checksum)
SendSysexNow(partChangeSysex)
End
On ParameterValueChanged(p: Continuous, index: integer) matching Part01_Level,Part02_Level,Part03_Level,Part04_Level,Part05_Level,Part06_Level,Part07_Level,Part08_Level,Part09_Level,Part10_Level,Part11_Level,Part12_Level,Part13_Level,Part14_Level,Part15_Level,Part16_Level
StudioSetPartChange(index+1,9,ParamToMidi(p))
End
On ParameterValueChanged(p: Discrete, index: integer) matching Part01_Receive,Part02_Receive,Part03_Receive,Part04_Receive,Part05_Receive,Part06_Receive,Part07_Receive,Part08_Receive,Part09_Receive,Part10_Receive,Part11_Receive,Part12_Receive,Part13_Receive,Part14_Receive,Part15_Receive,Part16_Receive
If ( p == "Off" ) Then
StudioSetPartChange(index+1,1,0)
Else
StudioSetPartChange(index+1,1,1)
End
End
Initialization
SetInfoMessage("Script by dana@madsoundseattle.com. All rights reserved. Use at your own risk.")
End