TMIDI Player 取扱説明書 No.4

4.1 音源の傾向と対策

KORG音源/XG音源について書き加えました!!!

MIDIエミュレーションにおける、それぞれの音源のエミュレーションの仕方、限界などについてを述べます。

まずMIDIエミュレーション機能は、音源のメーカ、機種により出力される音に違いがあるので、再現性という点では基本的に無理であるということを認識しておいてください。

また、TMIDIのエミュレーションは"とりあえず鳴らす"のが目標です。音を似させようという意図はまったくありません。

注:この文章での"互換性がある"というのは、MIDIメッセージを正しく受信するという意味です。音色に互換性があるわけではありません。

Roland

Roland製音源同士の変換は、対象音源が、使用音源より下位互換機種であれば、たいていうまくエミュレーションされます。マップ切替で対処しています。

その逆に上位互換機種である場合や、その他のメーカの音源用のデータは、バンクセレクトを無効にすることで対処します。No Instrumentを防ぐ事によって対処しています。

また、SC-33では、SC-55以上に搭載されているCMバンクをエミュレーションできるようにしていますので、一部の音色を除いてSC-55とほぼ同等の演奏が出来ます。

ver2.1からはXGのドラムマップ切替をGSのエクスクルーシブに変換します。ただし、使用音源がSC−88PROの場合は、隠し機能であるXG互換機能を使用します。

YAMAHA

XG仕様はスケーラビリティーがありますので、XG音源同士はそのまま演奏できます。

Roland用データは音源側でエミュレーション機能(TG-300モード)がありますので大丈夫です。ただし、C/Mバンクの無い音源が一部ありますので、その場合は、 "YAMAHA XG(without C/M)"を選んで下さい。

その他の音源についてはバンクセレクトを無効にして対処しています。

また、YAMAHAのTGシリーズはGS互換らしい(?)ので、SC-55などを選んでください(未確認情報)。CBX-T1はGM音源を選んだほうがいいみたいです。(未確認情報)

KORG

基本的には、GM音源として扱います。GS/XG用データは、エクスクルーシブ、バンクセレクトを一部変更して、対応させていますので、ドラムパートがピアノなどになったりすることはありません。

一部演奏データには、BankAを使用したものがあります。ドキュメントにそって、Presetをロードして下さい。

また、05R/W, X5Dの方は、MIDI FilterをすべてENAにして下さい。そうしないとバンクセレクト信号が無視されてしまいます。

NS5RでGS,XG用,05R/W用のデータを演奏させることについては確認が取れてます。 ん。

Creative Labs.

Sound Blasterシリーズは、GM音源ではありませんが、音色だけはGM配列になっています。

SoundBlaster(AWE)32/64, WaveBlaster/IIについてはすべて同じ物と考えていただいて結構です。"Creative Sound Blaster32/AWE32"を選んでください。

こちらでもSound Blaster 32で動作確認を行っており、GS,XGのドラムマップ切替を、多少強引ですが実現しています。また、MT-32, CM-32/64のデータもパッチをあてることにより演奏できるようになっています。

蛇足ですが、SB16,32のドライバは非常に出来が悪いです。極めつけはGM System ON, オールノートオフが効かないことでしょう。このためTMIDIでは一時停止/停止しても音が止まりません。また、初期化しきれない部分があるようで音が音痴になったりします。

これらの現象を回避する予定はありません。気になる人はCreative Labsのほうに苦情を言ってやってください。(どうやらドライバのバージョンにも依るみたいです)

その他

WinGrooveでは、一部のGSエクスクルーシブを受信するのでなるべくそちらを使用するようにしています。内部的にはSC-33と同様の処理をします。

MidiStar/GSは、GS音源との互換性が高いようです。SC-33+α(SC-55-α)と考えて結構です。

その他のGM音源であればSoundBlaster32と同等のエミュレーションを行います。GM音源以外は対応していません。(MT-32,CM-32/64など)


4.2 MIDIメッセージの転送速度の問題

症状

Roland製音源やサードパーティ製ドーターボードの中には、エクスクルーシブデータをうまく受信できず、メッセージを取りこぼしてしまうことがあります。TMIDIではこのような音源のためにMIDIメッセージの転送速度を調節してうまく受信させるようにする機能があります。それがMIDIメッセージ転送速度の調整オプションです。

この症状は、同一ステップに大量のメッセージを送ると顕著に発生します。ほとんどの場合、シリアルMIDI 38.4kbps(PC-2)を使っている場合に発生します。Win95用のMiyaPlay95はデフォルトでこの問題を回避する処理をしているようです。このような処理が出来るプレイヤーは私の知る限りではMiyaPlay95とTMIDIのみです。あと、KARENはもっと積極的にメッセージの調整をしているみたいです。(演奏開始前のメッセージの配置をダイナミックに変更しています)

原因

この問題は音源側の処理が遅く、MIDIメッセージを取り込む準備をする前にメッセージが到着するためです。

この問題は、演奏データの作者の方の環境と聞き手側の環境が違うために起こります。作者の環境が通常のMIDI I/F (31.25kbps)を使用してデータを詰め込んだ場合、通常の転送速度であるため、音源側の処理に間に合うため演奏が通常どおり行われます。この状態で、シリアルMIDIなどの高速なI/Fを使った場合、音源側の処理が間に合わず、演奏が乱れてしまいます。どちらにせよ、MIDI規格以上にデータを詰め込んだために起こります。

使い方

症状と原因から、次のような条件に該当する場合、転送速度の調整は有効です。

逆に次の条件に該当する場合はまったく無意味です。オプションをチェックしてもなにも益がありません。

また、シーケンサによってはSMFへの変換時に、エクスクルーシブをまとめてしまうため、まともな演奏にならない場合もあります。

副作用

この機能を使うと、原理上やむを得ない副作用が発生します。まず、同一ステップにイベントを多く配置すると、もたりやすくなります。 もっとも同一ステップにたくさんのメッセージを送るのは好ましくありませんが。

この症状をなくすためには、演奏データ上のトラック配置を変えるのがベストです。TMIDIの場合、トラック番号の小さいものから処理するので、タイミングに敏感なパートをトラック番号の小さいほうにするともたりが少なく聞こえます。(逆のプレイヤーもあるかもしれませんが、、、)

また、曲の先頭に大量のメッセージを置いた場合、演奏開始部分のテンポがおかしくなります。TMIDIは正確に時間を進めますのでメッセージ送信にかかった時間分だけ取り戻そうとします。その結果テンポが一時的に速くなってしまいます。(トータルで見た場合のテンポの平均は正確ですが)


4.3 音源モジュールの初期化の問題について

音源の初期化について多少問題があるようなので、ここに述べます。

まず、ユーザードラムを使用している演奏データは正常に演奏できない場合があります。 このような場合は、音源の "All Reset" を使ってください。ユーザードラムをエクスクルーシブを使ってすべて初期化しようとすると数秒もかかってしまいます。中にはユーザードラムを初期化して欲しくない人もいるでしょうし。ということで、ユーザードラムを使って演奏データを作りたい方はデフォルト値をあてにしないで、使用するパラメータすべてを送信したほうが無難です。(GSリセットなどを送ってもユーザードラムは初期化されません)

次に、"GSリセット"と"システムモードセット"についてですが、このようなリセット系のエクスクルーシブを送った後の数秒間、リバーブなどのエフェクトが効かなくなるようです。データによってはウェイトをおかずに演奏を始めてしまうので不自然に聞こえるかもしれません。

また、SC-88の取扱説明書には 50ms 空けることと書いてあります。50msは、TB=48, BPM=120で、1tick=60秒/120/48=約10msなので、5tickに相当します。念のため 100msは空けといたほうがいいでしょう。

あと、マップ自動切り替えについてですが、演奏前にプログラムチェンジを送らない演奏データは正常に切り替えが出来ない場合があります。仕様上しかたがないので、自分でPCメッセージを加えるなりしてください。TMIDIは、マップ切り替えを最初のプログラムチェンジ時に行っています。(ver1.5以前に行っていた、リセット系メッセージを送信抑制する方法は演奏が異常になりやすいのでやめました)

以上はSC-88での現象です。他についてはよくわかりません。

エミュレーションは使いたくないが、音源初期化機能は使いたいという方は、使用音源を使っている音源にあわせて、対象音源を "エミュレーションOFF" にするとベストです。 使用音源を "OFF" にすると音源を初期化しません。

SB AWE64で、使用音源を "SB32" にすると、一般保護例外がでるようです。 原因はエクスクルーシブを送ったときに発生するようです。


4.4 TMIDI DDEインターフェースについて

4.4.1 DDEとは?

DDEとはDynamic Data Exchangeの略称で、Windowsにおけるプロセス間通信機能の名称です。

DDEを使うと異なるアプリケーション間でデータを連携したり、コントロールしたりすることが出来ます。TMIDIでは、演奏を開始させたり、停止させたりすることが出来ます。

ここでは、サービスの要求側をクライアント、サービスを供給する側をサーバと呼びます。

4.4.2 使い方

TMIDIのDDEサーバはXTYP_CONNECT,XTYP_EXECUTE,XTYP_REQUEST,XTYP_DISCONNECTトランザクションをサポートしています。サービス名を "TMIDI" トピック名を "TMIDI" にして接続してください。また、他のアプリケーションからの操作をロックすることができます(排他制御)

4.4.4 DDE命令一覧

XTYP_EXECUTEトランザクション

以下はテーブルを使用しています。

コマンド名機能
lockユーザーによるボタンなどの操作を一部ロックします。また、接続している他のクライアントの操作もロックします。同時にロックできるのは1つのクライアントまでです。
unlockロックを解除します
openfile [ファイル名]ファイルを開きます (WRD,TOR,MID何でも可)
playfile [ファイル名]ファイルを開いて演奏します。コマンドラインと同じように/Mオプションを使用できます。
play [番号]リスト中の指定した番号の曲を演奏します。
stop演奏を停止します。
pause一時停止します。
resume一時停止を解除します。
changeWRDWRDウィンドウに切り替えます。
changeLISTLISTウィンドウに切り替えます。
changeDOCDOCウィンドウに切替
changeSTATUSSTATUSウィンドウに切替
changeMINIMINIウィンドウに切替
changeFULLSCREEN全画面表示に切替 (動作が多少おかしくなる場合があります)

play 4

4番目の曲を演奏します。

playfile my favorite.tor

"my favorite.tor"というリストファイルをオープンして演奏を開始します。

XTYP_REQUESTトランザクション

戻り値はすべてCP_WINANSIの文字列形式。失敗した場合はNULLを返します。

以下はテーブルを使用しています。

アイテム名戻り値の意味機能
getcountリスト内の曲数リストに存在する曲の数を返します。
gettitle [番号]題名MIDIファイルの題名を返します。
getlength [番号]長さ(ミリ秒単位)MIDIファイルの長さを返します。
getfilename [番号]題名MIDIファイル名を返します。
getbasefolderディレクトリ名基本フォルダを返します。
getlistfilenameリストファイル名現在使用しているリストファイル名を返します。
gettime場所(ミリ秒単位)現在の演奏ポインタを返します。
getstatusplay/stop/pause現在のTMIDIの状態を返します。
getplayfile番号現在演奏している曲の番号を返します。

4.5 Sherry WRDについて

Sherry WRDとは?

Sherry WRDとは、現在のPCの性能に見合ったWRD表示機能を提供するために作られたWRDファイル仕様です。

Sherry WRDは、

以上のような特色を持っています。

また、Windows開発者向けにはSherryWRD表示DLLを作成する事により、簡単にWRD表示を可能にする予定があります。

Sherry WRDの仕様書は、沢渡みかげさんのSherry WRDのページで入手可能です。

Sherry WRD表示に必要な構成

Sherry WRD表示を行うためには、次のような構成が必要です。

Sherry WRDの作り方

Sherry WRDを作成するためには、Sherry WRD(拡張子 SRY)を生成するためのコンパイラプログラムが必要になります。

現在、使用可能なコンパイラには以下のような物があります。

Sherry WRD Compiler

沢渡みかげ氏が開発しているSherry WRD用コンパイラ。perlで作成されており、WRD中にperlスクリプトを書く事が出来ます。複雑なWRD作成が簡単になります。Sherry WRDのフル機能を使用するためにはこのコンパイラが必須です。

沢渡みかげさんのSherry WRDのページにて入手可能。現時点(1998/02)では開発中です。

Sherry WRD Easy Compiler (通称SECL)

簡単な記述でWRDを作成できるようにしてあります。4画面重ねあわせ (テキスト画面を含めると5画面)が使用できるので、今までのWRDとは表現力が違います。(^^;

ふみぃのページで入手可能。

その他

現在開発中のオリジナルシーケンサ、CherryにもSherry WRD作成機能を搭載させる予定です。

Sherry WRDで使われる画像ファイルを操作、コンバートするプログラムを公開しています。ふみぃのページの、BMP Toolsのページをご覧ください。BMPファイルのパレット操作、パレット取得、PNGへの変換ツールが含まれます。


4.6 エミュレーションの自動判別について

TMIDIでは、エミュレーションの対象音源の設定を自動判別することが出来ます。

自動判別は、ファイル名、添付ドキュメント、曲名、の3つから行われます。

  1. ファイル名
  2. 曲名
  3. 添付ドキュメント

の順に行われます。

この3つから見つからなかった場合は、環境設定にある、デフォルト対象音源の設定となります。

また、SMFを作成する場合、曲名の部分に、以下のキーワードを入れると検索が確実になります。

検索は単語ごとに行われるので、スペースなどで区切る必要があります。


Copyright(c)1998 Fummy. All rights reserved.
fummy@din.or.jp