czkawka icon indicating copy to clipboard operation
czkawka copied to clipboard

Add tool to find similar music

Open qarmin opened this issue 4 years ago • 5 comments

It would be great if Czkawka will have tool to find similar music.

It should find some sort of remixes.

qarmin avatar Dec 23 '20 21:12 qarmin

adding to this - would be interesting to see if this could be done via the use of AcoustIDs, which is what MusicBrainz Picard uses to match untagged music to the MusicBrainz database

ercas avatar Dec 31 '20 13:12 ercas

This should be pretty easy to implement using fpcalc. I could take a crack at implementing it.

tinywombat765 avatar May 13 '21 00:05 tinywombat765

For now I don't see possible Rust crate which could be used to do this Looks that chromaprint bindings - https://crates.io/crates/chromaprint-rs needs to be compiled with ffmpeg(I don't want to use such heavy dependency, Rust only crate is preferred)

Looks that Symphonia can do it, but such feature needs to be implemented as new crate - https://github.com/pdeljanov/Symphonia/issues/50

qarmin avatar Nov 25 '21 08:11 qarmin

This easiest way to do this would be to invoke fpcal instead of using a library. But I understand if you don't want to do it that way.

tinywombat765 avatar Nov 25 '21 08:11 tinywombat765

Quite interesting... could be down to help with this, although I have no production experience with rust.

drewlustro avatar Dec 28 '21 19:12 drewlustro

I had a look at implementing this using AcoustID fingerprints, and there's two issues that I found

  1. fpcalc hangs on some m4a files (and some mp3s in my experience): there is a (unmerged) pull request that fixes this
  2. The fingerprint comparison code that the AcoustID server uses is implemented as a postgreql extension, which can be found here: https://github.com/acoustid/pg_acoustid/blob/102f3c870c6157704694c2ddbad3ae8ab2c7de91/acoustid_compare.c#L122 (this will need to be ported to Rust as Chromaprint doesn't export any comparison functions). However, the repo has no license. Chromaprint (and fpcalc) is LGPL, but the AcoustID server is MIT. So it's not clear what license the comparison code is under.

udf avatar Oct 11 '22 11:10 udf

Hello! I'm working on a pure Rust port of chromaprint https://github.com/darksv/rusty-chromaprint There are a few things that are not implemented yet like compressing and decompressing of the fingerprints, but it should be in a somewhat usable state right now.

darksv avatar Jan 15 '23 12:01 darksv

Looks that rusty-fingerprint is the best available option:

  • small build dependencies(symphonia already was used by broken file finder)
  • no runtime dependencies
  • 100% rust code
  • quite fast
  • works(I had problems when trying to use the above tools like chromaprint)

so except maybe some performance improvements during comparing fingerprints in Czkawka and/or library side, I don't think that this application needs anything else from this library

qarmin avatar May 07 '23 18:05 qarmin