Announcement

Collapse
No announcement yet.

Announce: MusicIP DSTM Mixer

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Announce: MusicIP DSTM Mixer

    ....and it doesn't use sync calls to MIP any more? :-)

    No need for

    then.

    If only the analysis didn't take that long... I gave up using MIP a few
    years ago, even though its mixes were better than anything I've come up
    with since.

    --

    Michael
    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.

    #2
    Announce: MusicIP DSTM Mixer

    This is a heavily modified fork of the DSTM part of the standard LMS MusicIP/MusicMagic plugin. The following enhancements have been made:
    1. Only the DSTM part of the plugin remains. This means no support for ‘Create Mix’, and the plugin will not query MusicIP for a list of supported files when LMS starts
    2. Tracks chosen by MusicIP can be excluded from a mix if they are not within the same ‘genre group’ as the seed tracks. ‘Genre groups’ are defined in a separate JSON file. e.g. you can have a group with ‘Rock, Hard Rock, Metal’ – if a seed track contains one of these genres, then only tracks which also have one of these will be used. Likewise if a track in the mix is in one of these groups, but the seed tracks are not, then the track is also excluded.
    3. Filter out tracks with matching artist from last 15 tracks
    4. Filter out tracks with matching album from last 25 tracks
    5. Filter out tracks with matching artist from 5 seed tracks
    6. Prevent tracks from repeating within 100 tracks
    7. Exclude tracks whose artist is in a configured set of ‘exclude artists’
    8. Exclude tracks from albums in a configured set of ‘exclude albums’
    9. Optionally exclude tracks based on min/max duration
    10. Optionally exclude ‘Christmas’ tracks (based on genre – ‘Christmas’, ‘XMas’, ‘xmas’, or ‘Xmas’) if not in December
    11. Convert LMS paths to MusicIP path, and vice versa

    The plugin will ask MusicIP to create a mix of 50 tracks. These tracks will then be filtered using the rules above until 12 are remaining. From these 12 tracks 5 will be chosen at random. If the filtering removes too many tracks (so there are less than 5) then tracks filtered by 3, 4, and 5 (above) will be added to make 5 tracks.

    This plugin can be installed by using a release ZIP file from github, or by adding my repo file to LMS.
    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


      #3
      Originally posted by mherger View Post
      ....and it doesn't use sync calls to MIP any more? :-)
      Yeah, I made the change you suggested.

      That line should be removed, its a left over.

      Originally posted by mherger View Post
      If only the analysis didn't take that long... I gave up using MIP a few
      years ago, even though its mixes were better than anything I've come up
      with since.
      After the initial bulk import its not that bad. But this slowness was why I looked at 'Musly' (see https://forums.slimdevices.com/showt...by-similarity)) Which is much faster, but (IMHO) the mixes are not as nice.
      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


        #4
        Will this work if there is only one track in the seeding playlist?

        Sent from my Pixel 3a using Tapatalk
        Living Room: Touch or Squeezelite (Pi3B) > Topping E30 > Audiolab 8000A > Monitor Audio S5 + BK200-XLS DF
        Bedroom: Radio
        Bathroom: Radio

        Comment


          #5
          Originally posted by slartibartfast View Post
          Will this work if there is only one track in the seeding playlist?
          Yes. It chooses up to 5 - well it asks DSTM for the seed tracks, and I'm pretty sure that is up to 5 seeds.
          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


            #6
            Intrigued
            I'm a longtime MusicIP user, along with SpiceFly SugarCube. I'll give this one a good go to compare it.
            Main System: Marantz SR-5015 + Adam Audio T8V + Teufel Ultima 20 Mk 3 + BK Monolith+ FF + Lenovo T560 + Kodi + LG OLED65B26LA + UP-Board running Daphile
            Kitchen: Touch + Ikea ENEBY 30
            Home-Office: SqueezeLite-X + Topping DX3 Pro + NAD 312 + TMA Premium 905

            Comment


              #7
              Originally posted by cpd73 View Post
              Yes. It chooses up to 5 - well it asks DSTM for the seed tracks, and I'm pretty sure that is up to 5 seeds.
              It doesn't seem to add anything to the queue. I am just using the default settings.

              Sent from my Pixel 3a using Tapatalk
              Living Room: Touch or Squeezelite (Pi3B) > Topping E30 > Audiolab 8000A > Monitor Audio S5 + BK200-XLS DF
              Bedroom: Radio
              Bathroom: Radio

              Comment


                #8
                Originally posted by slartibartfast View Post
                It doesn't seem to add anything to the queue. I am just using the default settings.

                Sent from my Pixel 3a using Tapatalk
                After trying this mixer DSTM doesn't seem to work at all even with song mix.

                Sent from my Pixel 3a using Tapatalk
                Living Room: Touch or Squeezelite (Pi3B) > Topping E30 > Audiolab 8000A > Monitor Audio S5 + BK200-XLS DF
                Bedroom: Radio
                Bathroom: Radio

                Comment


                  #9
                  Originally posted by slartibartfast View Post
                  After trying this mixer DSTM doesn't seem to work at all even with song mix.
                  Check your LMS log files - its highly likely I've made an error somewhere. Might need to inrease the log level for this plugin and DSTM.

                  It works fine for my system, but then that's always the case when developing something...

                  Also, are you sure you've seleceted "MusicIP Mixer" (this plugin) not "MusicIP Mix" (the existing LMS plugin)?
                  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


                    #10
                    Just had a thought. Do I need to input a path to Music IP? If so what would the format be?

                    Sent from my Pixel 3a using Tapatalk
                    Living Room: Touch or Squeezelite (Pi3B) > Topping E30 > Audiolab 8000A > Monitor Audio S5 + BK200-XLS DF
                    Bedroom: Radio
                    Bathroom: Radio

                    Comment


                      #11
                      Originally posted by slartibartfast View Post
                      Just had a thought. Do I need to input a path to Music IP? If so what would the format be?
                      I admit I have not tested without a path. I'll test later. I analyse my music files on my latop, with a path of "/home/craig/MusicIP" and LSM is on my pi (with "/media/Disk/Music") - so I have "/home/craig/MusicIP" set as the path in this plugin's settings. The trailing slash (if any) should be the same on both. I'm 100% Linux, so have not tested on Windows. However, the path replacement code is very trivial.
                      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


                        #12
                        Originally posted by cpd73 View Post
                        I admit I have not tested without a path. I'll test later. I analyse my music files on my latop, with a path of "/home/craig/MusicIP" and LSM is on my pi (with "/media/Disk/Music") - so I have "/home/craig/MusicIP" set as the path in this plugin's settings. The trailing slash (if any) should be the same on both. I'm 100% Linux, so have not tested on Windows. However, the path replacement code is very trivial.
                        Is it just the path to the MusicIP folder. On my Pi I have a MusicIP folder and a .MusicMagic folder. The .MusicMagic folder contains the mmm.ini file and the default.m3lib file.

                        Sent from my Pixel 3a using Tapatalk
                        Living Room: Touch or Squeezelite (Pi3B) > Topping E30 > Audiolab 8000A > Monitor Audio S5 + BK200-XLS DF
                        Bedroom: Radio
                        Bathroom: Radio

                        Comment


                          #13
                          The way my MusicIP is set up is that I analyse tracks on a Windows laptop with a portable HDD holding a version of my music library. I then synchronise the music files to another HDD attached to the Pi server which also has MusicIP running on it. I add the analysed music to the MusicIP cache on the server via the MusicIP web interface.
                          I have no idea how to get your mixer plugin to work with this.

                          Sent from my Pixel 3a using Tapatalk
                          Living Room: Touch or Squeezelite (Pi3B) > Topping E30 > Audiolab 8000A > Monitor Audio S5 + BK200-XLS DF
                          Bedroom: Radio
                          Bathroom: Radio

                          Comment


                            #14
                            Originally posted by slartibartfast View Post
                            The way my MusicIP is set up is that I analyse tracks on a Windows laptop with a portable HDD holding a version of my music library. I then synchronise the music files to another HDD attached to the Pi server which also has MusicIP running on it. I add the analysed music to the MusicIP cache on the server via the MusicIP web interface.
                            I have no idea how to get your mixer plugin to work with this.
                            When I use the term "MusicIP path" I mean the path that MusicIP sees for your music. For instance, on my latop I might have:

                            /home/craig/MusicIP/Artist-Album/track.mp3

                            on my Pi, I would have:

                            /media/disk/Music/Artist-Album/track.mp3

                            LMS's music folder is set to:

                            /media/disk/Music

                            The 'MusicIP path' is:

                            /home/craig/MusicIP

                            Therefore when LMS asks MusicIP to create a mix based on a track it sends "/media/disk/Music/Artist-Album/track.mp3" (as this is the location LMS sees). But this needs to be converted to "/home/craig/MusicIP/Artist-Album/track.mp3" for MusicIP to know what track it is. The plugin converts "/media/disk/Music" to "/home/craig/MusicIP", and vice versa.

                            The existing LMS MusicIP plugin does not do path conversion - so if that plugin works for you, then not setting a 'MusicIP path' in this plugin's settings should work. (But as stated, I don't think I have tested this). But without logs its hard to know what is or is not working,
                            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


                              #15
                              Originally posted by cpd73 View Post
                              When I use the term "MusicIP path" I mean the path that MusicIP sees for your music. For instance, on my latop I might have:

                              /home/craig/MusicIP/Artist-Album/track.mp3

                              on my Pi, I would have:

                              /media/disk/Music/Artist-Album/track.mp3

                              LMS's music folder is set to:

                              /media/disk/Music

                              The 'MusicIP path' is:

                              /home/craig/MusicIP

                              Therefore when LMS asks MusicIP to create a mix based on a track it sends "/media/disk/Music/Artist-Album/track.mp3" (as this is the location LMS sees). But this needs to be converted to "/home/craig/MusicIP/Artist-Album/track.mp3" for MusicIP to know what track it is. The plugin converts "/media/disk/Music" to "/home/craig/MusicIP", and vice versa.

                              The existing LMS MusicIP plugin does not do path conversion - so if that plugin works for you, then not setting a 'MusicIP path' in this plugin's settings should work. (But as stated, I don't think I have tested this). But without logs its hard to know what is or is not working,
                              Here is the server log with the plugin set to debug.

                              Code:
                              [20-08-06 12:51:45.0827] Slim::Plugin::DontStopTheMusic::Plugin::dontStopTheMusic (228) 0 songs remaining, songIndex = 0
                              [20-08-06 12:51:45.0911] Slim::Plugin::DontStopTheMusic::Plugin::getMixableProperties (355) Auto-mixing from random tracks in current playlist
                              [20-08-06 12:51:45.0997] Plugins::MIPMixer::Plugin::__ANON__ (120) Seed /media/usb-drive/MyMusic/Lindisfarne/Lindisfarne... Back and Forth(1979)[FLAC]/01 - Juke Box Gypsy .flac id:259631 genres:()
                              [20-08-06 12:51:45.1018] Plugins::MIPMixer::Plugin::_getMixUrl (439) Filter Filter 1 in use.
                              [20-08-06 12:51:45.1030] Plugins::MIPMixer::Plugin::_convertToMip (367) TO MIP: /media/usb-drive/MyMusic/Lindisfarne/Lindisfarne... Back and Forth(1979)[FLAC]/01 - Juke Box Gypsy .flac -> /media/usb-drive/MyMusic/Lindisfarne/Lindisfarne... Back and Forth(1979)[FLAC]/01 - Juke Box Gypsy .flac.mp3
                              [20-08-06 12:51:45.1038] Plugins::MIPMixer::Plugin::_getMixUrl (453) Request http://localhost:10002/api/mix?song=%2Fmedia%2Fusb-drive%2FMyMusic%2FLindisfarne%2FLindisfarne...%20Back%20and%20Forth(1979)%5BFLAC%5D%2F01%20-%20Juke%20Box%20Gypsy%20.flac.mp3&mixgenre=0&rejectsize=25&sizetype=tracks&variety=0&size=50&rejecttype=tracks&style=20&filter=Filter%201
                              [20-08-06 12:51:45.1288] Slim::Networking::IO::Select::__ANON__ (130) Error: Select task failed calling Slim::Networking::Async::_async_read: Can't locate object method "error" via package "500 Internal Server Error" (perhaps you forgot to load "500 Internal Server Error"?) at /var/lib/squeezeboxserver/cache/InstalledPlugins/Plugins/MIPMixer/Plugin.pm line 162.
                              ; fh=Slim::Networking::Async::Socket::HTTP=GLOB(0x8b086c8)
                              Living Room: Touch or Squeezelite (Pi3B) > Topping E30 > Audiolab 8000A > Monitor Audio S5 + BK200-XLS DF
                              Bedroom: Radio
                              Bathroom: Radio

                              Comment

                              Working...
                              X