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

Chrome发送MIDI消息至Reaper的Faust插件失效问题咨询

问题排查与修复方案

你要发送的MIDI消息本身是正确的,[0xB1, 11, 10]确实匹配你需要的1号通道CC11、值为10的目标消息,符合需求。但代码和配置层面存在多个问题导致无法生效,具体如下:

  • 端口ID硬编码错误
    Web MIDI API的端口ID是浏览器运行时随机生成的标识,不同设备、不同浏览器启动实例的端口ID完全不同,你写死的那串ID几乎不可能匹配你本地的MidiThrough端口0。正确的做法是先遍历所有可用输出端口,匹配名称找到目标端口再调用。
    你可以先运行以下代码查看本地所有MIDI输出端口的名称和ID:
navigator.requestMIDIAccess()
  .then(access => {
    for (const output of access.outputs.values()) {
      console.log(`端口ID:${output.id},端口名称:${output.name}`)
    }
  })

找到你MidiThrough端口0对应的ID替换你的newPort值,或者直接在代码里按名称匹配避免每次手动改ID:

const targetPortName = "MidiThrough 端口0" // 替换成你打印出来的实际端口名称
const output = Array.from(mAccess.outputs.values()).find(p => p.name.includes(targetPortName))
  • 缺少错误捕获逻辑
    你目前的代码只写了请求MIDI权限成功的回调,没有处理权限被拒绝、浏览器不支持Web MIDI、端口不存在的异常情况,根本不知道请求环节哪里出了问题。需要补充catch逻辑捕获错误:
navigator.requestMIDIAccess()
  .then(function(access) {
    midiSend(access, 20, 64, 64);
  })
  .catch(err => console.error("MIDI访问失败:", err))

另外注意Chrome仅在HTTPS环境或者localhost本地调试环境下允许调用Web MIDI API,非安全环境下API会被直接禁用。

  • Reaper侧配置缺失
    就算浏览器成功发出了MIDI消息,也需要Reaper对应配置才会转发给插件:
  1. 打开Reaper的MIDI设置,确认MidiThrough端口0的输入已被启用
  2. 选中Faust插件所在的轨道,将轨道的MIDI输入源设置为MidiThrough端口0
  3. 开启轨道的录音准备(Arm)或者MIDI监听开关,否则Reaper不会把收到的MIDI消息转发给轨道上的插件
  • 可选调试步骤
    如果还是无法生效,可以先用第三方MIDI监控工具(Windows用MIDI-OX,Mac用MIDI Monitor)接收MidiThrough端口的消息,确认浏览器是否成功发出了消息,先排除前端问题再排查Reaper和插件的问题。

另外你代码存在冗余逻辑:定义的midiSend函数接收了x、y、z三个参数,但实际没有用到,不影响当前固定消息发送,后续要动态传参可以修改对应逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:06:03