Show HN: Audionaut – an open-source cross-platform multitrack audio editor
Show HN: Audionaut – 一个开源的跨平台多轨音频编辑器
Audionaut is a free, open-source multitrack audio editor that AI agents can drive over MCP. Audionaut 是一款免费、开源的多轨音频编辑器,AI 智能体可以通过 MCP(模型上下文协议)对其进行操控。
Audionaut is a free, open-source desktop application for effortless audio editing and recording. Whether you’re working on music, podcasts, or multitrack recordings, it gives you precise cutting, per-track playlists, flexible multi-channel support, and clean exports — without the weight and complexity of a full DAW. Audionaut is written in modern C++ on the JUCE framework and runs natively on Windows, macOS, and Linux. Audionaut 是一款免费的开源桌面应用程序,旨在实现轻松的音频编辑和录制。无论您是在制作音乐、播客还是进行多轨录音,它都能为您提供精确的剪辑、分轨播放列表、灵活的多通道支持以及纯净的导出功能,且无需像完整 DAW(数字音频工作站)那样沉重和复杂。Audionaut 基于 JUCE 框架使用现代 C++ 编写,可在 Windows、macOS 和 Linux 上原生运行。
Use with Claude
与 Claude 配合使用
Audionaut speaks MCP, so Claude and other agents can edit your sessions. With the app and Node.js 18+ installed: Audionaut 支持 MCP 协议,因此 Claude 和其他智能体可以编辑您的音频会话。在安装了该应用和 Node.js 18+ 的环境下,运行:
claude mcp add audionaut -- npx -y audionaut-mcp
Keep the project open in Audionaut and each edit arrives as one undo step. On macOS, keep projects in your Music folder. Claude Desktop setup and details: manual, chapter 11. 在 Audionaut 中保持项目打开,每一次编辑都会作为一个撤销步骤同步。在 macOS 上,请将项目保存在“音乐”文件夹中。关于 Claude Desktop 的设置及详情,请参阅手册第 11 章。
Checkout
获取代码
Make sure to clone with submodules: 请确保在克隆时包含子模块:
git clone --recursive https://github.com/kvoltmer/Audionaut.git
or once cloned do: 或者在克隆后执行:
git submodule update --init --recursive
Essentia (audio analysis)
Essentia(音频分析)
The analysis features (BIC segmentation, onset detection, beat tracking) link against a static build of the Essentia submodule. Build it once after checking out the submodules: 分析功能(BIC 分割、起始点检测、节拍跟踪)链接到 Essentia 子模块的静态构建版本。在检出子模块后,请构建一次:
./Audionaut/Builds/build_essentia.sh
The script builds Essentia’s 3rd-party dependencies statically (slow, skipped on re-runs; force with FORCE_3RDPARTY=1), then configures and builds Essentia itself with its waf build system into Submodules/essentia/build. It patches Essentia’s Linux-oriented 3rd-party build scripts in the working tree as needed for macOS/Apple Silicon, so the essentia submodule will show as dirty afterwards — don’t commit those changes.
该脚本会静态构建 Essentia 的第三方依赖项(速度较慢,再次运行时会跳过;可通过 FORCE_3RDPARTY=1 强制执行),然后使用其 waf 构建系统将 Essentia 本身配置并构建到 Submodules/essentia/build 中。它会根据 macOS/Apple Silicon 的需要,对工作树中面向 Linux 的第三方构建脚本进行修补,因此之后 essentia 子模块会显示为“脏”(dirty)状态——请勿提交这些更改。
Prerequisites: 先决条件:
- Python ≤ 3.11 — Essentia’s bundled waf needs distutils, removed in Python 3.12. The script picks a suitable interpreter automatically; override with
PYTHON=... ./Audionaut/Builds/build_essentia.sh.- Python ≤ 3.11:Essentia 捆绑的 waf 需要 distutils,该模块在 Python 3.12 中已被移除。脚本会自动选择合适的解释器;如需覆盖,请使用
PYTHON=... ./Audionaut/Builds/build_essentia.sh。
- Python ≤ 3.11:Essentia 捆绑的 waf 需要 distutils,该模块在 Python 3.12 中已被移除。脚本会自动选择合适的解释器;如需覆盖,请使用
- pkg-config (e.g.
brew install pkg-config)- pkg-config(例如
brew install pkg-config)
- pkg-config(例如
- CMake 3.x recommended — some 3rd-party deps ship very old CMakeLists that CMake 4.x refuses (e.g.
pip install "cmake~=3.31.0").- 推荐使用 CMake 3.x:一些第三方依赖项附带的 CMakeLists 非常老旧,CMake 4.x 会拒绝处理(例如
pip install "cmake~=3.31.0")。
- 推荐使用 CMake 3.x:一些第三方依赖项附带的 CMakeLists 非常老旧,CMake 4.x 会拒绝处理(例如
Building Essentia is optional: without it, ESSENTIA_ENABLED auto-detects off and the app and tests compile with the analysis features disabled.
构建 Essentia 是可选的:如果没有它,ESSENTIA_ENABLED 会自动检测为关闭,应用程序和测试将在禁用分析功能的情况下进行编译。
demucs.cpp (stem separation)
demucs.cpp(音轨分离)
Stem separation runs demucs.cpp, a C++ port of Meta’s Demucs, compiled straight from the Submodules/demucs.cpp submodule — no separate build step. It needs the submodule’s vendored Eigen (Submodules/demucs.cpp/vendor/eigen, a nested submodule that —recursive fetches); the CMake build detects it and sets AUDIONAUT_ENABLE_DEMUCS accordingly. The model weights are not in the repository: the app downloads them on first use into its Models folder, or point the CLI at a copy with --model.
音轨分离功能运行的是 demucs.cpp(Meta Demucs 的 C++ 移植版),直接从 Submodules/demucs.cpp 子模块编译,无需单独的构建步骤。它需要子模块中自带的 Eigen(Submodules/demucs.cpp/vendor/eigen,这是一个通过 --recursive 获取的嵌套子模块);CMake 构建会自动检测并相应地设置 AUDIONAUT_ENABLE_DEMUCS。模型权重不在仓库中:应用程序会在首次使用时将其下载到 Models 文件夹中,或者您也可以通过 --model 参数指向本地副本。
Build
构建
- Xcode — open the Xcode project located here:
Audionaut/Builds/MacOSX/Audionaut.xcodeproj- Xcode:打开位于
Audionaut/Builds/MacOSX/Audionaut.xcodeproj的 Xcode 项目。
- Xcode:打开位于
- Visual Studio 2026 — open the Visual Studio solution located here:
Audionaut/Builds/VisualStudio2026/Audionaut.sln- Visual Studio 2026:打开位于
Audionaut/Builds/VisualStudio2026/Audionaut.sln的 Visual Studio 解决方案。
- Visual Studio 2026:打开位于
- Linux Makefile — install dependencies:
sudo apt install libasound2-dev libjack-jackd2-dev ladspa-sdk libcurl4-openssl-dev libfreetype-dev libfontconfig1-dev libx11-dev libxcomposite-dev libxcursor-dev libxext-dev libxinerama-dev libxrandr-dev libxrender-dev libwebkit2gtk-4.1-dev libglu1-mesa-dev mesa-common-dev libxi-dev libegl-devthen compile:cd Audionaut/Builds/LinuxMakefile/make CONFIG=Release -j8- Linux Makefile:安装依赖项(见上述命令),然后编译:
cd Audionaut/Builds/LinuxMakefile/,make CONFIG=Release -j8。
- Linux Makefile:安装依赖项(见上述命令),然后编译:
Tests
测试
See the Catch2 tests README. 请参阅 Catch2 测试的 README 文件。
Command-line tool (audionaut-cli)
命令行工具 (audionaut-cli)
audionaut-cli gives scripts, CI and AI agents headless access to .audium projects — no GUI, no audio device. It builds alongside the tests:
audionaut-cli 为脚本、CI 和 AI 智能体提供了对 .audium 项目的无头(headless)访问权限——无需 GUI,无需音频设备。它与测试一同构建:
cmake -B build -S Audionaut/Catch2Tests
cmake --build build -j8 --target AudionautCli
./build/AudionautCli_artefacts/AudionautCli --help
Every command takes --json to emit exactly one machine-readable result envelope on stdout ({"ok": true, "result": ...} or {"ok": false, "error": ...}) with all logging on stderr, plus --quiet. Exit codes: 0 success, 1 operation failed, 2 usage error, 3 feature unavailable in this build (e.g. analyze without Essentia). Option values may be given as --opt value or --opt=value.
每个命令都支持 --json 参数,以便在标准输出(stdout)上输出一个机器可读的结果包({"ok": true, "result": ...} 或 {"ok": false, "error": ...}),所有日志记录在标准错误(stderr)上,此外还支持 --quiet。退出代码:0 表示成功,1 表示操作失败,2 表示用法错误,3 表示此构建中功能不可用(例如在没有 Essentia 的情况下进行分析)。选项值可以使用 --opt value 或 --opt=value 格式。
(CLI usage examples omitted for brevity) (此处省略 CLI 使用示例)
A typical agent flow: create → import → analyze → auto-edit/assemble → export, checking ok in each --json envelope. Projects written by the CLI open in the GUI app and vice versa.
典型的智能体工作流为:create → import → analyze → auto-edit/assemble → export,并在每个 --json 包中检查 ok 状态。CLI 创建的项目可以在 GUI 应用程序中打开,反之亦然。
End-user documentation lives in the User Manual. CLI invocations report anonymous usage statistics under the same strictly opt-in consent as the app (one cli_command event: verb and exit code) — nothing is sent unless consent was granted in the app’s settings. Set AUDIONAUT_DISABLE_ANALYTICS=1 to switch the CLI’s reporting off regardless (CI environments, scripts). The main Audionaut app also accepts the same verbs (Projucer-style): run the app binary with a verb and it executes headlessly and quits with the command’s exit code, even while a GUI instance is open — a file argument or no arguments launches the GUI.
最终用户文档位于《用户手册》中。CLI 调用会报告匿名使用统计信息,遵循与应用程序相同的严格选择加入原则(一个 cli_command 事件:动词和退出代码)——除非在应用程序设置中授予了许可,否则不会发送任何内容。设置 AUDIONAUT_DISABLE_ANALYTICS=1 可强制关闭 CLI 的报告功能(适用于 CI 环境、脚本)。主要的 Audionaut 应用程序也接受相同的动词(Projucer 风格):使用动词运行应用程序二进制文件,它将以无头模式执行并在命令退出代码后退出,即使 GUI 实例已打开也是如此——如果提供文件参数或不带参数,则会启动 GUI。