Home AMX User Forum NetLinx Studio
Options

AVR Module -Multizone how to

egirardiegirardi Posts: 17
edited February 2023 in NetLinx Studio

New to AMX so sorry for the noob question. Downloaded the Denon AVR2113CI module (really need a AVR-X4700h but i think this one may work, only old modules listed for download). Cant figure out how to address zone 2 of a Denon AVR with these modules. I read the Word doc but nothing says Zone 2 anywhere. Any ideas you can throw my way ?

Comments

  • Options
    HARMAN_ChrisHARMAN_Chris Posts: 598
    edited February 2023

    If there is a device capability that is not included in an AMX duet module, you simply use passthru to inject the command yourself. The module handles communication IN and OUT with the device. Passthru would send the command you want and Passback would allow you to see the response if you needed to update feedback or a tracking variable.

  • Options

    Any way to look in the module to check it ? I really need volume feedback from the device/module for zone 2. I know how to send Zone2 commands via pass through

  • Options

    The module shows this definition in it's Word Doc - does this mean that Zone 2 should use port 2 of the device ?
    DEFINE_DEVICE

    vdvDenon2113CI = 41001:1:0 // The COMM module should use this as its duet device
    vdvDenon2113CI2 = 41001:2:0 // The COMM module should use this as its duet device

  • Options
    egirardiegirardi Posts: 17
    edited February 2023

    Also - looking at the Sonance_DSP8130MKII_Comm_dr1_0_0 module - which i also have to use - it is multizone and appears to use the port as the "channel/zone". Which raises another question - the example program for this only initializes the IP address and IP port for the first "Zone" 41001:1:0 in the ONLINE event, but not for all the other 7 "zones" on ports 2-8. how does this actually work ?

    vdvSonanceDSP8130MKII_1 = 41001:1:0
    vdvSonanceDSP8130MKII_2 = 41001:2:0
    vdvSonanceDSP8130MKII_3 = 41001:3:0
    vdvSonanceDSP8130MKII_4 = 41001:4:0
    vdvSonanceDSP8130MKII_5 = 41001:5:0
    vdvSonanceDSP8130MKII_6 = 41001:6:0
    vdvSonanceDSP8130MKII_7 = 41001:7:0
    vdvSonanceDSP8130MKII_8 = 41001:8:0

    DATA_EVENT [vdvSonanceDSP8130MKII_1]
    {
    ONLINE:
    {
    send_command vdvSonanceDSP8130MKII_1,'debug-4'
    send_command vdvSonanceDSP8130MKII_1,'PROPERTY-Poll_Time,10000'
    send_command vdvSonanceDSP8130MKII_1,'PROPERTY-IP_Address,10.92.50.8'
    send_command vdvSonanceDSP8130MKII_1,'PROPERTY-Port,52000'
    send_command vdvSonanceDSP8130MKII_1,'REINIT'
    }
    }

  • Options

    Excellent! I think you have the answer. Load it up and test.

  • Options
    egirardiegirardi Posts: 17
    edited February 2023

    Well i'm not clear on the AVR zone 2 OR the Sonance amp zones - I dont have the equipment at my office thats all onsite, all i have is the processor and an ipad. Trying to get this 99% correct before I go onsite. So i'm trying to get some more definitive answers on how it works in code.

  • Options
    HARMAN_ChrisHARMAN_Chris Posts: 598
    edited February 2023

    Untested, but this should show one way to manage source selection in your dual zone environment.

    PROGRAM_NAME='RcvrTEST'
    DEFINE_DEVICE
    dvTP1               = 10001:01:0
    dvTP2               = 10002:01:0
    dvLivRm_Rcvr        = 05001:01:0 //Denon XYZ
    vdvLivRm_RcvrZ1 = 41001:01:0 //Duet Virtual
    vdvLivRm_RcvrZ2 = 41001:02:0 //Duet Virtual
    
    #INCLUDE 'SNAPI';
    
    DEFINE_CONSTANT //System 
    DEV dvGlobalTP [] =
    {
        dvTP1,  //1
        dvTP2   //2
    }; 
    
    DEFINE_CONSTANT //AV Receiver Input Select Numbers from Interface Doc
    INTEGER nNumAVSources   = 5;
    INTEGER nRCVR_VCR       = 01; 
    INTEGER nRCVR_CblSat    = 03; 
    INTEGER nRCVR_Game      = 05; 
    INTEGER nRCVR_DVD       = 07; 
    INTEGER nRCVR_Tape      = 09; 
    INTEGER nRCVR_CD        = 11; 
    INTEGER nRCVR_FMTuner   = 12; 
    INTEGER nRCVR_AMTuner   = 13;
    INTEGER nRCVR_XMTuner   = 14;
    INTEGER nRCVR_Sirius        = 15;
    
    INTEGER nRCVR_LR_SrcInputs[nNumAVSources] = //What source the device needs to go to for each source in matching array
    {
        PWR_OFF,  // Source 1 <- OFF
        nRCVR_CblSat,       // Source 2 <- Cable
        nRCVR_CD,   // Source 3 <- AppleTV
        nRCVR_DVD,      // Source 4 <- DVD
        nRCVR_Game       // Source 5 <- SmartTV
    };
    
    DEFINE_CONSTANT //TP Buttons
    INTEGER nTPBtnAVSourceSelectZ1 [] =
    {
        50, //System OFF
        51, //System Source 1//Cable
        52, //System Source 2//AppleTV
        53, //System Source 3//DVD
        54  //System Source 4//Smart TV
    };
    INTEGER nTPBtnAVSourceSelectZ2 [] =
    {
        60, //System OFF
        61, //System Source 1//Cable
        62, //System Source 2//AppleTV
        63, //System Source 3//DVD
        64  //System Source 4//Smart TV
    };
    
    DEFINE_MODULE 'Denon_AVR2308CI_Comm_dr1_0_0' comm(vdvLivRm_RcvrZ1, dvLivRm_Rcvr)
    
    DEFINE_EVENT //TP Button Events
    BUTTON_EVENT [dvGlobalTP, nTPBtnAVSourceSelectZ1]
    {
        PUSH:    
        {
        SEND_COMMAND vdvLivRm_RcvrZ1, "'INPUTSELECT-',ITOA(nRCVR_LR_SrcInputs[GET_LAST(nTPBtnAVSourceSelectZ1])";
        }
    }
    BUTTON_EVENT [dvGlobalTP, nTPBtnAVSourceSelectZ2]
    {
        PUSH:    
        {
        SEND_COMMAND vdvLivRm_RcvrZ2, "'INPUTSELECT-',ITOA(nRCVR_LR_SrcInputs[GET_LAST(nTPBtnAVSourceSelectZ2])";
        }
    }
    
  • Options

    So vdvLivRm_RcvrZ2 = 41001:02:0 is zone 2?

  • Options

    So whats really confusing is that the module is ONLY defined for Zone 1
    DEFINE_MODULE 'Denon_AVR2308CI_Comm_dr1_0_0' comm(vdvLivRm_RcvrZ1, dvLivRm_Rcvr )
    SO...... How is there a DATA_EVENT for Zone 2 with no zone 2 module defined?

  • Options

    @egirardi said:
    So whats really confusing is that the module is ONLY defined for Zone 1
    DEFINE_MODULE 'Denon_AVR2308CI_Comm_dr1_0_0' comm(vdvLivRm_RcvrZ1, dvLivRm_Rcvr )
    SO...... How is there a DATA_EVENT for Zone 2 with no zone 2 module defined?

    The module code will instance as many ports on the virtual device as it needs. You are free to define each port as you do with port one with a friendly name but that is not required for the port to be there and active.

  • Options
    HARMAN_ChrisHARMAN_Chris Posts: 598
    edited February 2023

    One module that has multiple ports. When that module spins up, it is placing information across multiple ports as a means of organization and separation. If you look at the sonance example, you have one module defined, and then a virtual device for each zone. SNAPI Level #1 represents volume. If you want to change volume on zone 8, you change level 1 on port 8. If you want to know the current volume level for zone 6, you read the level value for level 1 on port 6. If there is a command like ?TEMPERATURE to represent the physical device and is not related to a zone, we put that info on port 1. Port 1 represents zone 1 and the device attributes that are associated with the hardware - like IP address or other things that are not varied across the different multi zone outputs.

    Think of the module definition statement to be who AMX is actually communicating with. We will talk to the box found on serial port 1. The module knows how to talk to that physical appliance and the commands sent will vary depending on which port you are trying to talk to.

    For zone 1 in the environment, we send commands to virtual device 1, and the module will format them properly to indicate you want the action to occur on zone 1.

    For zone 2 in the environment, we send commands to virtual device 2, and the module will format them properly to indicate you want the action to occur on zone 2 output of the stereo receiver.

    In the end, we still talk to one physical device in the real world. It may be capable of multiple zones, but it is all managed through one physical device connection between AMX and the device.

  • Options

    Ok - now it makes sense ! -

  • Options
    John NagyJohn Nagy Posts: 1,734
    edited February 2023

    Sometimes we work so hard to do something that we don't think about whether we need it at all.
    Volume feedback to show on a touch panel. Ponder that if you merely told the zone to go to a volume level instead of blind up and down... that you would already and always know exactly the level to show. Why make the AVR repeat it back to you unless you need to run tandem control with someone who insists on manually turning the knobs on the AVR. If it's in the rack, and the only thing that can change the volume is the code, why ask the AVR if it heard you? If it didn't, it likely is ignoring you completely and didn't even turn on. Your customer will let you know, same as they would if your full-on-feedback code was working.

Sign In or Register to comment.