MIDI Plugin for Mobile and Desktop (Unity Asset Store)
ドキュメント(購入前でも閲覧可):
マニュアル全文は
supports リポジトリ
で公開しています。入口は
documents/index.md、
または README にある結合版 Markdown / PDF(英語 / 日本語 / 中文)です。
購入後はパッケージ内
Assets/MIDI/documents/
にも同内容が入ります。インストール済みバージョンに合った方を正としてください。本記事は紹介用です。
クイックリンク
Unity 向けプラグインをアセットストアで公開しています。製品名は MIDI Plugin for Mobile and Desktop です。
Unity プロジェクトに MIDI の送受信、SMF の再生・録音、各種トランスポートを追加します。 対象は モバイル・デスクトップ・Unity Editor・WebGL などです。
この記事では概要を紹介します。プラットフォーム対応表や API の詳細は 公開ドキュメント (購入後はパッケージ同梱の同内容)を参照してください。
このプラグインができること / できないこと
| できること | できないこと(別途必要) |
|---|---|
| MIDI 入出力・メッセージ配送 | 内蔵シンセ / SoundFont 再生そのもの |
| SMF / シーケンサ周辺 | DAW 相当のオーディオエンジン代替 |
| Maestro MPTK との任意連携で発音 | MPTK の購入必須ではない(音は任意) |
Editor や実機で「音」を出したい場合は、例えば Maestro MIDI Player Tool Kit など音源と組み合わせるか、Note On を受け取って自前のオーディオを鳴らしてください。
対応プラットフォーム(要約)
詳細・制限は公開ドキュメントの platforms.md (日本語: i18n/ja/platforms.md) を参照してください。
| 区分 | 例 |
|---|---|
| モバイル | iOS、Android(Meta Quest 含む) |
| デスクトップ / Editor | Windows、macOS、Linux — Unity Editor の Play Mode 対応 |
| Web | WebGL(ブラウザの WebMIDI が許す範囲で USB / BLE) |
| トランスポート | USB MIDI、Bluetooth MIDI (BLE)、Network / RTP-MIDI、Nearby、アプリ間 MIDI(プラットフォーム依存) |
| プロトコル | MIDI 1.0、MIDI 2.0 / UMP(プラットフォーム依存。ドキュメント参照) |
過去の記述について: 本記事の初版(2021年)時点ではモバイル向けビルドが中心で、 Unity Editor では動作しませんと書いていました。 v1.3.0 以降は Standalone および Unity Editor(Windows / macOS / Linux) に対応しています。 「Editor では動かない」という断定は現行版には当てはまりません。
インストール
- Unity Asset Store からインストールします。
- サンプルは
Assets/MIDI/Samples/Scenes/(まずはMidiSampleScene.unity、 または Window → MIDI → Samples)。 - Editor での確認: Play Mode に入り、Window → MIDI → Monitor でメッセージを監視できます。
- 実機: iOS / Android / Standalone / WebGL / UWP などへ切り替え、ビルドして実デバイスで USB / BLE を確認します。
購入前でも、GitHub 上の スタートガイド と プラットフォーム対応表 を読めます。
推奨 Unity バージョンは Asset Store の表記に従ってください(公開パッケージはおおむね 2022.3 系)。
MidiSampleScene
- 左: MIDI デバイス選択と送信
- 右: 受信メッセージ表示
初期化は MidiManager.InitializeMidi 周辺にあります。
接続・切断は IMidiDeviceEventHandler、
デバイス名は MidiManager.GetDeviceName
(名前未取得時は空のことがあります)。
MIDI デバイスとの接続
Android
- USB / Bluetooth MIDI は検出・接続され、リストに表示されます(権限・Companion Device はドキュメント参照)。
iOS / macOS
- Network MIDI や USB / BLE は Core MIDI の挙動に従います。BLE はスキャン時に選択 UI が出ます。
Windows / Linux / WebGL
- 対応・非対応(例: Windows の BLE MIDI は未対応)は platforms.md を参照してください。
MIDI イベントの送信
MidiManager.Instance.SendMidiNoteOn(
"deviceId",
0 /*group*/,
0 /*channel*/,
60 /*note*/,
127 /*velocity*/
);
Fluent API:
using jp.kshoji.unity.midi.util;
MidiSend.ToFirstOutput().Channel(0).NoteOn(60, 127);
MIDI イベントの受信
IMidiNoteOnEventHandler
などを実装した
MonoBehaviour
を
MidiManager.Instance.RegisterEventHandleObject(gameObject)
で登録し、
InitializeMidi
を呼び出します。全文は
getting-started.md(日本語)
を参照してください(パッケージ同梱版と同一内容です)。
Android ベースの VR(Meta Quest)
Oculus Quest / Meta Quest など Android ベースの VR でも動作します。 VR オブジェクトと実世界の MIDI 機器を相互に反応させられます。 Quest の USB / BLE は ビルド後処理 (GameActivity / Companion Device 含む)の手順に従ってください。
オープンソース
パッケージの一部はオープンソースです。不具合報告・機能要望は supports リポジトリ へどうぞ。
例:
- Android Bluetooth MIDI: https://github.com/kshoji/BLE-MIDI-for-Android
- Android USB MIDI: https://github.com/kshoji/USB-MIDI-Driver
- iOS 向け Unity MIDI プラグイン: https://github.com/kshoji/Unity-MIDI-Plugin-iOS
(一覧は contacts.md)
