Qemelly(けめる)のプログラム備忘録

Unity / AtCoderについて書きます

【Unity】MIDIデータをUnityに取り込んでピアノロールを表示する - 準備編

動機

「Unityで音を表現しよう計画」がマイブームなので、その前段階として行った、ピアノロールのUnity上での生成方法について紹介します。

 

今回は準備編ということで、MIDIの基本的知識の説明をした後、MIDIファイル解析用のパッケージのインストールをしていきます。

 

MIDIとは?

MIDIMusical Instrument Digital Interface)とは音の「高さ・長さ・大きさ・変化」などを記録したバイナリデータになります。実際には、この他にBPM等の情報も含まれています。

 

また、上図のようにMIDIを可視化したものが有名ですが、これはピアノロールと言います。DTMをしている人にはなじみ深いでしょう。

 

大抵の作曲ソフトであれば、ピアノロールからMIDIを出力することができます(拡張子は.mid)。これを利用してUnity上にMIDIを取り込み、ピアノロールにしようというのが本記事の目標です。

 


この.midファイルですが、先述の通りバイナリデータになっているため、C#にて1から解析するのは非常に面倒です。そのため、有志の方のライブラリを利用させていただき、MIDIをデータとして取り込むところまでスキップしたいと思います。

 

パッケージ(package)のインストール

今回はkeijiro氏のMidiAnimationTrackというパッケージを利用します。MIDIの信号をアニメーションのトリガーにできるようにするもので、MVや音ゲー制作に生かせる優れものです。

github.com

 

参考動画↓

www.youtube.com

 

今回は本来の使い方をせず、.midの解析部分のみを流用させていただきますが、MIDIでアニメーション制御をするという手法も実用的かつ楽しそうなので、やりたくなったらやろうかと思います。

 

インストール手順

MidiAnimationTrackはストアから入手できるようなパッケージとは異なる(いわゆる野良パッケージというそう)ので、Package Managerに認識してもらう設定をする必要があります。

 

Unity上で「Edit → Project Settings → Package Manager」と進みます。Scoped Registriesにて新たにレジストリを追加することができるので、各項目について、


  "name": Keijiro
  "url": https://registry.npmjs.com
  "scopes": jp.keijiro

と入力。そのままApplyを押し、Project Settingsは完了です。

 

これでPackage Managerに認識されているはずなので、Unity上から「Window → Package Manager」に移動します。

ここで左上の「Packages:」をクリック。「My Registries」に変更します。

すると「MIDI Animation Track」を含むkeijiro氏のパッケージ群がズラーーっと表示されるので、MIDIAnimationTrackをここでInstallします。

 

Project下にPackages/MIDIAnimationTrackがあれば、準備編は完了となります。


次回は実際に.midを解析してノーツを生成していきたいと思います。