Unreal Engine の MIDI

MIDI データをプロジェクトへストリーミングする方法の概要です。

Windows
MacOS
Linux

MIDI Device Support

The MIDI Device Support plugin

MIDI Device Support プラグインにより、MIDI (Musical Instrument Digital Interface) プロトコル メッセージを送受信する機能が追加されます。このプラグインは、主に Unreal Engine と MIDI キーボードなどの外部ハードウェアとの間の通信に使用されます。ただし、MIDI はデータ プロトコルのため、ユーザーはメッセージから解析されたデータを使用してオーディオに関連しないパラメータを制御することもできます。

現在、Unreal はストリーミングされた MIDI データのみをサポートしています。Reading MIDI ファイルはサポートされていません。

MIDI とは何ですか?

MIDI とは、MIDI メッセージを使用して、さまざまなオーディオ ハードウェア デバイス間で通信するために設計されたデータ プロトコルです。MIDI メッセージはメッセージのタイプを含むバイトから始まり (「ステータス」バイト)、次にデータ バイトが続きます。

たとえば、最も一般的な MIDI メッセージの 1 つは「Note On」メッセージです。これは、Note On メッセージであることを示すとともに対象のチャンネル (0 から 15 の値) と通信するステータス バイト、次にピッチ データのバイト、その後に速度データのバイトが続く形式で構成されています。各データ バイトの大部分のビットは、それがデータ バイトであることを示す目的で使用されているため、ピッチ データと速度データの両方に含めることができるのは、0 から 127 の値のみになります。

また、MIDI プロトコルは、0 から 127 のピッチ値を Hz などの単位に変換する方法など、データのバイトを解釈する方法も指定します。Unreal ではこのような方法で直接 MIDI データを変換しないため、ユーザーは MIDI メッセージを利用してオーディオ以外の挙動を制御することができます。Sound Utilities プラグインには、このようなデータ変換に使用できる関数がいくつか含まれています。

The Sound Utilities plugin

ワークフロー

MIDI 出力

Unreal Engine 4 で MIDI 出力 機能を取得するには、以下の手順を行います。

  1. MIDI 信号の送信先となるデバイスの ID を検索します。これを行うには、次のいずれかの方法を実行します。

    • デフォルトの MIDI デバイスを選択する。

    • 利用できるすべての MIDI デバイスを反復処理する。

    • 特定の MIDI デバイスを名前で検索する。

    関連する ブループリント 関数は Get Default MIDI Output Device IDFind MIDI Devices、および Get MIDI Output Device ID by Name です。

  2. ブループリント関数の Create MIDIDevice Output Controller を使用して MIDI Output UObject を作成します。この関数は ID を入力として取得し、MIDI 出力への参照を返すか、MIDI デバイスへの接続に失敗すると null 参照を返します。

    MIDI デバイス出力コントローラーを確実に変数にキャッシュすることが重要です。キャッシュしていない場合、MIDI コントローラーで予期しないガーベジ コレクションが行われるリスクがあります。

  3. MIDI コマンドを送信します。これは、MIDIDevice Output Controller で機能する MIDI デバイス マネージャー の関数になります。一般的に、最も多く使用されるのは、Send MIDINote OnSend MIDINote OffMIDIPitch Bend です。

  4. MIDI プロトコルの経験が豊富な場合は、Send MIDIEvent を使用して生の MIDI イベント データを作成することもできます。

MIDI 出力の基本的なブループリント実装は次の図のようになりますが、送信する MIDI データについては、より複雑な手順となる可能性があります。

A basic MIDI Output Blueprint

MIDI 入力

MIDI 入力 を設定するには、以下のワークフローに従います。

  1. MIDI Input Device セットアップを変数にセットアップおよびキャッシュします。これは上述の MIDI 出力を設定する手順の最初の 2 つとほぼ同じですが、関数の名前の一部が Output ではなく Input になります。

  2. 選択する MIDI イベント のデリゲートに、 MIDI 入力デバイスで Assign To On MIDI Note On などのアクションを使用して登録します。

  3. これらの MIDI イベントの結果データを使用して、サウンドを再生するピッチや速度などのパラメータをプロジェクト内で制御します。Sound Utilities プラグインの一部の関数は MIDI の [0 - 127] の積分データ ポイントを、周波数やボリューム スカラーなどのオーディオ エンジンでより読み取りやすい単位に変換するのに役立ちます。

  4. より上級のユーザーには、Control Change メッセージなどの MIDI データを使用したり、複数の オーディオ コンポーネント を利用してアクティブな音を追跡することで多声音楽システムを作成したりすることをお勧めします。

基本の MIDI 入力システム ブループリントの実装は次の図のようになりますが、受信 MIDI データを使用する場合は、より複雑になる可能性があります。

A basic MIDI Input Blueprint

タグ
Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
閉じる