Hello everyone. I tried to adapt another mixer from Behringer, but in the end I stopped and just bought a Behringer x32 compact. Not a bad mixer, although a bit pricey for beginners. They chose it, since it can be used not only for broadcasting purposes.
So here is the script for Fader start and disable the monitor line on this mixer.
{* Midi Control for Behringer x32 compact and mAirList
version 1.0 (26.10.2021)
Uses 3 decks (A, B, C) and 2 mics
MIDI commands imput via mAirList Control Panel
Actions:
1. Mute Monitor, connected via Matrix (5,6 in my example). It's routed to AUX outs 5 and 6.
2. Fader-start. For deactivate it for deck - use MUTE button
3. Talktimer for mics
Before use please, set MIDI remote control to you Behringer x32 on mAirList control panel.
Use this commands:
"PLAYER_A UP" - for deck fader != 0
"PLAYER_A DOWN" - for deck fader = 0
"PLAYER_A MUTE" - for deck mute button is pressed and active
"PLAYER_A UNMUTE" - for deck mute button is unpressed and unactive
Use similar commands for deck B and C. Just change letter, example: "PLAYER_B UP"
"MIC1 ON" - for mic fader != 0
"MIC1 OFF" - for mic fader = 0
Use similar commands for the second mic. Just change number, example: "MIC2 ON"
Eugene Fisher, oct 2021
*}
var
MIC1st: boolean; //MICs fader status. If true - fader up
MIC2st: boolean;
MonOutSt: boolean; //Monitor out status. If true - it's unmuted
DeckAst: boolean; //Deck faders status. If true - fader up
DeckBst: boolean;
DeckCst: boolean;
DeckAplay: boolean; //Deck playing status. If true - deck is playing
DeckBplay: boolean;
DeckCplay: boolean;
DeckAmute: boolean; //Deck muting status. If true - it's muted
DeckBmute: boolean;
DeckCmute: boolean;
//**********************************************************************************************************
// Set deck status on player stop
procedure OnPlayerStop(PlaylistIndex: integer; PlayerIndex: integer; Item: IPlaylistItem; Duration: int64);
begin
if PlayerIndex = 0 then begin // If player stopped
DeckAplay :=false; // Set var to false
end;
if PlayerIndex = 1 then begin
DeckBplay :=false;
end;
if PlayerIndex = 2 then begin
DeckCplay :=false;
end;
end;
// Set deck status on player start
procedure OnPlayerStart(PlaylistIndex: integer; PlayerIndex: integer; Item: IPlaylistItem);
begin
if PlayerIndex = 0 then begin // If player start
DeckAplay :=true; // Set var to true
end;
if PlayerIndex = 1 then begin
DeckBplay :=true;
end;
if PlayerIndex = 2 then begin
DeckCplay :=true;
end;
end;
procedure OnExecuteCommand(Command: string);
begin
// Monitors muting. Please, check you MixBus Midi Outs. In my case - i'm using matrix 5 and 6.
// Note: This script not remember monitor volume. On unmute i'ts set fader to pos -13,7 dB
// Note: you matrix must be linked (L+R) on mixer
if Command = 'MIC1 ON' then begin //If we recieved MIC1 ON command and...
if MIC2st = false then begin // ... second mic fader is down ...
if MonOutSt = true then begin // ... and monitors line is unmuted
MidiOutOpen(1); // Open MIDI out
MidiOut ( 1, $B0, $45, $00 ) ; // Closed matrix fader.
MidiOutClose(1);
MonOutSt := false; // Setting Monitor out var on false
ExecuteCommand ('TALKTIMER START'); // starting talktimer
end;
end;
MIC1st := true; // Set first mic fader var to false (it's down)
end;
if Command = 'MIC2 ON' then begin
if MIC1st = false then begin
if MonOutSt = true then begin
MidiOutOpen(1);
MidiOutOpen(1);
MidiOut ( 1, $B0, $45, $00 ) ;
MidiOutClose(1);
MonOutSt := false;
ExecuteCommand ('TALKTIMER START');
end;
end;
MIC2st := true;
end;
if Command = 'MIC1 OFF' then begin // If first mic fader is dowm ...
if MIC2st = false then begin // ... and second mic is down ...
if MonOutSt = false then begin // ... and Monitor line is muted
MidiOutOpen(1); // Open MIDI
MidiOut ( 1, $B0, $45, $3A ) ; // Open matrix fader to pos -13,7 dB
MidiOutClose(1);
MonOutSt := true; // Set mon out var to true
ExecuteCommand ('TALKTIMER STOP'); // Stop talktimer
end;
end;
MIC1st := false;
end;
if Command = 'MIC2 OFF' then begin
if MIC1st = false then begin
if MonOutSt = false then begin
MidiOutOpen(1);
MidiOut ( 1, $B0, $45, $3A ) ;
MidiOutClose(1);
MonOutSt := true;
ExecuteCommand ('TALKTIMER STOP');
end;
end;
MIC2st := false;
end;
// Fader start section
if Command = 'PLAYER_A UP' then begin //If fader with player A is up
if DeckAst = false then begin // and before its be down
if DeckAplay = false then begin // and deck doesnt playing
if DeckAmute = false then begin // and its not muted on mixer
ExecuteCommand ('PLAYER 1-1 START'); // starting deck
end;
end;
end;
DeckAst := true; //set var - fader for player A is up
end;
if Command = 'PLAYER_B UP' then begin
if DeckBst = false then begin
if DeckBplay = false then begin
if DeckBmute = false then begin
ExecuteCommand ('PLAYER 1-2 START');
end;
end;
end;
DeckBst := true;
end;
if Command = 'PLAYER_C UP' then begin
if DeckCst = false then begin
if DeckCplay = false then begin
if DeckCmute = false then begin
ExecuteCommand ('PLAYER 1-3 START');
end;
end;
end;
DeckCst := true;
end;
if Command = 'PLAYER_A DOWN' then begin //If fader in down postion
ExecuteCommand ('PLAYER 1-1 STOP'); //Stop player
DeckAst := false; // Set var - fader is down
end;
if Command = 'PLAYER_B DOWN' then begin
ExecuteCommand ('PLAYER 1-2 STOP');
DeckBst := false;
end;
if Command = 'PLAYER_C DOWN' then begin
ExecuteCommand ('PLAYER 1-3 STOP');
DeckCst := false;
end;
if Command = 'PLAYER_A UNMUTE' then begin //If mute off on mixer
if DeckAst = true then begin // and fader in up position
ExecuteCommand ('PLAYER 1-1 START'); // start deck
end;
DeckAmute := false; //set var - fader is unmuted
end;
if Command = 'PLAYER_B UNMUTE' then begin
if DeckBst = true then begin
ExecuteCommand ('PLAYER 1-2 START');
end;
DeckBmute := false;
end;
if Command = 'PLAYER_C UNMUTE' then begin
if DeckCst = true then begin
ExecuteCommand ('PLAYER 1-3 START');
end;
DeckCmute := false;
end;
if Command = 'PLAYER_A MUTE' then begin //if mute is active on mixer
DeckAmute := true; // set var - deck is muted
end;
if Command = 'PLAYER_B MUTE' then begin
DeckBmute := true;
end;
if Command = 'PLAYER_C MUTE' then begin
DeckCmute := true;
end;
end;
begin
end.
Yes, it may not be entirely correct in terms of writing, but it works. And this is the main thing.