第 1 课 · 约 45 分钟
第一声:让 MIDI 键盘在 REAPER 里响起来
这节课结束时,你按下 TINY+ 的琴键,耳机里会有声音,工程文件存在 Ventoy 盘上,并且由脚本检查确认。
先搞懂一件事:MIDI 不是声音
新手最常卡住的地方,是以为 MIDI 键盘"会发声"。其实不会。你按下一个键,TINY+ 通过 USB 发出去的只是一条很小的MIDI 消息,大意是"按下了第 60 号键,力度 100";松开时再发一条"第 60 号键松开了"。MIDI 是 1983 年定下的协议,一条音符消息只有 3 个字节。用程序员的话说:键盘只产生事件,不产生数据流。
真正把这些消息变成声音的,是轨道上的虚拟乐器(VSTi)。它有点像渲染器:输入是事件,输出是音频。这节课用 REAPER 自带的 ReaSynth,一个最简单的合成器。
图 1. 这节课要接通的整条链路。只要有一环断了,就没有声音。
所以"没声音"一定能在这条链上定位:键盘有没有被 REAPER 看到?轨道有没有接收它(录音预备 arm)?轨道有没有把输入实时送给乐器(输入监听 monitoring)?乐器出来的声音有没有送到正确的声卡?排查思路和查网络不通差不多,从一端往另一端逐跳检查。官方的排错清单:User Guide §3.41 "Recording MIDI From Keyboard Checklist",p78。
动手:把链路一段段接起来
REAPER 已经在 Mac 上开着了。戴上有线耳机,按下面的步骤做。每做完一步,点一下左边的圆圈打勾。
- 选声卡。打开设置窗口:菜单 REAPER › Settings…(有的版本叫 Preferences…,也可以按 ⌘,),进入 Audio › Device。Audio system 保持
CoreAudio。输出设备(Output)选你要监听的设备:插着耳机就选耳机那一项,通常叫"外置耳机"或 External Headphones;不插就选扬声器。不要选 WeMeet,那是会议软件装的虚拟声卡。 User Guide §1.15.2,p21–22。 - 让 REAPER 接收键盘。还在设置窗口里,进入 Audio › MIDI Inputs,找到
TINY+。如果它那一行显示 Disabled,就右键选 Enable input for track record input。 User Guide §1.18,p23。 - 把默认路径改到 Ventoy。进入 General › Paths,把默认工程保存路径(Default path to save new projects)和默认录音路径(Default recording path)都改成 /Volumes/Ventoy/REAPER/Projects。然后点 OK。这样新工程和录音都不会占用系统盘仅剩的 9 GB。 User Guide §22.2.5,p428。之后在 Project Settings 里设置的路径会覆盖这里的全局默认值,见 §1.20。
- 插入乐器轨。菜单 Insert › Virtual instrument on new track…,在弹出的 FX 浏览器里搜
ReaSynth,双击 VSTi: ReaSynth (Cockos)。ReaSynth 的窗口弹出来之后,先不用管里面的旋钮。 User Guide §3.33,p73。 - 检查轨道上的三个开关。看新轨道的控制面板:红色圆点(arm)应该是亮的;它旁边的输入标签应该是 MIDI 相关的(比如
All MIDI Inputs或TINY+);小喇叭图标(monitoring)应该是亮的。哪个没亮就点亮它,输入标签不对就点开重新选 Input: MIDI。 - 弹!随便按几个键。你应该能在耳机里听到声音,并看到轨道和 Master 上的音量表在跳。🎉
- 保存到 Ventoy。File › Save project as…,文件名填
hello,勾选 Create subdirectory for project,把子目录命名为0001-hello,确认位置在 /Volumes/Ventoy/REAPER/Projects 下面。 - 让脚本检查你的作业。先退出 REAPER(⌘Q),确保设置写进
reaper.ini。然后打开 Mac 的"终端"运行:python3 /Volumes/Ventoy/REAPER/Course/assets/check.py 1
全部 ✓ 就完成了。有 ✗ 的话,看它给的提示回去修改,或者直接来问我。
彩蛋:工程文件就是文本
在终端里看一眼刚保存的工程:
grep -nE '^\s*(<TRACK|REC |<VST|NAME)' /Volumes/Ventoy/REAPER/Projects/0001-hello/hello.RPP
.RPP 是纯文本,可以 grep、diff,也可以放进 git。REC 那一行记着轨道的 arm 状态、输入来源和监听模式,检查脚本正是读这一行来判断你有没有做对。以后讲到 ReaScript 时,你会发现 REAPER 内部的"状态块"(state chunk)也是这种格式。REAPER 的设置在 ~/Library/Application Support/REAPER/reaper.ini,也是纯文本。菜单 Options › Show REAPER resource path 可以直接打开这个目录。
检验:不看上文,凭记忆回答
1. 按下 TINY+ 的一个键,它通过 USB 发给电脑的是什么?
2. 弹琴时轨道和 Master 的音量表都在跳,但耳机里没声音。最可能是哪一环出了问题?
3. 轨道已经 arm、输入选了 TINY+,按键时音量表却不动。最该检查哪个开关?
4. 你已在 Paths 里设置了全局默认录音路径,但某个工程的录音还是落到了别处。最可能的原因是?
延伸阅读 / 观看
视频:Kenny Gioia 的 This is REAPER 7 – Recording MIDI,还有 Using a MIDI Keyboard Controller。
下节课之前,有空可以先玩:Ableton Learning Music 的第一章"节拍",在浏览器里点点方块就能做出一段鼓点,下节课会用到。
有任何看不懂、做不通的地方,或者好奇"为什么是这样",直接在终端里问我(Claude)。卡在哪一步也可以直接说,我能通过 ssh 看你的配置文件,帮你找到是哪一环断了。