czkawka
czkawka copied to clipboard
Add tool to find similar music
It would be great if Czkawka will have tool to find similar music.
It should find some sort of remixes.
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
This should be pretty easy to implement using fpcalc. I could take a crack at implementing it.
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
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.
Quite interesting... could be down to help with this, although I have no production experience with rust.
I had a look at implementing this using AcoustID fingerprints, and there's two issues that I found
- fpcalc hangs on some m4a files (and some mp3s in my experience): there is a (unmerged) pull request that fixes this
- 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.
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.
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