Skip to content

Latest commit

 

History

History
2645 lines (2476 loc) · 179 KB

File metadata and controls

2645 lines (2476 loc) · 179 KB

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 "beats_translate_half" 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 GL_BGRA if QT_OPENGL_ES_2 #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 m_bWakeScheduler, protect m_bQuit 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 MIXXX_VCPKG_ROOT instead of CMake setting MIXXX_VCPKG_ROOT #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 VCPKG_DEFAULT_HOST_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

2.5.5 (skipped)

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 CMAKE_OSX_DEPLOYMENT_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 "scratch_position_enable" 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 BUILD_TESTING and BUILD_BENCH #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 hid_write()/hid_read() 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],add_random_track" 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 loop_end_pos 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 pitch_reset by pitch_set_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
  • hotcue_X_color 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 ST_PLL the default on macOS, ST_TIMER 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.