MIDIPlayer ver2.0

このページはVersion 2017.30f3 Personalを対象としています。

更新履歴

参考URL

概要

このページでは自作の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 LengthMIDIの長さ

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()ポーズから再開する

MIDI音源の導入

Windows 10でデフォルトで使用できるデバイスは「Microsoft GS Wavetable Synth」だけですが、 「VirtualMIDISynth」や 「MIDIMapper」などのソフトを導入することで、 他のデバイスも選択できるようになります。

戻る

inserted by FC2 system