pm98
August 3, 2010, 10:06am
1
Hello,
I have connected a DHD 52mx mixer to mAirList througt the DHD Remote tool.
I correctly receive informations from the mixer but when i launch the ‘RM4200D_PFLSwitch.mls’ notification script, i have this error:
Error : Unknown identifier ‘DHDRM42000DRemote’
Remote from mAirList to a mixer have been completely implemented ?
Else, i can test it for you with my DHD 52mx.
Thanks
Torben
August 3, 2010, 10:08am
2
Which version and edition are you using?
pm98
August 3, 2010, 10:27am
3
i Have the mAirList Pro demo 3.1.0 build 757 avec the dhd remote module actived
Torben
August 3, 2010, 12:30pm
4
Found the problem. It’s “RM4200DRemote” without DHD. I will correct the script. Thanks for reporting.
The 52/MX should work as well. It’s compatible with the RM4200D. I had a mixed unit for testing.
pm98
August 3, 2010, 2:22pm
5
it works very well with my 52/mx. ;D
My sample of code:
procedure OnPFLOn(PlayerType: TPlayerType; PlaylistIndex: integer; PlayerIndex: integer; PFLCount: integer);
begin
//SystemLog('PlaylistIndex: '+IntToStr(trunc(PlaylistIndex))+' PlayerIndex: '+IntToStr(trunc(PlayerIndex)));
//playlist 0, player 1: DHD Fader 7
if (PlaylistIndex = 0) and (PlayerIndex = 0) then
RM4200DRemote(0).SetPFL(7, true, false);
//playlist 0, player 2: DHD Fader 8
if (PlaylistIndex = 0) and (PlayerIndex = 1) then
RM4200DRemote(0).SetPFL(8, true, false);
//playlist 0, player 3: DHD Fader 9
if (PlaylistIndex = 0) and (PlayerIndex = 2) then
RM4200DRemote(0).SetPFL(9, true, false);
end;
procedure OnPFLOff(PlayerType: TPlayerType; PlaylistIndex: integer; PlayerIndex: integer; PFLCount: integer);
begin
//playlist 0, player 1: DHD Fader 7
if (PlaylistIndex = 0) and (PlayerIndex = 0) then
RM4200DRemote(0).SetPFL(7, false, false);
//playlist 0, player 2: DHD Fader 8
if (PlaylistIndex = 0) and (PlayerIndex = 1) then
RM4200DRemote(0).SetPFL(8, false, false);
//playlist 0, player 3: DHD Fader 9
if (PlaylistIndex = 0) and (PlayerIndex = 2) then
RM4200DRemote(0).SetPFL(9, false, false);
end;
begin
end.
Is there any other fonctions that SetPFL and SetLogic for RM4200DRemote() ?
Torben
August 3, 2010, 3:07pm
6
Good to hear that it’s working now
This is the (interesting) methods available in the IRM4200D interface:
procedure SetMonitorChannel(iNumber: byte; iLeft, iRight: word);
procedure SetPFL(iChannel: word; iValue, iAutoMute: boolean);
procedure SetAllPFLOff;
procedure SetFaderOn(iChannel: word; iValue: boolean);
procedure SetLogic(iAddress: word; iValue: boolean);
procedure SendPacket(iID: cardinal; iData: AnsiString);
The last method can be used to send “raw” data for any special commands not implemented. It is internally used by the other methods. For example, SetFaderOn is implemented like this:
procedure TBaseRM4200DRemote.SetFaderOn(iChannel: word; iValue: boolean);
begin
SendPacket($11020000, chr(iChannel shr 8) + chr(iChannel and $FF) + BoolToChar(iValue));
end;
pm98
August 5, 2010, 12:34pm
7
Hey,
I try to return to my mixer player color state but i’m starting in this language, i do a lot of mistakes.
can you help me.
Thanks a lot.
[code]procedure OnLoad;
var
ld: array[1…4] of string; //Loaded
pf: array[1…4] of string; //PFL
oa: array[1…4] of string; //on air
begin
//DHD logic code for cart button 1
ld[1] := ‘1392’;
pf[1] := ‘1393’;
oa[1] := ‘1394’;
//DHD logic code for cart button 2
ld[2] := ‘1395’;
pf[2] := ‘1396’;
oa[2] := ‘1397’;
//DHD logic code for cart button 3
ld[3] := ‘1398’;
pf[3] := ‘1399’;
oa[3] := ‘1400’;
//DHD logic code for cart button 4
ld[4] := ‘1401’;
pf[4] := ‘1402’;
oa[4] := ‘1403’;
end;
procedure OnCartPlayerStart(PlayerIndex: integer; Item: IPlaylistItem);
begin
RM4200DRemote(0).SetLogic(oa[PlayerIndex + 1], true);
end;
procedure OnCartPlayerStop(PlayerIndex: integer; Item: IPlaylistItem);
begin
RM4200DRemote(0).SetLogic(oa[PlayerIndex + 1], false);
end;
procedure OnPFLOn(PlayerType: TPlayerType; PlaylistIndex: integer; PlayerIndex: integer; PFLCount: integer);
begin
RM4200DRemote(0).SetLogic(pf[PlayerIndex + 1], true);
end;
procedure OnPFLOff(PlayerType: TPlayerType; PlaylistIndex: integer; PlayerIndex: integer; PFLCount: integer);
begin
RM4200DRemote(0).SetLogic(pf[PlayerIndex + 1], false);
end;
procedure OnCartPlayerStateChange(PlayerIndex: integer; OldState: TPlayerState; NewState: TPlayerState);
begin
try
case NewState Of
psEmpty: RM4200DRemote(0).SetLogic(ld[PlayerIndex + 1], false);
psLoaded: RM4200DRemote(0).SetLogic(ld[PlayerIndex + 1], true);
psLoading: RM4200DRemote(0).SetLogic(ld[PlayerIndex + 1], true);
end;
finally
end;
end;
[/code]
Torben
August 5, 2010, 1:28pm
8
Looks pretty good, however
You need to define ld, pf and oa as numbers (word), not as string.
It must be global variables, declared at the very beginning of the script, before OnLoad.
var
ld: array[1..4] of word; //Loaded
pf: array[1..4] of word; //PFL
oa: array[1..4] of word; //on air
procedure OnLoad;
begin
//DHD logic code for cart button 1
ld[1] := 1392;
pf[1] := 1393;
oa[1] := 1394;
//DHD logic code for cart button 2
ld[2] := 1395;
pf[2] := 1396;
oa[2] := 1397;
//DHD logic code for cart button 3
ld[3] := 1398;
pf[3] := 1399;
oa[3] := 1400;
//DHD logic code for cart button 4
ld[4] := 1401;
pf[4] := 1402;
oa[4] := 1403;
end;
procedure OnCartPlayerStart(PlayerIndex: integer; Item: IPlaylistItem);
begin
RM4200DRemote(0).SetLogic(oa[PlayerIndex + 1], true);
end;
procedure OnCartPlayerStop(PlayerIndex: integer; Item: IPlaylistItem);
begin
RM4200DRemote(0).SetLogic(oa[PlayerIndex + 1], false);
end;
procedure OnPFLOn(PlayerType: TPlayerType; PlaylistIndex: integer; PlayerIndex: integer; PFLCount: integer);
begin
RM4200DRemote(0).SetLogic(pf[PlayerIndex + 1], true);
end;
procedure OnPFLOff(PlayerType: TPlayerType; PlaylistIndex: integer; PlayerIndex: integer; PFLCount: integer);
begin
RM4200DRemote(0).SetLogic(pf[PlayerIndex + 1], false);
end;
procedure OnCartPlayerStateChange(PlayerIndex: integer; OldState: TPlayerState; NewState: TPlayerState);
begin
try
case NewState Of
psEmpty: RM4200DRemote(0).SetLogic(ld[PlayerIndex + 1], false);
psLoaded: RM4200DRemote(0).SetLogic(ld[PlayerIndex + 1], true);
psLoading: RM4200DRemote(0).SetLogic(ld[PlayerIndex + 1], true);
end;
finally
end;
end;
begin
end.
Haven’t tested this though.