2013年10月03日

XM6 TypeG+STed2でMIDIボードとRS-MIDIを同時に使う

私は随分長い事、DTM打ち込みをする時のシーケンサに、X68KのSTed2を使用していまして。
一応、X68030を持ってはいるものの、電源関係がイマイチ安定せず(コンデンサ取り替えはしましたが、それでも数日に1回位の頻度で勝手にリセットがかかったりします)

DAWはCubase6.5を使用しているので、DTM作業をやろうとすると、X68030環境とWindows環境を両方稼働させなければならず、ちょっと気軽に打ち込み作業をしてみようかなと思える環境ではありません。

そんな昨今、TwitterでX68KエミュレータのXM6 TypeGを勧められまして。
結構前にX68Kエミュレータの類いを触った時に、テキストプレーンの描画がおかしかったり、シリアルポートのエミュレートが今一つだったりしてて、エミュレータで使う事は諦めていたんですが、最近は大分完成度も高まっているらしいので、試してみる事にしました。

私の場合、最も重要な条件として、RS-MIDIが使えないと困る。というのがありまして。
MIDIを2ポート32Chでデータを打ち込みたいので、MIDIボード機能とRS-MIDIが同時に動作する事は必須だったりします。

見たところ、XM6 TypeGはシリアルポートのエミュレートもキッチリ出来そうなので、MIDIボード機能とRS-MIDIが正常に同時動作するかどうか試してみました。

【テスト環境】
■X68030+STed2
■X68K用RS-MIDIケーブル(大昔にどっかで買ったものです。入手出来ない場合はこの辺のページでも見て自作しましょう。 http://homepage3.nifty.com/y_ohta/packen/module/serial.htm
■Windows7 64bit(i5 2500)+XM6 TypeG StarScreamコア版(Ver.2.05)
■MIDISPORT 2x2
■Cubase6.5(64bit)

【エミュ[XM6 TypeG Ver.2.05]の調達とセットアップ】
これはかつてX68Kユーザだった方であれば(ググれば)大抵分かると思いますので割愛します。
因みに私はSCSIドライブを2つ設定しました。

【エミュ[XM6 TypeG Ver.2.05]の設定】
XM6 TypeGは、COMポートの入力をMIDIデバイスにする事は出来ないので、まずはWindowsの方でRS-MIDIをCOMポートで受信出来る様にしなければなりません。
今時のマザーボードには、COMポートが無いので、USBをCOMポートにするケーブルを使用します。
また、DOS/VのRS-232Cコネクタは9ピンですが、X68Kは25ピンなのでそれを変換する必要もあります。
[2013/10/04追記]
バックパネルにはCOMポートはありませんが、最新のマザーボードでも大概内部接続端子ならあるとのコメントを頂きました。
確かにその通りです。USB-シリアル変換ケーブルを買うよりも安く純粋なシリアルポートを調達出来るので、その方がベターだと思います。「マザーボードシリアルケーブル」http://www.amazon.co.jp/dp/B0041GIWAE/

★システムの設定
ツール→オプション→システム→速度→システムクロック:10MHz(標準)
ツール→オプション→システム→メモリ→メインRAMサイズ:8MB

システムの設定1.png

★MIDIボード機能の設定
ツール→オプション→MIDI→MIDIボード→ボードID1
ツール→オプション→MIDI→割り当てデバイス→出力→MIDISPORT 2x2 Out A
ツール→オプション→MIDI→割り当てデバイス→出力→遅延:20ms

MIDIの設定1.png

★RS-MIDIの設定
ツール→オプション→ポート→RS-232C(シリアルポート)→ポート→COM3
(PC環境によっては設定すべきCOMポート番号が変わります。接続したUSB-COMケーブルデバイスが、どのCOMポート番号にアサインされているかどうか、デバイスマネージャ等で確認してください)

[2013/10/04追記]
ここには「ボーレートを38400bpsに固定する」という設定があり、XM6 TypeGの表示メッセージによると、RS-MIDIの送信に効果があるとなっていますが、うちのPC環境ですとOnにすると何故かMIDIメッセージがバケてしまいます。
逆にこの設定をOnにしないとうまく動作しないといった方もおられるので、使用しているシリアルポートデバイスの相性によるのかもしれません。
なので、うまくいかない場合は、この設定をOn/Offしてみてください。

シリアルポート設定1.png

【MIDI信号の流れ】
MIDISPORT 2x2 MIDI-OUT A→MIDISPORT 2x2 MIDI-IN A(XM6 TypeG MIDIボード機能)
COM3→RS-MIDI→MIDISPORT 2x2 MIDI-IN B(XM6 TypeG シリアルポート機能)

図にするとこんな感じです。

接続1.png

【XM6 TypeG+STed2】
曲データはこんな感じです。

エミュ演奏データ.png

Trk2はMIDIボード機能のポート(A 2)
Trk3はシリアルポートでのRS-MIDIのポート(B 2)

【結果】
とりあえずは、これでXM6 TypeGのMIDIボード機能も、シリアルポートでのRS-MIDIも同時に正常動作している事が確認出来ました。

次にMIDIボードで入力されたMIDI信号と、シリアルポートでのRS-MIDIで入力されたMIDI信号を同時にレコーディングしてみて、両者の受信タイミングにどの程度の時間的な差異があるかを検証しました。

エミュ比較.png

ノートオンのタイミングの差異を32回計測

【結果】
時間差(ms):
27,32,32,32,30,27,31,31,
32,32,32,30,31,29,30,30,
30,29,30,30,30,30,29,29,
29,29,29,29,29,29,29,29

上記の画像を見ても分かる様に、RS-MIDIの方が早く、その差は27ms〜32msありました。
MIDI信号の時間差異としては結構な開きがあります。

因みに、STed2には各トラックにオフセットステップ数というものを設定出来ます。

例えば、Tempoが100の時は、1Stepの長さは、12.5msになります。
また、Tempoが150の時は、1Stepの長さは、8.33msになります。
60,000ms÷Tempo数÷48Step=で求められます)

MIDIボード機能とRS-MIDIに27ms〜32msの違いがあるのなら、Tempoが150の場合には、RS-MIDIを設定しているトラックのオフセットステップ数に、3を設定してやれば、8.33ms×3=約25msで、時間差異は2ms〜7msまで縮められます。
但し、曲の途中でTempo数が変わる場合は、1Stepの長さウェイトも変わりますので縮められる時間差異も変わります。注意してください。

【考察1】
何とかこの時間差異を縮められないかと思い、MIDIボード機能側のMIDI信号を外部経由にしないで「loopmidi」というツールを使って内部MIDIルーティングで行ってみました。

図にするとこんな感じです。

接続2b.png

【エミュ[XM6 TypeG Ver.2.05]の設定】

★MIDIボード機能の設定
ツール→オプション→MIDI→割り当てデバイス→出力→loopMIDI Port(ポート名をX68KMIDIで作成)
他の設定は一緒

loopMIDI設定.png

MIDIの設定2.png

ノートオンのタイミングの差異を32回計測

【結果】
時間差(ms):
23,24,24,24,24,22,23,24,
23,24,23,24,24,23,24,24,
25,28,24,27,24,28,27,26,
25,25,22,25,28,25,29,26

上記の画像を見ても分かる様に、やはりRS-MIDIの方が早く、その差は22ms〜28msありました。
多少マシにはなりましたが、これでもMIDI信号の時間差異としては結構な開きがあります。

STed2のオフセットステップ数で調整するのであれば、Tempoが150の場合には、RS-MIDIを設定しているトラックのオフセットステップ数に、3を設定してやれば、8.33ms×3=約25msで、時間差異は-3ms〜3msまで縮められる事になります。
もちろんこの場合も、曲の途中でTempo数が変わる場合は、1Stepの長さウェイトも変わりますので縮められる時間差異も変わります。注意してください。

【考察2】
ここまで色々やってみて、X68030実機でやった時の差異がどれ位あるのかが気になりまして。
これまで実機で打ち込みをする際には特に気にしないで作業していましたが、そういえば実際に計測した事は無いなぁと。
そんな訳で、計測してみました。

図にするとこんな感じです。

接続3.png

【結果】
時間差(ms):
10,10,10,10,10,10,10,10,
10,10,10,9,9,9,9,9,
9,9,9,10,10,10,10,10,
10,10,10,10,10,10,9,10

上記の画像を見ても分かる様に、RS-MIDIの方が早く、その差は9ms〜10msありました。
XM6 TypeGでやってみた時の場合と比べると圧倒的に遅延幅は小さく、尚且つ遅延具合にムラが殆どありません。
流石は実機といった所でしょうか。

STed2のオフセットステップ数で調整するのであれば、Tempoが150の場合には、RS-MIDIを設定しているトラックのオフセットステップ数に、1を設定してやれば、時間差異は0.67ms〜1.67msまで縮められる事になります。これならまず気にならないレベルの遅延ですね。

【結論】
XM6 TypeG(Ver.2.05)+STed2で、MIDIボード機能とシリアルポートでのRS-MIDIを同時に使う事は可能。
但し、その場合はSTed2でRS-MIDIを設定しているトラックのオフセットステップ数に3程度の値を設定して、XM6 TypeGで発生している遅延差異を縮める必要がある。


【おまけ1】
XM6 TypeGでは、システムクロックを、33MHz(X68030改)まで上げられる様になっていますが、この設定にすると、MIDIボード機能の出力メッセージに抜けが発生します。
具体的な症状としては、ノートオフが送出されずに音が鳴りっぱなしになります。

気になったので、この症状をMIDI-OXを使って調べてみました。

★検証方法:
@XM6 TypeGのシステムクロックの設定を最速の「33MHz(X68030改)」にします。
ASTed2でC4,D4,E4が順番に再生されるデータを、[M]コマンドで再生して、最後のE4が鳴り終わらないうちに再び[M]コマンドを入力して再生します。
*この時、MIDI-OUTメッセージに抜けがあるとノートオフが送出されずに音が鳴りっぱなしになります。

まず、実機のMIDI-OUTメッセージ

MIDIOX実機.png

次に、XM6 TypeGのMIDI-OUTメッセージ

MIDIOXエミュ.png

分かりやすい様に、違っている箇所に赤入れをしておきました。
見て分かる通り、XM6 TypeGの方は、コントロールチェンジが8つとノートオフがすっぽり抜けてしまっています。

システムクロックを一番下の10MHz(標準)から順番に上げていって、この症状が発生する設定を調べた所、24MHz(REDZONE)以上の設定にすると発生する事が分かりました。
因みに、MIDIボード機能だけでなく、シリアルポートでのRS-MIDIの方でも、(抜けるメッセージやタイミングは少し違いますが)同様にMIDIメッセージが抜けます。

この、MIDIメッセージが抜ける不具合は、20MHz(Lucky!)以下の設定にすると発生しません。
と言う訳で、システムクロックは、20MHz(Lucky!)以下に設定して使いましょう。

【おまけ2】
上記の実験では、MIDIインターフェースにMIDISPORT 2x2を使いましたが、コイツは現状の最新ドライバだとスリープから復帰させた時にブルーバックが発生するのでお勧めしません。(ウチの環境ではWindowsXPでもWindows7(64bit)でも発生します)
私の場合は手元にRME MultifaceとUM-880があるので、実際に制作作業をする時はそっちの方を使おうと思います。

この記事が、私と同じSTed2難民のお役に立ちます様に!
何かツッコミどころがあればコメントください。
posted by dtmz at 04:55| Comment(3) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
失礼します。私もXM6gを試していますが、RS-232C設定の
「ボーレートを38400bpsにする」にチェックを入れないと
XM6gが落ちます。何か原因があるのかもしれませんが…


 私はソフト音源等は一切使用しないので実音源のみですが、
シリアルケーブル(RSC-15AT相当)でSC-88ProのCOMPUTER端子に接続して
SC-88ProのMIDI OUTから出力してシリアル-MIDI変換しています。

 それとツッコミどころとありますので(敢えて承知の上で「無い」と
断言するような記述をされていると思われますが)
 現在のATX、Micro-ATXマザーボードには確かにシリアルポートとしてD-SUB9ピン端子が
ついているものは殆どありませんが、例え最新のLGA1150マザーボードでも
多くの製品には基板上にCOMポートがありますので、マザーボードシリアルケーブルを
使用してD-SUB9ピンに変換すれば、USB−シリアル変換ケーブルよりも安価に
安定したシリアルポートを設置することができると思います。

 なお私の環境(GA-H77-D7H-MVP)では、元からあるシリアルポートとUSB-シリアル変換ケーブルで
増設したシリアルポートがありますが、X68kとのデータ通信が主な用途なので
RS-MIDIはUSB−シリアル変換ケーブルを使用しており、用途に応じて切り替えています。

 またloopMIDIの項目で「midiloop」という記述がありますが、「MIDIloop」という
ソフトも別に存在するのでloopMIDIに統一した方がよろしいかと思います
(私の勘違いでしたらすみません。自分は最初MIDIloopのサイトを見に行って
しまいました)
Posted by warmbell at 2013年10月03日 16:53
コメントありがとうございます。
STed2をお使いの方に出会えて心強いですw

>「ボーレートを38400bpsにする」にチェックを入れないと

XM6 TypeGの説明によるとRS-MIDIの送信に効果がある
と記載されていますが、うちのPC環境ですと、
何故か逆にMIDIメッセージがバケてしまいます。
シリアルポートデバイスにもよるのかもしれません。
一応、ブログ内にその旨追記しておきました。

>例え最新のLGA1150マザーボードでも
>多くの製品には基板上にCOMポートがあります

そういえばそうでした!
確かにCOMAの内部接続端子がありました。
って言うか、デバイスマネージャ見たらCOM1で
ちゃんと認識されてました・・・orz
ブログ内にその旨追記しておきました。

>「MIDIloop」というソフトも別に存在するので
>loopMIDIに統一した方がよろしいかと

失礼しました。こちら本文と画像でMIDIloopと
記載されていた箇所を修正しておきました。
Posted by 管理人 at 2013年10月04日 02:09
 ご返答ありがとうございます。
最初に本題とは無関係ですがマザーボードの型番を間違っていました。
「GA-H77-D3H-MVP」です。失礼致しました。

 「ボーレートを38400bpsに固定する」件ですが、私の場合は
MIDIメッセージの確認以前に、「RCD -C」で常駐させるだけで
XM6gそのものがすぐに落ちてしまうので挙動を確認することすら
できない状態です。

 しかし苦労して環境を構築しても実機のキーボードでないと
満足に操作できないので、結局実際にXM6gで打ち込むことはまずないです。
私の場合はOPT1、XF5、かなキーを特によく使うので、AT機のキーボードでは
逆にまごついて効率がかなり落ちます(笑)。
Truekeyのように実機のキーボードをXM6gで使用できれば
また違うのでしょうが…

 今回はSTed2ということなので本題のRCDとは異なりますが、
X68000で2ポート以上のMIDI出力に対応したドライバというと
ほかにはMLDやZ-MUSIC V3がありますが、そもそもMIDIボード
2枚挿しに対応したエミュレータが存在しないようなので、
やはりエミュレータで扱うのは難しいですね。
Z-MUSIC V3は本来MIDIボード2枚+RS-MIDI(32ch)の最大4ポートに
対応しているので、XM6gならばその内3ポートはいけるのではと
思います。帯域や同期は別問題ですが…

 余談ですがメモリを8MBにしているのは何か理由が
あるのでしょうか?普通に考えると最大の12MBにすると
思うのですが、理由といっても自分はレジューム時の
ファイルサイズを減らす点くらいしか思いつきませんでした。
Posted by warmbell at 2013年10月05日 00:18
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック