ANNOUNCE: LMS Monitor 2020

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • shunte88
    Senior Member
    • Aug 2010
    • 134

    ANNOUNCE: LMS Monitor 2020

    Likely with pCP 6.00 being released today this post won't get too many eyeballs; oh well

    And, apologies if I've double posted - mods delete this post if I have

    I've been a long time user of LMSMonitor, even going as far as to build enclosures with custom mill work to incorporate an OLED with LMSMonitor completing the setup.

    I hope kabavol doesn't mind my retooling the solution given the repo has not had updates in several years now.

    See the repo for details.

    TL;DR - highlights are:
    • Built for pi4 and earlier models
    • Scrolling text for long labels
    • A "retro" clock when not playing
    • Stereo VU Meters visualizer
    • Spectrum Analysis visualizer


    The visualizer uses shared memory if the monitor is installed on the same pi as pCP, if not it will use the VisionOn server event solution that is used by my RGB solution.

    Here's a display dump showing the main features. The dump solution makes this look a little blocks but on the pi4 a healthy 17 FPS makes the scrolling action buttery smooth, and the visualization modes very kinetic



    If folks are interested and don't wish to compile themselves, I'll submit build for pi3, pi4 an pi zero to the repo
    As of 25-Sep-2021 my digitized collection is (25931 hours 59 minutes) + (23 seconds) or
    2.958 years in duration
    random continuous play would really annoy the neighbors...

    Digitized thus far:

    Total Tracks: 169,609
    Total Albums: 15,626
    Total Artists: 22,284
    Total Genres: 780
    Total Playing Time: 25931:59:23


    With another ~6000 yet to be cataloged and ripped... a moving target such that it is ...
  • chill
    Senior Member
    • Mar 2007
    • 2233

    #2
    That's rather neat. The photo in your repo of the mounted display looks really nice.

    So you run this under pCP? A build for a Pi4 or 3B+, running pCP6.0.0, with instructions for how to install it, would encourage people to use it, I'm sure. What sort of display can it be used on - does it need to use a particular driver?

    Comment

    • shunte88
      Senior Member
      • Aug 2010
      • 134

      #3
      I currently have this version running on my test bench, so the setup is the most complex.

      I'll add detailed instructions to the repo but here's the skinny.

      The simplest setup is the same as the original kabavol version with the executable and a wrapper script in the
      Code:
      /mnt/mmcblk0p2/tce
      folder and executed via a user command configured via the pCP web frontend.

      I'll check these into github so its as simple as downloading and copying to the folder.

      The monitor detects the current active player and determines if it is running on the same device, if it is it sets itself to consume the shared memory data operating the same as Jivelite. If its not the same device it looks for the VisionOn service that streams the visualization data. That's my test bench setup.

      The monitor has run on every version of pCP since 2012 with this version being developed under pCP 5, I'm now running pCP 6 and so far so good.

      The OLED is a 2.42" 128x64 i2C flavor SSD1306 driver spec I sourced via eBay, I purchased several in 2012. Any 128x64 OLED supported by the Adafruit driver can be used.

      The 'zon has this in stock in the US. With C19 it may be tough getting really cheap OLED's direct from China, but eBay has some excellent deals.

      I'm working on a version that will use a color display. It needs a good few changes for layout and taking advantage of the color but hopefully I'll have something by the end of the month.

      More details to follow.
      As of 25-Sep-2021 my digitized collection is (25931 hours 59 minutes) + (23 seconds) or
      2.958 years in duration
      random continuous play would really annoy the neighbors...

      Digitized thus far:

      Total Tracks: 169,609
      Total Albums: 15,626
      Total Artists: 22,284
      Total Genres: 780
      Total Playing Time: 25931:59:23


      With another ~6000 yet to be cataloged and ripped... a moving target such that it is ...

      Comment

      • anadigi
        Member
        • Dec 2015
        • 96

        #4
        I would like to have the precompile files. Thanks!

        Comment

        • gnibur
          Junior Member
          • Feb 2016
          • 18

          #5
          Fantastic, I have been hoping for LMSmonitor to be updated, but I don't have the skills to do it myself. Now. I just have to remember how to install it. Used a lot of time to find it out last time.


          Sent from my iPad using Tapatalk

          Comment

          • carsten_h
            Senior Member
            • Apr 2019
            • 831

            #6
            This project looks very interesting! Thank you for your work!

            I have a LMS-only installation of piCorePlayer on a Pi 4B inside a Argon one case (https://www.argon40.com/catalog/prod...rry-pi-4-case/).
            There is no jivelite installed on it because it only act as a server without display. But I attached a USB speaker (Harmon Kardon Soundsticks I) to it and I can use it via webpage.

            Is it possible to attach this screen to it and let it work? There are other clients that play from this server, so which music will be shown on the display?
            Pi4 4GB piCorePlayer with LMS and Squeezelite for USB inside an Argon One case
            Pi3B+ (7" Display, Hifiberry DAC+ Pro) piCorePlayer with Squeezlite/Jivelite for Hifiberry inside a SmartiPi touch case
            Pi Zero W only for Bluetooth headphones
            Two Airport Express
            Ikea Symfonisk

            Comment

            • shunte88
              Senior Member
              • Aug 2010
              • 134

              #7
              I'll be supplying detailed install instruction shortly

              I'm currently looking at minimizing the library dependencies and I'm creating a slimline version that is pCP specific, minus the SSE stream

              I've targeted the weekend to get that done and check-in the install binaries

              As for surface mounting an OLED, the version I have there are 4 mounting holes that you could use to mount with stand-offs. The screens have a thin metal surround so it may not look too DIY.

              This is pCP specific so other music services would not display unless you're using plugins, if that is the case remote sources will display just fine.

              Apologies for the delays here
              As of 25-Sep-2021 my digitized collection is (25931 hours 59 minutes) + (23 seconds) or
              2.958 years in duration
              random continuous play would really annoy the neighbors...

              Digitized thus far:

              Total Tracks: 169,609
              Total Albums: 15,626
              Total Artists: 22,284
              Total Genres: 780
              Total Playing Time: 25931:59:23


              With another ~6000 yet to be cataloged and ripped... a moving target such that it is ...

              Comment

              • shunte88
                Senior Member
                • Aug 2010
                • 134

                #8
                Binary and "install" now in the repo

                I've added install instructions and a pCP lightweight binary with required support files to the repo

                This only supports the shared memory visualization mode as used by Jivelite

                Its tested under both 5.0.0 and 6.0.0 pCP on pi3B+ and pi4

                There were missing files under 4.0.0 and I couldn't find a clean way to source them so for now this is 5.0.0/6.0.0 supported only

                I also tested with a 0.96" and a 1.3" OLED, usable and readable on both sizes.

                Peak meter is implemented but is disabled in this build s it looked terrible on a 0.96" version of the OLED

                Currently only one visualization mode at a time may be specified but I'll be adding a mechanism to specify multiple modes in the near future

                Let me know if you uncover any nasties

                I know of one issue where multiple lines of scrolling text can get *confused*, you'll know it if you see it
                As of 25-Sep-2021 my digitized collection is (25931 hours 59 minutes) + (23 seconds) or
                2.958 years in duration
                random continuous play would really annoy the neighbors...

                Digitized thus far:

                Total Tracks: 169,609
                Total Albums: 15,626
                Total Artists: 22,284
                Total Genres: 780
                Total Playing Time: 25931:59:23


                With another ~6000 yet to be cataloged and ripped... a moving target such that it is ...

                Comment

                • anadigi
                  Member
                  • Dec 2015
                  • 96

                  #9
                  Originally posted by shunte88
                  I've added install instructions and a pCP lightweight binary with required support files to the repo

                  This only supports the shared memory visualization mode as used by Jivelite

                  Its tested under both 5.0.0 and 6.0.0 pCP on pi3B+ and pi4

                  There were missing files under 4.0.0 and I couldn't find a clean way to source them so for now this is 5.0.0/6.0.0 supported only

                  I also tested with a 0.96" and a 1.3" OLED, usable and readable on both sizes.

                  Peak meter is implemented but is disabled in this build s it looked terrible on a 0.96" version of the OLED

                  Currently only one visualization mode at a time may be specified but I'll be adding a mechanism to specify multiple modes in the near future

                  Let me know if you uncover any nasties

                  I know of one issue where multiple lines of scrolling text can get *confused*, you'll know it if you see it
                  I have the old LMSmonitor installed and working. Now I follow your instructions but no display

                  Comment

                  • shunte88
                    Senior Member
                    • Aug 2010
                    • 134

                    #10
                    two things to check

                    the script eats any output so we may be throwing an error

                    first, could you enter the following, it'll tell us if all the dependencies are met

                    Code:
                    ldd lmsmonitor
                    we should see all dependencies met, something like the following:

                    Code:
                    tc@aardvark001:/mnt/mmcblk0p2/tce$ ldd lmsmonitor 
                    	linux-vdso.so.1 (0x7e8bd000)
                    	libpthread.so.0 => /lib/libpthread.so.0 (0x76f22000)
                    	librt.so.1 => /lib/librt.so.1 (0x76f0b000)
                    	libwiringPi.so => /usr/local/lib/libwiringPi.so (0x76eec000)
                    	libArduiPi_OLED.so.1 => /lib/libArduiPi_OLED.so.1 (0x76ed1000)
                    	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x76d84000)
                    	libm.so.6 => /lib/libm.so.6 (0x76d17000)
                    	libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x76ce8000)
                    	libc.so.6 => /lib/libc.so.6 (0x76ba7000)
                    	/lib/ld-linux-armhf.so.3 (0x76f4b000)
                    	libcrypt.so.1 => /lib/libcrypt.so.1 (0x76b68000)
                    	libi2c.so.0 => /usr/local/lib/libi2c.so.0 (0x76b56000)
                    note this is on a pi3B+ and there may be minor differences on pi4

                    if all dependencies look good try running the monitor without the wrapper

                    Code:
                    sudo ./lmsmonitor -n {your squeezelite name here} -rcxtiv -m sa
                    don't forget sudo as we need permissions to get to shared memory
                    the t option will spool track details to the screen
                    the i options enables minimal debug

                    Example:
                    Code:
                    tc@aardvark001:/mnt/mmcblk0p2/tce$ sudo ./lmsmonitor -n aardvark001 -rcxitv -m sa
                    This is ./lmsmonitor, compiled Mar 15 2020 18:58:00.
                    Sending LMS Discovery ...
                    LMS (Server) responded:
                    Server IP ....: 192.168.1.25:3483
                    Player Name ..: aardvark001
                    Player ID ....: bb:aa:ee:77:aa:dd
                    Player IP ....: 192.168.1.37
                    Initializing SHMEM ...
                    SHMEM Actively Monitoring ...
                    _____________________
                    Lee Scratch Perry
                    History, Mystery & Prophesy [US] [162-539 774-2]
                    Nice Time
                    Lee Scratch Perry, Lee "Scratch" Perry
                    _____________________
                    Lee Scratch Perry
                    History, Mystery & Prophesy [US] [162-539 774-2]
                    Tiger Lion
                    Lee Scratch Perry, Lee "Scratch" Perry
                    track details will display if squeeze is playing

                    you should also see the details on the OLED

                    and when not playing the time is displayed

                    post the output from the ldd command, and any errors you get on command line for the monitor

                    I that didn't work:

                    - add the startup script as described in the repo

                    - backup your unit via the web forms

                    - and then reboot

                    hopefully that brings it up clean


                    I do have one small edit for the gomonitor script

                    change the killall line so it reads thus:

                    Code:
                    sudo killall -8 lmsmonitor > /dev/null
                    that's a just change of the -1 to -8

                    we shouldn't need the killall if this is the first time execution, its just there so I can roll during testing

                    I'll update the archive on repo with the same edit early in the AM US EST
                    As of 25-Sep-2021 my digitized collection is (25931 hours 59 minutes) + (23 seconds) or
                    2.958 years in duration
                    random continuous play would really annoy the neighbors...

                    Digitized thus far:

                    Total Tracks: 169,609
                    Total Albums: 15,626
                    Total Artists: 22,284
                    Total Genres: 780
                    Total Playing Time: 25931:59:23


                    With another ~6000 yet to be cataloged and ripped... a moving target such that it is ...

                    Comment

                    • anadigi
                      Member
                      • Dec 2015
                      • 96

                      #11
                      Originally posted by shunte88
                      two things to check

                      the script eats any output so we may be throwing an error

                      first, could you enter the following, it'll tell us if all the dependencies are met

                      Code:
                      ldd lmsmonitor
                      we should see all dependencies met, something like the following:

                      Code:
                      tc@aardvark001:/mnt/mmcblk0p2/tce$ ldd lmsmonitor 
                      	linux-vdso.so.1 (0x7e8bd000)
                      	libpthread.so.0 => /lib/libpthread.so.0 (0x76f22000)
                      	librt.so.1 => /lib/librt.so.1 (0x76f0b000)
                      	libwiringPi.so => /usr/local/lib/libwiringPi.so (0x76eec000)
                      	libArduiPi_OLED.so.1 => /lib/libArduiPi_OLED.so.1 (0x76ed1000)
                      	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x76d84000)
                      	libm.so.6 => /lib/libm.so.6 (0x76d17000)
                      	libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x76ce8000)
                      	libc.so.6 => /lib/libc.so.6 (0x76ba7000)
                      	/lib/ld-linux-armhf.so.3 (0x76f4b000)
                      	libcrypt.so.1 => /lib/libcrypt.so.1 (0x76b68000)
                      	libi2c.so.0 => /usr/local/lib/libi2c.so.0 (0x76b56000)
                      note this is on a pi3B+ and there may be minor differences on pi4

                      if all dependencies look good try running the monitor without the wrapper

                      Code:
                      sudo ./lmsmonitor -n {your squeezelite name here} -rcxtiv -m sa
                      don't forget sudo as we need permissions to get to shared memory
                      the t option will spool track details to the screen
                      the i options enables minimal debug

                      Example:
                      Code:
                      tc@aardvark001:/mnt/mmcblk0p2/tce$ sudo ./lmsmonitor -n aardvark001 -rcxitv -m sa
                      This is ./lmsmonitor, compiled Mar 15 2020 18:58:00.
                      Sending LMS Discovery ...
                      LMS (Server) responded:
                      Server IP ....: 192.168.1.25:3483
                      Player Name ..: aardvark001
                      Player ID ....: bb:aa:ee:77:aa:dd
                      Player IP ....: 192.168.1.37
                      Initializing SHMEM ...
                      SHMEM Actively Monitoring ...
                      _____________________
                      Lee Scratch Perry
                      History, Mystery & Prophesy [US] [162-539 774-2]
                      Nice Time
                      Lee Scratch Perry, Lee "Scratch" Perry
                      _____________________
                      Lee Scratch Perry
                      History, Mystery & Prophesy [US] [162-539 774-2]
                      Tiger Lion
                      Lee Scratch Perry, Lee "Scratch" Perry
                      track details will display if squeeze is playing

                      you should also see the details on the OLED

                      and when not playing the time is displayed

                      post the output from the ldd command, and any errors you get on command line for the monitor

                      I that didn't work:

                      - add the startup script as described in the repo

                      - backup your unit via the web forms

                      - and then reboot

                      hopefully that brings it up clean


                      I do have one small edit for the gomonitor script

                      change the killall line so it reads thus:

                      Code:
                      sudo killall -8 lmsmonitor > /dev/null
                      that's a just change of the -1 to -8

                      we shouldn't need the killall if this is the first time execution, its just there so I can roll during testing

                      I'll update the archive on repo with the same edit early in the AM US EST
                      I have try this but out come is like this
                      tc@Behringer:/mnt/mmcblk0p2/tce$ sudo ./lmsmonitor -n aardvark001 -rcxitv -m sa
                      ./lmsmonitor: error while loading shared libraries: libi2c.so.0: cannot open sha red object file: No such file or directory


                      I am running the version 6.0

                      Comment

                      • shunte88
                        Senior Member
                        • Aug 2010
                        • 134

                        #12
                        that's the same library I had problems with on pCP 4.0.0 but did not encounter problems on 5 or 6

                        I'd assumed that bundled with wiringpi

                        Let me do some digging and I'll get back to you ASAP
                        As of 25-Sep-2021 my digitized collection is (25931 hours 59 minutes) + (23 seconds) or
                        2.958 years in duration
                        random continuous play would really annoy the neighbors...

                        Digitized thus far:

                        Total Tracks: 169,609
                        Total Albums: 15,626
                        Total Artists: 22,284
                        Total Genres: 780
                        Total Playing Time: 25931:59:23


                        With another ~6000 yet to be cataloged and ripped... a moving target such that it is ...

                        Comment

                        • shunte88
                          Senior Member
                          • Aug 2010
                          • 134

                          #13
                          a quick scan of the forum it looks like the library is included in extension i2c-tools-dev

                          add the extension and then check that *all* libraries are available with the following


                          Code:
                          ldd lmsmonitor
                          look for this line in the output

                          libi2c.so.0 => /usr/local/lib/libi2c.so.0

                          if that looks good run the gomodule script

                          Code:
                          /mnt/mmcblk0p2/tce/gomonitor sa
                          let me know how you get on
                          As of 25-Sep-2021 my digitized collection is (25931 hours 59 minutes) + (23 seconds) or
                          2.958 years in duration
                          random continuous play would really annoy the neighbors...

                          Digitized thus far:

                          Total Tracks: 169,609
                          Total Albums: 15,626
                          Total Artists: 22,284
                          Total Genres: 780
                          Total Playing Time: 25931:59:23


                          With another ~6000 yet to be cataloged and ripped... a moving target such that it is ...

                          Comment

                          • anadigi
                            Member
                            • Dec 2015
                            • 96

                            #14
                            Originally posted by shunte88
                            a quick scan of the forum it looks like the library is included in extension i2c-tools-dev

                            add the extension and then check that *all* libraries are available with the following


                            Code:
                            ldd lmsmonitor
                            look for this line in the output

                            libi2c.so.0 => /usr/local/lib/libi2c.so.0

                            if that looks good run the gomodule script

                            Code:
                            /mnt/mmcblk0p2/tce/gomonitor sa
                            let me know how you get on
                            Sorry to tell you some file is missing

                            linux-vdso.so.1 (0x7ecff000)
                            libpthread.so.0 => /lib/libpthread.so.0 (0x76ed7000)
                            librt.so.1 => /lib/librt.so.1 (0x76ec0000)
                            libwiringPi.so => /usr/local/lib/libwiringPi.so (0x76ea1000)
                            libArduiPi_OLED.so.1 => not found
                            libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x76d54000)
                            libm.so.6 => /lib/libm.so.6 (0x76ce7000)
                            libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x76cb8000)
                            libc.so.6 => /lib/libc.so.6 (0x76b77000)
                            /lib/ld-linux-armhf.so.3 (0x76f00000)
                            libcrypt.so.1 => /lib/libcrypt.so.1 (0x76b38000)

                            Comment

                            • shunte88
                              Senior Member
                              • Aug 2010
                              • 134

                              #15
                              the OLED library is included in the archive and is copied to the shared library folder when you execute the gomonitor script

                              check where the files where extracted, and ensure they are located in /mnt/mmcblk0p2/tce/

                              note that I updated the binaries with the gomonitor edit as well as adding a little more feedback for command line arguments as I noticed you'd copied the command I used in my example including the name of my squeeze device; if you use gomonitor the name is picked up from configuration

                              if the library is not where you extracted repeat the wget op that is specified in the github repo, make sure you're in the /mnt/mmcblk0p2/tce/ folder when you do so.

                              my folder looks like this:

                              Code:
                              tc@aardvark001:/mnt/mmcblk0p2/tce$ pwd && ls -ltra /mnt/mmcblk0p2/tce/
                              /mnt/mmcblk0p2/tce
                              total 811
                              -rwxrwxr-x    1 tc       staff          273 Dec 31  1969 onboot.lst
                              -rw-rw-r--    1 tc       staff         4455 Dec 31  1969 pcp_resize.log
                              -rw-rw-r--    1 tc       staff          675 Dec 31  1969 pcp_insitu_upgrade.log
                              drwxrwxr-x    2 tc       staff         1024 Jun  8  2019 ondemand/
                              drwxr-xr-x    3 root     root          1024 Jun  8  2019 ../
                              lrwxrwxrwx    1 tc       staff           30 Feb 16 17:05 squeezelite -> /usr/local/bin/squeezelite-dsd
                              drwxrwxr-x    2 tc       staff         7168 Mar 14 20:51 optional/
                              [B]-rwxrwxr-x    1 tc       staff        58328 Mar 14 22:04 libArduiPi_OLED.so.1
                              -rwxrwxr-x    1 tc       staff         1603 Mar 16 00:29 gomonitor
                              -rwxr-xr-x    1 tc       staff       333492 Mar 16 19:51 lmsmonitor
                              [/B]drwxrwxr-x    4 tc       staff         1024 Mar 16 19:51 ./
                              -rw-rw-r--    1 tc       staff       344856 Mar 16 19:51 mydata.tgz
                              As of 25-Sep-2021 my digitized collection is (25931 hours 59 minutes) + (23 seconds) or
                              2.958 years in duration
                              random continuous play would really annoy the neighbors...

                              Digitized thus far:

                              Total Tracks: 169,609
                              Total Albums: 15,626
                              Total Artists: 22,284
                              Total Genres: 780
                              Total Playing Time: 25931:59:23


                              With another ~6000 yet to be cataloged and ripped... a moving target such that it is ...

                              Comment

                              Working...