npm 包 midichlorian 使用教程

阅读时长 7 分钟读完

midichlorian 是一款用于解析 MIDI 文件的 npm 包,可以帮助前端开发者快速读取和分析 MIDI 文件,并将其转化为易于使用的音乐数据格式。本篇文章将详细介绍 midichlorian 的安装方法以及基本使用方法,并提供代码示例和相关学习资源,希望可以对需要使用 midichlorian 的开发者提供帮助。

安装

在使用 midichlorian 前,需要先安装 npm 包。在终端中输入以下命令即可完成安装:

使用示例

下面是一个简单的示例,我们将读取一个 MIDI 文件并将其转化为一个可用的 JavaScript 对象。

首先,我们需要引入 midichlorian:

然后,我们可以使用 midichlorian 的 load 方法读取一份 MIDI 文件,并将其解析成一个 MusicData 类型的数据:

在使用 midichlorian 处理 MIDI 文件时,我们通常需要使用 MusicData 类型的数据。MusicData 数据包含了 MIDI 文件中的各种信息,包括音轨、事件、时间码等。在上述示例代码中,我们将 MusicData 数据输出到控制台,以便于查看解析结果。

我们可以通过 musicData 对象获取 MIDI 文件的具体信息和数据。比如,我们可以通过以下代码获取 MIDI 文件的播放速度:

其他可用的方法和属性还包括 getTracks()、getTicksPerBeat()、getDelta() 等,可以根据需求参考 API 文档使用。

深度解析

MusicData 类型

MusicData 类型是 midichlorian 中最核心的数据类型之一。它包含了 MIDI 文件中所有的音轨(Track)和事件(Event)信息,包括时间码、乐器、音符、控制器等。在 midichlorian 中,MusicData 类型通常是由 midichlorian.load() 方法所返回的结果。

可以通过以下代码对 MusicData 类型进行创建和使用:

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

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

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

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

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

    ----- ----- - ----------------------------
    -------------------
  --
  ------------ -- -
    -----------------
  ---
展开代码

在上述示例代码中,我们首先通过 midichlorian.load() 方法读取了一个 MIDI 文件,并将其解析成 MusicData 类型的数据。然后,我们通过 getTracks() 方法获取了所有的音轨,通过 getEvents() 方法获取了每个音轨中所有的事件。最后,我们通过 event 对象获取了事件的类型(type)、通道(channel)、时间戳(tick)、数据(data)等具体信息。其中,tempo 代表 MIDI 文件的播放速度。

MidiFile 类型

MidiFile 类型是 midichlorian 中另一个核心的数据类型。它是 MusicData 类型的一个子集,描述一个 MIDI 文件的头部信息。它包含了元数据(metadata,如 MIDI 文件的格式、轨道数、时间码等)、第一个时间戳(first tick)和播放速度(tempo)等信息。此外,MidiFile 类型还提供了一些方法,如 getHeader() 和 getTrackCount()。

下面是一个调用 MidiFile 类型的示例代码:

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

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

    ------------------- -- ------- - - ------------
    ------------------- - - -------
  --
  ------------ -- -
    -----------------
  ---
展开代码

在上述示例代码中,我们首先通过 midichlorian.load() 方法读取了一个 MIDI 文件,并将其解析成 MusicData 类型的数据。然后,我们通过 MusicData 对象中的 header 属性获取了 MidiFile 类型的对象,通过 getTrackCount() 和 getTempo() 方法获取了音轨数和播放速度信息。

API

midichlorian 中还提供了其他许多有用的 API,例如:

  • MusicData 类型:

    • getTracks():获取 MusicData 中的所有音轨;
    • getTicksPerBeat():获取 MIDI 文件的计时单位;
    • getTicks():获取 MusicData 中指定的音轨所包含的所有事件;
    • getHeader():获取 MIDI 文件的头部信息;
  • Track 类型:

    • getName():获取音轨的名称;
    • setName():设置音轨的名称;
    • getChannel():获取 MIDI 通道号;
    • getEvents():获取音轨中的所有事件;
  • Event 类型:

    • getType():获取事件的类型(MIDI 消息、元消息等);
    • getChannel():获取 MIDI 通道号;
    • getTick():获取事件发生的时间戳;
    • getData():获取事件的二进制数据;

查看 midichlorian API 获取更多信息。

参考文献

本文所使用的代码示例参考了 midichlorian 的 GitHub 仓库 https://github.com/nfroidure/midichlorian 中的示例,并参考了以下资源:

以上文献提供了更加详细的 MIDI 文件格式和协议的解释,可以作为 midichlorian 的进一步学习和开发的参考。

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

纠错
反馈

纠错反馈