Anytime Help Center

Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Support
  • Guest
  • Log In
English (US)
US English (US)
DE German
CN Chinese
MX Spanish (Mexico)
Chinese (Simplified)
  • AKG
    Microphones Wireless Integrated Systems Automatic Mixers Headphones Discontinued Products (AKG) General AKG Inquiries Certifications (AKG)
  • AMX
    Networked A/V Distribution (AVoIP) Traditional A/V Distribution Video Signal Processing Architectural Connectivity User Interfaces Control Processing Power (AMX) Programming (AMX) Software (AMX) Discontinued Products (AMX) General AMX Inquiries Certifications (AMX)
  • BSS
    Soundweb™ Omni Soundweb™ London Soundweb™ Contrio™ Software (BSS) Discontinued Products (BSS) General BSS Inquiries Certifications (BSS)
  • Crown
    CDi DriveCore Series CDi Series Commercial Series ComTech Series DCi DriveCore Series I-Tech HD Series XLC series XLi Series XLS DriveCore 2 Series XTi 2 Series Discontinued Products (Crown) Software (Crown) General Crown Inquiries Certifications (Crown)
  • dbx
    CX Series 500 Series DriveRack Personal Monitor Control ZonePRO Zone Controllers FeedBack Suppression Microphone Preamps Dynamics Processors Crossovers Equalizers Software (dbx) Discontinued Products (dbx) General dbx Inquiries Certifications (dbx)
  • Flux::
    Immersive Processing Analysis Subscriptions
  • JBL
    Cinema Sound Installed Live Portable Tour Sound Recording & Broadcast Software (JBL) Discontinued Products (JBL) Video Manual Series (JBL) General JBL Inquiries Certifications (JBL)
  • Lexicon
    Plugins Effects Processors Cinema Discontinued Products (Lexicon) Video Manual Series (Lexicon) General Lexicon Inquiries Certifications (Lexicon)
  • Martin
    Atomic ELP ERA Exterior MAC P3 VC VDO Tools Discontinued Products (Martin) General Martin Inquiries Certifications (Martin)
  • Soundcraft
    Digital Analog Connected Analog Only Discontinued Products (Soundcraft) Video Manual Series (Soundcraft) General Soundcraft Inquiries Certifications (Soundcraft)
  • General HARMAN Inquiries
    Dante
+ More
  • Home
  • AMX
  • Traditional A/V Distribution
  • Modular Switching Systems
  • Enclosures with Central Controllers

Displaying a Logo on Input with No Signal on DGX

Written by Gary Brindley

Updated at January 12th, 2026

Table of Contents

​​Question: Answer:

​​Question:

How do I display a logo on an input with No Signal on DGX?
 

Answer:

This is a working example of NetLinx code to use a Media Player to generate a logo instead of blue/black screen when no signal present.  Unlike the DVX, the DGX does not have a way to display a logo when there is no signal.  Since the DGX has no logo generator, you’ll have to provide one yourself.  You can use anything that will output the video or image you want.  A google/Amazon search for ‘HDMI Media Player’ will give you plenty of results.  For this purpose, you can pick one up for under $40.00 and load your logo into the unit.  You will also need an open input on the DGX.

Once you’ve got the image loaded and playing, plug it into an open input on the DGX.  You can incorporate the attached code as your routing routine.  You can modify as necessary for Video only route (VI instead of CI).

This code consists of an example main source code file.  As it sits, it’s setup for a DGX-1600.  This is easily expandable by adding more definitions (all shown in the code comments, and warnings when compiled) or contractable by removing some.

This code will route the media player logo to an output that has an input routed with no signal attached.  If an input is routed in this fashion, the code will keep the logo routed until someone plugs in a valid signal, then it will make the route from the valid signal until it’s lost, then show the logo again, etc, etc.​

Download

PROGRAM_NAME='Logo On No Signal DGX'
(***********************************************************)
(***********************************************************)
(*  FILE_LAST_MODIFIED_ON: 04/05/2006  AT: 09:00:25        *)
(***********************************************************)
(* System Type : NetLinx                                   *)
(***********************************************************)
(* REV HISTORY:                                            *)
(***********************************************************)
(*
    $History: $
*)
(***********************************************************)
(*          DEVICE NUMBER DEFINITIONS GO BELOW             *)
(***********************************************************)
DEFINE_DEVICE

dvDGX_SWITCHER	 = 5002:1:1		// SWR PORT 1 FOR SENDING ROUTING COMMANDS

#WARN 'ADD/REMOVE DEFINITIONS FOR BIGGER/SMALLER SWITCHERS'
dvDGX_SWITCHER1  = 5002:1:1		// SWITCHER PORT 1
dvDGX_SWITCHER2  = 5002:2:1		// SWITCHER PORT 2
dvDGX_SWITCHER3  = 5002:3:1		// SWITCHER PORT 3
dvDGX_SWITCHER4  = 5002:4:1		// SWITCHER PORT 4
dvDGX_SWITCHER5  = 5002:5:1		// SWITCHER PORT 5
dvDGX_SWITCHER6  = 5002:6:1		// SWITCHER PORT 6
dvDGX_SWITCHER7  = 5002:7:1		// SWITCHER PORT 7
dvDGX_SWITCHER8  = 5002:8:1		// SWITCHER PORT 8
dvDGX_SWITCHER9  = 5002:9:1		// SWITCHER PORT 9
dvDGX_SWITCHER10 = 5002:10:1	// SWITCHER PORT 10
dvDGX_SWITCHER11 = 5002:11:1	// SWITCHER PORT 11
dvDGX_SWITCHER12 = 5002:12:1	// SWITCHER PORT 12
dvDGX_SWITCHER13 = 5002:13:1	// SWITCHER PORT 13
dvDGX_SWITCHER14 = 5002:14:1	// SWITCHER PORT 14
dvDGX_SWITCHER15 = 5002:15:1	// SWITCHER PORT 15
dvDGX_SWITCHER16 = 5002:16:1	// SWITCHER PORT 16

dvTP	= 10001:1:0						

(***********************************************************)
(*               CONSTANT DEFINITIONS GO BELOW             *)
(***********************************************************)
DEFINE_CONSTANT

#WARN 'SET TO NUMBER OF CHANNELS ON DGX (8,16,32,64)'
MAX_DGX_CHANNELS = 16

(***********************************************************)
(*              DATA TYPE DEFINITIONS GO BELOW             *)
(***********************************************************)
DEFINE_TYPE

(***********************************************************)
(*               VARIABLE DEFINITIONS GO BELOW             *)
(***********************************************************)
DEFINE_VARIABLE

#WARN 'CHANGE TO WHICHEVER INPUT WILL HAVE THE LOGO GENERATOR'
VOLATILE INTEGER nLogoInput = 16	// CHANGE TO WHICHEVER INPUT WILL HAVE THE LOGO GENERATOR 

VOLATILE INTEGER nInValidSignal[MAX_DGX_CHANNELS]

#WARN 'ADD/REMOVE DEVICES TO ARRAY BASED ON DGX SIZE'
VOLATILE DEV dvSwrInputs[] =
{
	 dvDGX_SWITCHER1,
	 dvDGX_SWITCHER2,
	 dvDGX_SWITCHER3,
	 dvDGX_SWITCHER4,
	 dvDGX_SWITCHER5,
	 dvDGX_SWITCHER6,
	 dvDGX_SWITCHER7,
	 dvDGX_SWITCHER8,
	 dvDGX_SWITCHER9,
	dvDGX_SWITCHER10,
	dvDGX_SWITCHER11,
	dvDGX_SWITCHER12,
	dvDGX_SWITCHER13,
	dvDGX_SWITCHER14,
	dvDGX_SWITCHER15,
	dvDGX_SWITCHER16

}

(***********************************************************)
(*               LATCHING DEFINITIONS GO BELOW             *)
(***********************************************************)
DEFINE_LATCHING

(***********************************************************)
(*       MUTUALLY EXCLUSIVE DEFINITIONS GO BELOW           *)
(***********************************************************)
DEFINE_MUTUALLY_EXCLUSIVE

(***********************************************************)
(*        SUBROUTINE/FUNCTION DEFINITIONS GO BELOW         *)
(***********************************************************)
(* EXAMPLE: DEFINE_FUNCTION <RETURN_TYPE> <NAME> (<PARAMETERS>) *)
(* EXAMPLE: DEFINE_CALL '<NAME>' (<PARAMETERS>) *)


DEFINE_CALL 'MAKE ROUTE' (INTEGER nIn,nOut)
{
	#WARN 'ADD/REMOVE CASES FOR BIGGER/SMALLER SWITCHERS'
	SWITCH(nIn)
	{
		CASE 1:CANCEL_WAIT_UNTIL 'SIGNAL1'
		CASE 2:CANCEL_WAIT_UNTIL 'SIGNAL2'
		CASE 3:CANCEL_WAIT_UNTIL 'SIGNAL3'
		CASE 4:CANCEL_WAIT_UNTIL 'SIGNAL4'
		CASE 5:CANCEL_WAIT_UNTIL 'SIGNAL5'
		CASE 6:CANCEL_WAIT_UNTIL 'SIGNAL6'
		CASE 7:CANCEL_WAIT_UNTIL 'SIGNAL7'
		CASE 8:CANCEL_WAIT_UNTIL 'SIGNAL8'
		CASE 9:CANCEL_WAIT_UNTIL 'SIGNAL9'
		CASE 10:CANCEL_WAIT_UNTIL 'SIGNAL10'
		CASE 11:CANCEL_WAIT_UNTIL 'SIGNAL11'
		CASE 12:CANCEL_WAIT_UNTIL 'SIGNAL12'
		CASE 13:CANCEL_WAIT_UNTIL 'SIGNAL13'
		CASE 14:CANCEL_WAIT_UNTIL 'SIGNAL14'
		CASE 15:CANCEL_WAIT_UNTIL 'SIGNAL15'
		CASE 16:CANCEL_WAIT_UNTIL 'SIGNAL16'
	}

	IF(nInValidSignal[nIn])	// IF THERE'S A SIGNAL WHEN ROUTEDED...ROUTE IT
	{
		SEND_COMMAND dvDGX_SWITCHER,"'CI',ITOA(nIn),'O',ITOA(nOut)"
	}
	ELSE // SEND INPUT WITH LOGO GENERATOR TO SELECTED OUTPUT. IF SOMEONE CONNECTS A SOURCE WHILE SUPPOSED TO BE ROUTED...ROUTE IT
	{
		SEND_COMMAND dvDGX_SWITCHER,"'CI',ITOA(nLogoInput),'O',ITOA(nOut)"	// ROUTE LOGO INPUT TO SELECTED OUTPUT
		
		#WARN 'ADD/REMOVE CASES FOR BIGGER/SMALLER SWITCHERS'
		SWITCH(nIn)// IF SOMEONE CONNECTS A SOURCE WHILE SUPPOSED TO BE ROUTED...ROUTE IT
		{
			CASE 1:
			{
				WAIT_UNTIL(nInValidSignal[1]) 'SIGNAL1'	// IF SOMEONE CONNECTS A SOURCE WHILE SUPPOSED TO BE ROUTED...
				{
					SEND_COMMAND dvDGX_SWITCHER,"'CI1O',ITOA(nOut)"	// ROUTE IT
				}
			}
			CASE 2:
			{
				WAIT_UNTIL(nInValidSignal[2]) 'SIGNAL2'
				{
					SEND_COMMAND dvDGX_SWITCHER,"'CI2O',ITOA(nOut)"
				}
			}
			CASE 3:
			{
				WAIT_UNTIL(nInValidSignal[3]) 'SIGNAL3'
				{
					SEND_COMMAND dvDGX_SWITCHER,"'CI3O',ITOA(nOut)"
				}
			}
			CASE 4:
			{
				WAIT_UNTIL(nInValidSignal[4]) 'SIGNAL4'
				{
					SEND_COMMAND dvDGX_SWITCHER,"'CI4O',ITOA(nOut)"
				}
			}
			CASE 5:
			{
				WAIT_UNTIL(nInValidSignal[5]) 'SIGNAL5'
				{
					SEND_COMMAND dvDGX_SWITCHER,"'CI5O',ITOA(nOut)"
				}
			}
			CASE 6:
			{
				WAIT_UNTIL(nInValidSignal[6]) 'SIGNAL6'
				{
					SEND_COMMAND dvDGX_SWITCHER,"'CI6O',ITOA(nOut)"
				}
			}
			CASE 7:
			{
				WAIT_UNTIL(nInValidSignal[7]) 'SIGNAL7'
				{
					SEND_COMMAND dvDGX_SWITCHER,"'CI7O',ITOA(nOut)"
				}
			}
			CASE 8:
			{
				WAIT_UNTIL(nInValidSignal[8]) 'SIGNAL8'
				{
					SEND_COMMAND dvDGX_SWITCHER,"'CI8O',ITOA(nOut)"
				}
			}
			CASE 9:
			{
				WAIT_UNTIL(nInValidSignal[9]) 'SIGNAL9'
				{
					SEND_COMMAND dvDGX_SWITCHER,"'CI9O',ITOA(nOut)"
				}
			}
			CASE 10:
			{
				WAIT_UNTIL(nInValidSignal[10]) 'SIGNAL10'
				{
					SEND_COMMAND dvDGX_SWITCHER,"'CI10O',ITOA(nOut)"
				}
			}
			CASE 11:
			{
				WAIT_UNTIL(nInValidSignal[11]) 'SIGNAL11'
				{
					SEND_COMMAND dvDGX_SWITCHER,"'CI11O',ITOA(nOut)"
				}
			}
			CASE 12:
			{
				WAIT_UNTIL(nInValidSignal[12]) 'SIGNAL12'
				{
					SEND_COMMAND dvDGX_SWITCHER,"'CI12O',ITOA(nOut)"
				}
			}
			CASE 13:
			{
				WAIT_UNTIL(nInValidSignal[13]) 'SIGNAL13'
				{
					SEND_COMMAND dvDGX_SWITCHER,"'CI13O',ITOA(nOut)"
				}
			}
			CASE 14:
			{
				WAIT_UNTIL(nInValidSignal[14]) 'SIGNAL14'
				{
					SEND_COMMAND dvDGX_SWITCHER,"'CI14O',ITOA(nOut)"
				}
			}
			CASE 15:
			{
				WAIT_UNTIL(nInValidSignal[15]) 'SIGNAL15'
				{
					SEND_COMMAND dvDGX_SWITCHER,"'CI15O',ITOA(nOut)"
				}
			}
			CASE 16:
			{
				WAIT_UNTIL(nInValidSignal[16]) 'SIGNAL16'
				{
					SEND_COMMAND dvDGX_SWITCHER,"'CI16O',ITOA(nOut)"
				}
			}
		}
	}
}


(***********************************************************)
(*                STARTUP CODE GOES BELOW                  *)
(***********************************************************)
DEFINE_START

(***********************************************************)
(*                THE EVENTS GO BELOW                      *)
(***********************************************************)
DEFINE_EVENT

DATA_EVENT[dvSwrInputs]	// Parsing DGX for valid signal
{
	COMMAND:
	{
		LOCAL_VAR INTEGER nWhichInputPort
		
		nWhichInputPort = GET_LAST(dvSwrInputs)
		
		SELECT
		{
			ACTIVE(FIND_STRING(DATA.TEXT,"'VIDIN_STATUS-VALID SIGNAL'",1)):
			{
				nInValidSignal[nWhichInputPort] = 1
			}
			ACTIVE(FIND_STRING(DATA.TEXT,"'VIDIN_STATUS-NO SIGNAL'",1)):
			{
				nInValidSignal[nWhichInputPort] = 0
			}
		}
	}
}

BUTTON_EVENT[dvTP,100]	// MAKE A ROUTE
{
	PUSH:
	{
		CALL 'MAKE ROUTE' (1,5) // INPUT 1 TO OUTPUT 5
	}
}

(*****************************************************************)
(*                                                               *)
(*                      !!!! WARNING !!!!                        *)
(*                                                               *)
(* Due to differences in the underlying architecture of the      *)
(* X-Series masters, changing variables in the DEFINE_PROGRAM    *)
(* section of code can negatively impact program performance.    *)
(*                                                               *)
(* See  Differences in DEFINE_PROGRAM Program Execution  section *)
(* of the NX-Series Controllers WebConsole & Programming Guide   *)
(* for additional and alternate coding methodologies.            *)
(*****************************************************************)

DEFINE_PROGRAM

(*****************************************************************)
(*                       END OF PROGRAM                          *)
(*                                                               *)
(*         !!!  DO NOT PUT ANY CODE BELOW THIS COMMENT  !!!      *)
(*                                                               *)
(*****************************************************************)


Related Videos

logo hdmi

Was this article helpful?

Yes
No
Give feedback about this article

Table of Contents

​​Question: Answer:

Related Articles

  • DGX Endpoint with no Power
  • DGX Audio Switching Board Part Numbers
  • DGX 100 series 1.6.x firmware
  • Enova DGX Dante Audio Switching Board Kit Update
  • DGX x00 with 4K60 DXLink - Switcher & Controller Update

Related Articles

  • DGX Endpoint with no Power
  • DGX Audio Switching Board Part Numbers
  • DGX 100 series 1.6.x firmware
  • Enova DGX Dante Audio Switching Board Kit Update
  • DGX x00 with 4K60 DXLink - Switcher & Controller Update
Copyright © HARMAN Professional. All rights reserved. Privacy Policy | Terms of Use
Expand