You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派OSA电子MIDI扩展板配置后无MIDI输入输出问题排查问询

排查步骤

1. 修复pigpio daemon异常

  • 执行命令查看8888端口占用进程:sudo lsof -i :8888
  • 终止占用端口的进程:sudo kill -9 <查询到的进程PID>,之后重新启动守护进程:sudo pigpiod
  • 若仍启动失败,可指定其他端口启动pigpio:sudo pigpiod -p 8889,同步修改Python代码中的初始化逻辑:
    pi1 = pigpio.pi('localhost', 8889)
    # 可新增连接校验
    if not pi1.connected:
        print("pigpio连接失败,请检查守护进程状态")
    
  • 验证pigpio运行状态:执行pigs t,若返回数字时间戳则说明启动正常。

2. 排查MIDI无输入输出问题

2.1 修正端口匹配逻辑

mido返回的完整端口名为f_midi:f_midi 24:0,仅填写f_midi可能出现匹配失败问题,需使用完整端口名操作:

  • 修改代码中打开端口的逻辑:
    # 输出端口
    port = mido.open_output('f_midi:f_midi 24:0')
    # 输入端口
    port = mido.open_input('f_midi:f_midi 24:0')
    
  • 命令行测试时也使用完整端口名:aplaymidi -p "f_midi:f_midi 24:0" myMidiTune.mid

2.2 硬件链路校验

  • 确认MIDI线接线方向正确:扩展板的MIDI OUT接口接数字钢琴的MIDI IN接口,扩展板的MIDI IN接口接数字钢琴的MIDI OUT接口,接反会完全无信号。
  • 确认扩展板和树莓派GPIO引脚连接牢固,无虚焊、松动问题。
  • 确认数字钢琴的MIDI接收功能已开启,通道设置和测试用MIDI文件的通道匹配。

2.3 底层链路测试

跳过应用层代码直接发送测试MIDI指令,验证硬件链路是否正常:

  • 发送中央C按下指令:amidi -p hw:2,0 -S '90 3C 7F'
  • 发送中央C松开指令:amidi -p hw:2,0 -S '80 3C 00'
  • 若此时钢琴有响应,说明硬件链路正常,问题出在应用层代码或mido配置;若无响应,执行lsmod | grep f_midi确认MIDI驱动模块已正常加载,未加载则按照配置指南重新加载模块。

2.4 代码逻辑修正

输入测试代码中使用的iter_pending()仅会读取当前已存在的待处理消息,不会阻塞等待新消息,无预存消息时自然不会进入处理逻辑,可修改为阻塞读取模式:

# 替换原有for msg in port.iter_pending()逻辑
for msg in port:
    try:
        print(msg)
        # 原有消息处理逻辑放在此处即可
    except AttributeError as error:
        print("Error excepted")
        pass
  • 额外验证:确认测试用的MIDI文件无损坏,可先在其他设备上播放验证有效性。

内容的提问来源于stack exchange,提问作者acroscene

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 03:45:02