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。
  • pkg-config (e.g. brew install pkg-config)
    • pkg-config(例如 brew install 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")。

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 项目。
  • 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 解决方案。
  • 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-dev then compile: cd Audionaut/Builds/LinuxMakefile/ make CONFIG=Release -j8
    • Linux Makefile:安装依赖项(见上述命令),然后编译:cd Audionaut/Builds/LinuxMakefile/,make CONFIG=Release -j8。

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。