Home of the Squeezebox™ & Transporter® network music players.
Results 1 to 6 of 6
  1. #1
    Junior Member
    Join Date
    Sep 2020
    Posts
    12

    ARM based substitute for MusicIP?

    My current system uses the lmscommunity container for LMS along with ptoulouse/musicip for the Don't Stop the Music plugin. They run on an old HP server based on the vortexbox software but with a few years worth of tweaks and additions. I would like to move to a lower power, probably ARM based, system such as the Odroid N2+ running Ubuntu but the deal breaker is MusicIP. Almost all the casual listening the system is used for starts with someone picking a single track and letting it run from there.

    I've found some threads here and posts on the wider web that show that MusicIP has been made to run on Raspbery Pi based boxes but that's not my preferred solution and it looks like it may not work with other OS and arm64. I've also been reading about Musly and Essentia which look like they offer similar functionality but wondered what other, if any, suggestions people may have? Requirements are;

    * Must run on arm64 hardware and latest Ubuntu
    * Support for Don't Stop the Music plugin, or equivalent, with minimal user requirement other than choosing a seed track
    * Happy to run track analysis on a Windows based desktop as part of the setup process
    * Would prefer any server side component, if one is required, to be available as a container but am prepared to try and build one
    * Happy to compile from source

    Thanks in advance!

  2. #2
    Senior Member
    Join Date
    Feb 2011
    Location
    Cheshire, UK
    Posts
    5,448
    Have you tried the LastMix plugin with DSTM? If the casual listening really is casual it does a pretty good job without the complexity of MusicIP.
    Itĺs best with about 5 seed tracks so I tend to choose an album or a random seed genre playlist.
    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 Boom
    Kitchen UE Radio (upgraded to 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
    Everything controlled by iPeng & Material on iOS

  3. #3
    Senior Member
    Join Date
    Apr 2014
    Posts
    286
    I guess you have found this thread?https://forums.slimdevices.com/showt...n-Raspberry-Pi

    I'm running this on a pi 4 and works great. But I don't know about the odroid.

  4. #4
    Senior Member
    Join Date
    Mar 2017
    Posts
    2,605

    Musly and Essentia

    I've written a music similarity DSTM plugin that uses either Musly or Essentia to find similar tracks. I've written some python wrappers for Musly and Essentia that provide a simple HTTP API that the DSTM mixer calls. Therefore, these wrappers need to be installed on the same machine that LMS is running on.

    Musly:
    • Very fast analysis - roughly 20k tracks per hour
    • Requires building musly C library. My repo has builds for Fedora (x64) and Raspbian
    • C library is required for analysis and similarity building
    • https://github.com/CDrummond/musly-server contains the code to anlyse tracks (can be any machine), and the similarity API (needs to be on the LMS machine). (Only tested on Linux)


    Essentia:
    • Slow analysis - roughly 15 tracks per minute. About 24 times slower than Musly, but 3 to 4 times faster than MusicMagic.
    • Requires building essentia music extractor. My repo has a copy of this for Linux x64 - taken from Roland0's LMS-Essentia page
    • https://github.com/CDrummond/essentia-analyzer contains the code to analyse tracks with Essentia, this can be on any machine (but only tested on Linux)
    • https://github.com/CDrummond/essentia-api contains the similarity API, this needs to be on the same machine as LMS


    How either of these perform mix-wise will be dependent upon your music collection. I freely admit that these borrow heavily from Roland0's Musy and Essentia integration work - I was mainly interested in creating DSTM mixers. Roland is of the opinion that Musly is much better at similarity than Essentia (see Similarity (Essentia) DSTM mixer - call for help) However, I have been using this Essentia DSTM for a few months, on and off, and am reasonably happy.

    As I'm 100% Linux, I find the MusicMagic anlysis under Linux to be flaky, and I need to transcode lots of files to MP3 for anlysis (I have a MusicIP DSTM mixer that handes LMS using M4A files but MusicMagic thinking they re MP3, etc). Hence my interest in an opensource alternative.
    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.

  5. #5
    Senior Member
    Join Date
    Aug 2012
    Location
    Austria
    Posts
    1,151
    Quote Originally Posted by cpd73 View Post
    How either of these perform mix-wise will be dependent upon your music collection. Roland is of the opinion that Musly is much better at similarity than Essentia (see Similarity (Essentia) DSTM mixer - call for help) However, I have been using this Essentia DSTM for a few months, on and off, and am reasonably happy.
    I think one of the challenges here is that people have quite different opinions on what "similar tracks" actually are. Do they need to sound similar (timbre, tonality) ? Same genre? Same style? Same rhythm? Same mood? etc. Is e.g. a fast/aggressive speed metal track similar to a fast/aggressive EBM track? A slow/calm classical piece to a slow/calm acoustic singer/songwriter ballad? etc.
    That being said, I think there's room for improvement for the Essentia mixer - I've written a PoC which uses a different method to determine similarity (based on the same data), and initial testing suggests improved results (imo, obviously)
    Additionally, some of Essentia's tensorflow models have been updated recently, so that's another venue to explore.
    Various SW: Web Interface | TUI | Playlist Editor / Generator | Music Classification | Similar Music | Announce | EventTrigger | Chiptunes | LMSlib2go | ...
    Various HowTos: build a self-contained LMS | Bluetooth/ALSA | Control LMS with any device | ...

  6. #6
    Senior Member
    Join Date
    Mar 2017
    Posts
    2,605
    Quote Originally Posted by Roland0 View Post
    I've written a PoC which uses a different method to determine similarity (based on the same data), and initial testing suggests improved results (imo, obviously)
    Great! Can you detail this in the Essentia thread in the dev section? Thanks. I did make a change to use "Euclidean distance" - but I was more experimenting, as I've never used / thought-about this stuff before.

    Quote Originally Posted by Roland0 View Post
    Additionally, some of Essentia's tensorflow models have been updated recently, so that's another venue to explore.
    I keep meaning to look into this, but the python libraries do not install on Fedora so would need a lot of compiling, etc.
    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.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •