Hello everyone I thought I should give you news about my BCF2000 project since thanks to many of you in the community I was able to find a solution that works very well for me. I used a combination of configuration of presets on the BCF2000 with different Midi channels as suggested by keyman and several bits of scripts I found in the forum. I’m now sharing the gig file for those interested and for any suggestion of improvement.
Basically I have two panels with a 8 stereo channel each with Fader, Pan, Mute and solo using the build in GP Plugin. I added a button to open or close the plugin and a Button to select between the two mixers.
When I press on on Select button the BCF2000 is controlling the respected Mixer and is synchronized.
Thanks too everyone. I’m starting to like scripting after this first experience.
BCF2000_Mixers(12).gig (1.0 MB)
The Rackspace Script bellow:
//Declarations
Var
BCF2000_Out : MidiOutBlock
Panel_Name: widget
PanelLabel: string
//MIX A Widgets
TriggerButton_A : Widget
CH_A1_Volume,CH_A1_Solo,CH_A1_Mute,CH_A1_Pan : Widget
CH_A2_Volume,CH_A2_Solo,CH_A2_Mute,CH_A2_Pan : Widget
CH_A3_Volume,CH_A3_Solo,CH_A3_Mute,CH_A3_Pan : Widget
CH_A4_Volume,CH_A4_Solo,CH_A4_Mute,CH_A4_Pan : Widget
CH_A5_Volume,CH_A5_Solo,CH_A5_Mute,CH_A5_Pan : Widget
CH_A6_Volume,CH_A6_Solo,CH_A6_Mute,CH_A6_Pan : Widget
CH_A7_Volume,CH_A7_Solo,CH_A7_Mute,CH_A7_Pan : Widget
CH_A8_Volume,CH_A8_Solo,CH_A8_Mute,CH_A8_Pan : Widget
CC_Array_A : widget array
//MIX B Widgets
TriggerButton_B : Widget
CH_B1_Volume,CH_B1_Solo,CH_B1_Mute,CH_B1_Pan : Widget
CH_B2_Volume,CH_B2_Solo,CH_B2_Mute,CH_B2_Pan : Widget
CH_B3_Volume,CH_B3_Solo,CH_B3_Mute,CH_B3_Pan : Widget
CH_B4_Volume,CH_B4_Solo,CH_B4_Mute,CH_B4_Pan : Widget
CH_B5_Volume,CH_B5_Solo,CH_B5_Mute,CH_B5_Pan : Widget
CH_B6_Volume,CH_B6_Solo,CH_B6_Mute,CH_B6_Pan : Widget
CH_B7_Volume,CH_B7_Solo,CH_B7_Mute,CH_B7_Pan : Widget
CH_B8_Volume,CH_B8_Solo,CH_B8_Mute,CH_B8_Pan : Widget
CC_Array_B : widget array
Initialization
CC_Array_A =
[CH_A1_Volume,CH_A1_Solo,CH_A1_Mute,CH_A1_Pan,
CH_A2_Volume,CH_A2_Solo,CH_A2_Mute,CH_A2_Pan,
CH_A3_Volume,CH_A3_Solo,CH_A3_Mute,CH_A3_Pan,
CH_A4_Volume,CH_A4_Solo,CH_A4_Mute,CH_A4_Pan,
CH_A5_Volume,CH_A5_Solo,CH_A5_Mute,CH_A5_Pan,
CH_A6_Volume,CH_A6_Solo,CH_A6_Mute,CH_A6_Pan,
CH_A7_Volume,CH_A7_Solo,CH_A7_Mute,CH_A7_Pan,
CH_A8_Volume,CH_A8_Solo,CH_A8_Mute,CH_A8_Pan]
CC_Array_B =
[CH_B1_Volume,CH_B1_Solo,CH_B1_Mute,CH_B1_Pan,
CH_B2_Volume,CH_B2_Solo,CH_B2_Mute,CH_B2_Pan,
CH_B3_Volume,CH_B3_Solo,CH_B3_Mute,CH_B3_Pan,
CH_B4_Volume,CH_B4_Solo,CH_B4_Mute,CH_B4_Pan,
CH_B5_Volume,CH_B5_Solo,CH_B5_Mute,CH_B5_Pan,
CH_B6_Volume,CH_B6_Solo,CH_B6_Mute,CH_B6_Pan,
CH_B7_Volume,CH_B7_Solo,CH_B7_Mute,CH_B7_Pan,
CH_B8_Volume,CH_B8_Solo,CH_B8_Mute,CH_B8_Pan]
End
//Change Preset Function
Function ChangePreset (Preset:integer)
var SysexMsg : SysexMessage
SysexMsg = # F0 00 20 32 00 14 22 00 F7;// Preset select sysex String
SM_ChangeValue(SysexMsg, 7, Preset);//Change byte 7 to preset value
SendSysexExternal(BCF2000_Out, SysexMsg);
End
//Synchronize BCF and Widgets Function
Function SyncBCF(CC_Array : widget array)
var x : integer
For x=0 ; x<32 ; x=x+1 Do
ResyncWidget(CC_Array[x]);
End;
End
//Select MIX A and Send Sysex MIDI messages to Change Preset to 1 when button A pressed
On WidgetValueChanged(newValueA : double) from TriggerButton_A
If newValueA == 1 Then
SetWidgetValue(TriggerButton_B, 0)
SetWidgetLabel (Panel_Name, "A")
Elsif newValueA == 0 and GetWidgetValue (TriggerButton_B) == 0 Then
End
ChangePreset(0)
SyncBCF(CC_Array_A)
End
//Select MIX B and Send Sysex MIDI messages to Change Preset to 2 when button B pressed
On WidgetValueChanged(newValueB : double) from TriggerButton_B
If newValueB == 1.0 Then
SetWidgetValue(TriggerButton_A, 0)
SetWidgetLabel (Panel_Name, "B")
Elsif newValueB == 0 and GetWidgetValue (TriggerButton_A) == 0 Then
End
ChangePreset (1)
SyncBCF(CC_Array_B)
End