DHD 52 Mixer

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

Which version and edition are you using?

i Have the mAirList Pro demo 3.1.0 build 757 avec the dhd remote module actived

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.

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() ?

Good to hear that it’s working now :slight_smile:

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;

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]

Looks pretty good, however

  1. You need to define ld, pf and oa as numbers (word), not as string.
  2. 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.