Hi, 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 Daniel ------------------------------------------------------------------------------ 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 http://mixxx.org Mixxx-devel mailing list Mixxx-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mixxx-devel