多轨音乐录音应用程序 — Version 0.1.1
2026-04-13
Musician's Canvas 是一款适用于桌面电脑的多轨音乐录音应用程序。它支持通过麦克风和线路输入设备进行音频录制,通过键盘和控制器进行 MIDI 录制,并可将所有轨道混合导出为单个 WAV 或 FLAC 文件。配套应用程序 Virtual MIDI Keyboard 提供了一个软件钢琴键盘,用于发送 MIDI 音符。
Musician's Canvas 设计简单易用,同时提供数字音频工作站(DAW)中常见的功能:
从构建目录或安装位置运行 musicians_canvas 可执行文件:
./musicians_canvas
首次启动时,应用程序会打开一个空项目。您需要先设置项目目录才能开始录制。
启动时,应用程序会应用已保存的主题(深色或浅色),如果之前使用的项目目录中包含 project.json 文件,则会自动加载该项目。
设置项目目录:在窗口顶部的"Project Location"字段中输入或浏览到一个文件夹。录音文件和项目文件将存储在此处。
添加轨道:点击 + Add Track 按钮。一个新轨道将以默认设置出现。如果该轨道是项目中唯一的轨道且尚未录制,它将自动处于录音待命状态。
命名轨道:在"Options"按钮旁边的文本字段中输入名称。此名称将用作录制音频文件的文件名。

菜单栏正下方有一个带有快速访问按钮的工具栏:

项目文件(project.json)存储轨道名称、类型、MIDI 音符、音频文件引用以及所有项目特定设置。音频文件与 project.json 存储在同一目录中,以其轨道名称命名(例如 My_Track.flac)。
如果您在有未保存更改的情况下关闭应用程序,将弹出确认对话框询问是否在退出前保存。
当项目打开时,您可以从文件管理器(Windows 资源管理器、macOS Finder、 Linux 文件管理器等)将一个或多个受支持的音频文件直接拖放到 Musician's Canvas 窗口上,将它们添加为新的音频轨道。
.wav 和 .flac。任何其他格式的文件会被静默跳过,
结束时会有一个对话框列出哪些文件被跳过。Bass Line.wav 会创建一个名为"Bass Line"的音频轨道。每个轨道可以配置为 Audio(用于麦克风/线路输入录制)或 MIDI(用于键盘/控制器录制)。
要更改轨道类型:
这将打开轨道配置对话框,您可以在其中选择输入源。

每个轨道行提供以下控件:
当项目中只有一个轨道且该轨道尚未录制时,它会自动进入录音待命状态。这适用于在新项目中添加第一个轨道和打开包含单个空轨道的现有项目两种情况。
录制的音频以 FLAC 文件格式保存在项目目录中,以轨道名称命名。
在录制和播放期间,所有交互控件(轨道按钮、设置等)均被禁用,以防止意外更改。
音频轨道在 Options 下方有 效果 按钮,可打开 轨道效果 对话框,为该轨道的录音搭建 有序效果链:

可用效果包括 混响、合唱、镶边(Flanger)、过载/失真(Overdrive / distortion)、音箱头与箱体建模(Amp & cabinet)(箱头类型、箱体、增益、低/中/高频、空气感与湿干比等),以及 颤音(Vibrato / Tremolo)。
颤音(Vibrato / Tremolo) 是 Fender 许多音箱上标注为 “Vibrato” 的经典效果(实际上是 音量随时间周期性起伏 的 tremolo)。使用 Speed 调整起伏速度,使用 Intensity(Depth)调整深度(从轻微闪动到强烈断奏)。
以下为 Amp & cabinet 的界面示例:


效果在 停止录制 后应用(经过常规采集与重采样)。配置保存在 project.json 的 audioEffectChain 字段。
Project → Project Settings → Mix Effects lets you build the same kind of ordered effect chain as Track effects (Reverb, Chorus, Flanger, Overdrive / distortion, Amp & cabinet, Vibrato (Tremolo)), but applied to the entire mixed program: when you press Play to hear all enabled tracks together, and when you export with Mix tracks to file (toolbar or Tools menu). The chain is saved in project.json under projectSettings → mixEffectChain.
Project → Project Settings → Aux / Send Bus configures a shared effect chain fed by each track’s Aux send slider (on the track row). The dry mix of all tracks is summed, each track’s post-gain/post-pan signal is scaled by its Aux level and sent through this bus, then the wet aux output is added back to the dry sum before Mix Effects run. Use it for a single shared reverb/delay while keeping per-track insert effects independent.
To reduce harsh digital clipping when processing pushes peaks toward full scale, the effect engine applies a soft limiter to normalized float samples immediately before conversion to 16-bit PCM. The EffectWidget base class documents guardFloatSampleForInt16Pcm() and softLimitFloatSampleForInt16Pcm() for any new real-time code that writes to 16-bit audio.
Each track row includes a compact mixer strip:
Options → Track Configuration also offers Clip trim (non-destructive): Trim start and Trim end skip that many seconds from the beginning and end of the clip for playback, mix, and export without deleting the underlying recording.
MIDI tracks can carry control change (CC) automation stored in the project and in exported .mid files; offline playback and mix use these events when rendering MIDI to audio.
Edit → Undo / Redo (standard shortcuts) apply to mixer and trim changes made on tracks.
在 时间显示 右侧,录音时监听音频 决定在录制期间是否把 实时输入 送到 项目的音频输出:
该选项保存在 项目 中(project.json 的 monitorWhileRecording)。为避免麦克风反馈可关闭。
当录制新轨道时,如果其他已启用的轨道已包含音频或 MIDI 数据,Musician's Canvas 会执行叠录:已有轨道会被混合并实时播放,同时录制新轨道。这样您可以在录制新内容时听到之前录制的部分。
在采集开始前会先准备好已有轨道的混音,因此录制和播放几乎同时开始,保持所有轨道同步。
Musician's Canvas 支持两种音频采集后端:
录制后端可在 Project > Project Settings > Audio 中按项目配置。
Musician's Canvas 以音频输入设备的原生采样率进行录制,然后使用高质量重采样自动转换为项目配置的采样率。这意味着您可以设置任意项目采样率(例如 44100 Hz 或 48000 Hz),无论设备的原生采样率是多少。转换过程精确保持音高和时长。
某些音频设备(例如 USB 网络摄像头麦克风)物理上是单声道的,但操作系统将其识别为立体声。Musician's Canvas 会自动检测此情况并相应调整声道数。如果项目配置为立体声,单声道信号将被复制到两个声道。
MIDI 音符以钢琴卷帘可视化的形式显示在轨道上。
Musician's Canvas 内置节拍器,可在录制期间用于帮助保持节奏。点击菜单栏下方按钮栏上的节拍器按钮以打开节拍器设置对话框:

该对话框提供:
当节拍器启用时,它会在录制实际开始后(3 秒倒计时结束后)开始滴答,并在录制结束时停止。
点击 Play 按钮混合并播放所有已启用的轨道。按钮的工具提示会根据是否有轨道处于录音待命状态而变化,指示将执行播放还是录制。已禁用(未勾选)的轨道不参与播放。
播放期间,音频轨道从其 FLAC 文件解码,MIDI 轨道使用内置 FluidSynth 合成器渲染为音频。所有轨道混合后通过系统的音频输出设备播放。
点击 Stop 按钮可随时结束播放。
使用 Tools > Mix tracks to file(Ctrl+M)将所有已启用的轨道导出为单个音频文件。对话框允许您选择输出路径和格式:
混音使用项目配置的采样率。MIDI 轨道使用配置的 SoundFont 进行渲染。
使用 Settings > Configuration(Ctrl+,)设置适用于所有项目的全局默认值:

recording_debug.txt 的文件。这包括采集后端、设备名称、采样率、声道数和计时
数据。此选项默认禁用,主要用于排查录制问题。

.sf2 SoundFont 文件用于 MIDI 合成。在 Linux 上,如果安装了 fluid-soundfont-gm 软件包,系统可能会自动检测到 SoundFont。在 Windows 和 macOS 上,您需要手动配置 SoundFont 路径。

使用 Project > Project Settings(Ctrl+P)仅为当前项目覆盖全局默认值。这对于需要特定采样率、SoundFont 或音频设备的项目非常有用。项目特定设置保存在 project.json 文件中。


The Mix Effects tab is a scrollable list with the same controls as Track effects (Add effect…, drag ≡ to reorder, ✕ to remove). Processing order is top to bottom on the combined mix of all enabled tracks. These effects run during whole-project playback and when mixing to a single WAV or FLAC file; they are not baked into individual track files on disk. An empty list leaves the mixed signal unchanged aside from the mixer's own level handling.
Configure the shared aux effect chain (same effect types as track inserts). Each track’s Aux slider on the track row controls how much of that track’s signal is sent through this bus; the wet aux return is summed with the dry mix before Mix Effects are applied.
| 菜单项 | 快捷键 | 描述 |
|---|---|---|
| Save Project | Ctrl+S | 将当前项目保存到磁盘 |
| Open Project | Ctrl+O | 打开现有项目文件 |
| Close | Ctrl+Q | 退出应用程序 |
| 菜单项 | 快捷键 | 描述 |
|---|---|---|
| Project Settings | Ctrl+P | 配置工程设置(含 Aux / Send Bus) |
| Tempo map | 编辑速度变化(秒与 BPM):节拍器与 MIDI 量化 | |
| Add Demo Data to Selected Track | 向选定轨道添加示例 MIDI 音符 |
| 菜单项 | 快捷键 | 描述 |
|---|---|---|
| Undo | Ctrl+Z | 撤销混音器/修剪更改 |
| Redo | Ctrl+Shift+Z | 重做 |
| 菜单项 | 快捷键 | 描述 |
|---|---|---|
| Configuration | Ctrl+, | 打开全局应用程序设置 |
| 菜单项 | 快捷键 | 描述 |
|---|---|---|
| Mix tracks to file | Ctrl+M | 将所有已启用轨道导出到文件 |
| Export stems to folder | 每轨一个 WAV(增益/声像/修剪;无总线 Mix Effects) | |
| Recording options | 音频 切入录音;整工程 循环播放 | |
| Quantize MIDI | MIDI 音符对齐网格(全部 MIDI 或仅预备轨) | |
| Add drum track | D | 添加鼓 MIDI 音轨并写入 .mid(见下文) |
| Virtual MIDI Keyboard | 启动配套键盘应用程序 |
| 菜单项 | 快捷键 | 描述 |
|---|---|---|
| Manual | Alt+M | 打开当前所选语言的 PDF 用户手册 |
| About | 显示版本与应用信息 |
| 快捷键 | 操作 |
|---|---|
| Ctrl+S | 保存项目 |
| Ctrl+Z | 撤销(混音器/修剪) |
| Ctrl+Shift+Z | 重做 |
| Ctrl+O | 打开项目 |
| Ctrl+M | 混合导出轨道到文件 |
| D | 添加鼓音轨(Tools 菜单) |
| Ctrl+P | 项目设置 |
| Ctrl+, | 设置 / 配置 |
| Alt+M | 打开 PDF 手册(Help) |
| Ctrl+Q / Alt+F4 | 退出 |
Tools → Add drum track(快捷键 D)会添加 General MIDI 第10通道(通道索引 9)的 MIDI 鼓轨。默认名称 Drums(必要时加序号)。
会在项目文件夹立即写入 .mid(两小节 4/4:底鼓、军鼓、闭镲)。速度选择:
参考链接: Audient、MDrummer、Reddit、CS229 PDF。
Virtual MIDI Keyboard 是一款配套应用程序(virtual_midi_keyboard),提供屏幕上的钢琴键盘用于发送 MIDI 音符。可以从主应用程序的 Tools > Virtual MIDI Keyboard 菜单启动,也可以独立运行。

电脑键盘映射到两个八度的钢琴键:
低八度(从当前八度开始):
| 按键 | 音符 |
|---|---|
| Z | C |
| S | C#/Db |
| X | D |
| D | D#/Eb |
| C | E |
| V | F |
| G | F#/Gb |
| B | G |
| H | G#/Ab |
| N | A |
| J | A#/Bb |
| M | B |
高八度(高一个八度):
| 按键 | 音符 |
|---|---|
| Q | C |
| 2 | C#/Db |
| W | D |
| 3 | D#/Eb |
| E | E |
| R | F |
| 5 | F#/Gb |
| T | G |
| 6 | G#/Ab |
| Y | A |
| 7 | A#/Bb |
| U | B |
| I | C(下一个八度) |
| 9 | C#/Db |
| O | D |
| 0 | D#/Eb |
| P | E |
按下时按键会产生视觉高亮效果(白键变为浅蓝色,黑键变暗)。
打开配置对话框(Settings > Configuration,Ctrl+,)以设置 MIDI 和音频设备:

.sf2 SoundFont 文件用于内置合成器。| 快捷键 | 操作 |
|---|---|
| Ctrl+, | 配置对话框 |
| Ctrl+U | 帮助 / 使用信息 |
| Ctrl+Q | 关闭 |
.sf2)。音符显示在钢琴卷帘中。File > Save Project 会在项目文件夹中写入 .mid 和 project.json。
回放使用设置中的 SoundFont 通过 FluidSynth 发声。请检查 Settings > Configuration > MIDI(若按项目覆盖则查看 Project > Project Settings):必须配置有效的 .sf2 路径。Linux 上有时会自动找到系统 SoundFont;Windows 和 macOS 上通常需要手动选择 SoundFont 文件。
它们是两个独立程序。通过 Tools > Virtual MIDI Keyboard 启动(也可单独运行)。若要在录制 MIDI 轨道时让屏幕键盘进入 Musician's Canvas,需要由操作系统将键盘的 MIDI 输出路由到 Musician's Canvas 使用的输入(例如虚拟 MIDI 线缆或在两个程序中选择一致的端口)。两者不会自动连接。
Settings > Configuration 设置应用程序的全局默认值(主题、语言、MIDI/音频设备、SoundFont 等)。Project > Project Settings 仅针对当前项目覆盖部分设置,并保存在 project.json 中。若某字段保持项目默认,则使用 Configuration 中的全局值。
仅在已设置项目目录,且 Musician's Canvas 未在播放或录制时才能接受拖放。支持的格式为 .wav 和 .flac;其他扩展名会被跳过并在对话框中列出。每个文件会成为一个新的音频轨道,名称取自文件名(不含扩展名)。
音频保存在项目目录中,文件名为 <轨道名>.flac(/ \ : * ? " < > | 等字符会替换为下划线)。项目文件为同目录下的 project.json。保存项目时,MIDI 轨道还会生成 <轨道名>.mid(音符数据也会写入 project.json)。
混音或播放时,MIDI 会先在内部渲染为临时 WAV。若已知项目路径,Musician's Canvas 还会在项目文件夹中写入缓存用的 <清理后的轨道名>.flac(与其他轨道文件使用相同的文件名清理规则)。名称依据轨道名,而非内部 ID。
不可以。同一时间只能 Arm 一条轨道,下一段录音只录到该轨道。通过逐条叠加录制来制作(叠录 overdub 会在录制新轨道时播放已有轨道)。
不会。启用后节拍器仅通过系统音频播放给您听,不会混入录音文件。
在 Windows 上,主程序期望使用 ASIO 驱动以实现可靠、低延迟的音频。若出现启动或音频错误,请安装 ASIO4ALL 或声卡/接口厂商提供的驱动。
在 .app 应用程序包中,Virtual MIDI Keyboard 可执行文件会被复制到 Musician's Canvas.app 内部(Contents/MacOS/),便于只分发一个应用文件夹。仍可通过菜单 Tools > Virtual MIDI Keyboard 启动。
amixer 或桌面环境的声音设置检查音量级别。.sf2 文件)。fluid-soundfont-gm 软件包,系统可能会自动检测到 SoundFont。libpipewire-0.3-dev 软件包(FluidSynth 合成器与 PipeWire 集成所需)。有关 Linux、macOS 和 Windows 的完整构建说明(包括所有必需的依赖项),请参阅 README。