尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
Tool to trim and master DJ mixes. From a DJ for DJ's .
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Masters recorded DJ mixes. Open a long recording, mark the mix inside it, and the tool evens out the loudness from track to track: louder tracks are turned down and quieter ones up, while breakdowns keep their natural dip instead of being pumped up.
It comes as a desktop app for macOS, Windows and Linux, and as a command-line tool that shares the same processing. It is free, and will stay free; if it helps you, you can sponsor it.
Installers for macOS (Apple Silicon), Windows and Linux are on the website and the releases page; on Windows it is also in the Microsoft Store. Nothing else needs to be installed; the app carries everything it uses. The installers are not signed, so each system warns about them the first time; the manual's Installing page says how to get past that. What changed in each release is in CHANGELOG.md.
There is no build for Intel Macs yet. On those, the tool can be run from source.
The manual covers every part of the app, with pictures: opening a recording and marking its mixes, the check-up, levelling, tracks, exporting, and the videos, down to every kind of layer and every function a template's formulas can use. Its pages are in site/manual/; the published one describes the latest release. The app carries its own copy, for its own version, and Help → User Manual opens it in a window of its own, with a search, without a network.
Your recording is never changed and never leaves your computer. The only thing the app contacts is GitHub, at most once a day, to see whether a newer version exists. If there is one, a line in the header says so; nothing is installed for you. Turn the check off in Settings.
The same processing without the window. It needs Node 24 or newer and ffmpeg installed; see Running from source.
node src/cli.ts recording.mp3 --start 1:12:00 --end 2:45:30 -o mix.wav
The output format follows the file extension: .wav, .flac, .mp3 or
.m4a. Without -o the result is written next to the input as
<name>.mastered.wav.
| Option | What it does | Default |
|---|---|---|
--start, --end | The mix inside the recording, in seconds or h:mm:ss | whole file |
-o, --output | Output file | <input>.mastered.wav |
--bit-depth <16|24> | Bits per sample for .wav and .flac; 16-bit is dithered | 16 |
--bitrate <kbps> | Bitrate for .mp3 and .m4a | 320 and 256 |
--sample-rate <Hz> | Sample rate of the output | the input's |
--fade-in, --fade-out <seconds> | Fade at the start and at the end | none |
--headroom <dB> | Extra room under the ceiling for .mp3 and .m4a | 1 |
--title, --artist, --album | Tags to write into the output | none |
--force | Overwrite the output if it exists | off |
--analyze-only | Print the planned gain without writing audio | off |
--dump <file.csv> | Write the loudness and gain curves for inspection | off |
--target <LUFS> | Loudness of the full-energy sections | as loud as fits without limiting |
--no-levelling | Leave the tracks as they are; turn the whole mix up or down by one amount | levelling on |
--gain <dB> | That amount, set by hand (implies --no-levelling) | as loud as fits |
--window <seconds> | Quiet passages shorter than about this are breakdowns | 100 |
--percentile <0-1> | Loudness percentile that counts as full energy | 0.9 |
--bass-correction <0-1> |
The command line looks for ffmpeg on PATH and in the usual Homebrew folders.
Set DJMASTER_FFMPEG to use a specific binary.
Needs Node 24 or newer and ffmpeg on the machine
(brew install ffmpeg on macOS).
git clone https://github.com/Suva/djmixmaster.git
cd djmixmaster
npm install
npm start
npm run package
This builds an installer for the system it runs on into release/: a .dmg
on macOS, a setup .exe on Windows.
To publish a version, run npm version minor (or patch) and then
git push --follow-tags. That updates the version number, tags it, and makes
GitHub build both installers and publish them as a release (see
.github/workflows/release.yml).
npm test # build, then unit tests and tests that drive the real window
npm run typecheck
AGENTS.md explains how the code is organised and how to check changes; TASKS.md lists what could be done next.
DJ Mix Master is free, and it always will be: every feature, for everyone, with no accounts, no advertising and no paid version. It is made in spare time, by one person. If it saves you hours on your recordings and you would like to say thanks, you can sponsor its development on GitHub, once or every month. It helps pay for the time, and for testing on more sound cards and systems. Telling others about it, and reporting what does not work on the issues page, helps as much.
Copyright (C) 2026 Jaan Pullerits
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. It is distributed in the hope that it will be useful, but without any warranty. See LICENSE for the full text.
The installers include a copy of FFmpeg, which is
licensed separately under the GPL. It is the build from the
ffmpeg-static project, which
documents its sources; its licence is in the app's resources folder next to
the ffmpeg binary.
The fonts for videos in assets/fonts come from
Google Fonts and are each licensed under the
SIL Open Font License, whose text is beside each font.
The bypass icon is bypass_alt from
Brightlayer UI Icons
by Eaton, under the BSD 3-Clause License; its text is in assets/icons and
travels with the app.
| How much of the bass difference between tracks the EQ evens out |
| 0 |
--max-bass <dB> | Most that EQ raises or lowers a track's bass | 3 |
--bass-weight <0-1> | Steer the overall gain by bass level instead of perceived loudness | 0 |
--max-boost <dB> | Most a quiet track is raised | 6 |
--max-cut <dB> | Most a loud track is lowered | 12 |
--smooth <seconds> | How long a gain change takes | 10 |
--slew <dB/s> | Fastest the gain may move | 0.25 |
--ceiling <dBTP> | True-peak ceiling of the limiter | -1 |
--no-limiter | Leave peaks alone; boosted tracks may clip | off |