Changelog
2.7.0 (Unreleased)
2.6.0 (Unreleased)
STEM file support
- Add simple support for STEM files #13044
- Add stem controls and waveforms
#13086
#14951
#14870
#15494
#14769
#15386
#15383
#15656
#15317
#15384
#15686
#15668
- Add analyser support for stem #13106
- Add quick effect support on stem #13123
- Add advanced stem loading COs #13268
- Multithreaded Rubberband
#13143
#13649
- Add support for stem in the engine
#13070
#14244
- Add stem files to the taglib lookup table #13612
- Fix: make "stem_group,mute" a powerwindow button
#13751
#13749
- Stem control test fix #13960
- Solves problem with special characters in path to stems #13784
- Enable FFmpeg (free) on Windows. #14695
- FFmpeg: Use internal aac decoder. If not available give a hint. #14645
- Fix build with -DSTEM=OFF #13948
- Fix warning when building without STEM support #14551
- Fix: exclude stem samples for QML waveform #13655
- Fix: use generic way to get the group on stem waveform renderer #14291
- Fix: reset the STEM Quick FX on track load when enabled #15743
- Allow pre-mastered stream not to match stem streams properties
#15246
#14572
- Fix: clone states when cloning a deck
#15501
#15093
#15510
- Fix: reset stem color correctly
#15494
#14769
- Fix: skip stem count assert on secondary decks
#15655
#15593
- Name Stem QuickEffect chains node like deck QuickEffects in effects.xml #15530
Library
- Add color coding for Key column #13390
- Add Key Color Palettes #13497
- Add overview column with small waveform
#14140
#15368
#15366
#15431
- Add a rebindable keyboard shortcut for editing items as a replacement for F2 #13148
- DeveloperTools: restore searchbar shortcut Ctrl+F
#14761
- CmdlineArgs: Add
--rescan-library for rescanning on startup #13661
- Add case-insensitive parsing for Lancelot key notation #14318
- iTunes: Add iOS importer using the Media Player framework #12690
- Add Shuffle action to track table header menu #13392
- Library scan: log summary and show popup (opt-out)
#13427
#10720
#15089
#15085
- Search: add BPM lock filter
bpm:locked
#14590
#14583
- Track menu, purge: allow to hide further success popups in the current session #13807
- Track Info dialogs: move metadata buttons below color picker #13632
- Track File Export: add 'Apply to all' checkbox, remove ".. All" buttons #13614
- Fix: restore BPM and Bitrate column width #13571
- Elide key text from the right #13475
- Playlists: add 'Unlock all' and 'Delete all unlocked' menu actions
#14091
#8960
- Scan dialog: add progress bar, plus some improvements #15517
- Update to libdjinterop 0.27.0
#15958
#15696
- Library: enable drag'n'drop of directories
#15688
#5100
- Search: add
directory filter #15701
- Search: add filter shortcuts, eg. t|title, a|artist, cm|comment, y|year
#15115
#15101
- Search: add constant BPM filter
bpm:const
#14642
#11064
- Search: fix 'not' operator
#15923
#15918
- Library: also apply library font size(!) to tracks header
#15392
#15476
- Rhythmbox: fix imports
#15798
#15770
- WTrackMenu: warn before opening more than 10 tracks in file browser
#15828
#15819
- Key delegate: apply 'played' color #15839
- Track Info dialog: restore column stretching #15037
- Computer feature: mention constraints of file view/model #14934
- Fix "dataChanged() called with an invalid index range" warning
#15937
#14610
- Fix: use correct Hidden settings namespace #15120
- Engine DJ: add support for playlists export #14741
- Fix: display rediscovered tracks #15938
Effects
- Compressor effect: Adjust Makeup Time constant calculation #13261
#13237
- Fix: prevent quickFX model out of bound #13668
- WhiteNoise: enhance leveling #15979
- WhiteNoise: improve ramp logic #15949
- QuickEffect: fix crackling noise when switching
#15796
#15794
Waveforms
Auto-DJ
- Add transition mode 'Skip Silence, Start with Xfader centered' #13628
- Add crossafder recenter option when turning off (default off)
#13303
#11571
- Add context menu action for enabling/disabling the Auto DJ #13593
Controller Mappings
- Behringer DDM4000 & BCR2000: remove XML input declarations from mapping #14285
- Hercules DJControl Inpulse 500: add new mapping #14316
- Hercules DJControl Starlight: add EffectChain superknob control #14126
- Midi Fighter Spectra: add stems layer #14932
- Midi Fighter Twister: add stems layer #14931
- Numark Mixstream Pro: add support #15732
- Numark Mixtrack 3: update scripts
#14193
#14180
- Numark Mixtrack Platinum: add stems support #15768
- Numark NS4FX: add new mapping
#15829
#15948
#15894
- Pioneer CDJ-350: fix incorrect name in controller mapping #15683
- Pioneer DDJ-FLX4: fix obsolete hotcue status keys #15555
- Pioneer DDJ-FLX4: implement Key Shift #15674
- Pioneer DDJ-FLX4: support for stems #15528
- Reloop Beatmix 2/4: implement shift+jog wheel seek
#15575
#12334
- Traktor Kontrol Z1: fix crossfader cut
#14451
#14450
- Traktor S3: small updates and fixes #14340
- Traktor S4Mk2: check for deck undefined #14445
- Traktor S4Mk3: add controller setting color #15650
- Traktor S4Mk3: various improvements #15216
Controller Backend
- Add screen renderer to support controllers with a screen
#11407
#13334
- Deprecate
lodash.mixxx.js, and script.deepMerge #13460
- Add New CO "beatstranslatehalf" to move beatgrid a half beat
#14279
#10811
- Settings: Add a file and color controller setting types #13669
- Allow to enable MIDI Through Port in non-developer sessions #13909
- Refactor: modernize softtakeover code #13553
- document
ScriptConnection readonly properties & slight cleanup #13630
- Modernize Hid/Bulk Lists #13622
- Prevent deadlock with BULK transfer and reduce log noise #13735
- Expose convertCharset convenience function to controllers
#13935
#14108
- Add HID error message upon failed open #14184
- Remove boilerplate and duplication in controller setting definition #13920
- Allow feedback on every release of a
powerWindow button #14335
- Controller Settings: Improve click event filter #14355
- Controller Settings: Add a collapsible group box #14324
- Fix: Don't return in JogWheelBasic on deck absent in option
#13425
#14106
- Controller engine: add convenience functions
isBrakeActive(), isSpinbackActive() and isSoftStartActive() #14925
- ControllerRenderingEngine: fix deadlock with mappings with display controllers #15524
- Restore common-hid-packet-parser global symbol exceptions for eslint #15961
- ControllerRenderingEngine: add OpenGL ES for controller screen rendering #15566
- Fix changing stem group for deck in ComponentsJS
#14928
#14764
- Fix an unused parameter warning #15313
Engine
- Fix: sync rate using the current BPM instead of the file one
#13671
#12738
- Sync: prefer playing inaudible decks over stopped non-sync decks #14580
- Fix: prevent null CO access when cloning sampler or preview #13740
- Use correct detected channel count on CoreAudio #14372
- Fix: revert to max. 36 hotcues, fix one-off issue #14753
- QueenMaryBeats: detection speed up
#15127
#15067
- QueenMaryBeats: clamp the beat count value #15657
- QueenMaryBeats: fix offset issue #15076
- RateControl: initialize
m_pVCEnabled with nullptr for samplers
#15303
#15288
- Fix: document libFLAC 1.5
FLAC__STREAM_DECODER_ERROR_STATUS_MISSING_FRAME #14876
- Fix: soundsourceflac.cpp flac api version and missing error #15295
- chore: remove unused/undefined declared members from BaseTrackCache #14965
- Changed audio engine to switch to linear scaler upon entering scratching mode #15845
- AudioUnit: fix crash due to off-by-one error in parameter syncing #15919
Preferences
- Waveforms: Group options, adjust tabstops, reorder ui file #13615
- Controllers: Make extended controller information available for device selection
- Controllers: Reorganize content into tabs
- Mixer: Show 'real' crossfader configuration #14124
- Mixer: Fix crossader graph #13848
#13896
#14006
#14354
- Effects: Left/Right key in effect lists trigger hide/unhide #14205
- Sound Hardware: Open with sprecific I/O tab selected #14346
- Sound Hardware: Don't set m_settingsModified in update slots #13450
- Library, Track Search: Fix accidental use of wrong preference controls #13592
- Controller: strip leading whitespaces for mapping name display #15844
- Interface: use main window screen to detect if skin fits
#15824
#15823
- Stats: convert ns to ms and add spacing for readability
#14978
#14908
- Controller: add Stem controls to control picker / menu #15158
- Controller: add reload button to refresh mapping list #15627
- Control learning: fix deck offset for stem controls #15714
- Controller: fix the tabs display for QML=OFF #15027
- Controller: add missing layout #14606
Skins
Experimental Features
- SoundManagerIOS: Remove unsupported/redundant options #13487
- ControllerRenderingEngine: Disable BGRA when targeting Wasm #13502
- BaseTrackTableModel: Disable inline track editing on iOS #13494
- Set QQuickStyle to "basic" #13696
#13600
- Fix: trigger QML waveform slot at init #13736
- CoreServices: Default to
~/Music as a music directory on WASM and iOS #13498
- CMakeLists: Disable
QTlsBackendOpenSSLPlugin on iOS #14375
- QML: disable to fix link failure and avoid undefined behaviour #14772
Target support
- Sound preferences: Add missing ifdefs for building without Rubberband #13577
- Update Linux-GitHub runner to Ubuntu 24.04.01 LTS
#13781
#13880
- Debian: Add missing qt6-declarative-private-dev and qt6-base-private-dev package
#13904
- RPM: Add missing deps #14183
- Show translator file path in debug message #14209
- Building without tests-tools #14268
- Remove unmaintained shell.nix #14300
- Add QGLES2 option for UNIX #14489
- Don't set GLBGRA if QTOPENGLES2 #14488
- Windows and macOS: Update to Qt 6.8.3 (requires MSVC 2022) #14655
- Retire Ubuntu Jammy 22.04 #14784
- Allow any taglib #14694
- Add Flatpak packaging files
#15695
#15922
- Update to latest VCPKG with the sleef backport #15783
- VCPKG update for 2.6 #14815
- Remove 'qml6-module-qtquick-nativestyle'
#15771
#15440
- chore: replace deprecated
QImage::mirror with QImage::flip from Qt6.9 #14954
- Never render into an invalid OpenGL Window
#15951
#15942
- Fail early if not running from Visual Studio environment #14623
- Fail verbose when Chromaprint is missing #14548
- Move download, SHA256 check and unzip of Windows buildenv from windows_buildenv.bat to CMakelists.txt #13306
- Install ucrtbased.dll in debug mode #14579
- Fix: Resolve the warning for redundant Czech desktop entry fields #15720
- Fix setting of BUNDLE_DIRS #14550
- Fix WiX error log file generation in GitHub workflow #15045
- Make Debian non-free optional #15895
- MacOS: don't install already installed Ninja #14499
- MacOS: Use same CMake internal buildenv download/unzip as for Windows #15033
- MacOS: String comparison fix for zsh #15568
- Fix qt 6.10 warnings
#15719
#15698
- Follow Ubuntu libstdc++6 and libgcc-s1 updates #15275
Misc Refactorings
- Refactor/shrink modernize scopedtimer #13258
- Improve use of parented_ptr #13411
- Pre-allocate memory in basetrackcache to avoid multiple reallocations #13368
- Bump actions/cache from 4 to 5 #15756
- Bump actions/checkout from 4 to 5 #15186
- Bump actions/checkout from 4.1.6 to 4.1.7 #13386
- Bump actions/checkout from 4.1.7 to 4.2.0 #13713
- Bump actions/checkout from 4.2.0 to 4.2.1 #13726
- Bump actions/checkout from 4.2.1 to 4.2.2 #13810
- Bump actions/checkout from 5 to 6 #15670
- Bump actions/github-script from 7 to 8 #15334
- Bump actions/labeler from 5.0.0 to 6.0.1 #15332
- Bump actions/stale from 9 to 10 #15333
- Bump actions/upload-artifact from 4.3.3 to 4.6.0 #14167
- Bump actions/upload-artifact from 4.3.4 to 4.3.5 #13539
- Bump actions/upload-artifact from 4.3.5 to 4.3.6 #13562
- Bump actions/upload-artifact from 4.3.6 to 4.4.0 #13621
- Bump actions/upload-artifact from 4.4.0 to 4.4.1 #13725
- Bump actions/upload-artifact from 4.4.1 to 4.4.3 #13765
- Bump actions/upload-artifact from 4.6.0 to 4.6.1 #14406
- Bump actions/upload-artifact from 4.6.1 to 4.6.2 #14517
- Bump actions/upload-artifact from 4.6.2 to 5.0.0 #15539
- Bump actions/upload-artifact from 5.0.0 to 6.0.0 #15755
- Bump azure/trusted-signing-action from 0.3.20 to 0.4.0 #13500
- Bump azure/trusted-signing-action from 0.4.0 to 0.5.0 #13809
- Bump azure/trusted-signing-action from 0.5.0 to 0.5.1 #14168
- Bump azure/trusted-signing-action from 0.5.1 to 0.5.9
#15094
#15239
#15509
- Bump azure/trusted-signing-action from 0.5.10 to 1.0.0 #15884
- Bump coverallsapp/github-action from 2.3.0 to 2.3.1 #13766
- Bump coverallsapp/github-action from 2.3.1 to 2.3.3 #13793
- Bump coverallsapp/github-action from 2.3.3 to 2.3.4 #13811
- Bump coverallsapp/github-action from 2.3.4 to 2.3.6 #14246
- Bump coverallsapp/github-action from 2.3.6 to 2.3.7 #15669
- Bump jwlawson/actions-setup-cmake from 2.0 to 2.1 #15907
- Bump peter-evans/repository-dispatch from 3 to 4 #15458
- Update Sign executables step to support trusted-signing-action v0.5.10 #15557
- chore: update the donate button label #13353
- WPixmapStore: Change getPixmapNoCache to std::unique_ptr and further optimizations #13369
- Remove unused setSVG and hash functionality from pixmapsource #13423
- Remove FAQ from Readme.md #13453
- #13452
- Make Paintable::DrawMode an enum class #13424
- Paintable cleanup #13435
- hash clean up #13458
- BaseTrackTableModel: Fix
-Wimplicit-fallthrough warning on GCC 14.1.1 #13505
- Refactor: fix trivial cpp coreguideline violations #13552
- Refactor
EngineMixer #13568
- more
ControlDoublePrivate optimization #13581
- Modernize
ControlValueAtomic #13574
- Optimize control code #13354
- Fix some minor code issue #13586
- Static initialization order fix #13594
- Remove referenceholder #13240
- chore: add note about ConfigKey naming convention #13658
- refactor: split out
AutoFileReloader from QmlAutoReload
#13607
#13756
#13755
- Fix Clazy v1.12 errors in main #13770
- Code cleanup in SidebarModel and WLibrarySidebar #13816
- Refactor
MovingInterquartileMean #13730
- Improved comments in enginecontrol and use of std::size_t for bufferSize across the codebase #13819
- Refactor: use higher-level
std::span based logic #13654
- VSyncThread: tsan fix pll vars data race #13873
- Control Indicator: Use atomic to fix tsan detected data race condition of blink value #13875
- Fix undefined behaviour of infinity() #13884
- Use atomic for mbWakeScheduler, protect mbQuit with mutex #13898
- Refactor
ValueTransformer and WBaseWidget #13853
- Avoid data race on m_pStream #13899
- Cleanup and deprecate more
util/ classes
#13687
#13968
#13965
#14107
#14095
#14087
#14086
- Github CI(clang-format): Indent Objective-C blocks with 4 spaces #13503
- Github CI(pre-commit): Add cmake-lint hook #13932
- Github CI(labeler): Add
developer experience issue label #14343
- Github CI(labeler): add Dev Tools to
developer experience #14475
- Refactor: remove samplew_autogen.h
#13988
#14005
- Fix clang-tidy complain #14029
- Github CI(dependabot): Open PRs against 2.5 branch instead of main #14060
- Happy New Year 2025! #14098
- Fix warning in Auto DJ test #14102
- Fix: Add
QT_VERSION_CHECKed QCheckBox::checkStateChanged handlers #14104
- Remove warning introduced in #13339 #14109
- Fix wrong access to ENV var MIXXXVCPKGROOT instead of CMake setting MIXXXVCPKGROOT #14146
- WOverview: remove unused coefficients #14145
- Fix missing initialization in Rotary() #14176
- WPushButton: remove obsolete focusOutEvent() #14177
- Fix memory leak and use parented_ptr in WTrackMenu #14199
- Fix Clazy warning in main #14241
- Fix recently introduced clazy warnings #14336
- Fix calculation of m_resourcePath in the testing case #14110
- Add borrowable_ptr, a threadsafe callback solution #1713
- Include QtConcurrentRun #14303
- Optimized tooltip generation in WBaseWidget #13952
- Github CI(pre-commit): qsscheck.py -> added utf-8 in open() #14320
- Small grammar fix for comment in
BpmControl::slotUpdateRateSlider #14344
- Add links to important guidelines to CONTRIBUTING.md #14342
- Log Test fixes and refactoring. #14111
- chore: lint CMakeLists.txt #14369
- RateControl/Position ScratchController: use std::unique_ptr, PollingControlProxy etc. #14058
- Controller preferences: Cond-compile out HID settings when building without HID #14376
- Add missing space to engine controller API documentation #14384
- Fix prettier pre commit #14416
- Use std::shared_ptr in controller settings to fix memory leak #14413
- clean up README.md #14471
- Fix type safety warnings #14613
- CMake: Join project() with enable_language() #14577
- Scenegraph: condition to QML=ON #14487
- Fix building with Qt 6.9 #14678
- Fix: import proper QtQml.Models module instead of qmllabs #14675
- qmlwaveform: Fix moc in Qt 6.9.0 #14649
- Add automation to help with release branch syncing
#15111
#15052
#15049
#14971
#14881
#14875
#14422
#15634
#15649
- Chore: disable broken/slow benchmark
#15658
#15508
#14846
- CI: refactor workflow into modular actions
#14964
#15291
#15046
#15551
#15034
/softfix PR command
#14966
#14607
- Rerun CI when the base branch is changed #14564
- Remove all VCPKGDEFAULTHOST_TRIPLET entries from build.yml
#15029
#15022
- CMake find modules required for the new VCPKG environment #14547
- Fix
mixxx-test build to find mad.h #15803
- Fix segfault in mixxx-test when _HID_ is not defined #14988
- Windows_buildenv.bat: remove stray command #15237
- Add a MMutexLockerDebug to trace Multithreading #14428
- Unitttests: Reduce number of iterations in globalTrackCacheTest.concurrentDelete
#15287
#14833
#14919
- Remove accidentally committed "backup" file #14456
- (Belated) Happy New Year 2026! #15852
- Install msys2 if not preinstalled like on Windows-11-arm #14836
- Logging: remove redundant class names
#15496
#15860
- Don't hardcode the limit of parallel compiler threads for GitHub runners #14760
- Fix destruction race #14922
- Fix network device debug #15171
- Fix pre-commit of 2.6 branch #15853
- Num deck streamline #14112
- Pre-Commit: Run Prettier for d.ts files #15914
- README: add link to OS-specific build instructions #14779
- Improve debug output for missing WWidget pixmaps #14473
2.5.6 (2026-03-25)
Library
- Search: fix 'not' operator
#15923
#15918
- Rhythmbox: fix imports
#15798
#15770
- WTrackMenu: warn before opening more than 10 tracks in file browser
#15828
#15819
- Fix "dataChanged() called with an invalid index range" warning
#15937
#14610
- History: allow track file export #16074
- History: prevent deletion of current history after purging tracks #15991
- Tracks: improve performance when restoring large track selections #15973
Effects
- White Noise: remove DC offset #15979
- White Noise: improve gain responds #15949
- Echo: fix distortion bug
#15985
#15835
- Echo: fix ramping of the send and feedback parameters #16006
- QuickEffect: fix crackling noise when switching
#15796
#15794
- Glitch: remove unnecessary cast to integer #16068
- Reverb: fix ramping of the send parameter #16001
Controller Mappings
- Numark Mixtrack 3: update scripts #14180
- Pioneer CDJ-350: fix incorrect name in controller mapping #15683
- Reloop Beatmix 2/4: implement shift+jog wheel seek
#15575
#12334
- Traktor Kontrol Z1: fix crossfader cut
#14451
#14450
#15945
- Traktor S4Mk2: check for deck undefined #14445
Engine
- Fix scratching with keylock enabled and mapping using scratch2 #15845
- AudioUnit: fix crash due to off-by-one error in parameter syncing #15919
- AudioUnit: fix startup crash by loading out-of-process #16106
- FX units: resolve issue preventing use on all samplers
#15971
#15799
- Fix false positive "First sound has been moved!" warnings log message #16054
- Beats: fix rare off-by-one beat issue with quantize and sync
#13262
#16086
Preferences
- Interface: use main window screen to detect if skin fits
#15824
#15823
Skins
- Time widget: make ShowSeconds only show seconds, no extra locale info #15805
- Search related menu: fix search click trigger #15912
- Tracks: avoid re-sorting table when purging/hiding tracks
#15872
#12565
Target support
- Add Flatpak packaging files
#15695
#15922
#15935
- Fail early if not running from Visual Studio environment #14623
- Make Debian non-free optional #15895
- Debian: remove 'qml6-module-qtquick-nativestyle #15771
- Ubuntu: retire Plucky Puffin 25.04 #15926
Miscellaneous
Note: Version 2.5.5 has been skipped following an issue in the release workflow.
2.5.4 (2025-12-14)
Controller Mappings
- Korg Kaoss DJ: fix scratching with left wheel
#15607
#15121
- Numark-NS6II: fix typo in NS6II.PadMode #15428
- Pioneer DJ CDJ: fix broken initiatlisation
#15363
#15343
#14731
- Reloop Beatmix 2/4: fix overriding persisted fx routing
#15574
#14917
- Traktor S4Mk3: don't stop scratch mode if platter is being held #15570
- Components JogwheelBasic: Disable scratching when leaving
vinylMode #15336
Skins
- LateNight PaleMoon: add icons for dark hotcue loops, optimize light SVGs
#15448
#15339
- LateNight: fix color of effect toggle buttons #15467
- LateNight: work around style bug in Qt 6.9.2 causing black key button text
#15404
#15351
- LateNight: revert xfader buttons to one (cycling) toggle #15395
- Tango: restore VU meter mini backpath #15544
- Improve and unify sampler sync button behaviour across all skins #15399
Library
- Playlists: polish code for moving selected Tracks #15454
- Playlists: disable all modifying actions when locked #15456
- Playlists: improve performance when activating a playlist #15465
- Track view header: avoid narrow columns after restoring header with hidden columns
#15331
#10325
- Computer: fix "Refresh directory tree" action #15301
- Computer: parse artist+title from filename if both tags are empty #15302
- Computer: stop model population when switching to another feature
#11445
#15677
- Library scanner: make Cancel button work again
#15320
#14940
- Library scanner: fix an issue when verifying remaining tracks #15346
- Sidebar: expand items to full width to maximize click-responsive area #15330
- focus tracks view when selecting a track via deck track menu #15543
- Search: maintain cursor position when saving query #15512
- Search: add proper DateAddedFilter #15572
- Analyze view: avoid listing tracks that don't match the 'New' filter
#15597
#14873
#15693
- Traktor feature: fixes to Traktor and Rekordbox collection importer
#15645
#15671
- Fix possible crash and other issues with Rekordbox USB
#15745
#13624
#13309
#10672
#11373
Preferences
- Library: reset library font/row height when closing without apply #15455
- Decks: fix Restore Defaults for rate slider direction and track time display
#15443
#15444
- Sound Hardware: don't allow closing preferences with faulty Sound Hardware config
#14576
#6077
- Library: fix display of font style #15382
- Waveforms: fix handling of invalid overview config type #15422
- Broadcast: handle and fix invalid config strings #15525
Target support
- Update macOS (Intel) runner for building Mixxx to macOS Sequoia 15 #15391
- Welcome Ubuntu 26.04 LTS Resolute Raccoon #15588
- Upload all 2.5 builds to "Patch Builds" ppa:mixxx/mixxxpatches #15436
- CMakeLists.txt: fix handling of custom CMAKEOSXDEPLOYMENT_TARGET #15356
- debian_buildenv.sh: assert for bash
#15274
#15273
- debian_buildenv.sh: use /etc/os-release instead of the obsolete /etc/lsb-release #15298
- debian_buildenv.sh: fix for Ubuntu Noble (24.10) #15292
- Fix building without an X Window screensaver #15297
- Fix building with FLAC V 1.5
- Support building with Qt 6.10: Add Qt6::GuiPrivate
#15502
#15485
- Touchscreen on Windows 11: disable touch -> mouse event translation
#15547
#15546
- Fix missing QuickTemplates2 in Windows Installer
#15439
Misc
- Cover Art: Fix a rare issue causing an infinite loop and high CPU load when fetching a cover art from metadata failed unexpectedly
#15451
#15199
- Network Clock: fix writing wrong number of silence after a long underrun #15400
- Engine: tidy debug log messages in case of sample cache misses #14793
- Engine: use the correct number of channels for underflow compensation #15394
- Effects: fix quantisation in case of engine samplerate != track samplerate
#15538
#15300
- Menu bar: fix showing/hiding via Alt
#15352
#15350
#15396
#15385
- Fix Menu checkbox behaviour, consistency & cleanup #15365
- Fix time warping when click-and-dragging waveform
#15579
#15619
#15610
- Update Keyboard SVG #15635
- SoundSourceFFmpeg: Fix opening files with non ASCII characters
#15700
#15681
- Fix possible crash due to division by zereo in waveform code
#15738
#15737
2.5.3 (2025-09-02)
Controller Mappings
- Icon P1-Nano MIDI 1: new mapping #14602
- Traktor Kontrol S2 Mk1: Fix effect light on application start #15102
- Traktor Kontrol S4 Mk3: tempo offset per deck #14882
- Traktor Kontrol S4 Mk3: don`t duplicate beatloop_activate behaviour #14992
- Traktor Kontrol S3: allow full library navigation #14980
- Traktor Kontrol S3: fix hotcue color output #15185
- Numark NS6II: map the shiftbutton messages to decks 1/3 and 2/4 #15229
Engine
- Turn on deck quantize buttons by default #15245
- Avoid engine freeze when loading a new track while scratching with waveform or spinny
#15086
#15082
- Prevent crash with null track pointer #15114
- Fix Metronom with 96 kHz engine sample rate #15130
- Waveforms: don't scratch on mousepress/move with empty waveform
#15143
#15088
- Reverb effect: Fix memory leak #15262
- create Vinyl Control controls and proxies only for main decks #15175
Vinyl Control
- Do not try to "correct" for drift in absolute mode. #14960
- Fix connection to "passthrough" and "scratchpositionenable" controls.
#15173
#15167
#15174
- Fix getting sample rate
#15195
#13974
- Remove track selection mode
#15189
- Fix handling of "vinylcontrol_enabled" causes a frozen vinyl spinny mouse control
#15168
#15165
- Pitch filter improvements #15230
- Add a quadrature phase tracker
#15217
#15283
Target support
- Windows: Update build environment to Visual Studio 2022 #15006
- Retire Ubuntu Oracular 24.10 #15100
- Add qt6-svg-plugins to Debian package
#15124
#15117
- missing include cstdlib #15132
- Improve zsh compatibility for macos_buildenv.sh
#15097
#15091
#15092
- CMake: Set PREFIX in ExternalProject_Add()
#15170
- Allow to build with GCC 15 and LTO enabled
#15238
Misc
- Broadcast preferences: make setting string translatable
#15023
#15013
- Add missing translation in Eject button tooltip
#15113
#15105
- Sound Hardware preference: add (?) linking to Sound APIs in the manual #14935
- Sound Hardware preference: add a hint regarding pick up position of deck and bus outputs #15255
- Fix column header text assignment #14944
- Remove runtime assert to not risk crashes #15000
- Tracks: prevent reorder with Alt keys when model (playlist) is locked #15135
2.5.2 (2025-06-13)
Library
- Fix playlist export when name contains a dot #14737
- Fix loading the wrong track via drag and drop when using symlinks
#13708
#13706
- Fix: byte order in hotcue comments imported from rekordbox
#14808
#14789
- Tracks table: show ReplayGain with max. 2 decimals, full precision in tooltip
#14868
#14867
- Fix keyboard mappings with non-ASCII characters on Linux
#14843
#14734
- Computer feature: enable initial sorting during population #14688
- Computer feature: avoid false-positve 'has children' for non-directory links
#14907
- Fix column header mapping when using external library #13782
- Fixed Single track cover reload on reload metadata from file
#14494
#14409
Controller Mappings
- Arturia KeyLab Mk1: initial mapping #14502
- Denon MC7000: slicer mode TypeError #14804
- Denon MC7000: crossfader curve using wrong parameter #14803
- DJ TechTools MIDI Fighter Twister: support 4 decks #14557
- Hercules DJControl Inpulse 500: the crossfader was not reaching 100% to the right end
#14722
- Icon Pro Audio iControls: initial mapping #14591
- Numark Mixtrack Platinium FX: Fix 4 steps browsing issue #14778
- Traktor Kontrol S3: Use GUI config for settings #14904
- Traktor S2 MK3: Fixed LED issue #14717
- Traktor S4 MK2: Use engine settings API for configuration #14781
- Traktor S4 MK3: prevent sync lockup, add setting for tempo center snap
#14735
#14721
Controller Backend
- Control picker: Allow to learn MIDI Aux/Mic enable controls
#14720
#14718
- Make
[Main],headSplit CO persistent across restart #14817
- Fix MIDI Controller button learning
#14816
#14805
- Fix learning with "No Mapping" selected #14829
- Unit tests for engine.beginTimer #12437
- engine-api.d.ts: brake()/spinback() documentation
#14929
Target support
- Fix building with a CMake multi-config setup #14614
- Fix building with gcc >= 14 with LTO and clang >= 19 (fpclassify)
#14749
#14716
- Fix: gcc
-Warray-bounds= in fidlib by using a flexible member #14798
- Added Linux Mint Codenames to debian_buildenv.sh #14709
- Add hidden
[Config],notify_max_dbg_time setting to reduce warnings in developer mode #14015
- Detect arch and fail early if not supported when installing buildenv #14478
Misc
- Vinyl Control: Reduce sticker drift #14435
- Fix infinite number of pop ups of the "No Vinyl|Mic|Aux|Passthrough input configured" dialog
#14841
#14837
- Reduce CPU usage with Trace log messages
#14862
#14791
- Fix adjust Gain after adopting it as ReplayGain only in requesting player
#14812
#14806
- Skins: add loop anchor toggle to Deere, Shade, Tango
#14890
#14173
- Sound Hardware preferences: add manual link for Mic monitoring modes
#14889
- Work around an Ubuntu, Ibus or Qt issue regarding detecting the current keyboard layout.
#14883
#14838
#14797
- Fix BPM rounding for the 3/2 case #14751
- Update cue & play indicators on paused decks when switching cue mode
14930
9928
2.5.1 (2025-04-27)
Controller Mappings
- Behringer DDM4000 & BCR2000: Update mappings to 2.5
#14232
#14349
- DJ TechTools MIDI Fighter Spectra: Add controller mapping
#14559
- Hercules DJControl Inpulse 300: add toneplay, slicer, and beatmatch functionalities
#14051
#14057
- Hercules DJControl Inpulse 500: New mapping
#14491
#14510
- Hercules DJ Console Mk1: Fix pitch bend buttons #14447
- M-Vave SMC-Mixer: Add controller mapping
#14411
#14448
#14457
#14458
- M-Vave SMK-25 II: Piano keyboard mapping
#14412
#14484
- Numark Mixtrack Platinum: Fix VU Meters #14575
- Numark NS6II: New mapping #11075
- Numark Platinum FX: New mapping #12872
- Pioneer-DDJ-SB3: Fixes slip mode and adds missing knob controls #11307
- Reloop Digital Jockey 2 IE: New mapping
#4614
#14328
- Traktor S4mk3: Set 4 decks, avoid CO warnings for decks 3/4, eg. VU meter
#14249
- Traktor S4mk3: Smooth xfader curve for Const Power mode
#14305
#14329
#14103
- Traktor S4mk3: stop wheel led blinking when track is over/stopped
#14028
#13995
- Traktor Kontrol S3: Use pitch absolute mode as described in the manual #14123
- Stanton SCS.1m/d; Keith McMillen QuNeo; EKS Otus: use
playposition instead of non-existent visual_playposition
#14609
#14603
Controller Backend
- Controllers: Avoid timer warning on button release #14323
- Controller preferences: Fix notify of pending changes when closing preferences #14234
#14220
- Controller preferences: Fix broken overwrite dialog ('Save as..' not working) #14263
- Controller preferences: Don't break support link texts #14079
- Controller preferences: Fix wrong mapping change confirmation request caused by MidiController::makeInputHandler()
#14281
#14280
#14292
- Controller mapping info: Fix cropped description text
#14332
#14117
- MIDI controller learning: Make control box search usable #14260
- MIDI controller learning: Don't reload mapping after learn #14253
- MIDI controller learning: Correct skin control for mic/aux section #14221
- MIDI controller learning: Add more cue controls for samplers
#14419
- MIDI controller learning: Continue after the maximum learning time is over #14429
- Allow
midino 0 in `MidiController::makeInputHandler()
#14266
#14265
- Fix: provide
incomingData to MIDI sysex mappings
#14368
#13133
- Fix log spam when using Midi for light mapping
#14326
#14327
#14333
#14338
#14371
- Fix for
TypeError in midi-components-0.0.js
#14203
#14197
- Fix crash due to concurrent access in MidiController #14159
Skins
- Deere/LateNight (64 samplers): Bring back library in regular view
#14101
#14097
#14700
- Fix crash when hiding waveforms in Deere
#14170
- Waveform Overview: Abort play pos dragging if cursor is released outside the valid area
#13741
#13732
- Waveform Overview: Also render analysis progress when triggered by track menu or analysis feature #14150
- Don't show 'menubar hide' dialog when switching skins #14254
- Key Wheel: Move to View menu and make it a floating tool window
#14256
#14239
- Center effect parameter names #14598
- Track menu: highlight row when hovering checkbox
#14636
#14680
Library
- Add Ctrl+Shift+C to copy the content of the selected cell(s) (The Mxxx 2.4 behaviour of Ctrl+C).
#14114
#14065
- Fix MusicBrainz lookup on Windows and macOS #14216
- Library scanner: Update cached 'missing' flag when file is redicovered
#14250
- Hidden Tracks: Allow 'load to' via track context manu #14077
- Update to libdjinterop 0.24.3 - support for Engine 4.1/4.2
#14172
#14289
- Fix writing metadata via symlink #13711
- Library menu: change "Engine DJ Prime" to "Engine DJ"
#14248
#14682
- Fix file extension handling during playlist export #14381
- Fix manual key metadata editing in track properties dialog
#14022
#14400
#14295
#14294
- History: Don't allow joining with locked previous playlist
#14401
#14399
- Track info dialog: fixed cover label (max) size #14418
- Track Menu: Reset
eject after moving track file to trash #14402
- Fix AutoDJ "Remove Crate" action
#14426
#14425
- Fix scrolling issue with coverart columns visible
#13719
#14631
- Developer Tools: multi-word search, no Tab navigation in controls table #14474
- Analyze feature: respect New / All selection when searching
#14660
#14659
- Stop populating Computer library feature when Mixxx should close #14573
- Tracks: apply played/missing text color also to selected tracks #13583
- Tracks:
show_track_menu at index position #14385
- Search related menu: improve checkbox click UX #14637
- Avoid false missing tracks due to db inconsistency
#14615
#14513
- Fix automatic trimming of search bar text
#14497
#14486
- Avoid crash after removing Quick Link
#14556
#8270
Other Fixes
- Enable R3 time-stretching with Rubberband 4.0.0 API version numbers #14100
- Preferences Effects: add Hide/Unhide (move) buttons to Effects tab #13329
- Preferences Effects: left/right key in effect lists trigger hide/unhide #14205
- Fix beat sync in Flanger effect #14351
- Apply talkover ducking after main effects to allow using a compressor effect
#13844
#12451
- Fix sporadic deadlocks when closing Mixxx or changing sound devices
#14208
#14055
- PositionScratchController: Fix loop wrap-around case #14379
- Allow seeking to a hotcue during waveform scratching
#14357
#13981
- Reset saved loop when toggling off after switching cue type
#14661
#14657
- Fix leaks from fid_design()
#14567
#9470
Target support
- Allow to build with git "showSignature = true"
#14115
#12997
- Support building with Qt 6.8/6.9
#14080
#14071
#14200
#14204
#14440
#14518
- Welcome Ubuntu Plucky Puffin; Good bye Mantic Minotaur
#14148
#14158
- Add more translations to Linux desktop file
#14153
#14169
- Debian: recommend qt6-translations-l10n #14147
- Update FindFFTW3.cmake to not find version 2
#13937
#13931
- Allow building without tests-tools via new CMake options BUILDTESTING and BUILDBENCH
#14269
- Fix and improve "missing env" error message #14321
- Qt 6.8: Ensure Mixxx uses "windowsvista" Qt style on Windows #14228
- Raise macOS target version to 11 (Qt 6.5 requirement). #14440
- Fail early when building on WSL #14481
- Remove useless udev rule #14630
- Handle new " / " from taglib 2.0
#12854
#12790
2.5.0 (2024-12-24)
Modernized Platform: Update to Qt6
Engine
- Beats: allow undoing the last BPM/beats change #12954
#12774
#10138
#13339
- Add beatloop anchor to set and adjust loop from either start or end
#12745
#13241
- Add Rate Tap button #12104
- Store/restore regular loop when toggling rolling loops
#12475
#8947
- Add
beats_translate_move ControlEncoder #12376
- Looping/Beatjump: use seconds if track has no beats
#12961
#11124
- Add Track colour palette cycling controls
track_color_next and track_color_prev to library, decks and samplers
#13066
#12905
- Add Tempo locking controls
#13041
#13041
#13038
#13199
- Recording: Fix bogus timestamp in CUE sheet after restarting a recording
#13966
#13964
- Improve Taglib/SoundSource logging #13541
Skins / Interface
- Toggle the menubar with single Alt key press (auto hide)
#11526
#13301
- Fullscreen toggle rework
#11566
#13189
#13030
- Allow to edit track title and artist directly within the decks via a delayed double-click
#11755
#13930
- Require a minimum movement before initiating the drag&drop of tracks #12903
- Add type toggle to cue popup #13215
- Handle not supported files when dragging to waveforms and spinnies
#13206
- Tooltips: Improve
rate_up/down description regarding pitch vs. speed #12590
- Tooltips: Add description for expand/collapse samplers buttons
#13005
#12998
- Track label widgets: Set
show_track_menu only for main decks #12978
- MacOS: App proxy icon of the playing track to the window title #12116
- Auto DJ: Force-show decks 3/4 if we are going to use them #13455
- Auto DJ: Add new random tracks if one track does not exists #13551
- Allow to set LaunchImage style per color scheme #13731
- Show wait cursor when re/loading a skin (not during startup) #13747
- LateNight: Merge vinyl control toggle and status light
#12947
#10192
- LateNight, Deere, Tango: Deactivate beatgrid edit controls if BPM is locked
#13320
#13323
#13325
- LateNight: Add/tweak CueDelete icons
#13495
#13492
- LateNight: Use Classic launch image style also for 64 samplers version #13796
- Adjust some skin controls, to allow point-and-click mapping
#13906
- PreviewDeckN,LoadSelectedTrackAndPlay toggles play/pause if the track is already loaded
#12920
#9819
- Command line interface: Determine whether to color output based on
TERM variable
#13486
- Command line interface: Add option
--start-autodj to start Auto DJ immediately after Mixxx start.
#13017
#10189
- Logging: Include timestamps in messages by default #11861
- Logging: Limit mixxx.log size to 100 MB or via --log-max-file-size
#13684
#13660
- Fix skin reload after changing color scheme #13847
Effects
Library
- Shortkeys Cut, Copy, Paste for track list management
#12020
#13361
#13364
#13958
#13100
- Playlists: move tracks with Alt + Up/Down/PageUp/PageDown/Home/End
#13092
#10826
#13098
- Search: Add special BPM filters
#12072
#8191
- Search: Add "OR" search operator
#12061
#8881
- Search: Add 'type' filter
#13338
- Search: Add 'id' filter #13694
- Search related Tracks menu: Allow to use multiple filters at once
#12213
#12211
- Track menu: Rephrase "Reset" to "Clear" #12955
- Track menu: Add support for scaling BPM by different ratios
#12934
#9133
- Track menu: Remove from disk: stop and eject all affected decks #13214
- Track menu: add star rating
#12700
#10652
- Track menu: Show Properties in Missing and Hidden view #13426
- Add multi-track property editor / batch tag editor
#12548
#9023
#13299
#13609
#13597
#13631
- Track property editor: focus the editing field in the track properties that corresponds to the focused column
#13841
#14036
- Computer feature: add sidebar action "Refresh directory tree" #12908
- Add feedback to directory operations (add, remove, relink)
#12436
#10481
- Add ability to import external playlists as crates #11852
- Add 'Shuffle playlist' sidebar action
#12498
#6988
- Playlists: Update of playlist labels after adding tracks #12866 #12761
- Tracks: Custom color for missing tracks #12895
- Tracks: Custom text color for played tracks (qss)
#12744
#5911
#12912
#13538
- History: Show track count and duration in sidebar
#12811
#12788
- Don't allow pasting tracks into locked playlists/crates or History #12926
- Optimize Library scrolling #13358
- Keep the metadata key text unchanged, use it as the origin of information
#11096
#11095
#13650
#14011
#14008
#14020
- Center date values, right-align Track # #13674
- Analysis: Fix stop button when analyzing crate/playlist #13902
- Add a debug message, which appears when event loop processing in Mixxx application takes very long
#12094
#13900
#13889
#13903
#14012
Preferences
- Add load point option 'First hotcue'
#12869
#12740
- MIDI Input editor: allow selecting multiple Options #12348
- Apply changes only after pressing Apply in color preferences #13302
- Add/reorder tabstops in Library and Waveform preferences
#13846
- Add missing spacer in interface preferences #13094
- Fix fetching of soundcard sample rate
#11951
11949
Controller Mappings
- Denon MC7000: Add optional jog wheel acceleration to the controller mapping #4684
- Denon MC7000: Unify parameter button logic and add customizable modes #13589
- Denon MC7000: Add sampler options to mapping settings #13950
- MIDI for light: Implement new Active deck heuristic #13513
- MIDI for light: Add settings GUI #13721
- Numark Scratch: Add controller settings #13404
- Pioneer DDJ-FLX4: Mapping improvements #12842
- Traktor Kontrol S4 MK3: Add setting definition for #12995
- Traktor Kontrol S4 MK3: Software mixer support and default pad layout customisation #13059
- Traktor Kontrol S4 Mk3: Rework jogwheel speed compute and motorized platter #13393
- Traktor Kontrol S4 Mk3: Revert QuickEffect preset offset #13997
- Traktor Kontrol S4 Mk3: Correct wheel timestamp wrap-around #14016
Controller Backend
- Send sysex to all handlers #12827
- Speed up midi sysex receive
#12843
- Add control for showing a deck's track menu #10825
- Removed old examples HID keyboard and HID trackpad #12977
- Reduce log noise with HID device
#13010
#13125
- Allow controller mapping to discard polling #12558
- Add support for mapping user settings
#11300
#13046
#13057
#13045
#13656
#13738
#13979
#13990
- Registering MIDI Input Handlers From Javascript
#12781
#13089
- Controller IO table: Fix display text for Action/control delegate #13188
- Drop lodash dependency in ComponentJS #12779
- Support for bulk devices on Windows and Mac #13008
- Fix pending reference to the old mapping after selecting 'No mapping' #13907
- Fix crash with GoToItem when no app windows has the focus #13657
Waveforms
- Visualize slip mode position by splitting waveform (RGB GLSL only)
#13002
#13256
#10063
- Show beats and time until next marker in the waveform
#12994
#13311
#13953
#13314
- Don't elide hotcue labels
#13219
#10722
- Allshader RGB, Filtered and Stacked Waveforms using textures for waveform data
#13151
#12641
- Allow changing the waveform overview type without reloading the skin
#13273
- Overview: Update immediately, when the normalize option or global gain changed
#13634
- Overview: Clear pickup position display when opening cue menu
#13693
Experimental Features
Target support
- Maintain GL ES support #13485
- Tools: Add
rpm_buildenv.sh for building on Fedora #13069
- Lenient taglib 2.0 guard #12793
- MixxxApplication: Support linking Qt statically on Linux #12284
- FindSndFile: Link mpg123 in static builds #13087
- FindPortMidi: Link ALSA in static builds on Linux #12292 #12291
- FindLibudev: Link hidapi and libusb with libudev in static builds on Linux #12294
- FindVorbis: Link ogg in static builds #12297
- FindSleef: Use OpenMP in static builds #12295
- macOS packaging: Enable app sandbox in ad-hoc-packaged (i.e. non-notarized) bundles too #12101
- CMakeLists: Match arbitrary
arm64-osx triplets #11933
- Disable warning in lib/apple code #13522
- GitHub CI: Use retry loop for CPack to work around macOS issue #13991
- Github CI: Enable
WARNINGS_FATAL on macOS, too #11905
2.4.2 (2024-11-26)
Controller Mappings
- Denon MC7000: Fix star up/down logic by only handling button down events #13588
- Intech TEK2: Add initial mapping #13521
- Korg Kaoss DJ: Update script #12683
- MIDI for light: Fix unsound timer handling #13117
- Novation Dicer: Remove Flanger mapping with quickeffect toggle
#13196
#13134
- Novation Launchpad X: Fix detection on macOS
#13691
#13633
- Numark PartyMix: Fix EQ (script binding) display name #13255
- Numark Scratch: Add initial mapping
#4834
#13375
- Pioneer DDJ-400 and DDJ-FLX4: Remove tap beat mapping to resolve conflict with toggle quantize and fix shift + play
#13815
#13813
#13857
- Reloop Beatmix 2/4: Fix eject button and jog LED being lit on track unload
#13601
#13605
- Reloop Mixage MK1, MK2, Controller Edition: Add initial mapping #12296
- Sony SIXAXIS: Fix mapping #13319
Fixes
- Handle not supported files when dragging to waveforms and spinnies
#13208
#13271
#13275
- Fix Sqlite 3.45 builds by using only single quotes for SQL strings
#13247
#13257
- LateNight: Use default colors for sampler overviews (like main decks) #13274
- Library: Allow to drop files to decks with unsupported or no file extensions
#13209
#13204
- Update build environment with libdjinterop 0.21.0 #13288
- Move to GitHub workflow runner macos-12
#13296
#13248
- Recording: with empty config, save default split size immediately
#13304
- Add support for Ubuntu Oracular Oriole and remove Lunar Lobster
#13348
- Recordbox: Fix string decoding issues
#13293
#13291
- Mixer preferences: Don't update EQs/QuickEffects while applying #13333
- Hardware preferences: Fix UX when applying config with missing/busy devices
#13312
- Fix minor 64 bit CPU performance issue #13355
- Fix clicks at loop-out when looping into lead-in #13294
- Fix wrong pitch value on startup, caused by
components.Pot
#11814
#13463
- Engine Prime: Fix build-failure #13397
- Engine Prime: Friendlier error message if export fails #13524
- macOs: Fix Keyboard shortcuts by not catching num key modifier
#13481
#13305
- Skins: fix time display to allow AM/PM
#13430
#13421
- Fix detection last sound if track does not end with silence.
#13545
#13449
- Remove false positive critical warning related to library columns
#13165
#13164
- Fix reading metadata for files with wrong extensions
#13218
#13205
- History: remove purged tracks, auto-remove empty playlists
#13579
#13578
- Synchronize AutoDJ next deck with top track in queue
#12909
#8956
- Playlists: Update play duration and bold state in sidebar when dragging tracks into the playlist table
#13591
#13590
#13575
- Playlists: Keep correct track selection (# position) when sorting
#13103
- Track file export: Various fixes
#13610
- Controller engine: Unify/improve logging, expand error dialog's Details box
#13626
- Fix quantization in the effect engine (metronome effect)
#13636
#13733
- Musicbrainz: Improved messages
#13672
#13673
- Fix ReplayGain detection in case of short tracks
#13680
#13676
#13702
#13703
- Track menu: Avoid crash and UX issues with track nullptr
#13685
- Disable Properties shortcut in Computer feature views
#13698
- Overview waveform: Add tooltip info about left-click dragging
#13739
- Make
hotcue_focus_color_next/_prev COs ControlPushButtons to allow direct mappings
#13764
- Scaled svg cache to speed up drawing in hidpi mode #13679
- Update to libdjinterop 0.22.1 for Enigine Prime 4.0.1 support #13790
- HID: Avoid repeated error messages from hidwrite()/hidread() in case of errors
#13692
#13660
- Fix unnecessary painting with covers in library #13715
- Fix check for unrelated decks playing when starting Auto DJ
#13762
#13734
- Fix read before m_bufferInt during scratching
#13917
#13916
- Fix waveform EQ High&Mid visualization
#13923
#13922
2.4.1 (2024-05-08)
Controller Mappings
- Behringer DDM4000 & BCR2000: Fix exception in JS code #12969
- Denon DJ MC6000MK2: Fix mapping of filter knob/button #13166
- Denon DJ MC7000: Fix redundant argument and migrate to
hotcue_x_status
#13113
#13121
- Hercules Inpulse 200: Configure shift-browser knob to scroll the library (quick) #12932
- Nintendo Wii Remote: Fix hid script regarding addOutput #12973
- Pioneer CDJ: Fix hid script regarding addOutput #12973
- Pioneer DDJ-FLX4: Add waveform zoom and other mapping improvements
#12896
#12842
- Traktor Kontrol F1: Fixes for hid-parser and related script #12876
- Traktor S2 Mk1: fix warnings #13145
- Traktor S3: Fix mapping crash on macOS #12840
- Controller I/O table: sort action column by display string #13039
Target Support
Skins
- Deere: make sampler rows persist #12928
- Tango: Remove unneeded waveform Singleton #12938
- Tango 64: fix Main VU meter
- Prevent possible crash in customs skins using parallel waveforms
#13043
#12580
#13136
- Slider tooltip: consider orientation for up/down shortcut tooltips + add support for WKnobComposed #13088
- Tooltips: update 'hotcue' with saved loop features #12875
- Animate long press latching of sync button
#12990
#13212
- Polish fx chain controls #12805
- Waveforms: draw loop gradient at the correct position
#13061
#13060
- Waveform / spinnies: don't take keyboard focus on click
#13174
#13211
Library
- Sidebar: show track count and duration of History playlists
#13020
#13019
#12788
#12880
#12882
- Computer feature: update removable devices on Linux #12893 #12891
- Playlists: Prevent removing tracks from locked playlists #12927
- History feature: Fix removing deleted tracks after export
#13016
#13000
- BPM display uses decimal separator of selected locale #13067 #13051
- Fix relink directory when migrate between Linux/macOS and Windows #12878
- Allow adding new directories while watched directories are missing
#12937
#10481
- Require a minimum movement before initiating the drag&drop of tracks
#13135
#12902
#12979
- iTunes/Serato/Traktor/Rhythmbox: Print error if library file could not be opened
#13012
- Playlists: improve table update after deleting (purging) track files
#13127
- Fix Color column width issue #12852
- Tracks: select track row when clicking the preview button (only when starting preview)
#12791
- Library track menu: show Hide action also in Playlist & Crates #11901
- iTunes: Obtain FileAccess before accessing iTunes XML #13013
Miscellaneous
- Remove unnecessary unpolish operation of the style, before polish the new style #12445
- Developer Tools: Initially sort controls by group name, ascending #12884
- Waveforms: Fix scratching crossing loop boundaries #13007
- Prohibit un-replace when deck is playing #13023 #12906
- Track Properties dialog: Prevent wiping metadata when applying twice quickly
#12965
#12963
- AutoDJ: Fix button state after error message about playing deck 3/4
#12976
#12975
- Tagfetcher: Cache fetched covers
#12301
#11084
- Avoid beats iterator being one off and DEBUG_ASSERT in Beats::iteratorFrom
#13150
#13149
- Show hint if resource path in CMakeCache.txt does not exist
#12929
- Always calculate the auto value for colorful console output #13153
- Fix FLAC recording on macOS and Windows
#10880
#13154
- LV Mix EQ: Fix pops when enabling in effect rack
#13055
#13073
- Fix hid addOutput
2.4.0 (2024-02-16)
Music Library: Tracks Table & Track Menu
- Remember track selection when switching library features, fix initial selection etc.
#4177
#4536
#12321
#12064
#11196
#11130
- Add new library column that shows the last time a track was played
#3140
#3457
#3494
#3596
#3740
- Add keyboard shortcut Ctrl+Enter to open track properties #4347
- Home/End keys jump to first/last row #4850
- Wrap selection around at the bottom/top, only if Shift is not pressed
#11090
#11100
#12391
- Allow to hide/remove tracks from the library by pressing the Delete key
#4330
#7176
#9793
#9837
#10537
#11239
#4577
#10577
#11171
#10761
- Fix Recording table refresh issues #4648
- Show time in addition to the date in the timestamp column
#4900
#10726
#11020
- Show only the date in Date Added / Last Played columns. Move the time of day to tooltips #3945
- Right-align BPM, duration & bitrate values #11634 #11668 #11657
- Remove parenthesis from play counter display #11357
- Refocus library, after editing skin controls #11767
- Fix performance with large playlists #11851 #11724
- Add multi-line editor delegate for comment column #11752
- Keep current item visible when the view shrinks vertically #11273
- macOS scrollbar: Make sure last track is shown in library #11669 #9495
- Add action to select loaded track in library #4740
- Add menu for Analyze and Reanalyze
#4806
#11873
#11872
- Add support for overriding analysis settings about variable/constant BPM on a per-track basis #10931
- Add menu for looking up track metadata at Discogs, SoundCloud and LastFM #4772 #4836
- Add "Delete Track Files" action, does "Move to Trash" with Qt >= 5.15
#4560
#4831
#10763
#11580
#11577
#11583
#3212
#11842
- Allow to clear the comment field
#4722
#10615
- Allow to reset loops and also via "[ChannelN], loop_remove" control object
#4802
#10748
#12392
#12521
- Add 'Update ReplayGain' decks' to track menus #4031 #4719
- Restore "Remove from playlist" in History #11591 #10974
- Enable Lock BPM action if any selected track BPM is unlocked #12385
- Order BPM action by factor, show peview (for single track) #12701 #10128
- Provide the same features in all deck track menus #12214
- Track table header: Keep menu open after toggling a checkbox #12218
Music Library: Sidebar & Searchbar
- Add F2 and Del/Backspace shortcuts for renaming & deleting playlists and crates
#11172
#11235
#4697
#4700
#10294
- Improve presentation of the History library tree
#2996
#4298
#10533
- History: Fix sidebar context menu actions
#4384
#4297
#10529
- History: Add cleanup options
#4726
#9259
#10714
- History: Fix update of play count after removing tracks
#12258
#12046
#12256
- Improve UX with right-click and selection after add, rename, delete, duplicate etc.
#11208
#4193
#10488
#11574
#11208
#11712
- Map Left Arrow Key to jump to parent node and activates it
#4253
- Crates: only store or activate sibling crate if it's valid
#11770
#11769
- Add recent searches to a drop down menu of the search box
#3171
#3262
#4505
- Save search queries across restarts
#4458
#10517
#10561
#4571
- Enable search in Browse & Recording views #11014 #11012 #4382
- Update Clear button when search is disabled #4447
- Fix reset to default of search timeout in preferences #4504 #10589
- Ctrl+F in focused search box selects the entire search string #4515
- Improve keypress handling, fix glitch in popup, strip whitespaces #4658
- Enter jumps to track table if search query was transmitted #4844
Push completion entry to top, to make up/down behave naturally
- Remove ESC shortcut in favour of new
[Library],focused_widget #4571
#11030
#10975
- Restore previous search term when switching between playlists and crates
#11129
#11015
#11477
#11476
- Add options to disable auto-completion and history #10942 #10634
- Require Enter or Right key to search for auto completed strings
#11207
#11289
#11287
- Allow to use := and quotes to find exact matches #12063 #10699
Music Library: Backend & Database
- Add new "[AutoDJ],addrandomtrack" to make this feature accessible from controllers #3076
- Don't store or update metadata of missing tracks in the Mixxx database to prevent inconsistencies with file tags #3811
- Update library schema to 37 for synchronizing file modified time with track source on metadata import/export
#3978
#4012
- Track Metadata: Fix synchronization (import/export) of file tags
#4628
#4631
#4847 #10782
- Track Metadata: Do not overwrite unchanged multi-valued fields #12613 #12587
- Optionally reset metadata on reimport if file tags are missing, enabled by "[Library] ResetMissingTagMetadataOnImport 1"). #4873
- Logging: Suppress expected and harmless schema migration errors #4248
- Fix handling of undefined BPM values
#4062
#4063
#4100
#4154
#4165
#4168
- Automatic analyze and optimize database #4199
- Re-import and update metadata after files have been modified when loading tracks #4218
- Re-enable shortcuts after editing controls
#4360
#10184
#10523
- Allow to remove a track form the disk #3212 #4639
- Fix accasional resetting of played counter in database #4578 #10617
- Experimental: Fix writing of undefined MusicBrainz Recording ID #4694
- Traktor library: fix importing track key #4701
- Fix exporting m3u files with tracks and special characters by using the URL format #4752
- Library Scanner: Sort files before adding them #10919
- Library Scanner: Fix track relocation query #12462
- MenuBar: Add shortcut for rescanning library #11136
- Playlists: simplify import function, add whitespace before the # suffix #12246
- Destroy PlayerInfo after EngineRecord is stopped to fix a debug assertion #12341 #12242
- iTunes: Modularize importer and use
iTunesLibrary on macOS for compatibility with Music.app
#11353
#11256
#11446
#11444
#11503
#11500
#11509
- iTunes: Fix sporadic crash during unit tests due to a not initialized reference. #11666
- iTunes: Permit duplicate playlist names by identifying playlists by id (rather than name) #11794
- iTunes: Re-enable test and add
composer, playCount, lastPlayedAt and dateAdded to model #11948
- Fix setting the wrong default cue color #11554 #11260
- Ensure that tracks with an invalid BPM are re-analyzed #2776
- Add support for exporting crates, playlists and the library to Engine Prime and Denon standalone controllers
#2753
#2932
#3102
#3155
#3621
#3776
#3787
#3797
#3798
#4025
#4087
#4102
#4143
#4463
#11815
#12309
#12005
#11816
#11720
#11834
#12452
#11979
- Rekordbox: Save all loops and correct AAC timing offset for CoreAudio #2779
- Rekordbox: Fix missing playlists due to invalid child ID #10955
- Rekordbox: Fix unhandled exception when parsing corrupt PDB files
#10452
#4040
- Improve log messages during schema migration #2979
- Search related tracks in collection
#3181
#3213
#2796
#4207
Sync
Audio Codecs
- Add support for m4v files #4088
- Fix recovering from FAAD2 decoding issues #2850
- MP3: Log recoverable errors as info instead of warning #4365
- MP3: Garbage detection fix #12464
- MP3: Improve decoding precision on Windows #11911 #11888
- AAC encoder: Fix a memory leak #4386 #4408
- Improve robustness of file type detection by considering the actual MIME type of the content. #7970 #4356 #4357
- Fix file type detection when file has wrong file extension by determining the MIME type from content
#4602
#4600
#4615
#7970
#10624
#4683
#10669
- Fix type detection of AIFF files #4364
- Fix synchronization time stamps of ModPlug files #4826 #10758
- ID3v2 parsing: Improve log warnings #4610
- ID3v2 parsing: Fix inconsistent import of comment field #11249
- Enable Modpug and Wavpack Support on macOS #11182 #11119
- Fix missing file name in file metadata error message #11965 #11964
- Verify the "first sound" of as an analysis sanity check
#4773
#11887
#11946
#11940
- Fix zeros in the first m4a chunk on Linux #11879
- Fix overlapping buffers when decoding m4a files using ffmpeg #11760 #11545
- Fix possible crash with opus files with embedded cover arts and require TagLib 1.11 or newer
#4251
#4252 #10500
Audio Engine
- Add support for Saved loops
#2194
#3267
#3202
#4265
#7574
#11006
#11003
#12637
#12632
#12623
#12618
- Fix an issue when pressing multiple cue buttons at the same time #3382
- Fix synchronization of main cue point/position
#4137
#10478
#4153
- Adjust ReplayGain: Allow user to update the replaygain value based on a deck pregain value #4031
- Add halve/double controls for beatjump size #4269
- Implement Un-eject by pressing eject again
#4668
#11246
- Implement Un-replace by double-clicking eject
#11246
- Allow to cancel active loops via beatloop_activate #4328 #9950
- Slip Mode: Preserve active (regular) loop when leaving Slip Mode #11435 #6993
- Fix possible segfault when ejecting track #4362 #10497
- Fix possible crash when ejecting track from a controller #11884 #11819
- Fix an assertion when loop is before track start #4383 #10556
- Fix and improve snapping to beats in various situations #4366 #10541
- Don't wipe inapplicable sound config immediately #4544
- Rubberband: Support Version 3 "finer" (near-hi-fi quality) setting, on Windows and MacOs and when available on Linux
#4853
#4855
#11047
- Rubberband: Add missing padding, preventing it from eating the initial transient #11120
- Rubberband: Improve mono-compatibility for R3 "finer" #11418
- Fix a possible crash when ejecting a track #11334 #11257
- Add a range limits for beatjump_size of 512 #11248 #11203
- Auto DJ: Fix sharp cut transition after cueing a track without a defined intro #11629 #11621
- Auto DJ: Don't use removed Intro end and outro start makers, use transition time instead #11830
- Auto DJ: Fix GUI freeze when updating duration for many selected tracks
#12530
#12520
#12537
- KeyControl: fix keylock/unlock bugs, reset pitch_adjust 4710
- Looping: fix asserts for loop move #11735
- Looping: reset loopendpos on eject #12224 #12223
- Fix Loop_out not seeking back #12739 #12742
- ReadAheadManager: fix loop wraparound reader condition #11717
- Slip mode: consider loop for background position only if it was enabled before slip #11848 #11844
- Make decks' xfader assignment persistent #12074 #10122
- Fix gain issue with cloned tracks #12435 #10550
Controller Mappings
- new: Hercules DJControl MIX controller mapping #11279
- new: Pioneer DDJ-FLX4 controller mapping based on DDJ-400 #11245
- new: Traktor Kontrol S4 Mk3 controller mapping #11284
- new: Traktor Kontrol Z1 HID controller mapping #12366 #12426
- new: Yaeltex MiniMixxx controller mapping #4350
- Behringer DDM4000 mixer: Update controller mapping #4262 #4799
- Hercules DJ Console RMX: Replace not defined CO name pitchreset by pitchset_default #12441
- Korg nanoKONTROL2: Don't try to configure more than 4 main decks #12322 #12317
- Korg nanoKONTROL2: Removed along with Mixco scripts #2682
- MAudio Xponent: Removed along with Mixco scripts #2682
- MIDI4lights: Give beginTimer callbacks the anonymous function expression form #12048
- Novation Twitch: Removed along with Mixco scripts #2682
- Novation Launchpad: Update controller scripts #2600 #11914
- Numark DJ2GO2 Touch: Fix sampler, hotcue, beatloop buttons #4287 #11595
- Numark MixTrack Pro 3: Fix beginTimer callback syntax #12401 #12369
- Roland DJ-505: Make blinking lights blink in sync and other improvements #4159 #4517
- Traktor Kontrol S2 MK1: Add calibration and refactor #11237
- Traktor Kontrol S2 MK2 fix loaded chain preset CO #11823 #10667
- Traktor Kontrol S2 MK3: Use FX select buttons to set quick effect presets
#11702
- Traktor Kontrol S3: script improvements, vanilla-like FX behavior, control initialization, better scratching, and more
#11199
#10645
#12409
#12510
- Various mappings: Fix
waveform_zoom ranges #12393
- Various mappings: Ensure required samplers are created #12769
Controller Backend
- Never raise a fatal error if a controller mapping tries access a non-existent control object #2947
- Add support to access HID FeatureReports
#11326
#10828
#11664
- Add function to request HID InputReports, to determine controller state at startup #3317
- Exclude HID device: ELAN touch screen #11324 #11323
- Show otherwise hidden HID devices in developer mode #11317
- Use hidapi's hidraw backend instead of libusb on Linux #4054
- Fix broken HID controller mappings Traktor Kontrol S2 MK3 and others #11470 #11461
- HID mappings: Modernize and document common-hid-packet-parser.js #4718 #4894
- HID mappings: Small fixes for common-hid-packet-parser.js #11925
- HID mappings: Add [Main] to the list of valid groups #12102 #12406
- Consistently use "mapping" instead of "preset" to refer to controller mappings #3472
- Introduce new control object
[Library],show_track_menu to open/close the track menu #4465
- Introduce new control object
[Library],sort_focused_column #4749 #4763 #10719
- Introduce new control objects
[Master],indicator_250millis and [Master],indicator_500millis #4157
- Introduce new control object
[Library],clear_search #4331
- Introduce new control object
[Library],focused_widget to focus library directly #4369 #4490
- Introduce new control object
LoadTrackFromDeck and LoadTrackFromSampler #11244
- Don't automatically enable controller if it was disabled before #4244 #10503
- Enable Qt logging categories for controller logging #4523
- Fix segfault during Mixxx shutdown due to a stale controller connection #4476 #10553
- Components JS: Fix syncbutton #4329
- Components JS: Add script.posMod for euclidean modulo #11415
- Components JS: make JogWheelBasic correctly switch which deck it controls #11913 #11867
- Add Trace for the mapping connections, to allow JS profiling #4766
- Controller preferences: Allow creating a new mapping with 'No Mapping' selected
#4905
#10540
#10539
- Add TypeScript declarations for engine and controller scripting API to improve IDE code completion during mapping developent #4759
- Retire Mixco Scripts #2682
- Relax strictness of
ControllerScriptInterfaceLegacy methods. #11474 #11473
- Do not show ControlObject aliases in developer tools window #12265
- Do not use deprecated COs in C++ code/Keyboard Mapping/Skins #11990
- Fix creation of Sampler
end_of_track ControlObjects #12305 #12304
- Add a test SoftTakeoverTest.CatchOutOfBounds #12114 #12011
- Make WHotcueButton learnable with the MIDI Wizard #12252
- Control picker menu: add
waveform_zoom_set_default #12247
- CO Renaming
#12022
#12021
#11998
#11996
#11980
#12007
- Remove deprecated ControlObjects from Skins #12030
- Log warning if deprecated control is used #11972
- ControlObject alias improvements #11973
- Keyboard mapping: Repeat certain control actions if key is held #12474
- Keyboard mapping: Return triggers double-click, move Preview functions to P / Shift+P #12639
- Keyboard mapping: Various fixes #12730
- Update keyboard sheet #12578
- Logging: Add support for
QT_MESSAGE_PATTERN environment variable
#3204
#3518
- Avoid issue with
stars_up/_down ControlObjects #12591
- hotcueXcolor control: Fix color not stored in cue #12733
Skins
- Add harmonic keywheel window
#1695
#3622
#3624
- Allow skin scaling from preferences
#3960
#11588
#11586
- Fix icon rendering on HiDPI/Retina screens #12407 #12361
- Increase pixmapCache size limit and made it dependent on devicePixelRatio (for HiDPI/Retina displays) #12416
- Make beat indicator control behaviour more natural #3608
- Fix crash if no skin is available
#3918
#3939
- Fix crash when starting without a valid skin directory #4575 #10461
- Fix leaked controls #4213 #10293
- Fix switching from Shade to other skins #4421 #10558
- Use double click to reset knobs and sliders #4509 #9947
- Use info not warning for skin COs #4525
- Spinny: Allow to toggle cover art at runtime #4565 #10015
- Passthrough: improve UI / UX #4794
- Knob: Hide cursor on wheel event for .8s #11077
- Move skin control hack to c++ (spinny/cover controls, mic/ducking controls) #11183
- LateNight: Move logo to the right #4677
- LateNight: Use correct tooltip for key control toggle #4696
- LateNight: Add toggles to show loop and beatjump controls #4713
- LateNight: Remove blinking play indicator from mini samplers #4807
- LateNight: Add buffer underflow indicator #4906 #10978
- LateNight: Fix xfader icons in samplers and aux units #12477
- LateNight: use default RGB waveform colors #12712
- Add LateNight (64 Samplers) #11715
- Deere: fix skin/library layout (library missing in default view with Qt6) #11912
- Deere: use decks' waveform colors for sliders (Vol + pitch) #12129 #10240
- Shade: Remove initial setting of now accessible effect controls #4398 #10557
- Shade: Audio Latency meter fix #11601
- Tango: allow to toggle crossfader independently from mixer #12703 #12654
- Fix outdated tooltips
#11387
#11384
#11860
- Add settings directory link to Help menu #11670 #11667
- Fix sidebar item styling
#11975
#11957
- Fix 500ms blocking of the whole event loop, when holding mouse down on title bar on Windows #12359 #12358 #12433 #12458
- Change SKIN_WARNING to show the skin file and line first, then c++ context #12253
- Fix style of selected QComboBox items on Windows #12339 #12323
- Fix reading the Spinny cover on Windows #12103 #11131
- Fix inconsistent/wrong musical keys in the UI #12051 #12044
- Add
skins: path alias #12463
- Remove
Text, use TrackProperty or Label #12004
- Beat spinBox/AutoDJ spinbox: Enter & Esc also move focus to library #4617 #4845
- Add effect chain menu button to Deere, polish in Tango #12735
- Skins: reload default.qss when (re)loading a skin #12219
Waveforms and GL Widgets
- Waveform overhaul based on QOpenGlWindow and introduce full GLSL shader based waveforms, vumeters and spinnies. This fixes a couple of performance issues mainly on macOS.
#10989
#10416
#11460
#11556
#11450
#10416
#11734
#12466
#12678
#12731
- Default to 60 Hz waveform refresh rate #11918
- Introduce a VSsync mode driven by a phase locked loop #12469
- Make VSync mode 0 refer to the default mode and make STPLL the default on macOS, STTIMER otherwise #12489
- Use WaveformWidgetType::AllShaderRGBWaveform as autoChooseWidgetType #11822
- Add new "RGB Stacked" waveform #3153
- Fix micro jitter from clamping position offset to vsync interval #12470
- Avoid flickering when resizing #12487
- Invert scroll wheel waveform zoom direction to mach other applications #4195
- Waveform scrolling: Use set interval setting to fix performance degradation for AMD graphics adapters #11681 #11617
- Fix waveform zooming #11650 #11626
- Fix OpenGL version detection #11673
- Fix crash when no GL context is available #11963 #11929
- Fix stopped waveform rendering in case of vinyl control #11977 #10764
- Fix visual play position related to looping
#11840
#11836
#12538
#12506
#12513
- Fix for visual position while scratching outside of an activated loop #12281 #12274
- Spinny: Fix drawing of non-square cover arts #11971 #11967
- Spinny/VU-Meter: Fix drawing #12010 #11930
- VU-Meter: Don't use OpenGL by default #11722
- Improve GLSL pre-roll triangles #12100 #12015
- Make scaling of GLSL RGB and RGB L/R waveform amplitudes consistent with simple waveform #12205 #12356
- Improve rendering of waveform marks #12203 #12237
- avoid overlapping marks #12273
- gradually "compact" the markers if the waveform height is reduced #12501
- Fix clamping of the index for drawing the waveform left of zero position #12411
- Fix possible crash when closing Mixxx #12314 #11737
- Fix EGL support
#11982
#11641
#11935
#11985
#11982
#11995
#11994
#12607
- Preferences: recall correct waveform type when selecting an overview type
#12231
#12226
Cover Art
Effects
Target Support
Track properties
Preferences
- Always show tooltips #4198 #9716
- Add option to keep deck playing on track load #10944 #10548
- Always enable Alt shortcut keys #11145 #10413
- Sound Hardware: auto select free device channels #11859 #10163
- Various layout and UX fixes
#12429
#12399
#11663
#11926
#12057
- macOS: set preferences dialog title to the selected page title #11696
- macOS: fix the preferences menu and opening the settings directory #11679
- macOS: fix slider styling in preferences dialog #11647
- Vinyl control: Improve quality indicator #3279
- Mixer: apply & save settings only in slotApply(), fix bugs, improve UX #11527
- Mixer: fix reset of EQ auto-reset checkbox #11818 #11817
- Interface: avoid unneeded skin reload, clean up #11853
- Library: Add link to settings files info in the manual #4367
- Controllers: add search bars to mapping tables #11165
- Add 13 new translation languages #4785 #9702
- Join Franch translations to "fr" and remove all untranslated English strings. #12699
- Apply changes from all pages when pressing Apply (like when pressing Okay) #12194
Known issues
- Volume / Loudness spikes on Windows with M4A/AAC files.
Last known working version is Windows 10 build 17763.
Affected versions are Windows 10 build 19041 and Windows 11 build 22000.
#12289
#11094
- macOS: Library entries are now sorted using the language depending Unicode Collation Algorithm (UCA).
#12517
- macOS: Visual glitches with the main EQ sliders
#12517
- Linux: possible crash when enabling a MIDI controller #12001
Introduce with Qt 5.15.5, fixed in Qt 5.15.17 and Qt 6.6.3
- Extra Samplers are created during startup, when found in a saved Sampler Bank #12657 #12809
Older Changelog
Find older changelog entries in the 2.5.0 Changelog.