USB MIDI 键盘

出自 ArchWiki

此文章或章节需要语言、wiki 语法或风格上的改进。请参考Help:Style

原因: 需要一些语言上的改进 (在 Talk:USB MIDI keyboards 中讨论)

本指南假定您正在使用 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 文件。

录制

注意: 本节用于将原始 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

  1. 安装 qsynth
  2. 启动 QSynth 并转到设置,您需要在其中加载 SF2 格式的音色库。您可以从 fluidplug-gitAURhttp://soundfonts.narod.ru/(俄语)获取免费音色库。当 QSynth 要求您在加载音色库后重启引擎时,请执行此操作。
  3. 输入 aconnect -o 以列出所有 MIDI 输出端口。找到包含 FLUID Synth 的端口并记下客户端编号。
  4. 输入 aconnect -i 以列出所有 MIDI 输入端口。记下键盘客户端编号。
  5. 假设 out 是输出客户端编号,而 in 是输入客户端编号(在我们的示例中为 72),输入 aconnect in out。现在您可以播放键盘,QSynth 应该会发出声音。
注意: 每次重启 Qsynth 或更改乐器/音色库时,您都需要运行 aconnect in out
注意: Qsynth 默认音频驱动程序设置为 jack。要使用 alsa 运行:qsynth -a alsa

使用 JACK 的 Qsynth

  1. 我们需要安装 qsynthJACKqjackctl
  2. 启动 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
    
  3. 使用 qjackctl 启动 jackd(播放 按钮)
  4. 连接您的 USB 键盘
  5. 启动 QSynth 并转到设置,您需要在其中加载 SF2 格式的音色库。您可以从 http://soundfonts.narod.ru/(俄语)获取免费音色库。当 QSynth 要求您在加载音色库后重启引擎时,请执行此操作。
  6. 转到 qjackctl,单击连接并选择 ALSA 选项卡。在左侧您将看到连接的 MIDI 键盘,在左侧 - QSynth。选择 MIDI 键盘和 QSynth,然后单击连接