【问题标题】:Why can't I read data from /dev/snd/midi*?为什么我不能从 /dev/snd/midi* 读取数据?
【发布时间】:2013-09-02 13:36:24
【问题描述】:

为什么这个 USB MIDI 设备 (Korg Nanokontrol) 在转动旋钮时会产生可以从 /dev/snd/midiC2D0 读取的数据

但是这个没有? (Egosys MIDIMATE II)

箭头表示当 MIDI 数据进入时闪烁的 LED。在这种情况下,MIDI 消息的类型是“midi 时钟”,我试图用它来告诉正在其他地方播放的歌曲的速度到这台计算机。

也可以通过 Wireshark USB 嗅探确认正确类型的数据正在通过 USB 传输到计算机(至少我认为它是正确的)。

我还确定设备 midiC1D0 是正确的设备,因为它会在我插拔设备时出现和消失。

那么为什么即使有数据进来,数据也永远不会到达/dev/snd/midiC1D0?

我也尝试过直接使用 alsa 函数as shown in this code example,但结果是一样的:read 函数什么也不读取。

【问题讨论】:

  • 1f f8 是第二个端口上 MIDI 时钟消息的有效 USB MIDI 数据包。 (amidi -l 是否显示两个输入端口?)cat 可能不会显示无法解释为 UTF-8 字符的数据;使用 amidiaseqdump 显示传入的 MIDI 消息。

标签: linux usb midi alsa


【解决方案1】:

CL 的评论是正确的。 Amidi 显示了正确的数据。所以现在我只需要编写与amidi 相同的代码即可。谢谢!

apaksi@extruder:/dev/snd$ amidi -l
Dir Device    Name
IO  hw:0,0,0  nanoKONTROL MIDI 1
IO  hw:1,0,0  MIDIMATE II MIDI 1
IO  hw:1,0,1  MIDIMATE II MIDI 2
apaksi@extruder:/dev/snd$ amidi -d -p hw:1,0,1 

F8
F8
F8
F8
F8
F8
F8
F8

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多