16.8. Changelog

2.5.2 (unreleased)

Library

  • Fix playlist export when name contains a dot #14737

Controller Mappings

  • Hercules DJControl Inpulse 500: the crossfader was not reaching 100% to the right end #14722

  • Traktor S2 Mk3: Fixed LED issue #14717

Controller Backend

  • Control picker: Allow to learn MIDI Aux/Mic enable controls #14720 #14718

Target support

  • Fix building with a CMake multi-config setup #14614

  • Fix building with gcc >= 14 with LTO and clang >= 19 (fpclassify) #14749 #14749

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

  • Effect Meta Knob: draws arc from default meta position #12638 #12634

  • 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

  • Add Compressor effect #12523

  • add Glitch effect #11329

  • Add backend for Audio Unit (AU) plugins on macOS #12112 #13938

  • Effect Meta knob: Draw arc from default meta position #12638 #12634

  • Show newly added effects, read/write HiddenEffects #13326 #11343

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

  • Drop lodash dependency in ComponentJS #12779

  • 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

  • Allow to drop files with supported MIME type regardless off the file extensions #13209 #13204

  • 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: 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 here.

Veja também

For an overview of previous versions, take a look at the timeline.