User Tools

Site Tools


Things to do for v1.8.0

Unresolved bugs targeted for this release

Remaining blocker bugs for 1.8.0 final

  • Scaling ASSERTs - Haven't seen them in ages… still a problem?
  • EngineBufferScaleLinear audio degradation (Phil, partially fixed)
  • EngineBufferScaleST repeated buffers, sync loss (partially fixed. Still loses sync when looping.)
  • “scratch” control is asymmetric - - fixed in fixes_scratch
  • fixes_scratch merge - in beta2
  • Sort out reference counting for TIOs in library caching layer (basesqltablemodel.cpp?) (RJ rocks!)
  • Featured Artists agreement + stats

Very important remaining tasks for beta2:

  • Fix bugs introduced by ssplugin merge:
  • Merge sadness_ssplugin and test build plugins for each platform
  • Merge features_sqlite into trunk
  • Merge features_scriptTimers (with its MIDI thread fixes)
  • M4A Plugin + Downloader (done)
  • Update LibraryTableModel's rows when TrackDAO is accessed, without resetting it. - in features_sqlite branch

Very important remaining tasks for beta1:

  • Missing columns in playlist/crate/autodj views
  • Schema versioning
  • 1.7.0 to 1.8.0 XML→DB Library importer (Patch from Zach)
  • Playlist blurb
  • Crate image blurb
  • Fix as many crashes as possible
  • Crate/Playlist/MissingTracks need working location column.
  • Analyze view text is not readable on dark skins.
  • Escape Prepare view searches, use fetchMore(), search in the GUI thread


Complete the rewrite for basic – but stable – functionality

  • Track DB
    • Needs blacklisting of removed songs.
  • 1.7.0 to 1.8.0 XML→DB Library importer (Zach)
  • Searching across library features
    • Make sure search is case-insensitive everywhere
    • Search is saved and restored per-model
    • Playlist models store the search per-playlist
    • Searches occur in background thread.
  • Drag-n-drop across library features
    • Make sure you can drop tracks from any place (browse, external track source, mixxx library) into a Mixxx playlist and the play queue Auto DJ queue
    • Win/Mac/Linux drag of files from OS file browser into Mixxx?
    • Make explicit the cases in which a file outside the Mixxx library is added to the Mixxx library.
    • Show an indicator of where you are about to drop a file in the track-table or sidebar. This is a bug in Qt:
  • Context menus across the whole library
    • Make sure context choices for tracks are appropriate to current state.
    • Menus for sidebar items
  • UI Feedback
    • When a track is missing from the library (Missing Songs model done)
    • When a track failed to load
    • When your results are filtered (i.e. a search is active)
    • When you are about to add a track to your Mixxx library. Make any warnings disable-able via mixxx.cfg.
  • Browse Mode
    • Use a file-system model that polls in a background thread
    • Searches and sorting for the filesystem view
    • Always show .. as a choice
    • Always sort folders before files
    • Needs header that shows you your current path
    • Sorting doesn't work in Size column (kb/mb treated as the same)
  • Playlists
    • Playlist table headers show raw column names
    • Playlists need duration delegate
    • Dragging a file thats in a playlist to its own playlist results in many added copies.
    • Drag-and-drop reordering
    • Invisible playlists so that e.g. the Auto-DJ playlist do not show under playlists.
  • Play Queue/AutoDJ
    • Make enable/disable button change text when its on/off so you know its state.
    • Make 95% crossfade threshold configurable via preferences.
  • Library Rescan
    • Basic fast hashing rescan
    • Modify Library table to make orphan detection easier later (add extra track_locations table)
    • Add mixxx_deleted to Libray table and fs_deleted cols to track_locations table
    • Use mixxx_deleted to blacklist files “removed” from the Mixxx library.
    • Cancel rescan functionality (just needs to be fixed)
  • Tagging (not file metadata tagging)
    • DAO for tags
    • Feature for tags
    • Drag-n-drop to sidebar
    • Tag table model
    • Context menu for track table
    • Context menus for tags in sidebar
    • Feature overview page
    • Prepare view
    • Delegate for showing tags in library table
  • Track Sources
    • iTunes playlist TrackModel
    • iTunes needs duration delegate
    • Rhythmbox Need Date delegate
    • Sorting doesn't work in XML-sourced Playlists
  • Polish
    • Sidebar icons for each feature
    • Tooltips for sidebar items
  • MIDI Control of Library
  • Track-table column header context menu to show/hide columns
  • Cue/Loop Storage in the DB - (this is really a mini-project in itself)
    • Write a CueDAO/Cue service.
    • Make TIO's have a list of Cue's
    • Make TrackCollection save a TIO's Cue's on track save (via CueDAO)
    • Ditch EngineBufferCue
    • Extend EngineBuffer to allow outside addition of EngineControls
    • Write CueControl, created by Player, added to EngineBuffer as an EngineControl
    • Restore track-editor, make it show hotcues
    • Add custom widgets for hotcues – not happening: skins will have to have hacked buttons instead
    • Waveform / waveform overview loops and cues
    • Update skins
  • Minor Bugs
    • Duration Delegate should format seconds as %02d.
    • Sorting is not case insensitive (e.g. on Title)


  • Complete the looping feature, merge to trunk.
  • Update controller mappings with hot cue and looping controls
    • SCS.3d - done
    • BCD-3000
    • Hercules MK2
    • Hercules RMX
    • M-Audio Xponent
    • Numark Total Control
    • Reloop Digital Jockey 2


  • Solve packaging issues
  • Solve Windows X64 libfaad2 dll building issues (embedded asm vs intrinsics) - may be able to split the assembly code into its own file and assemble that separately - Successfully worked around it by disabling the (5 lines (!) of) assembly code and using the supplied C/C++ code
  • Fix SoundSourceM4A decoder issues


  • Bundle libsndfile's trunk code into Mixxx for FLAC fixes? (Since there's no scheduled release date for the fixed libsndfile)
  • Collect enhanced controller mappings from forum posts for wider testing
  • Fix compilation on Windows x64 to correctly use SoundTouch optimizations (or not depending on optimize flag) - Sean
  • Update user manual
  • Can someone with some pull PLEASE tell C-Net to update their Mixxx download page?! 82 downloads a week for Mixxx does not make us look good. - Adam took care of it
  • Upload 1.8.0 final to C-Net and update our home page link there (still points to SF)

MIDI Sub-system tasks

Remaining tasks here are just polish and are not required for release.

  • Move all PortMIDI calls to one thread (the script engines can not directly call send*Msg anymore.) See this.
  • Save multiple device files correctly, deleting previous .midi.xml files in .mixxx/
    • Save the meta-data (controller ID, author, description, etc…)
      • First make a GUI object that lets the user modify the author and description
    • Find a more appropriate place to save the files other than the MidiDeviceManager destructor Now done (only) when OK is clicked in the prefs
    • Need a way to keep track of duplicate devices so separate files can be saved: Have DlgPreferences::slotApply() call MidiDeviceManager::saveMappings() which does them all in one shot (and can thereby keep track of them)
  • Load those files correctly
    • Load files for attached devices regardless of if they're activated or not.
  • Replace MidiCategory with MidiStatusByte permanently (see mididevice.cpp line 195.)
  • MIDI Scripting: Pass the <group> value from the XML to the script as an additional parameter (at the end of the list so existing scripts are not affected.) - Done by Phil
  • Add MIDI script timers
  • Implement alpha-beta smoothing filter in the Engine (currently in scratch.* functions in the common script file) with fixed-interval updates. (I.e. if no new data arrives in the interval, assume the control is stopped and feed that data to the smoothing function.) - Done in the MidiScriptEngine for relative controls in 1.8.0
  • GUI changes:
    • Replace “Activate” button with an “Enabled” check box
    • Display enabled devices in the tree in bold text
    • Auto-change “Output” drop-down based on auto-selected output device in MidiDevice(Manager) when the device is enabled - Albert
    • Make “Output” drop-down take effect when changed - not happening in 1.8. Output drop-down is disabled for now.
    • Persistent mapping preset drop-down (don't return to “…” unless Clear All is pressed. If the user tweaks the mapping, say “<custom>” or something.)
    • Also clear the list of MIDI scripts when Clear All is pressed
    • Do not commit changes to the MIDI mapping tables unless OK is pressed in the preferences window. (I.e. allow pressing the Cancel button or the X on the preferences window to restore the MIDI mappings to their previous states.)
Translations of this page:
1.8.0_to_do_list.txt · Last modified: 2010/10/18 09:56 by pegasus