-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Library Rewrite Using Sqlite
Status: This specification is in drafting. Feel free to add ideas to this page.
This project is already in progress! Check it out on launchpad in the lp:~mixxxdevelopers/mixxx/features_sqlite branch.
- DJ Bill wants DJ software that has a good library. He's tried Mixxx but its library does not scale to his large collection of music. It is also buggy, and often gets corrupted so he cannot build up quality metadata about his music.
- Your use case here
Stuff
Party
This work breakdown structure (WBS) will become more detailed as the design above becomes more thorough and complete.
The meat of the project is done. There's still a solid body of work left, but much of it is polish and restoring old features.
From the Mixxx 1.8.0 developer meeting, what Albert has done is:
- Deleted track.cpp, the source of much pain and misery in our codebase. In other words, I complete ripped out everything to do with the old library code. I also took a sledge hammer to TrackInfoObject, though much of it survived. TIO should be cleaned up an renamed to something sane (like a new Track class) now.
- Written a new WTrackTableView widget from scratch.
- Written a new TrackCollection class from scratch, which talks to SQLite through Qt. This class should be renamed TrackDatabase for clarity.
- Written a new LibraryTableModel class which subclasses QSqlTableModel, which talks to our database. This let's us display our track library using model-view without writing very much code.
- A bunch of other little things like having the columns resize persistently, making the columns rearrangeable, etc.
From the Mixxx 1.8.0 developer meeting, some of the remaining issues are:
- rewrite the track editor (right click->properties dialog)
- searches still block the GUI, make them asynchronous by making introducing some threading into the data models somehow.
- Library rescanning needs work - Wes Idel sent Albert half a patch to do this in a really nice way. Status of his project is currently unknown though.
- Playlist support
- Crate support
- Browse mode
- tagging
- abstraction of track sources (e.g. to allow for ipod source)
- browse mode
- Cue/loop storage in the DB
- bling-bling delegates
- XML migration strategy (is this even worth it?)
- bulk BPM detection and other library-wide things
If you're interested in helping to code this feature, sign up your name below:
- Albert Santoni
- RJ Ryan
- Sean Pappalardo
Mixxx is a free and open-source DJ software.
Manual
Hardware Compatibility
Reporting Bugs
Getting Involved
Contribution Guidelines
Coding Guidelines
Using Git
Developer Guide
Creating Skins
Contributing Mappings
Mixxx Controls
MIDI Scripting
Components JS
HID Scripting