- 音视频
- 桌面应用
【免费下载链接】mixxx
Mixxx is Free DJ software that gives you everything you need to perform live mixes.
本文以 Mixxx 官方 CHANGELOG.md 为主线,系统梳理开源 DJ 软件 Mixxx 自 2.4.0(2024-02-16)至 2.7.0(Unreleased)各版本的核心变更:包括 Qt6 现代化迁移、2.6 新增的 STEM 分轨文件支持、QML 皮肤与 WebAssembly 实验、音频引擎与效果器重构、音乐库搜索与数据库演进,以及多平台构建支持的调整。读完本文,你可以完整掌握 Mixxx 近期版本的演进脉络,了解各版本关键特性对应的源码实现位置与构建选项,为升级、二次开发或贡献代码提供参考。
版本时间线与里程碑概览
Mixxx 的 CHANGELOG 按版本倒序组织,每个版本对应一个 GitHub milestone。当前分支记录范围如下:
| 版本 | 状态 | 时间 | 主题 |
|---|---|---|---|
| 2.7.0 | Unreleased | — | 下一个里程碑,条目尚未填充 |
| 2.6.0 | Unreleased | — | STEM 文件支持、Rendergraph、搜索过滤器扩展 |
| 2.5.7 | unreleased | — | 2.5 系列维护分支的未发布补丁 |
| 2.5.6 | 已发布 | 2026-03-25 | 2.5 系列稳定维护版 |
| 2.5.5 | 已跳过 | — | 因发布流程(release workflow)出现问题而跳过 |
| 2.5.4 | 已发布 | 2025-12-14 | 控制器映射、播放列表、库扫描修复 |
| 2.5.3 | 已发布 | 2025-09-02 | 量化默认开启、Vinyl Control 改进 |
| 2.5.2 | 已发布 | 2025-06-13 | 控制器映射新增、库修复 |
| 2.5.1 | 已发布 | 2025-04-27 | MIDI 学习、库搜索完善 |
| 2.5.0 | 已发布 | 2024-12-24 | Qt6 现代化平台、Audio Unit 效果器、QML 实验 |
| 2.4.2 | 已发布 | 2024-11-26 | 控制器映射与杂项修复 |
| 2.4.1 | 已发布 | 2024-05-08 | 控制器映射、库与皮肤修复 |
| 2.4.0 | 已发布 | 2024-02-16 | 音乐库大改、同步、波形 GLSL 化、效果器重构 |
更早版本的变更记录已不在当前分支维护,原文末尾以 "Older Changelog" 形式指向 2.5.0 分支的历史文件。
2.5.0:Qt6 现代化平台迁移
2.5.0 是整个 2.5 系列的地基,其最重大的决策是从 Qt5 全面迁移到 Qt6。
核心迁移决策
- Mixxx 现在使用 Qt6,以获得更好的性能与现代系统兼容性(相关 PR 为 #11863、#11892);
- 构建系统默认 Qt6,且官方明确"Qt5 构建支持将在 Mixxx 2.6 中移除";
- 平台最低要求同步提升:放弃早于 macOS 11 的支持、放弃早于 Windows 10 build 1809 的支持、放弃早于 Ubuntu 22.04 的支持;
- 要求 C++20 编译器,并支持 GCC 14(参见 CMakeLists.txt 中
option(QT6 "Build with Qt6" ON)默认开启项); - 迁移伴随大量皮肤(skin)与库(library)适配工作,例如禁用 macOS 触摸事件以修复 Qt6 下的触控板问题。
命令行参数体系的扩展
Qt6 迁移同期,Mixxx 扩展了命令行参数。这些参数均在 src/util/cmdlineargs.cpp 中通过QCommandLineOption定义,几个与版本变更直接相关的如下:
--start-autodj:启动 Mixxx 后立即开始 Auto DJ(无需手动点击),源码注释为 "Starts Auto DJ when Mixxx is launched.";--rescan-library:启动时强制重扫音乐库(2.6 新增,见下文);--log-max-file-size <bytes>:设置mixxx.log最大字节数,默认 100 MB(即 100000000),传-1表示不限大小(见 src/util/logging.cpp 与 cmdlineargs 中的参数解析与错误提示);--qml:加载"高度不稳定"的 3.0 风格 QML 界面(实验特性),需要配合--allow-dangerous-data-corruption-risk才能在现有用户配置上运行,官方强烈建议备份数据;--safe-mode:禁用 OpenGL 波形与 spinny(转盘)控件,用于启动崩溃时的排障。
2.5.0 同期还实现了日志改进:日志消息默认包含时间戳,mixxx.log大小限制在 100 MB 以内。
音频引擎与 DJ 核心功能(2.5.0)
- Beats(节拍):允许撤销最后一次 BPM/beats 修改(#12954 等);新增
beats_translate_moveControlEncoder 用于整体平移节拍网格;Looping/Beatjump 在无节拍网格时改用秒为单位(#12961); - Loop 锚点(beatloop anchor):可从循环起点或终点双向设置与调整循环(#12745);
- Rate Tap 按钮:手动点按测速(#12104);rolling loop 与常规循环的保存/恢复联动;
- Tempo 锁定与调色板循环:新增 Tempo locking 控件(
[ChannelN],tempo_lock系列);新增track_color_next/track_color_prev控件,用于库、Deck、Sampler 间循环切换曲目颜色; - Beatjump 尺寸上限:为
beatjump_size增加 512 的范围限制(#11248); - Sync:支持为 sync lock 设置显式 leader(#2768 等);修复动态曲目 + sync + clone 时的音高问题;修复 sync 下半/倍 BPM 计算(#3899);禁用 sync 时不执行相位 seek(#4169);scratch 后重新同步到 leader(#4005);
- Slip 模式:离开 slip 时保留激活的常规循环(#11435);
- Rubberband:支持版本 3 "finer"(近 Hi-Fi 质量)变调设置;修复缺失 padding 导致吞掉起始瞬态的问题;R3 "finer" 的单声道兼容性改进。
2.6.0:STEM 分轨文件支持(核心新特性)
2.6.0 最引人注目的新能力是STEM 文件支持。STEM(Stems)格式将一首歌拆分为鼓、贝斯、人声、旋律等独立音轨流,允许 DJ 实时分别控制各分轨的静音与音量。
STEM 功能的完整链路(对应源码位置)
从 CHANGELOG 与仓库源码可以还原 STEM 支持的完整调用链:
- 文件解析与库表:将 STEM 文件加入 taglib 查找表(#13612),修复含特殊字符路径下 STEM 文件的问题(#13784);
- 分析(Analyser):新增 stem 分析支持(#13106);
- 引擎:在 engine 中加入 STEM 流支持(#13070、#14244),位于 src/engine/channels/enginedeck.cpp 及 enginebuffer 等文件;允许 pre-mastered 流不必匹配 stem 流属性(#15246);
- 控制(Control Objects):新增高级 STEM 加载控制对象(#13268),以及
stem_group,mute等按键控件(#13751);修复克隆 Deck 时克隆 stem 状态(#15501)、重置 stem 颜色(#15494)、修正副 Deck 上的 stem 数量断言(#15655); - Quick FX:支持在 stem 分轨上使用 Quick Effect(#13123),并修复加载曲目时重置 STEM Quick FX(#15743);
effects.xml中 STEM QuickEffect 链节点命名与 Deck QuickEffect 保持一致(#15530); - 波形:QML 波形渲染排除 stem 采样(#13655),stem 波形渲染器采用通用方式获取 group(#14291);
- 皮肤:LateNight、Tango、Deere 三大皮肤均加入 STEM 控件(#15492 等);QML 波形与 stem 相关的多处修复;
- 控制器映射:Midi Fighter Spectra/Twister、Numark Mixtrack Platinum、Pioneer DDJ-FLX4 等映射新增 stems 层或支持(#14932、#14931、#15768、#15528);
- 多线程 Rubberband:为 STEM 的实时分轨处理配套,Rubberband 变调引擎改为多线程(#13143、#13649)。
STEM 构建选项
STEM 支持依赖 FFmpeg,CMake 中通过default_option(STEM "STEM file support" "FFmpeg_FOUND;FFMPEG")定义(见 CMakeLists.txt),即在找到 FFmpeg 时默认启用,可显式-DSTEM=OFF关闭。CHANGELOG 特别记录了关闭 STEM 构建时的修复(#13948、#14551),说明该功能已被设计为可裁剪模块。
波形渲染:Rendergraph 与 GLSL Shader 化
波形是 Mixxx 技术演进最活跃的领域之一,经历了两轮大改造:
2.4.0:基于 QOpenGlWindow 的波形重构
2.4.0 将波形、VU 表与 spinny 全面改造为基于 GLSL shader 的渲染,修复了主要在 macOS 上的一系列性能问题(#10989 等):
- 默认 60 Hz 波形刷新率(#11918);引入由锁相环驱动的 VSync 模式,macOS 默认 ST_PLL,其他平台默认 ST_TIMER(#12469、#12489);
- 新增 "RGB Stacked" 波形类型(#3153),
AllShaderRGBWaveform成为 auto 模式默认类型(#11822); - 修复 AMD 显卡下因 set interval 设置导致的性能退化(#11681)、OpenGL 版本检测、EGL 支持(#11982 等)、无 GL 上下文时的崩溃(#11963)。
2.6.0:Rendergraph 渲染框架
2.6.0 引入Rendergraph 渲染库并用于波形渲染(#14007 等,仓库见 src/rendergraph),同时:
- 简化波形偏好设置中的组合框(#13220 等);
- 水平波形 Overview 增加分钟标记(#13401);
- Textured/"High details" 波形新增 slip 波形显示(#14039);
- OpenGL ES 下禁用 textured 波形(#13381);
- Overview 支持按 ReplayGain 缩放(#14309);
- 修复高细节波形在视觉索引 65K 后环绕的问题(#13491)。
效果器系统演进
2.4.0:效果器链重构与四个新效果
2.4.0 对效果系统做了大重构(#4467 等):效果链的保存/加载、参数隐藏/重排、效果偏好设置全面翻新,并新增:
- Noise 效果(#2921);
- Pitch Shift 效果(#4775);
- Distortion 效果(#10932);
- 效果参数旋钮短暂显示参数值(#11032)、参数单位显示(#11041)、
ValueScaler::Integral整数吸附(#11061)。
2.5.0:Compressor、Glitch 与 Audio Unit
- 新增Compressor 压缩器(#12523,其 Makeup Time 常量计算在 2.6 中继续修正,见 #13261);
- 新增Glitch 效果(#11329);
- 新增macOS Audio Unit (AU) 插件后端(#12112 等),此后 macOS 上可加载第三方 AU 效果器;2.5.7 修复了同时发现 Effect 与 MusicEffect 两种 AU 的问题(#16287);
- Effect Meta 旋钮从默认 meta 位置绘制弧线(#12638);
- 新增效果在偏好设置中可见,支持读写 HiddenEffects(#13326)。
2.6.0:稳定性与音质修复
2.6.0 效果器条目以修复为主:QuickEffect 切换时的爆音(crackling noise)修复(#15796);WhiteNoise 的 leveling 与 ramp 逻辑增强(#15979、#15949);效果器音量量化在 engine 采样率 ≠ 曲目采样率时的问题(2.5.4,见 #15538);Echo 失真与 send/feedback 参数 ramp 修复(2.5.6,见 #15985、#16006)。
音乐库:搜索、数据库与曲目管理
2.4.0:库大版本
2.4.0 的音乐库是重点更新对象:
- 曲目表:记住库功能切换时的选中状态;新增"最后播放时间"列;
Ctrl+Enter打开曲目属性;Delete 键隐藏/移除曲目;Home/End 跳转首末行;BPM/时长/位率右对齐;多行注释编辑器;删除曲目文件("Move to Trash"); - 侧边栏与搜索:F2/Del 重命名与删除播放列表/箱(crate);搜索历史跨重启保存;支持
:=与引号做精确匹配(#12063);History 树改进与清理选项; - 数据库后端:库 schema 升级到37(同步文件修改时间与曲目来源,见 #3978);自动分析与优化数据库(#4199);可选在重导入时重置缺失标签元数据(
[Library] ResetMissingTagMetadataOnImport 1);不存储缺失曲目的元数据以防与文件标签不一致(#3811); - 外部库:支持将 crates/playlists/库导出到Engine Prime 与 Denon 独立控制器(#2753 等);Rekordbox 循环保存与 AAC 时间偏移修正(#2779);iTunes 导入器模块化,macOS 上用
iTunesLibrary兼容 Music.app(#11353); - 同步:显式 leader、scratch 后重同步等(见前文)。
2.5.0:批量编辑与播放列表管理
- 新增多曲目属性编辑器(批量标签编辑器)(#12548 等);属性编辑器聚焦到当前列的对应字段(#13841);
- 曲目菜单支持按不同比率缩放 BPM(#12934)、星级评分(#12700);
- 外部播放列表可作为 crates 导入(#11852);侧边栏 "Shuffle playlist" 动作(#12498);曲目菜单 "Remove from disk" 停止并弹出所有相关 Deck(#13214);
- 播放列表移动曲目:Alt + Up/Down/PageUp/PageDown/Home/End(#13092);
- 搜索新增特殊 BPM 过滤器、
OR运算符、type过滤器、id过滤器(#12072、#12061、#13338、#13694)。
2.6.0:搜索过滤器与扫描增强
--rescan-library命令行选项:启动时重扫库(#13661,实现见 src/util/cmdlineargs.cpp);- 搜索新增:
directory过滤器(#15701)、bpm:locked(#14590)、bpm:const(#14642)、过滤器快捷键(t|title、a|artist、cm|comment、y|year,见 #15115)、not运算符修复(#15923); - Key 列颜色编码与Key Color Palettes(#13390、#13497);Overview 小波形列(#14140);iTunes iOS 导入器(#12690);
- 库扫描:记录摘要并显示可退出的弹窗(#13427);扫描对话框进度条(#15517);拖拽目录导入(#15688);
- 播放列表:'Unlock all' 与 'Delete all unlocked' 菜单动作(#14091);更新到 libdjinterop 0.27.0(#15958)。
控制器生态:后端与映射
Mixxx 的控制器支持同时覆盖 MIDI、HID、BULK 三类协议与大量硬件映射,近几个版本的动作包括:
- 脚本 API 现代化:为 engine 与 controller 脚本 API 增加TypeScript 声明文件(#4759,仓库见 res/controllers 下的
engine-api.d.ts、midi-controller-api.d.ts、script-api.d.ts等),提升映射开发的 IDE 补全体验;弃用lodash.mixxx.js与script.deepMerge(#13460);引擎脚本新增isBrakeActive()、isSpinbackActive()、isSoftStartActive()便捷函数(#14925); - HID 能力扩展:支持访问 HID FeatureReports(#11326);新增请求 HID InputReports 以在启动时确定控制器状态(#3317);Linux 上使用 hidapi 的 hidraw 后端替代 libusb(#4054);HID 打开失败时给出明确错误信息(#14184);
- 控制对象(CO)新增:
beats_translate_half(移动半个拍子,#14279)、[Library],show_track_menu、[Library],sort_focused_column、[Library],clear_search、[Library],focused_widget、LoadTrackFromDeck/LoadTrackFromSampler、[Master],indicator_250millis/indicator_500millis(#4157)等; - MIDI 学习(Learning):多处修复与增强,如控制框搜索、学习后不重载映射、最大学习时间后可继续(#14429);
- 控制器屏幕渲染(ControllerRenderingEngine):支持带屏幕的控制器(如 Traktor S4 MK3 屏幕,资源见 res/controllers/TraktorKontrolS4MK3Screens),并新增 OpenGL ES 渲染路径(#15566);修复与显示控制器映射的死锁(#15524);
- 新增/更新映射:Hercules DJControl Inpulse 500、Numark NS4FX、M-Vave SMC-Mixer/SMK-25 II、Arturia KeyLab Mk1、Icon iControls、Reloop Digital Jockey 2 IE、Numark NS6II、Numark Mixstream Pro 等;Traktor S4 Mk3、DDJ-FLX4 的持续完善(Key Shift、stems 支持、tempo offset 等)。
皮肤与界面
- Hotcue 交互革命(2.6):支持拖拽热cue按钮交换位置(#13394)、按曲目位置排序热cue(#13808)、把热cue或主cue按钮拖到 Play 按钮上实现
play闩锁(#14179);按住 Ctrl 始终显示 tooltip(#14078); - 菜单栏:2.5.0 起单按 Alt 键切换菜单栏显示/隐藏(#11526);2.5.4 修复 Alt 显隐问题(#15352 等);
- Key Wheel(调性和弦轮):移至 View 菜单并成为浮动工具窗口(#14256);2.4.0 引入 harmonic keywheel 窗口(#1695);
- 皮肤缩放:允许从偏好设置缩放皮肤(#3960);HiDPI/Retina 图标渲染与 pixmapCache 上限随 devicePixelRatio 调整(#12407、#12416);
- 64 Samplers 版本:LateNight 与 Deere 推出 64 采样器版本,并修复其默认视图缺库的问题(#11715、#14101);
- QML 皮肤实验:可通过
--qml选项测试 3.0 风格的 QML 皮肤(#13152,仓库见 res/qml 与 res/skins/LateNightQML),相关构建开关与 QML 波形渲染框架持续迭代。
实验性平台:iOS 与 WebAssembly
2.4/2.5 时期 Mixxx 开始探索两个全新目标平台,CHANGELOG 明确标注为实验性:
- iOS:可构建运行于 iOS 的 Mixxx(#12672),配套引入 SoundManagerIOS、QQuickStyle "basic"、默认音乐目录为
~/Music(#13498)等大量适配; - Emscripten/WebAssembly:在浏览器中硬件无关地运行 Mixxx(#12918),包括禁用 BGRA 渲染、控制器渲染引擎针对 Wasm 的处理(#13502)等。
这两条实验线仍在持续打磨,属于"预览"性质,不建议用于真实演出场景。
构建系统与目标平台支持
CMake 选项(从源码确认)
QT6:默认ON(见 CMakeLists.txt),Qt5 构建支持将在 2.6 移除;STEM:依赖 FFmpeg,找到 FFmpeg 时默认开启(见 CMakeLists.txt);VINYLCONTROL:Vinyl Control 支持,非 Mac App Store 构建默认开启(见 CMakeLists.txt);BUILD_TESTING/BUILD_BENCH:允许在无 tests-tools 环境下构建(#14268、#14269);QGLES2:为 UNIX 增加 OpenGL ES 2 选项(#14489)。
各版本构建支持节奏
- 2.4.0:支持 macOS M1/M2(Apple silicon)ARM 构建(#11398);要求 C++20 但保留 Ubuntu Focal 支持;新增 NixOS 支持(#2820 等);Windows 打包改用 Azure 签名(#12465);macOS 签名迁移到
notarytool并启用 App Sandbox(#12123、#12138); - 2.5.0:Qt6 默认、GCC 14、macOS ≥ 11、Windows ≥ 10 build 1809、Ubuntu ≥ 22.04;构建环境脚本新增
rpm_buildenv.sh(Fedora,见 tools/rpm_buildenv.sh); - 2.5.x 维护期:Windows 构建环境更新至 Visual Studio 2022(#15006);支持 Ubuntu Plucky 等新版本、退役旧版本;支持 Qt 6.8/6.9/6.10(#14080、#15502、#14678);GCC 15 + LTO(#15238);
- 2.6.0:Windows 与 macOS 更新到Qt 6.8.3(要求 MSVC 2022,#14655);退役 Ubuntu Jammy 22.04(#14784);新增 Flatpak 打包文件(#15695,仓库见 packaging/flatpak);允许任意 taglib 版本(#14694);VCPKG 更新(#14815、#15783);
- 2.5.7 维护期:支持 Ubuntu Stonking 26.10 / Windows 11 25H2,退役 Ubuntu Questing 25.10;新增 Arch Linux 构建环境脚本(#16594)。
已知问题(2.4.0 记录)
2.4.0 的 CHANGELOG 专门列出了发布时的已知问题,理解这些限制对升级决策很重要:
- Windows 上 M4A/AAC 文件的音量/响度尖峰:最后已知正常版本为 Windows 10 build 17763,受影响版本为 Windows 10 build 19041 与 Windows 11 build 22000(#12289、#11094);
- macOS:库条目改用语言相关的 Unicode Collation Algorithm (UCA) 排序;主 EQ 推子存在视觉瑕疵(#12517、#12630);
- Linux:启用 MIDI 控制器时可能崩溃,由 Qt 5.15.5 引入,已在 Qt 5.15.17 与 Qt 6.6.3 修复(#12001);
- 额外采样器:启动时若发现已保存的 Sampler Bank,会创建多余的采样器(#12657)。
杂项重构与工程质量
近三个版本持续进行内部工程改进,值得开发者关注的包括:
- 内存与并发安全:引入
borrowable_ptr(线程安全回调方案,#1713);parented_ptr大量使用;ControlValueAtomic现代化与ControlDoublePrivate优化(#13574、#13581);多线程数据竞争修复(TSan 驱动的VSyncThread与 Control Indicator 修复,#13873、#13875); - 代码现代化:以
std::span重构缓冲逻辑(#13654);移除util/中一批旧类(#13687 等);Paintable::DrawMode改为 enum class(#13424); - CI 与工具链:GitHub Actions 工作流拆分为模块化 actions(#14964);引入 cmake-lint、qsscheck 等 pre-commit 钩子(#13932、#14320);为 release 分支同步加入自动化(#15111 等);
- 日志:移除冗余类名(#15496);支持
QT_MESSAGE_PATTERN环境变量(#3204);mixxx.log上限 100 MB。
总结:如何利用这份演进路线图
Mixxx 的版本演进呈现清晰的战略主线:2.4.0 打牢库与波形地基 → 2.5.0 完成 Qt6 平台迁移 → 2.6.0 引入 STEM 分轨并推进 QML/Rendergraph 技术储备,同时通过持续的小版本(2.5.x)稳定硬件映射生态。对于开发者,建议按以下路径深入研究:
- 体验 STEM 分轨:确认构建时
-DSTEM=ON(依赖 FFmpeg),参考 src/engine/channels/enginedeck.cpp 中的 stem 流实现与 res/skins 中 Deere/LateNight 的 STEM 控件; - 研究搜索语法:从 src/library 的搜索解析代码出发,配合 2.6 新增的
bpm:locked、directory等过滤器; - 跟踪渲染技术:重点关注 src/rendergraph 的演进与 res/qml 皮肤,它们代表了 Mixxx 3.0 的方向。
更多细节可随时回到仓库根目录的 CHANGELOG.md 查看各条目的完整 PR/issue 列表;构建相关配置与脚本则分别位于 CMakeLists.txt 与 tools 目录。
- 音视频
- 桌面应用
【免费下载链接】mixxx
Mixxx is Free DJ software that gives you everything you need to perform live mixes.
相关推荐
Tweepy 版本演进全解析:从 v1.0 到 v4.x 的 API 变迁与技术路线图
Tweepy 版本演进全解析:从 v1.0 到 v4.x 的 API 变迁与技术路线图 本文以 tweepy 官方 变更日志 https://link.gitc
后端Dragonfly版本演进:从v0.4.x到v1.0.x的技术路线图分析
Dragonfly版本演进:从v0.4.x到v1.0.x的技术路线图分析 Dragonfly作为一款高性能的P2P内容分发系统,在版本演进过程中实现了从基础架构
云原生css.gg 版本演进全解析:从 1.0.0 到 2.1.1 的图标库技术迭代路线图
css.gg 版本演进全解析:从 1.0.0 到 2.1.1 的图标库技术迭代路线图 css.gg 是一个开源 CSS 图标库,仓库当前以 700+ 纯 CSS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考