讲师中心 微信公众号
AI工具推荐 视频效率加速

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

老杰君_8117

老杰君_8117

发布时间:2026-06-09 16:07:46

|

665人浏览过

|

来源于php中文网

原创

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://),后者绝对不行。

立即学习“前端免费学习笔记(深入)”;

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

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 调用,而在浏览器安全模型、设备驱动状态、以及那个只出现一次的权限弹窗——错过它,后面所有逻辑都是空转。

相关文章

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

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

下载

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

热门AI工具

更多
讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

相关专题

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

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

6655

2023.06.14

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

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

3712

2023.06.21

html网页制作
html网页制作

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

3370

2023.07.31

html空格
html空格

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

3399

2023.08.01

html是什么
html是什么

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

5039

2023.08.11

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

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

3341

2023.08.11

html转txt
html转txt

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

3149

2023.08.31

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

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

2748

2023.09.01

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

60

2026.10.22

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Swoole手册
Swoole手册

共0课时 | 0人学习

布尔教育HTTP协议视频教程
布尔教育HTTP协议视频教程

共10课时 | 4.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn