MIDI再生
MIDIデータをオーディオトラックと一緒に再生することで、Udonワールド内のあらゆるものを制御できます。すぐに始めたい場合は、サンプルシーンを参照してください。
アセット: MidiFile と AudioClip
拡張子が .mid のファイルは MIDI アセットとして処理されます。独自の MIDI ファイルやオーディオファイルを使用する手順は以下の通りです。
- プロジェクトの Assets フォルダ内にファイルをドラッグ&ドロップします。MIDI ファイルの拡張子は .mid である必要があります。オーディオファイルは type supported by Unity (.aif, .wav, .mp3, .ogg) に対応しています。
- MIDI ファイルを選択し、その AudioClip に対応するオーディオファイルを割り当てます。

- MIDI ファイルの BPM を正しく設定することが不可欠です。データとオーディオのタイミングが合っていないように見える場合は、これが原因である可能性が高いです。「Override Bpm」をオンにして正しい値を入力することで、BPM を上書きできます。可能であれば、MIDI ファイル自体を編集して正しい BPM を設定することをお勧めします。
コンポーネント: VRCMidiPlayer

これはMIDI再生の核となるコンポーネントです。Audio Sourceと同様の仕組みで動作しますが、Midi Assetを使用する点が異なります。このコンポーネントは、MIDIの Note On および Note Off イベントを、指定したすべての UdonBehaviour に送信します。
インスペクターの項目
Midi File
| 名前 | 説明 |
|---|---|
| Midi File | トリガーしたいSMF形式のMIDIファイル。 |
| Audio Source | MIDIデータに対応するオーディオクリップが設定された AudioSource コンポーネント。 |
| Target Behaviours | MIDIの Note On および Note Off イベントを受け取る UdonBehaviour の配列。 |
| Display Debug Blocks | 有効にすると、VRCMidiPlayer を選択している間、UnityエディターのSceneビューに現在のMIDIファイルの全ノートが表示されます。データの内容を素早く確認するのに便利です。 |
メソッド
| 名前 | 説明 |
|---|---|
| Play() | MIDIイベントと Audio Source の再生を開始します。 |
| Stop() | MIDIイベントと Audio Source の再生を停止します。 |
プロパティ
| 名前 | 説明 |
|---|---|
float time |
MIDIとオーディオソースの両方の現在時刻を取得および設定します。 |
MidiData midiData |
現在のMIDIトラックに関する全データを含む MidiData オブジェクトを取得します。再生前のセットアップなどに使用できます。 |
例: MidiPlaybackScene
Example Centralには シンプルなMIDI再生のサンプル が含まれています。メニューバーの VRChat SDK > Samples > MidiPlayback から読み込むことができます。
Class: MidiData
VRCMidiPlayer から MIDI データを取得する際に得られるデータ形式です。すべてのトラックの配列と BPM を保持しています。
| 型 | 名前 | 説明 |
|---|---|---|
MidiTrack[] |
Tracks | ファイル内の MidiTrack の配列です。 |
byte |
Bpm | トラックの BPM を表します。 |
Class: MidiTrack
このクラスは単に MidiBlock の配列をラップするもので、トラック内で検出されたノート(音程)とベロシティ(強弱)の範囲に関する便利な参照を提供します。
| Type | Name | Description |
|---|---|---|
MidiBlock[] |
Blocks | トラック内の MidiBlock の配列。 |
byte |
minNote | トラック内で演奏された最も低いノート。 |
byte |
maxNote | トラック内で演奏された最も高いノート。 |
byte |
minVelocity | トラック内で演奏された最も低いベロシティ(0を除く)。 |
byte |
maxVelocity | トラック内で演奏された最も高いベロシティ。 |
Class: MidiBlock
MidiBlockは、Midi Noteイベントの開始(On)から終了(Off)までの一連の情報と、いくつかの便利なメタデータを表します。
| 型 | 名前 | 説明 |
|---|---|---|
byte |
Note | 演奏されたノートを示す0〜127の数値。 |
byte |
Velocity | 演奏されたノートのベロシティ(強さ)を示す0〜127の数値。 |
byte |
Channel | ノートが演奏されたチャンネルを示す1〜16の数値。 |
float |
StartTimeMs | Note Onイベントが開始するミリ秒単位の開始時間。 |
float |
EndTimeMs | Note Offイベントが発生するミリ秒単位の終了時間。 |
float |
StartTimeSec | Note Onイベントが開始する秒単位の開始時間。 |
float |
EndTimeSec | Note Offイベントが発生する秒単位の終了時間。 |
float |
LengthSec | Note OnからNote Offまでのイベント全体の長さ(秒単位)。 |
最終更新: