npm 包 midi-bricks 使用教程

阅读时长 4 分钟读完

在前端开发中,我们常常需要使用 MIDI 音乐作为交互效果或背景音乐。但是在 HTML5 中,没有直接支持 MIDI 处理的 API。不过,好在有 npm 包 midi-bricks,它可以用 JavaScript 来处理 MIDI 事件,让我们可以在 Web 应用中方便地使用 MIDI 音乐。

安装

首先,我们需要使用 npm 安装 midi-bricks:

使用

安装后,我们就可以在代码中使用 midi-bricks 了。我们来看一个简单的例子:使用 MIDI 音乐播放一段乐器试音。

-- -------------------- ---- -------
------ - ------- ---------- - ---- --------------

----- ------ - --- ---------
----- ---------- - --- --------------------
----- ----- - -
  - ----- ------- --------- --- --
  - ----- ------- --------- --- --
  - ----- ------- --------- --- --
  - ----- ------- --------- --- --
  - ----- ------- --------- --- --
  - ----- ------- --------- --- --
  - ----- ------- --------- --- --
  - ----- ------- --------- --- --
--
---------------------------------
-----------------------
--------------

以上代码首先创建了一个 Player 实例,然后创建了一个 Instrument 实例用于演奏钢琴声音。接着,定义了一组音符信息,每个音符包含音高信息和持续时间信息。最后,把 Instrument 实例和音符信息加入 Player 实例,并播放乐曲。

进一步学习

midi-bricks 提供了很多 API,我们可以通过官方文档深入了解,从而使用更多更复杂的音乐效果。这里仅仅列举一些常用 API:

Player

  • addInstrument(instrument: Instrument): void:新增一个乐器。
  • addTrack(notes: Note[], channel?: number): void:新增一组音符,可以指定乐器通道。
  • play(time?: number): Promise<number>:开始播放乐曲,返回 Promise 对象。
  • pause(time?: number): Promise<number>:暂停播放乐曲,返回 Promise 对象。
  • stop(time?: number): Promise<number>:停止播放乐曲,返回 Promise 对象。
  • currentTime(): number:返回当前播放时间。

Instrument

每个乐器有一些特殊属性和方法,这里以 Piano 类型为例。

  • setVolume(volume: number): void:设置音量。
  • setChannel(channel: number): void:设置乐器通道。
  • setBank(bank: number): void:设置音色库。
  • setProgram(program: number): void:设置音色。
  • noteOn(notes: string[], velocity: number, time?: number): void:按下某些键,触发一组音符,可以指定时间。
  • noteOff(notes: string[], time?: number): void:松开某些键,停止一组音符,可以指定时间。

Note

  • keys: string[]:音符的键数组。
  • duration: string:音符的持续时间。
  • time?: number:音符开始的时间。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/112672