Home of the Squeezebox™ & Transporter® network music players.
Page 1 of 2 12 LastLast
Results 1 to 10 of 13
  1. #1

    DSTM Comments Mixer Idea

    Some years ago I was amazed by the mixes MusicIP gave me, but abandoned it because analysing my collection took forever and I occasionally ran into issues etc., but more recently I've been using the LastFM mixer and these are pretty good on the whole for a ramble through my music collection.

    However, I've always been considering what else might be an option - and this recently lead me to experiment with the Mixed In Key application which analyses files for their key, energy and BPM. The default key notation there is a Camelot alphanumeric value from 1A/B -> 12A/B, and the idea there is that mixing adjacent keys (e.g. 1A->1B or 1A->2B) should providing a pleasing transition. It's also based on the idea of a wheel - so once you get to 12B that should transition back to 1B.

    Of course key alone is likely insufficient, but adding genre and energy and perhaps BPM into that mix should theoretically work quite well.

    So this is the thought... The Mixed In Key software will tag the comments in my flac files with both the key and energy detail. (It also writes a BPM tag.) And the big plus with this for me is that i) The analysis is quite quick and ii) It does not impact any other tags in my library.

    This means my comments on my flac files now look like this:

    "2A - Energy: 7" or "9B - Energy 3".

    With that alone, I get a pretty reasonable mix if I just select tunes with a text search for "Energy: 7". I've also experimented a little with the Use Comment Tag plugin to expose these non-standard tags in the interface... but I was thinking, if there was a DSTM mixer to say, search for "Energy: 7", limit to Genre, then that would potentially work quite well.

    Even better would be to take that detail and limit progression in the mix - so for example only allow a 3A tune to jump to a 2A, 4A or 3B one... Or to restrict the mix to high energy tunes e.g. "Energy: 7" to "Energy 10", or restful ones, "Energy: 1" to "Energy 3".

    Not only would it work for the Mixed In Key example, but you could also use it for your own personal comments - like playing a mix of "Live" tagged music etc. Basically, pretty much anything people might want to include in their comments could form the basis of a DSTM mix.

    Any thoughts on this? Does it sound like it might be worth developing?

    I've not done any plugin development myself so would not have a clue where to start! :-)

    (I've tried the advance search to do this manually, but unfortunately I don't seem to be able to, for example, look for songs with "Energy: 3" and keys "1A" or "1B" or "2A" or "12A".)

  2. #2
    Babelfish's Best Boy mherger's Avatar
    Join Date
    Apr 2005
    Location
    Switzerland
    Posts
    20,666

    DSTM Comments Mixer Idea

    My thoughts? Sounds interesting! That said: I doubt there are many Mixed
    In Key users out there... so unless you do this yourself for your own
    needs, there's little chance you'll find someone picking up the idea.

    Are you up for the challenge? Willing to learn some Perl, probably some
    SQL, too? Then I'd start looking into some of the other mixer plugins,
    trying to get an understanding of how things work in LMS. Then get some
    SQLite client (I'm using the open source https://sqlitestudio.pl) to get
    an idea of the queries you'd use to get the information out of LMS'
    database.

    And when you have question, just ask in the dev section of this forum.

  3. #3
    Senior Member
    Join Date
    Mar 2017
    Posts
    3,237
    Sounds like an interesting idea, but as the software is Mac/Windows closed source it's not for me. However, it did cause me to do a quick search and I found an open-source alternative: https://github.com/ibsh/libKeyFinder

    I'm currently using a music-similarity DSTM mixer that I've been developing for a while. This uses Musly to locate similar tracks based upon timbre, and then I do further filtering using Essentia attributes (e.g. BPM, danceability, aggressiveness, etc). I'll see if I can also use libKeyFilder to enhance this to filter on key as well. If you are interested, my code uses a python script to analyse tracks and provide a similarity service (e.g. like MusicIP) that my DSTM mixer calls to get similar tracks. Note, however, that I have only ever run this on Linux systems.
    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.

  4. #4
    Quote Originally Posted by mherger View Post
    My thoughts? Sounds interesting! That said: I doubt there are many Mixed
    In Key users out there... so unless you do this yourself for your own
    needs, there's little chance you'll find someone picking up the idea.

    Are you up for the challenge? Willing to learn some Perl, probably some
    SQL, too? Then I'd start looking into some of the other mixer plugins,
    trying to get an understanding of how things work in LMS. Then get some
    SQLite client (I'm using the open source https://sqlitestudio.pl) to get
    an idea of the queries you'd use to get the information out of LMS'
    database.

    And when you have question, just ask in the dev section of this forum.
    Thank you both for your prompt replies...

    I might be up for the challenge. I'm a (former) developer myself - mainly on the analysis side these days, but I do have some reasonable SQL knowledge. Perl would be new... but never say never! Time is the real problem these days though - but I might be up for it.

    I realise my request here was somewhat bespoke - given the use of Mixed in Key - but as mentioned, this need not be limited to that alone, and could be used for any comments users tend to add to their collection.

    I've yet to decide whether or not Mixed in Key is the way to go (the software was avaialble at a reduced price on a Black Friday deal, so I thought I'd give it a go)... but I agree, it's not ideal. As has already been noted though, there are however a number of other options for analysing music keys out there that may be an option. From a personal level though, I think the Energy detail is likely the more important than the key - I've not yet looked at/for other options in that space.

    @michael - I'll take a look at the developer forums, and see what I can learn there.

    @cpd73 - I noted your post on the DSTM mixer and thought being on Windows that would not be an option for me... Thanks for the links. I've dabbled in Python in the past, so I'll take a look.

  5. #5
    Senior Member
    Join Date
    Aug 2012
    Location
    Austria
    Posts
    1,250
    Quote Originally Posted by cpd73 View Post
    Sounds like an interesting idea, but as the software is Mac/Windows closed source it's not for me. However, it did cause me to do a quick search and I found an open-source alternative: https://github.com/ibsh/libKeyFinder
    Essentia already includes this:

    Code:
      "tonal": {
        "key_strength": 0.734958529472,
        "key_key": "A#",
        "key_scale": "major"
    Various SW: Web Interface | Text Interface | Playlist Editor / Generator | Music Classification | Similar Music | Announce | EventTrigger | Ambient Noise Mixer | DB Optimizer | Image Enhancer | 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
    3,237
    Quote Originally Posted by Roland0 View Post
    Essentia already includes this
    Ah! Thought it might, I just did not have a system to check. I guess I need to add this to my analyzer Thanks.
    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.

  7. #7
    Quote Originally Posted by cpd73 View Post
    Ah! Thought it might, I just did not have a system to check. I guess I need to add this to my analyzer Thanks.
    Interesting... The Music In Key harmonic mixing guide is here: https://mixedinkey.com/harmonic-mixing-guide/ i.e. with the equivalent notes. (For which I think A# major would be B flat major.)

    Maybe something to consider if you can utilise that detail.
    Last edited by mruddo; 2021-12-01 at 08:35.

  8. #8
    Senior Member
    Join Date
    Mar 2017
    Posts
    3,237
    Initial implementation added to music-similarity
    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.

  9. #9
    Quote Originally Posted by cpd73 View Post
    Initial implementation added to music-similarity
    That was quick..! Looks like I need to see if I can find some time to enable the Musly analysis on a PC.

  10. #10
    Senior Member
    Join Date
    Mar 2017
    Posts
    3,237
    Quote Originally Posted by mruddo View Post
    That was quick..!
    I'd already analysed my tracks with Essentia and had cached the output which had the key info

    Quote Originally Posted by mruddo View Post
    Looks like I need to see if I can find some time to enable the Musly analysis on a PC.
    Musly is used to locate simialr tracks, I then filter via Essentia attributes - of which key is now one. So, you need to analyse with both - which the script does.

    I was considering replacing Essentia with KeyFinder and some other BPM code, as Essentia can be quite slow - but KeyFinder is even slower, and gives less info!
    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.

Tags for this Thread

Posting Permissions

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