Home AMX User Forum AMXForums Archive Threads AMX Hardware Matrix Distributed Audio

Matrix Volume levels on Modero TP

Is there a way to tie up the Matrix audio volume levels to the Modero Bargraphs? So, when the volume is changed on the Matrix it updates the Modero TP bargraph and vice-versa. I am trying to accomplish the same volume controls like the old AS16 and the new Autopatch levels. Usually on my house audio page I display all the room bargraphs so the end user can see the volume feedback for all zones, as well as adjust any single zone volume he/she wants. I want to do the same with the Matrix Audio. Any ideas? Thanks,

Ricardo

Comments

  • viningvining Posts: 4,368
    First thing I would do is create two arrays or structures to hold matrix volume values. First array/structure would be to hold received volume levels and the second would be for comparison of sent values. Make bar graphs for each zone with level function set to "display only". Let's assume 16 zones so level codes will be 1-16.
    DEFINE_PROGRAM // or FeedBack TmeLine
    
    if (AP_SentValue[1].Volume != AP_Value[1].Volume)// one for each zone
         {
         send_level dvTP_Matrix,Zone1_Display,AP_Value[1].Volume ;
         AP_SentValue[1].Volume = AP_Value[1].Volume ;
         }
    if (SentValue[2].Volume!= AP_Value[2].Volume)// one for each zone
         {
         send_level dvTP_Matrix,2,AP_AP_Value[2].Volume ;
         AP_SentValue[2].Volume = AP_Value[2].Volume ;
         }
    //continued or "for" loop
    
    for (i == 1 ; i <= MAX_AP_ZONES ; i ++)
         {
         if (SentValue[1].Volume!= AP_Value[i].Volume)
    	  {
    	  send_level dvTP_Matrix,AP_DisplayLVL[i],AP_AP_Value[i].Volume ;
    	  AP_SentValue[i].Volume = AP_Value[i].Volume ;
    	  }
         }
    
    Add additional values for bass, treble, balance. That should take care of your bar graph display of current levels.

    Next create duplicate bar graphs for each display bar graph and set level function to "active" and make the button transparent and place on top of its counter part. Make these bar graphs level codes 17-32.

    Create a var array or individual vars to hold values of each "active bar graph" and do a CREATE_LEVEL in define_start to tie each bar graph to its corresponding variable.
    create_level dvTP_Matrix,AP_ActiveLVL[1],nAP_Vol_Lvl[1] ;
    //                device TP    , level code        , variable
    

    Then do a Level_Event to handle pushes on the bar graph.
    level_event  [dvTP_Matrix,AP_ActiveLVL[1]]
         {//No idea what the syntax would be.
         send_string dvAP,"'SetVol,Zone_1,',itoa(nAP_Vol_Lvl[1]),13"
         }
    level_event  [dvTP_Matrix,AP_ActiveLVL[2]]
         {//No idea what the syntax would be.
         send_string dvAP,"'SetVol,Zone_2,',itoa(nAP_Vol_Lvl[2]),13"
         }
    

    You could also try using LEVEL.VALUE instead of using created level variable. I like creating them.

    I haven't done this in a while so this could be completely wrong but I think it's reasonably accurate.
  • Thanks Vining. I like your approach. By comparing the values, you make sure that a new value is sent only if it differs from the stored one. I will try your approach when I get the Matrix next month.

    Ricardo
  • Joe HebertJoe Hebert Posts: 2,159
    There is no need (and I imagine it?s less efficient) to check for old value vs. new value before a SEND_LEVEL. Netlinx is smart enough to know not to generate traffic if the value hasn?t changed or if the TP isn?t ONLINE. So you could have the following:

    DEFINE_PROGRAM
    SEND_LEVEL dvTP,1,nLevelVal

    Monitor the Notifications window and you?ll see that the only time a level output is generated to the TP is when the value of nLevelVal changes.

    Just food for thought?
  • viningvining Posts: 4,368
    Joe Hebert wrote:
    There is no need (and I imagine it?s less efficient) to check for old value vs. new value before a SEND_LEVEL. Netlinx is smart enough to know not to generate traffic if the value hasn?t changed or if the TP isn?t ONLINE. So you could have the following:
    So what your saying is that Netlinx tracks level values in the same manner that it tracks channels states. Hmmm. What about VT button text, does it track that as well? Does Netlinx keep a structure of every button value, Channel State, Level State and VT Text? Basically doing internally what I've been doing externally and therefore doing twice the work.
  • Joe HebertJoe Hebert Posts: 2,159
    vining wrote:
    What about VT button text, does it track that as well?
    Nope, not variable text. We have to take care of that ourselves, usually with the ONLINE event of the TP if we want to keep things in sync.
  • kennyannkennyann Posts: 113
    volume status

    I am new to the Matrix world. Does the Matrix automatically send you the volume level or do you wan to send volume level status.
  • kennyannkennyann Posts: 113
    volume level

    I mean volume level status command
  • viningvining Posts: 4,368
    Origanally you had to constantly poll in order to track volume levels of zones with AMX but If I recall correctly they updated the firmware so that Matrix will now send a string when any source or volume levels are changed via keypads or front panel entries.
  • kennyannkennyann Posts: 113
    volume status

    thank you for your quick response. does it do the same with AMX sending the RS232 codes.
  • viningvining Posts: 4,368
    it's quite possible that is just sends a string when ever the they change regardless. I haven't had a chance to play with one since the original so I don't know.
Sign In or Register to comment.