LoginSignup
24
2

Unityで音楽ゲームを作る際に、ノーツの生成タイミングをMIDIファイルから取得したのですが、色々と困ったため情報をまとめておきます。

はじめに

UnityではMIDIファイルは標準でサポートしていないため、 MIDI Animation Track for Unity Timelineというimporterを用いてMIDIファイルから情報を受け取っていきます。keijuroさんありがとうございます。

また今回の実装環境は以下になります。

  • macOS Venture v13.4
  • Unity 2021.3.23f1

importerのシステム要件とGitHubリポジトリは以下になります。

  • Unity 2019.1以降

MIDI Animation Trackの導入

1.新規で空のプロジェクトを作成

Unityのバージョンは前述したとおりUnity 2021.3.23f1です。
3dでも2dでもどちらでもいいです。
また既存のプロジェクトでも導入可能です。

2.manifest.jsonに書き込む

Packagesフォルダの中にあるmanifest.jsonに書き込んでいきます。
以下を追加することでimporterがnpmjsレジストリを介して配布されます。
リポジトリをダウンロードする必要はありません。

{
   "scopedRegistries": [
    {
      "name": "Keijiro",
      "url": "https://registry.npmjs.com",
      "scopes": [
        "jp.keijiro"
      ]
    }
  ],
  "dependencies": {
    "jp.keijiro.klak.timeline.midi": "1.0.5",
    ...
  }
} 

Package Managerを見てみるとMIDI Animation Trackが導入されているのがわかると思います。
mojikyo45_640-2.gif

MIDI Animation Trackを使ってみる

1.Timelineを作成する

ProjectビューのCreateメニューから「タイムライン」を選択すると、タイムラインアセットが作成されます。
またこのTimelineをSceneに追加してください。
mojikyo45_640-2.gif

2.MidiSignalReceiver.csの設定を行う

Scene内に空のオブジェクトを生成し、MidiSignalReceiver.csと実行したいC#のソースコードをアタッチしてください。
次にNoteOnEvent()の + を押しイベントを追加し、実行したいC#のソースコードをセットしてください。
最後に実行したい関数を選択してください。
以下のようになると思います。
mojikyo45_640-2.gif

3.Timelineの設定を行う

最後にTimelineにMIDIファイルと先ほど生成した空オブジェクトをセットしたら実装完了です。
mojikyo45_640-2.gif

結果

以下のようにMIDIファイルから実行することが可能になります。
MIDIファイルを変更したい場合は、MIDIファイルのみを置き換えれば大丈夫です。
画面収録_2023-07-08_13_40_00_AdobeExpress.gif

最後に

MIDI Animation Track for Unity Timelineの導入から簡単な実装までをまとめました。
音楽ゲームを作る際や、音楽に合わせた処理を実装したいときに重宝するなと感じました。

24
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
2