自计算机时代开始以来,机器就为音乐家提供了支持。 早在1951年,曼彻斯特大学就可以在Ferranti Mark 1上录制《 拯救上帝》 。 但是直到32年后的1983年MIDI标准诞生。 尽管有很多局限性和其他竞争技术(如OpenSound Control)的出现,但经过30多年的发展,它仍然是占主导地位的音乐创作工具。
深度迷笛
由于MIDI规范非常广泛,并且可以在音乐设备和数字音频工作站(DAW)之间实现非常精细的通信,因此我们将仅使用其功能的一小部分进行演奏。 使用MIDI和音频API,我们将生成简单的振荡器并将其连接到我们的设备。 如果您没有该设备,则仍然可以尝试该示例-最后一个片段中的我们的振荡器可以自己播放俄罗斯方块主题!
- 从雪崩的现场回报中学到的教训–本·卡杜(Ben Cardew)–中
- 卡罗尔·巴雷特(Carol Barrett)加拿大的9条成为更好的电台个性的秘诀
- 2018年最佳
- 音乐是有效参与客户的机会
- 谁他妈的听心情播放列表? (第2部分,共3部分)
首先,您需要知道的是,当您在启用MIDI的设备上播放音符时,它会向接收方发送一条消息,其中包含键的标识符,力度(击键的强度)以及有关状态的信息(即按下,按下)。
连接到真实的MIDI设备
自2015年3月起,JavaScript正式支持MIDI标准。 它包括对输入和输出MIDI设备的访问,挂钩的可用性以及用于接收MIDI命令的EventEmiter。
为了找到可用的设备,我们需要调用navigator.requestMidiAccess()
。 该方法返回一个将解析为MIDIAccess对象的Promise。 我们可以轻松访问其inputs
属性。 MIDIAccess还提供了onstatechange
挂钩,每当新设备与我们的系统连接或断开连接时,该挂钩便会触发。 如果没有可用的MIDI设备,您仍然可以使用虚拟MIDI设备测试演示:我已经在MacOS上使用IAC设备对其进行了设置:

m是我们的MIDI编号,f是结果频率。
使用以下等式,我们可以使用JavaScript振荡器轻松生成声音:

我们的OscillatorNode具有type
属性,可以将其设置为多种模式,包括自定义模式。 以下示例显示了简单振荡器类型之间的区别: