VRChat 非公式日本語ドキュメント

MIDI再生

MIDIデータをオーディオトラックと一緒に再生することで、Udonワールド内のあらゆるものを制御できます。すぐに始めたい場合は、サンプルシーンを参照してください。

アセット: MidiFile と AudioClip

拡張子が .mid のファイルは MIDI アセットとして処理されます。独自の MIDI ファイルやオーディオファイルを使用する手順は以下の通りです。

  1. プロジェクトの Assets フォルダ内にファイルをドラッグ&ドロップします。MIDI ファイルの拡張子は .mid である必要があります。オーディオファイルは type supported by Unity (.aif, .wav, .mp3, .ogg) に対応しています。
  2. MIDI ファイルを選択し、その AudioClip に対応するオーディオファイルを割り当てます。

image

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

コンポーネント: VRCMidiPlayer

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までのイベント全体の長さ(秒単位)。

最終更新: