Roland の GS 音源(SC-55 / SC-88 / SC-88Pro / SC-8850 など)やYAMAHAのXG音源(MU2000やPLG100/150シリーズ拡張カードなど)を USB-MIDI インターフェースで接続すると、当時のデータを当時の音で鳴らせます。このアプリが本来想定している使い方です。
USB-MIDI インターフェースを Mac に挿し、その MIDI OUT を音源の MIDI IN へつなぎます。Retro MIDI Player の画面上部にある MIDI PORT A / MIDI PORT B の一覧に機器名が現れるので、それぞれに割り当ててください。iPhone/iPadの場合は給電付きUSB-HUBでないと、USB-MIDIハブが必要とする電力が供給できない or 足りない場合がありますのでご注意ください。(iPhoneは必須のようです。Macbookは自力で供給できるので必ずしもPD対応USB-Hubを通す必要はなさそうです。iPadは機種によりけりです)
iPhone + 給電USB-HUB+USB-MIDI-HUB
iPhone + 給電USB-HUB+USB-MIDI-HUB (2)
iPad + 給電USB-HUB+USB-MIDI-HUB
iPad + 給電USB-HUB+USB-MIDI-HUB
SC-88 のように MIDI 入力を2つ持つ機器では、Port A と Port B の両方をつなぐと32パートを同時に鳴らせます。16パートまでの曲であれば Port A だけで足ります。SC-55 のように入力が1つしかない機器では、Port A に実機を割り当て Port B には内蔵音源やユーザー定義音源を割り当てることで、32パートの曲でも後半のパートが無音になりません。
MIDI対応キーボードを編集モードで入力デバイスとして使う場合は、USB-MIDI INポートに繋げば利用可能となります。
SK-88Pro OUT → USB-MIDI-HUB → 給電USB-HUB
編集モード入力指定
なお、キーボードが無くても画面の鍵盤でのステップ入力や、CDEFGAB(ドレミファソラシド)的な指定でC5などオクターブ指定入りでダイレクトに入力することも可能です。和音化、コード進行指定、アルペジエーター、リズムプリセット指定、フィルインプリセットなど、あんまりリアルタイム入力が得意でない方でも入れられるようにしてます。(もちろんリアルタイム入力しても問題ありません)
MU2000のようにUSBで接続できたりUSB-MIDIハブからSC-88VLとSK-88Proを繋いで、6ポート出力キーボード1ポート入力のように割とたくさんの音源をMacbookやiPhone/iPad/Duoに繋げられます。すると、88マップは88、88Proマップは88Pro、XGやTG300BモードはMU2000のようなXG音源・・・などといちいち曲ごとにポート変更するのが面倒になるので、あらかじめそれ用の音源を設定して曲データ判別から再生する音源を排他的に選択して演奏させる機能を設けました。
例えば左図のようにYAMAHAのXG音源であるMU2000(EXファーム適用済み、PLG150-VL拡張カード入り)とRolandのSK-88ProとSC-88VLを物理的にMacbook Airに接続し、左図のmacOS標準のMIDIスタジオで論理的に繋いでおくと、左図の一番したのメニューのように、マップ判定ごとに所有している音源のポート先や拡張スロット番号先を指定しておくことで、選択的に鳴らすことができます。
XG音源のTG300Bモードは一応GS互換ですが、TG300で作った曲ならXG音源のTG300Bモードで鳴らす方が良いだろうとか、SC-55向けは最優先でSC-55に振るとか適当に私が考える優先順位で入れとります。88Proマップの曲はSC-8850で88Proマップ使うより88Pro使う方がいいという通説などがございます。88向けは88proの88mapで鳴らしてもいいかなと思わないでもないですが、一応SC-88で鳴らすようにしています。
設定した状態でラジオボックスのチェックを外せばSC-88Proの88mapを使うようにもできますので、設定次第で割と自由はききます。
判定できなかった場合のデフォルト音源の指定もあります。
なお、曲を右クリックすれば音色マップを指定できるので、判別できない曲や判定が間違っている曲はプレイリスト上で下図のようにあらかじめマップ指定をしておけばマニュアル判定されるようになります。
macOSではネットワーク見えにしたMIDIポートを認識・設定・接続できます。そうしたOSがサポートする設定もLinuxマシンにUSB接続で繋いだSC-88VLをRTP-MIDIライクなOSSを入れてネットワーク見えにして接続して鳴らすことができることは常用して確認していますが、少し難易度が高いのとプロトコルサポートが中途半端で安定しなかったのでサポート対象外です。
ソフト的なものではなくハードウェア製品でネットワーク見えにしたい方は、iConnectivity社が出しているようなMIDI機器をLAN見えにできる製品をお使いください。下図のmacOS純正(=Apple純正)のAudio MIDI設定>画面上部ウィンドウメニューからMIDIスタジオ>🌎っぽいマーク押してMIDIネットワーク設定により、RTPセッションの接続ができるかと思います。
なお、Mobile版はmacOSと違って上記のようにOSが正式に対応している仕組みが実装されていないため、実験的にexperimentalオプションとしてVer.1.2.4からアプリが直接RTP-MIDIに対応して接続できるようにしています。
ただしLinuxで動くOSSベースのもの+アルファ程度の環境で調整したため、完全に対応できているかわからないため製品によってはならない可能性があることをご承知おきください。小型のRaspberry PiにLinuxをのせてMIDIやFM音源などをRTP-MIDI見えにするのも面白いという方は参考程度に以下をご参照ください。
参考までにテスト環境の仕組みはこうです:
MIDIFlex4
↓ Linux既存のUSB-MIDI/ALSAドライバ
ALSA raw MIDIポート
↓
独自Pythonスクリプト retro_rtp_midi.py (接続不安定なのでジャーナリングとか・・・)
↓
RTP-MIDI / Bonjour
Python側が独自に実装しているのは、次の部分です。
RTP-MIDIのIN/OKハンドシェイク
RTP-MIDIパケットのデコード
MIDI/SysExの復元
A/Bの経路振り分け
ALSAポートの名前解決
libasound.so.2経由のMIDI書き込み
Avahi/Bonjour広告
macOSでもAppleのMIDI設定を毎回するのは面倒なので、実はmacOS専用ミニアプリでやっとります。
要望があれば実装しますが・・・😅
RTP-MIDI LAN接続.app
├─ Bonjourでerisを検索
├─ erisへRTP-MIDI接続
└─ macOSに仮想Core MIDIポートを作成
↓
Retro MIDI Player
└─ macOSのCore MIDIポート一覧を表示
メニューバーの「使用音源」から、お使いの機種を選んでください。初期設定は「その他音源」で、この状態では音色マップの切り替えを送りません。選ぶまでは実機のマップが切り替わらないため、曲によっては本来と違う音色で鳴ります。音そのものは鳴ります。
この設定は2つの役割を持ちます。ひとつは実機へ送る音色マップの上限を決めること。たとえば SC-88 をお使いの場合、SC-88Pro 向けと判定された曲は SC-88 の音色マップで再生します。もうひとつは、どの音源向けか判定できなかった曲をどの音色マップで扱うかを決めることです。
曲データがどの音源向けに作られたかを推定し、再生の直前に実機の音色マップ(SC-55 MAP / SC-88 MAP / SC-88Pro MAP / SC-8850 MAP / XG など)を切り替えます。切り替わると、実機側の表示もパートごとに点灯します。どこにどう出るかは機種によって違います。MU2000のPLG150-VLのような拡張カードの場合は、バンク・音色番号の隣にVLなどと付記して表示されるようにしています。
なお、上位機種向けのデータを下位機種で鳴らすと、その機種に存在しないバンクを指定したパートが Piano 1 などに落ちることがあります。これは実機の仕様です。
YAMAHAのXG音源でMU2000のようにGS互換モードを持っている場合、GS互換曲を鳴らすとTG-300Bモード(GS互換モード)になります。
XG専用データならXG初期化シーケンスでXGモードを維持しつつ鳴らすようにしていますが、曲名やメモ欄、格納ディレクトリなどにTG-300などと明記してある場合は、XG音源でもTG300Bモードで鳴らす方が良いと考え、GS初期化でTG300Bモードに入るようにしています。
割り当てた機器が見つからないときは、一時的に内蔵音源で鳴ります。保存した割り当ては残っているので、接続し直せば元に戻ります。このとき、ポート選択で「内蔵音源」を選び直さないでください。保存した割り当てが上書きされ、接続し直しても戻らなくなります。
再生している最中に機器を接続した場合、その演奏の間は送信先が切り替わりません。いったん停止してから再生し直してください。