怎么在 HTML 在线运行工具中利用 Web MIDI API 实现音频交互功能的调试

老杰君_8117

老杰君_8117

2026-06-09

665人浏览

原创

web midi api 在在线 html 工具中无法运行,因其要求安全上下文(https 或 localhost),而 jsfiddle、codepen 等沙盒 iframe 不满足条件;唯一可靠调试环境是本地 http://localhost:8080,需显式启用 sysex、手动处理权限及设备状态变更。

怎么在 html 在线运行工具中利用 web midi api 实现音频交互功能的调试

Web MIDI API 在在线 HTML 工具中根本跑不起来

直接告诉你结论:navigator.requestMIDIAccess() 在大多数在线 HTML 运行工具(如 JSFiddle、CodePen、JSBin、甚至部分 VS Code Live Server 本地预览)中会静默失败或返回 undefined,不是你代码写错了,是环境不满足前提条件。

原因很实在:Web MIDI API 要求页面必须运行在 安全上下文(secure context) 下——即 https:// 协议,或 localhost。而绝大多数在线编辑器的预览 iframe 是沙盒化的,协议为 about:blank 或非 localhost 的 http 域名,浏览器直接拒掉 MIDI 权限请求。

  • CodePen 预览页地址类似 https://cdpn.io/pen.../fullpage/?看起来是 https,但 iframe 的 sandbox 属性默认禁用 midi 特性,且父页面无法授权子 frame 访问 MIDI
  • JSFiddle 的 /show/ 页面虽走 https,但实际执行环境被隔离,navigator.requestMIDIAccess 返回 Promise 但 resolve 后 inputs 和 outputs 为空数组
  • 即使你加了 features="midi" 到 sandbox 属性,现代浏览器(Chrome ≥95、Edge ≥95)仍强制要求顶层文档显式启用,而在线工具不给你改这个权限的机会

能跑通 Web MIDI 的最小可行调试环境

别折腾在线工具了,本地起一个真正可控的环境,三步搞定:

  • 把 HTML 文件保存为 index.html,内容包含基础 MIDI 请求逻辑(比如调用 navigator.requestMIDIAccess({ sysex: true }))
  • 用命令行启动一个最简 HTTP 服务:npx http-server -c-1(-c-1 禁用缓存,避免 MIDI 设备列表不更新)
  • 浏览器打开 http://localhost:8080 —— 这就是唯一靠谱的调试入口。注意:必须是 localhost,不能是 127.0.0.1(某些系统 MIDI 权限策略对后者更严格)

如果仍失败,检查控制台是否报错 DOMException: Requesting MIDI access is not allowed in this context,那说明你没在 localhost 或用了文件协议(file://),后者绝对不行。

镝数图表
镝数图表

一款AI数据处理工具,主要用于简单好用的数据可视化工具,适合需要提升相关任务效率的用户。

下载

调试时最容易忽略的两个设备级细节

MIDI 设备连接状态和权限弹窗时机,比代码逻辑更容易卡住调试流程:

  • Chrome / Edge 在首次调用 navigator.requestMIDIAccess() 时才会触发权限弹窗;但如果你之前点过“拒绝”,它不会再次出现,得手动进 chrome://settings/content/midi 清除站点权限
  • USB MIDI 设备(比如 AKAI MPK Mini、Novation Launchkey)插拔后,MIDIAccess 实例不会自动刷新设备列表——你得重新调用 requestMIDIAccess(),或监听 statechange 事件(需先拿到 access 实例):
    access.onstatechange = e => { console.log(e.port.name, e.port.state); };
  • sysex: true 必须显式传入选项,否则即使设备支持 SysEx(如多数合成器),send() 方法也会静默失败,且无错误提示

验证 MIDI 输入是否真在工作:用最简回声逻辑

别一上来就做音符转音频,先确认输入通路畅通。以下代码可直接贴进本地 index.html,打开控制台看输出:

navigator.requestMIDIAccess({ sysex: true })
  .then(access => {
    access.inputs.forEach(input => {
      input.onmidimessage = e => {
        console.log('MIDI IN:', e.data[0].toString(16), e.data[1], e.data[2]);
      };
    });
  })
  .catch(err => console.error('MIDI init failed:', err));

敲击键盘或推旋钮时,如果看到类似 MIDI IN: 90 60 127(Note On)或 B0 7 127(CC#7),说明链路已通。注意:e.data 是 Uint8Array,不要用 e.data.toString() 直接打,会输出逗号分隔字符串而非十六进制值。

真正的难点不在 API 调用,而在浏览器安全模型、设备驱动状态、以及那个只出现一次的权限弹窗——错过它,后面所有逻辑都是空转。

大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!

相关文章

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
html版权符号
html版权符号

html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

6615

7

html在线编辑器
html在线编辑器

html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

2023.06.21

3672

4

html网页制作
html网页制作

html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.31

3350

5

html空格
html空格

html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.01

3359

5

html是什么
html是什么

HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

2023.08.11

5019

6

html字体大小怎么设置
html字体大小怎么设置

在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

2023.08.11

3301

3

html转txt
html转txt

html转txt的方法有使用文本编辑器、使用在线转换工具和使用Python编程。本专题为大家提供html转txt相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

3129

3

html文本框代码怎么写
html文本框代码怎么写

html文本框代码:1、单行文本框【<input type="text" style="height:..;width:..;" />】;2、多行文本框【textarea style=";height:;"></textare】。

2023.09.01

2728

6

HTML嵌入CSS样式的方法
HTML嵌入CSS样式的方法

HTML嵌入CSS样式的方法有内联样式、内部样式表和外部样式表。本专题为大家提供CSS样式相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.20

2828

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134万人学习