I'm new to mixxx and just loving it, very well made tool :)

Don't know if you guys know git annex, but this is my tool for managing
my audio library. It ensures safty and allows you to distribute your
library onto many drives/computers/etc while it gives you consistent
view. However, this also means not every file is always available.

My usecase is this: Usually I have a flac and a good quality
opus/ogg/whatever version - they are in the same folder. On my laptop I
only carry a subset of non flac files. A "git annex get [file|folder]"
would try to get a copy of the version requested. It can be from online
sources, external drive or whatever script you write.

I plan on git annex support that it would for example do a git annex
get when a file is loaded and libraries has git annex support enabled.
Also before metadata writeback a git annex unlock is required, for
example to remove write protection and backup.
Also git annex supports metadata tags I would like to import/etc...

Therefore I'm fighting duplicates in my library which drives me nuts ;)

So, I thought about how to get rid of them in the correct way and came
to the conclusion that most parts are already there and some minor
redesign should be enough.
Instead of a track is represented by location, it makes more sense to
have a track represented by a list of locations in different quality
and availability. Mixxx should just load the best available version
when a track is loaded.

I added a new analyzer pass and calculate the acoustid fingerprint and
hash. I'm not cutting the fingerprint after 2 minutes as I'm not
interested in online lookup but only minimizing false positives.

Next step is to commit them to the database and start some refactoring
on the track object, etc.

Additionally I nearly finished a branch with a new widget, CrateList
which shows a list of Crates a selected library track or player track
is in. I"m using crates more like tags and want a quick and fast view
on which other crates the song is in. It's optional and right to the
coverwidget on LateNight/Deere. Still some code missing before being
useable ;)

While working on both branches, I had the feeling that some refactoring
would make a lot of my efforts much easier and maybe the codebase
cleaner. I only know some parts therefore a wild guess. The django ORM
has the concept of manager which you can access by instance->manager-
This manager is responsible for saving the object to database,
providing data lookup interface etc. When it's easy expandable, new
features would just provide the manager with enough informations and
hooks for handeling standard or non standard data.
It would be easy from everywhere a TrackPointer as available to do some
lookup or datahandling.

The fingerprint is one example: It's to large to just be added metadata
to a track, while to small for the filecache. It fits well into a blob
column but it should not be loaded if not required.

Anyway, the overall design is quite nice and qt makes it nice to work
with. Used it only from python before.

kind regards

Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
Get Mixxx, the #1 Free MP3 DJ Mixing software Today

Mixxx-devel mailing list

Reply via email to