Web Midi API和多个同步注释

时间:2018-09-24 21:05:30

标签: javascript google-chrome web midi

我现在正在发现带有连接的USB钢琴的Web midi API。 在this guide之后(并阅读the documentation),我了解到可以为事件“ onmidimessage”分配一个功能。

我的问题是,每个按下/释放的单个音符都会调用此函数,那么我应该如何处理同时按下的多个音符以弹奏和弦?

2 个答案:

答案 0 :(得分:0)

对于和弦,API零延迟一一发送音符。

只需立即开始播放声音即可。 请参见https://surikov.github.io/webaudiofont/examples/midikey.html

上的示例

答案 1 :(得分:-2)

您将需要查看MIDIMessageEventreceivedTime属性,并根据适合您的应用程序的粒度来对事件进行分组,以找出构成和弦的方式。此外,您还将获得释放键的MIDI事件。

我说“适合您的应用程序的粒度”的原因是:

考虑键盘演奏者敲弦;可能看起来像这样。

    time -------------------->

C   #-----------------------#
E    #---------------------#
G   #-------------------------#

而吉他手弹奏和弦(假设他们也弄湿了琴弦)可能看起来像

    time -------------------->

C   #-----------------------#
E        #-----------------#
G               #-----------#

在相同的时间范围内。