USB MIDI 键盘
本指南假定您正在使用 ALSA 并且您的声卡已设置好可以听音乐。已知使用本指南可以工作的设备是 Evolution MK-631 USB midi 键盘和 SB Live! Value 声卡。除非另有说明,否则请以非特权用户身份执行这些说明。
初步测试
ALSA
安装 alsa-utils 软件包。
输入 aseqdump。它应该输出类似如下的内容
Waiting for data at port 128:0. Press Ctrl+C to end. Source_ Event_________________ Ch _Data__
那里不会显示太多内容,因此请按 Ctrl+C 退出程序。
插入键盘
现在插入键盘并打开电源。键盘应启动。lsusb 的输出应包含
Bus 002 Device 002: ID 0a4d:00a0 Evolution Electronics, Ltd
lsmod | grep usb 的输出应包含以下模块
usb_midi 25348 0 snd_usb_audio 70592 0 snd_usb_lib 16640 1 snd_usb_audio
现在输入 aconnect -i 以列出所有 MIDI 输入端口。输出应包含
client 72: 'MK-361 USB MIDI keyboard' [type=kernel]
0 'MK-361 USB MIDI keyboard MIDI 1'
客户端编号可能不同。记下它。
验证事件
输入 aseqdump -p ##,您应该将 ## 替换为键盘的客户端编号。您应该看到
72:0 Active Sensing
一直弹出。按下按键应该产生
72:0 Note on 0 65 94 72:0 Note on 0 65 0
各种其他事件(转动控制旋钮、更改通道等)应在列表中注册。这是确保键盘正常运行的便捷方法。
要将 MIDI 事件发送回键盘或其他 MIDI 输出设备,您可以使用运行 aplaymidi -p ## midifile.mid 并指定一个 MIDI 文件。
录制
首先,使用 arecordmidi -l 列出可用的输入设备,并确定所需设备的 port_number。然后,执行以下命令开始录制
arecordmidi -p <port_number> <output_file>
要停止录制,只需 kill 该进程即可。
man arecordmidi 提供了有关此工具可用的其他选项的详细信息。
播放
要在按下键盘上的按钮时听到声音,您需要一个合成器,将 MIDI 信号转换为音频。
一些声卡具有内置硬件合成器,但这在现代声卡中并不常见,尤其是在板载声卡中。一个更简单的选择是软件合成器,它只是一个程序,您可以加载自己的乐器采样。
硬件合成器
输入 aconnect -o 以列出所有 MIDI 输出端口。这很大程度上取决于您的声卡。在 SB Live! Value 上,您会得到以下输出
client 64: 'EMU10K1 MPU-401 (UART)' [type=kernel]
0 'EMU10K1 MPU-401 (UART)'
client 65: 'Emu10k1 WaveTable' [type=kernel]
0 'Emu10k1 Port 0 '
1 'Emu10k1 Port 1 '
2 'Emu10k1 Port 2 '
3 'Emu10k1 Port 3 '
这里客户端 65 是实际的 MIDI 合成器。假设声卡已正确设置,您应该能够将键盘的输出路由到 MIDI 合成器。假设 out 是输出客户端编号(在我们的示例中为 65),而 in 是输入客户端编号(在我们的示例中为 72),输入 aconnect in out。现在您可以通过声卡的 MIDI 输出播放键盘。
软件合成器
Qsynth
- 安装 qsynth。
- 启动 QSynth 并转到设置,您需要在其中加载 SF2 格式的音色库。您可以从 fluidplug-gitAUR 或 http://soundfonts.narod.ru/(俄语)获取免费音色库。当 QSynth 要求您在加载音色库后重启引擎时,请执行此操作。
- 输入
aconnect -o以列出所有 MIDI 输出端口。找到包含FLUID Synth的端口并记下客户端编号。 - 输入
aconnect -i以列出所有 MIDI 输入端口。记下键盘客户端编号。 - 假设 out 是输出客户端编号,而 in 是输入客户端编号(在我们的示例中为 72),输入
aconnect in out。现在您可以播放键盘,QSynth 应该会发出声音。
aconnect in out。使用 JACK 的 Qsynth
- 我们需要安装 qsynth、JACK、qjackctl
- 启动 qjackctl 并检查设置
Server Path: jackd Driver: alsa Realtime=enable; Priority:0 Frames/Period:512 Soft Mode=enable; Periods/Buffer:2 Rest of parameters=disable(by default) Dither: None Audio: Duplex
- 使用 qjackctl 启动 jackd(播放 按钮)
- 连接您的 USB 键盘
- 启动 QSynth 并转到设置,您需要在其中加载 SF2 格式的音色库。您可以从 http://soundfonts.narod.ru/(俄语)获取免费音色库。当 QSynth 要求您在加载音色库后重启引擎时,请执行此操作。
- 转到 qjackctl,单击连接并选择 ALSA 选项卡。在左侧您将看到连接的 MIDI 键盘,在左侧 - QSynth。选择 MIDI 键盘和 QSynth,然后单击连接。