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,然后单击连接。