Announcement

Collapse
No announcement yet.

Announce: Material Skin

Collapse
X
 
  • Time
  • Show
Clear All
new posts

  • Originally posted by cpd73
    MaterialSkin != DefaultSkin. A different API is used. All Material can do is show the info supplied by LMS. Try Squeezer, SqueezeCtrl, or iPeng, and you should see the same,
    Didn't realize that they used different APIs. Thanks for the information! I do indeed see the the same on those other apps.

    Comment


    • Originally posted by justjason
      I am not sure where the correct place to ask this question is, so please let me know if I should ask this elsewhere.
      I would like to use the IR Blaster plugin with my SB Touch. After installing it , I was greeted with a blank plugin page. Only after I changed from Material Skin to Default Skin was the plugin page visible. Is this something on the Material skin side or on the plugin side, and can that be resolved ?
      I've installed this plugin, but it does not show at all for me - not in Default or Material, no entries whatsoever. Perhaps its because I don't have the correct hardware.

      Anyhow, looking at your screenshots this would appear to not be a Material issue. The page that you are showing from Material is actually from LMS's "Classic" (not "Default") skin. Material uses the "Classic" skin for server settings, extra platyer settings, and "Extras". Your "IRBlaster" is from a page within "Player Settings", so this is all from LMS. All Material does is add some CSS (and a little Javascript) to the "Classic" skin to make it appear slightly more Material-like. You should be able to see the same issue if you use the "Classic" skin - eg. "h t t p://SERVER:90090/Classic"
      Material debug: 1. Launch via http: //SERVER:9000/material/?debug=json (Use http: //SERVER:9000/material/?debug=json,cometd to also see update messages, e.g. play queue) 2. Open browser's developer tools 3. Open console tab in developer tools 4. REQ/RESP messages sent to/from LMS will be logged here.

      Comment


      • Originally posted by mps
        Didn't realize that they used different APIs. Thanks for the information! I do indeed see the the same on those other apps.
        Yeah, MaterialSkin is not really a "Skin" but more a complete app - as per those others.
        Material debug: 1. Launch via http: //SERVER:9000/material/?debug=json (Use http: //SERVER:9000/material/?debug=json,cometd to also see update messages, e.g. play queue) 2. Open browser's developer tools 3. Open console tab in developer tools 4. REQ/RESP messages sent to/from LMS will be logged here.

        Comment


        • Originally posted by cpd73
          You should be able to see the same issue if you use the "Classic" skin - eg. "h t t p://SERVER:90090/Classic"
          Trying the .../classic url , I end up with an interesting Frankenstein, but changing over in Interface Settings to Classic I do see the same behavior - ie no plugin page. What would the Default page be building from ?

          Originally posted by cpd73
          I've installed this plugin, but it does not show at all for me - not in Default or Material, no entries whatsoever. Perhaps its because I don't have the correct hardware.
          Yeah, It would only work for Touch, SB 2/3 and Transporter (I think)

          Does this mean that the issue is on the plugin side ?
          Attached Files

          Comment


          • Originally posted by justjason
            Trying the .../classic url , I end up with an interesting Frankenstein, but changing over in Interface Settings to Classic I do see the same behavior - ie no plugin page. What would the Default page be building from ?



            Yeah, It would only work for Touch, SB 2/3 and Transporter (I think)

            Does this mean that the issue is on the plugin side ?
            All skins build from the same HTML template, so should work. It's possible this plugin does something the Classic skin does not like. So, my guess this is an incomatability issue between the plugin and LMS/Classic.
            Material debug: 1. Launch via http: //SERVER:9000/material/?debug=json (Use http: //SERVER:9000/material/?debug=json,cometd to also see update messages, e.g. play queue) 2. Open browser's developer tools 3. Open console tab in developer tools 4. REQ/RESP messages sent to/from LMS will be logged here.

            Comment


            • Is this Material or LMS?

              Two instances of LMS both using the same library of music
              Both the most recent version of LMS but running on different architecture with different versions of Perl and Audio::Scan

              Instance 1
              Click image for larger version

Name:	1.jpg
Views:	1
Size:	22.3 KB
ID:	1575394

              Instance 2
              Click image for larger version

Name:	2.jpg
Views:	1
Size:	25.6 KB
ID:	1575395

              New Music side by side - the indicated tracks are multi tagged with Album Artist as "Graham Parker" and "Graham Parker & The Rumour"
              Can anyone explain why the difference?
              Click image for larger version

Name:	3.jpg
Views:	1
Size:	111.8 KB
ID:	1575396
              Jim



              VB2.4 storage QNAP TS419p (NFS)
              Living Room Joggler & Pi4/Khadas -> Onkyo TXNR686 -> Celestion F20s
              Office Joggler & Pi3 -> Denon RCD N8 -> Celestion F10s
              Dining Room SB Radio
              Bedroom (Bedside) Pi Zero+DAC ->ToppingTP21 ->AKG Headphones
              Bedroom (TV) & Bathroom SB Touch ->Denon AVR ->Mordaunt Short M10s + Kef ceiling speakers
              Guest Room Joggler > Topping Amp -> Wharfedale Modus Cubes

              Comment


              • Originally posted by d6jg
                Two instances of LMS both using the same library of music
                Both the most recent version of LMS but running on different architecture with different versions of Perl and Audio::Scan

                ...
                New Music side by side - the indicated tracks are multi tagged with Album Artist as "Graham Parker" and "Graham Parker & The Rumour"
                Can anyone explain why the difference?
                To be honest, no idea. But, you can use Material's JSON debug (see my sig) to see what request Material sends to LMS to get "New Music" and then see what LMS's response is. Then you can compare these between the two instances.
                Last edited by cpd73; 2022-07-07, 10:23.
                Material debug: 1. Launch via http: //SERVER:9000/material/?debug=json (Use http: //SERVER:9000/material/?debug=json,cometd to also see update messages, e.g. play queue) 2. Open browser's developer tools 3. Open console tab in developer tools 4. REQ/RESP messages sent to/from LMS will be logged here.

                Comment


                • Hey, Craig. Now that the "Denon/Marantz AVR Settings" plugin menu is supported (thanks for your help with that), I am really enjoying using and learning about the MS app. One thing I would really like is to somehow be able to access the plugin menu either directly from the Playing screen or, alternatively, pin it to the Home screen. I don't think either of those possibilities currently exist but is there any way to accomplish it via a customization? It would make the menu much more convenient to use during listening sessions. Thanks!
                  Sam

                  Comment


                  • Originally posted by SamY
                    Hey, Craig. Now that the "Denon/Marantz AVR Settings" plugin menu is supported (thanks for your help with that), I am really enjoying using and learning about the MS app. One thing I would really like is to somehow be able to access the plugin menu either directly from the Playing screen or, alternatively, pin it to the Home screen. I don't think either of those possibilities currently exist but is there any way to accomplish it via a customization? It would make the menu much more convenient to use during listening sessions. Thanks!
                    The problem is this plugin is player specific, whereas the homescreen, etc. is not. If you want you can add an entry to the main menu by creating an actions.json with:

                    Code:
                    {
                      "system":[
                        {
                          "title":"Denon",
                          "script":"bus.$emit('dlg.open', 'playersettingsplugin', '$ID', '$NAME', {title:'Denon', actions:{go:{cmd:['avpTop']}}}, false);"
                        }
                      ]
                    }
                    See https://github.com/CDrummond/lms-mat...-Customisation for more info. I might expand this to allow adding entries to the player drop-down menu, and have these entries filter on player ID.
                    Material debug: 1. Launch via http: //SERVER:9000/material/?debug=json (Use http: //SERVER:9000/material/?debug=json,cometd to also see update messages, e.g. play queue) 2. Open browser's developer tools 3. Open console tab in developer tools 4. REQ/RESP messages sent to/from LMS will be logged here.

                    Comment


                    • Originally posted by cpd73
                      I might expand this to allow adding entries to the player drop-down menu, and have these entries filter on player ID.
                      Replying to myself in case you do not see edits, but next release of Material will allow you to add these actions to the player list menu, and (optiojnally) only for certain player IDs. e.g.
                      Code:
                      {
                        "players":[
                          {
                            "players":["01:02:03:04:05:06", "aa:bb:cc:dd:ee:ff"],
                            "title":"Denon",
                            "script":"bus.$emit('dlg.open', 'playersettingsplugin', '$ID', '$NAME', {title:'Denon', actions:{go:{cmd:['avpTop']}}}, false);"
                          }
                        ]
                      }
                      Material debug: 1. Launch via http: //SERVER:9000/material/?debug=json (Use http: //SERVER:9000/material/?debug=json,cometd to also see update messages, e.g. play queue) 2. Open browser's developer tools 3. Open console tab in developer tools 4. REQ/RESP messages sent to/from LMS will be logged here.

                      Comment


                      • Originally posted by cpd73
                        The problem is this plugin is player specific, whereas the homescreen, etc. is not. If you want you can add an entry to the main menu by creating an actions.json with:

                        Code:
                        {
                          "system":[
                            {
                              "title":"Denon",
                              "script":"bus.$emit('dlg.open', 'playersettingsplugin', '$ID', '$NAME', {title:'Denon', actions:{go:{cmd:['avpTop']}}}, false);"
                            }
                          ]
                        }
                        Thanks, Craig! I tried this and it successfully brings up the main menu but then fails with the following message when a submenu is invoked. The same message is displayed immediately upon invoking the menu for a player not using the plugin:

                        Code:
                        ERROR: List processing failed TypeError: Cannot read properties of undefined (reading 'startsWith')
                        I don't know JS at all but something tells me I'm going to need a debug log.

                        P.S. I saw your subsequent posts. Maybe I should just wait and test with the new player list menu customization support.
                        Sam

                        Comment


                        • Originally posted by cpd73
                          To be honest, no idea. But, you can use Material's JSON debug (see my sig) to see what request Material sends to LMS to get "New Music" and then see what LMS's response is. Then you can compare these between the two instances.
                          After running debug I found that the call is identical but the 2 servers respond slightly differently - so not a Material problem.

                          The weird thing is that I did a full clear and rescan on both instances before running the debug but examination of library.db in both doesn't show any difference in the contributors_albums table for the album ID in question.

                          I then fired up a third LMS instance also upgraded to latest LMS. It is also a Pi and therefore identical in all respects - perl, Audio:Scan and db server etc to the one reporting multiple album artists but this one does not show multiple album artists although both are in the contributors table and assigned to the album ID in question in contributors_album

                          @michael - when you do a clear and rescan does it actually drop all tables from the db and create from scratch or is there anything that persists?
                          Jim



                          VB2.4 storage QNAP TS419p (NFS)
                          Living Room Joggler & Pi4/Khadas -> Onkyo TXNR686 -> Celestion F20s
                          Office Joggler & Pi3 -> Denon RCD N8 -> Celestion F10s
                          Dining Room SB Radio
                          Bedroom (Bedside) Pi Zero+DAC ->ToppingTP21 ->AKG Headphones
                          Bedroom (TV) & Bathroom SB Touch ->Denon AVR ->Mordaunt Short M10s + Kef ceiling speakers
                          Guest Room Joggler > Topping Amp -> Wharfedale Modus Cubes

                          Comment


                          • Originally posted by d6jg
                            After running debug I found that the call is identical but the 2 servers respond slightly differently - so not a Material problem.

                            The weird thing is that I did a full clear and rescan on both instances before running the debug but examination of library.db in both doesn't show any difference in the contributors_albums table for the album ID in question.

                            I then fired up a third LMS instance also upgraded to latest LMS. It is also a Pi and therefore identical in all respects - perl, Audio:Scan and db server etc to the one reporting multiple album artists but this one does not show multiple album artists although both are in the contributors table and assigned to the album ID in question in contributors_album

                            @michael - when you do a clear and rescan does it actually drop all tables from the db and create from scratch or is there anything that persists?
                            Scratch all that. It was Material after all - Show All Artists setting!! @Craig you must have forgotten you created the option!
                            Jim



                            VB2.4 storage QNAP TS419p (NFS)
                            Living Room Joggler & Pi4/Khadas -> Onkyo TXNR686 -> Celestion F20s
                            Office Joggler & Pi3 -> Denon RCD N8 -> Celestion F10s
                            Dining Room SB Radio
                            Bedroom (Bedside) Pi Zero+DAC ->ToppingTP21 ->AKG Headphones
                            Bedroom (TV) & Bathroom SB Touch ->Denon AVR ->Mordaunt Short M10s + Kef ceiling speakers
                            Guest Room Joggler > Topping Amp -> Wharfedale Modus Cubes

                            Comment


                            • Originally posted by cpd73
                              Replying to myself in case you do not see edits, but next release of Material will allow you to add these actions to the player list menu, and (optiojnally) only for certain player IDs. e.g.
                              Code:
                              {
                                "players":[
                                  {
                                    "players":["01:02:03:04:05:06", "aa:bb:cc:dd:ee:ff"],
                                    "title":"Denon",
                                    "script":"bus.$emit('dlg.open', 'playersettingsplugin', '$ID', '$NAME', {title:'Denon', actions:{go:{cmd:['avpTop']}}}, false);"
                                  }
                                ]
                              }
                              I installed the latest version from GitHub and used the new player list menu customization but received the same JS error message, i.e.:
                              Code:
                              ERROR: List processing failed TypeError: Cannot read properties of undefined (reading 'startsWith')
                              I ran with debug and the console log shows that, for some reason, the submenu requests are formatted differently when the main (avpTop) menu request is invoked from the Player list menu than when coming from the Player settings menu, although they seem to be equivalent in content. Here is a comparison of two identical requests for the same simple submenu:

                              Successful (Invoked from Player settings menu):
                              Code:
                              [1:58:19 PM] JSON REQ: ["b8:26:eb:c1:71:f0",["avpDynEq",0,300,"menu:avpDynEq"]]
                              utils.js?r=DEV-2022-07-08-13-32-13:123 [1:58:19 PM] JSON RESP:
                              {"method":"slim.request","params":["b8:26:eb:c1:71:f0",["avpDynEq","0",300,"menu:avpDynEq"]],"id":0,"result":{"count":2,"item_loop":[{"radio":1,"text":"Dynamic EQ and Volume Off","actions":{"do":{"player":0,"cmd":["avpSetDynEq",0,"0"]}}},{"radio":0,"text":"Dynamic EQ On","actions":{"do":{"cmd":["avpSetDynEq",1,"0"],"player":0}}}],"offset":0}}
                              Failed (Invoked from Player list or Main menu):
                              Code:
                              [1:59:30 PM] JSON REQ: ["b8:26:eb:c1:71:f0",["avpDynEq",0,300,"menu:avpDynEq"]]
                              utils.js?r=DEV-2022-07-08-13-32-13:123 [1:59:30 PM] JSON RESP: 
                              {"result":{"item_loop":[{"radio":1,"text":"Dynamic EQ and Volume Off","actions":{"do":{"player":0,"cmd":["avpSetDynEq",0,"0"]}}},{"text":"Dynamic EQ On","radio":0,"actions":{"do":{"player":0,"cmd":["avpSetDynEq",1,"0"]}}}],"offset":0,"count":2},"id":0,"params":["b8:26:eb:c1:71:f0",["avpDynEq","0",300,"menu:avpDynEq"]],"method":"slim.request"}
                              The failed request displays the error message rather than the menu and is followed by this entry in the console log:
                              Code:
                              utils.js?r=DEV-2022-07-08-13-32-13:155 [Fri, 08 Jul 2022 17:59:30 GMT] ERROR:TypeError: Cannot read properties of undefined (reading 'startsWith') []length: 0[[Prototype]]: Array(0)at: ƒ at()concat: ƒ concat()constructor: ƒ Array()copyWithin: ƒ copyWithin()entries: ƒ entries()every: ƒ every()fill: ƒ fill()filter: ƒ filter()find: ƒ find()findIndex: ƒ findIndex()findLast: ƒ findLast()findLastIndex: ƒ findLastIndex()flat: ƒ flat()flatMap: ƒ flatMap()forEach: ƒ forEach()includes: ƒ includes()indexOf: ƒ indexOf()join: ƒ join()keys: ƒ keys()lastIndexOf: ƒ lastIndexOf()length: 0map: ƒ map()pop: ƒ pop()push: ƒ push()reduce: ƒ reduce()reduceRight: ƒ reduceRight()reverse: ƒ reverse()shift: ƒ shift()slice: ƒ slice()some: ƒ some()sort: ƒ sort()splice: ƒ splice()toLocaleString: ƒ toLocaleString()toString: ƒ toString()unshift: ƒ unshift()values: ƒ values()Symbol(Symbol.iterator): ƒ values()Symbol(Symbol.unscopables): {copyWithin: true, entries: true, fill: true, find: true, findIndex: true, …}[[Prototype]]: Object
                              logError @ utils.js?r=DEV-2022-07-08-13-32-13:155
                              parseBrowseResp @ browse-resp.js?r=DEV-2022-07-08-13-32-13:1186
                              (anonymous) @ player-settings-plugin.js?r=DEV-2022-07-08-13-32-13:144
                              Promise.then (async)
                              fetch @ player-settings-plugin.js?r=DEV-2022-07-08-13-32-13:142
                              click @ VM1850:3
                              He @ vue.min.js?r=2.6.11:6
                              n @ vue.min.js?r=2.6.11:6
                              He @ vue.min.js?r=2.6.11:6
                              e.$emit @ vue.min.js?r=2.6.11:6
                              click @ vuetify.min.js?r=1.5.24trim:6
                              He @ vue.min.js?r=2.6.11:6
                              n @ vue.min.js?r=2.6.11:6
                              Yr.o._wrapper @ vue.min.js?r=2.6.11:6
                              Again, the entire menu structure works flawlessly when invoked from the Player settings menu. Any ideas?
                              Sam

                              Comment


                              • Originally posted by d6jg
                                Scratch all that. It was Material after all - Show All Artists setting!! @Craig you must have forgotten you created the option!
                                Well that's the problem with so many config items, 90% of which I do not use.
                                Material debug: 1. Launch via http: //SERVER:9000/material/?debug=json (Use http: //SERVER:9000/material/?debug=json,cometd to also see update messages, e.g. play queue) 2. Open browser's developer tools 3. Open console tab in developer tools 4. REQ/RESP messages sent to/from LMS will be logged here.

                                Comment

                                Working...
                                X
                                😀
                                🥰
                                🤢
                                😎
                                😡
                                👍
                                👎