在网页中发送 MIDI 信息

Posted

技术标签:

【中文标题】在网页中发送 MIDI 信息【英文标题】:Sending MIDI messages in a Web page 【发布时间】:2009-05-30 03:51:34 【问题描述】:

如何在网页中播放单个 MIDI 音符?

我知道两种方法:

    编写一个 ActiveX 控件。然后它只适用于Windows。很久以前写过ActiveX控件,现在没人喜欢安装了。

    编写一个 Java 小程序。如果用户已经安装了 Java,但许多用户禁用了小程序,这没关系。我就是这样做的,您可以在 newfweiler.com 上看到结果——如果它恰好适用于您的特定设置。您至少需要 Java 5,尽管我想如果必须的话,我可以用 Java 1.2 重写它。 “实时音序器”和“Java 声音合成器”对我不起作用;我认为您必须安装波表或其他东西才能使其正常工作。

大多数用户都安装了 Flash,但我查看了 Flash 和 Flex 文档并没有看到任何与 javax.sound.midi 等效的内容。

有几种方法可以在网页中播放 MIDI 文件,您可以找到“javascript Pianos”,只要您按下一个键,它就会播放一个单音符的 MIDI 文件。您不能同时弹奏多个音符或按住琴键长音符。

我正在尝试做的是等效于 javax.sound.midi.Receiver.send(midiMsg, -1) 只使用大多数人通常在机器上安装的东西。

【问题讨论】:

【参考方案1】:

使用 Web Audio API 播放声音和 .mid 文件。请参阅https://surikov.github.io/webaudiofont/examples/midiplayer.html 的 MIDI 播放器示例

使用 Web MIDI API(Chrome 支持)来监听 MIDI 键盘。参见https://surikov.github.io/webaudiofont/examples/midikey.html的示例

【讨论】:

终于! 9 年后。【参考方案2】:

Java 仍然可能是您最好的选择,即使有少数用户禁用它。

我使用 NoScript,我可以将网站列入白名单。我想说,如果您提供引人入胜的内容,大多数用户可能也会这样做。

【讨论】:

【参考方案3】:

找到以下内容(翻译自意大利语)。我会说Flash是要走的路。如果您想成为贫民区,您只需获取 88 个左右的钢琴样本,然后按照时间线播放它们。

http://translate.google.com/translate?prev=hp&hl=en&js=n&u=http%3A%2F%2Fflash.html.it%2Fguide%2Flezione%2F2936%2Fmidi-player%2F&sl=it&tl=en&history_state0=

【讨论】:

【参考方案4】:

https://jazz-soft.net/demo/VirtualPiano.html 有一个在线 MIDI 钢琴的例子 它使用 Web Audio API,不需要任何特殊的软件,但是,如果启用 Web MIDI,它具有更多功能。页面中包含的代码。

【讨论】:

您能否提供一个简短的示例来说明该页面如何使用 Web Audio API?如果链接更改或将来不可用,这将有所帮助。 JZZ.synth.Tiny().noteOn(0, 'C5', 127).wait(500).noteOff(0, 'C5');见github.com/jazz-soft/JZZ-synth-Tiny

以上是关于在网页中发送 MIDI 信息的主要内容,如果未能解决你的问题,请参考以下文章

如何在不重新发送信息的情况下刷新网页?

发送键码而不是 midi,寻找简单的方法在 arduino USB 电缆上以节奏模式发送该信息

在 C# 中将 MIDI 消息发送到 DAW

怎么获取网页上链接按钮点击事件发送的信息?

通过虚拟输出使用 AKSequencer 发送 midi

在 Android 中从钢琴中读取 MIDI 消息