このページはVersion 2017.30f3 Personalを対象としています。
更新履歴
このページでは自作のMIDIPlayerコンポーネントについてまとめます。 このコンポーネントはWin32apiのmidiOut~系の関数を使って作りました。 作成に当たっては、参考URLのサイトが大変参考になりました。 このページでは下の画像のような、再生とデバイスの変更だけができるシンプルなプロジェクトを作ります。
上のリンクからダウンロードしたファイルは、 良識の範囲内で、自由に利用・改変・配布して構いません。
HierarchyビューでCreate Empty、MIDIとリネーム。
同じくHierarchyビューでCanvasを作成。その子としてButtonとDropdownを作成。ButtonのTextは「Play」に変更する。Dropdownのサイズは横に大きめにしておく。
Projectビューで「Assets」の下に「Resources」フォルダを作成する。 その中にMIDIファイルを拡張子「.bytes」に変更しインポートする。 適当なMIDIファイルがない場合、これを使ってください(Gustav HolstのThe Planetsを私が打ち込んだもの)。
「MIDIPlayer.cs」をAssetsフォルダにインポートしMIDIにアタッチする。 「UIController.cs」を同じくAssetsフォルダにインポートしCanvasにアタッチする。
MIDIPlayerの使い方は以下の通りです。
float Speed | 再生速度 |
bool Loop | ループフラグ |
double Volume | ボリューム |
bool isPlaying | 再生中かどうか |
float Time | 再生時間 |
float Length | MIDIの長さ |
string[] GetDeviceNames() | デバイス名の配列を取得する。 返却値=デバイス名の配列 |
void SetDevice(uint deviceID) | デバイスを設定する。 device ID=デバイスID(GetDeviceNamesの返却値の添え字) |
void PlayMIDI(string _fileName) | MIDIを再生する。 _fileName=ファイル名(「Resouces/」以下のパス) |
void StopMIDI() | MIDIを停止する。 |
void SeekMIDI(float SeekTime) | シークする。 SeekTime=シーク時間(秒) |
void PauseMIDI() | ポーズする |
void ResumeMIDI() | ポーズから再開する |
Windows 10でデフォルトで使用できるデバイスは「Microsoft GS Wavetable Synth」だけですが、 「VirtualMIDISynth」や 「MIDIMapper」などのソフトを導入することで、 他のデバイスも選択できるようになります。