Last updated 1997/11/01
TMIDI Playerをダウンロードしていただきありがとうございます。この文書は version 2.3 を対象としています。しかしながら、2.3の全機能を網羅していないかもしれません。なるべく、更新履歴をご覧ください。また、1.4 Version 2.3の新機能も用意しました。
この文書は、W3C HTML 4.0 + CSS Level 1で書かれています。Microsoft Internet Explorer 4.0, amayaなど、HTML4.0準拠のブラウザでご覧ください。lynx, JustViewなど、HTML 3.2準拠のwwwブラウザでもご覧になる事が出来ます。
HTMLファイルを見るのが重いという方はテキストブラウザのLynxなどをご利用ください。画像を使用していませんので、問題なくご覧になれます。
また、当たり前すぎることや、見ればわかるようなことは省かせていただきました。そのかわり、わかりにくいところを重点的に書いています。何か分からない点があればc396022@ns.kogakuin.ac.jpまでお願いします。
FAQ,バグ情報などのなまもの情報については、こちらにあります。
細かい変更は載せない場合があります。
この文書の全ての権利は大竹敏史(ふみぃ)が所有します。
Copyright(C)1997 T.Ohtake (ふみぃ). All rights reserved.
TMIDI Playerを実行するには、次のシステム構成が必要です。
TMIDI Playerを快適に使用するには、次のシステム構成が最適です。
上記の構成に加え、
TMIDI.EXE, TMIDI16.DLL, TMIDI95.DLL, TMIDINT.DLLを同じフォルダにコピーしてください。これでインストール作業は終わりです。
また、これらのファイルは、最低限、実行(利用)するユーザに読み込み&実行権限を与える必要があります。Explorerでセキュリティダイアログを出して設定してください。また、TMIDI.EXEと同じフォルダにdefault.to2というファイルを作成するので、フォルダには書き込み権限が必要です。複数ユーザで使用する場合は、ユーザーごとにインストールしてください。default.to2ファイルの配置に関しては次のバージョンアップ時に考慮する予定です。
次に、メニュー:オプション(O)-MIDI設定(S)を開きます。ここで、使用している音源の設定をします。
TMIDI Playerは、Windows 3.1+Win32s もしくは、 Windows NT 3.5/3.51 では動作しません。
TMIDIはUNLHA32.DLLが存在すると、自動的にリンクして利用可能になります。UNLHA32.DLLが利用可能状態になると、LZHファイルを展開せずにアーカイブ内のMIDI演奏データファイルを演奏できます。
UNLHA32.DLLは、%WinDir%\SYSTEM32、もしくは、TMIDI.EXEと同じフォルダにインストールしてください。
(Windows 95では、%WinDir%SYSTEM らしいです。最近Win95を触っていないので ^^;)
また作業用領域として、%Temp%\TMIDILZHフォルダ内を使用します。ゴミが残っていないかどうか、定期的にチェックしてください。
TMIDIは、DirectXの機能を用いて 解像度の変更、色数の変更、パレットフェード時のチラツキ防止を可能にします。DirectX2以上で動作するようです。
ビデオカードやドライバによっては、DirectXの初期化時に問題が発生してTMIDIが起動できない場合があります。このような場合は、レジストリファイル DDNOT.REGを実行することにより、DirectXの使用を抑制することが出来ます。このレジストリファイルを実行することは、"DirectDrawをロードしない"をチェックするのと同等です。
アンインストールはレジストリエディタを使って、HKEY_CURRENT_USER\Software\TK\TMIDIの中にある値を全て削除してください。関連付けはエクスプローラを使用するのが安全です。
コード表示機能を強化しました。曲データ中のキー情報をもとに、トニック、サブドミナント、ドミナントを判別して表示します。トニックは緑、サブドミナントは青、ドミナントは赤で表示され、それぞれの代理コードは暗い色で表示されます。
また、セコンダリードミナントコードは紫で表示されます。先読みはしないので、ノンダイアトニックコードの7thはすべて紫で表示するようになっています。
この機能、いまいち反応が少ないので、あっているかどうか自信が無いのですが、、、(^^;
デバッグ機能を強化しました。キーアサインは以下のとおり。
キー | 動作 |
---|---|
Alt+'0' | パレット初期化 |
Alt+'.' | パレット初期化 (白) |
Alt+'1' ~ '9' | WRD画面ページ切り替え |
Alt+'-' | グラフィック画面ON/OFF |
Alt+'*' | テキスト画面ON/OFF |
DECOPで表示される DVフォーマットの歌詞データを表示する事が出来ます。この機能は、Nissyさんが作られた DV2WRD32.DLL を利用します。今回のリリースでは、Nissyさんの都合により、今のところ単独公開はせず、TMIDIに添付してのリリースとなります。
SMFナイフで変換したファイルを演奏させる事が出来ます。また、RCPCV.DLLを利用する事により、RCP/R36/G36ファイルも変換する事が出来ます。
2通りの変換の仕方があります。
MIDIエミュレーションの代わりにSMFナイフを利用する方法です。勝手に音源を判別して、コンフィグファイルを選んでSMFナイフへ渡します。
この設定は、TMIDIの MIDI設定 - MIDIエミュレーション - 定義ファイル 欄に、SMFKNIFE.DEFを読み込ませると可能になります。SMFKNIFE.DEFはTMIDIに添付されています。
コルグな方は、自分でSMFKNIFE.DEFをいじってください。そのままではAG10向けのコンフィグになります。音源設定関連は次のリリースまでお待ちくださるようお願いします。
リストウィンドウを開いて、ファイルのプロパティを開くと、SMFナイフ タグが出てきます。ここで設定すると変換後のファイルを再生する事が出来ます。
TMIDIでMIDIファイルを演奏するには、いくつかの方法があります。
メニューバーにある、"ファイルを開く"を選ぶと、ファイル選択ダイアログが開きます。ここで、聞きたいMIDIファイルを選んでください。また、LZHファイルを直接開くことも出来ます。(UNLHA32.DLLが必要です)
メニューバーにある、"フォルダを開く"を選ぶと、フォルダツリー表示が出ます。開きたいフォルダを指定して実行してください。
TMIDIはエクスプローラからのファイルのドロップを受け付けます。複数ファイル指定可能です。また、フォルダをドロップした場合は、サブフォルダを含めてリストに追加します。
TMIDIはDDEを使用して演奏させることが出来ます。詳しくはTMIDI DDEインターフェースを読んでください。
また、エクスプローラでダブルクリックした場合は、DDEを使って処理しますので、2重起動することはありません。
TMIDIではコマンドラインを指定して読み込むべきファイル名を指定することが出来ます。また、すでに起動中の場合は最初に起動されたTMIDIに自動的に制御が渡されます。
構文は、
TMIDI [ファイル名] [/M:対象音源名]となっています。
ファイル名にスペースが含まれる場合は ""でくくる必要があります。また、対象音源名には、module.defに記述されている音源識別子を指定してください。現在のバージョンでは次のような音源識別子が存在します。
存在しない識別子を書いた場合は、エミュレーション機能がうまく動かなくなります。また、ユーザーが追加した識別子も指定可能です。
V:\>TMIDI Z:\DATA\MIDI\MUSIC.RCP
V:\>TMIDI "Z:\DATA\MIDI\TEST DATA.MID" /M:SC-88
V:\>TMIDI Z:\DATA\MIDI
V:\>TMIDI Z:\DATA\MIDI\FILES.TO2
この章は、ユニークな使い方、盲点となっている使い方を紹介していきます。なにか他に面白い使い方があれば是非お聞かせください。ここに載せるかもしれません。
TMIDIのMIDI THRUと演奏モニタのコード表示機能を使えば、キーボードや、コードボイシングの練習に役立つかもしれません。リアルタイムで弾いたコードを解析して表示します。
TMIDIはフォルダごとリストに登録して選曲することが出来ます。ファイルメニューにあるフォルダを開くもしくは、エクスプローラからTMIDIにフォルダをドラッグ&ドロップしてください。
TMIDIはキーボードによる操作が出来ます。デフォルト状態では次のようになっています。ここでは主なもののみ取り上げます。詳細は環境設定中のキーボードカスタマイズで調べてください。
以下はテーブルを使用しています。
WRDウィンドウ切替 | F5 |
DOCウィンドウ切替 | F6 |
演奏モニタ切替 | F7 |
最大化 | F9 |
再生/一時停止 | F11, Ctrl+P |
次のページ | TAB |
前のページ | Shift+TAB |
TMIDIには、他のプレイヤにない機能としてMIDIエミュレーション機能が上げられます。
たとえば、私はSC-88を所有していますが、SC-88PRO用のデータを聞くとまったく音が出なかったり、一部出なかったりします。そこでMIDIエミュレーション機能を使用するととりあえず音が出るようになります。
また、Sound Blaster32のようなエクスクルーシブをまったく受け付けない音源でもTMIDIがエミュレートすることにより、ドラムを正常に鳴らしたり、音程がずれてしまうことを避けたりします。
SC-33やGS互換と言われている大半の音源では、MT-32やCM-64用の曲が聴けませんが、パッチテーブルを搭載させることにより聞けるようになります。
SC-88PROなどの上位機種で、SC-55などの下位機種用のデータを聴く場合は PRO本体の MAPボタン を押さなくてはいけませんが、これを自動的に切り替えることができます。
SC-88などのGS音源で、MU80用データのバンクセレクトによるドラムマップへの切替をエミュレートします。
これらの一部機能は今までのプレイヤーにも存在していましたが、TMIDIの特色はドキュメントファイルから自動検索して適切に設定するところと、使用する音源を指定すればあとは曲ごとに適切に設定されるということです。
ドキュメントファイルから自動検索することによりヒット率は90%程度になります。 また、演奏モニタの楽器名表示と連動しており、データの対象としている音源によって楽器名テーブルが自動的に変わります。
とくに難しい知識を必要としません。環境設定でMIDIエミュレーションに関する設定をすれば完了です。これで使用音源側に関する設定は終わりです。
演奏する場合は対象音源に注意しなければなりません。液晶部分の右下部分に自動判別の結果が表示されます。期待する音源と異なれば、リストウィンドウで右クリックをして、TDF演奏設定ファイルの編集をしてください。
これ以上の詳しい説明は、ここに存在します。移動している可能性があります。その場合は、ホームページからたどってください。
TMIDIには、MIMPI ver3.7以降に備わったWRD表示機能とほぼ同等の機能を備えています。
他のWindows用WRDプレイヤーと違い、256色モードにする必要がありません。フルカラーモードの場合でもそのまま表示できます。ただし当然ですが、かなりのマシンパワーが必要です。
また、TMIDIはDirectXの機能を利用して、フルスクリーン状態で表示することが出来ます。256色モードの場合、パレットチェンジ時の走査線の横切りを押さえることが出来ます。
MIMPI WRDの仕様は、規格と呼べるほど完成された仕様ではないため、いくつか挙動不審な点があり、それをエミュレートするのは大変困難です。そのため、いくつかのWRDファイルでタイミングずれを起こすものもあります。
BUCHIさん作の演出君メカの一部のコマンドに対応しています。
対応しているコマンドは、^FONTM, ^FONTR, ^FONTP, ^XCOPY(method=0,1,8,10), ^VCOPY, ^VSRES, ^VSGET, ^PAL です。これ以外のコマンドには対応していません。
正常表示できない演出君メカ用の巨大WRDをメールで送るのは止めるようにお願いします。非常に困っています。(しかも毎度同じWRDファイル 電話代がかかってしょうがない)
リスト機能とは、いくつかの曲データを登録し、曲順をファイルに記録しておく機能です。保存したリストファイルはいつでも順番に演奏できます。
リスト機能を使うには、まず ファイル(F)-新規リストの作成(N)を選んで空のリストファイルを作ってください。作られると直ちに編集画面に入ります。登録したい曲を右側のリストボックスから選んで左側へ登録していってください。また、エクスプローラからドロップすることもできます。登録順序を変えるには、左側のリストボックスの中でドラッグアンドドロップをしてください。
アルバム機能とは、いくつかの曲順リストファイルを登録して、一発で呼び出せるようにする機能です。
アルバムメニューの 追加 を選ぶと、リストファイルを追加することが出来ます。エクスプローラ等からドロップすることも出来ます。
TMIDIでは、MIDIデータに付属しているドキュメントファイルを閲覧する機能があります。拡張子が TXT,DOC,ホソク,HED のファイルすべてを読み込みます。また、ファイルが見付からなかった場合は同じディレクトリにあるドキュメントファイルを読みに行きます。
LZH機能を利用すると、まったく関係の無いドキュメントファイルが読まれる場合があります。?:\WINDOWS\TEMP\TMIDILZH ディレクトリのなかにごみが溜まっているとこのようなことが起きます。定期的に中を清掃してください(^^;
ごみはTMIDIが異常終了,もしくはWindowsがハングアップした時に発生します。
MIDIに関連する設定ができます。
使用するMIDIポートを設定します。3つまで指定する事が出来ます。同じデバイスを複数指定しても無視されます。
MIDIエミュレーション機能の設定をします。通常の使用では、使用楽器にはあなたの使用している音源を、対象音源は自動判別、フィルター機能は (なし) に設定してください。
演奏に関する設定をします。
割り込み間隔は、演奏処理する間隔を設定します。短ければ短いほど精度の高い演奏が出来ます。ただし、CPUの占有率が高くなり、他のソフトの動作が遅くなります。
MIDIメッセージ転送レートの調整をチェックすると、Roland系の音源で起こるMIDIメッセージのとりこぼしを抑制する事が出来ます。この現象はシリアルMIDI I/Fの38.4kbps(M(PC-2)を使用した場合に頻発します。詳細はMIDIメッセージ転送速度の問題をご覧ください。副作用として、演奏がもたりやすくなります。(そもそも、もたるデータのほうがおかしいのだが)
DLLタイプオプションは、使用するDLLを選ぶ事が出来ます。良く分からない人はいじらないでください。必ず16bitで使用してください。(NT使用時は除く)
これはFAQなんですが、Windows95を使用している方が、訳も分からず32bitを選ぶようです。32bitにするとOSの構造上、必ずテンポが不安定になります。詳しくは、Microsoft社のWWWサイトにある、Knowledge BaseのQ153400 How to Use Multimedia Timer Services on Windows 95を参照してください。
独立ウィンドウ指定は、TMIDIのメインウィンドウとは独立のフレームで表示するウィンドウを指定します。
実行制御には、メインスレッド(演奏スレッドとは別です)の実行優先順位を指定します。このオプションはExpert専用です。素人の方はいじらないでください。危険です。この値を高くすると、相対的に演奏スレッドの順位が下がるので演奏が不正確になります。また、この値を下げすぎると動作が遅くなり、次の曲へ進まなくなったりします。
DirectDrawをロードしない オプションをチェックすると、DirectDrawライブラリとのリンクをしなくなります。DirectDrawを使用すると動作が不安定になる方がチェックしてください。起動すら出来ず、この環境設定を開けない方は DDNOT.REGファイルを実行してください。このオプションが有効になるように設定されます。
CPUアイドル時間を使わない オプションをチェックすると、演奏モニタなどのポーリング頻度が下がります。この結果、動きが鈍くなったり、表示が不正確になります。このオプションをチェックしてもほとんどCPU占有率は下がりません。ただ、タスクマネージャなどのパフォーマンスモニタを見ると常に 100% と出てしまうため、気になる人がいるようです。気になるひとはチェックしてください。また、インテリマウス、xmouseなどのCPUアイドル時間の検出をして動かすアプリケーションを使用した場合は弊害が出るので、このオプションをチェックしてください。
演出君メカフォントファイルには、演出君メカでデフォルトで読み込まれるフォントを指定します。何の事か良く分からない人は設定しないでください。
高速描画オプションをチェックすると、描画の一部を端折って描画を高速にします。多少描画過程が見えなくなったり、コマ落ししたような感じになりますが、最終的な表示結果は同じです。
全画面表示設定には、全画面表示にしたときに使われるビデオモードを指定します。DirectDrawの動作が不安定な人は、推奨どおり "色数を変更しない" を選んでください。それ以外の方は 256色 を選んだほうが得です。
パレットチェンジ時のVSYNC同期は、普段は VBLANK検出のみ を選んでください。良く分からない人はいじらないでください。
左側の機能一覧から機能を選んで、右側の欄でショートカットキーを定義します。Windowsの仕様上、F10キーとBSキーは設定できないようです。"なし"にしたい場合はBSキーを押してください。
デフォルト状態に戻したい場合は、HKEY_CURRENT_USER\Software\TK\KeyConfigTable以下を全て削除してください。
MIDIポートと、MIDIエミュレーションの使用楽器情報をセットにして、すばやく切り替える事が出来ます。
演奏モニタには、各チャンネルのパラメータ、発音中のノートが表示されます。また、マウスでクリックさせることにより、そのパラメータをリアルタイムで変更することが出来ます。
演奏モニタには次のようなパラメータが表示されます。
Vibrato,Filter,Envelopeの部分はNRPNを表示します。この部分をクリックすることにより、画面レイアウトが変わります。
マウスを操作することにより、各パラメータを変更する事が出来ます。
左(右)クリックをするとパラメータが1増え(減り)ます。また、左ボタンを押しながら右を押すとパラメータの変化が早くなります。
現在のバージョンのプログラムチェンジについては、数字の部分へのクリックのみ対応しています。楽器名、マップ名へのクリックには対応していません。
また、チャンネル番号の部分をクリックすることにより、チャンネルごとのミュートを制御することが出来ます。左クリックをするとミュート状態の切替。右クリックで全チャンネルミュート解除、左ダブルクリックでソロ演奏ができます。
発音しているノートからコードを解析して表示することが出来ます。転回形も表示されます。分数コードとUSTについては、いい解析アルゴリズムが考えられなかったため、表示できません。
コード表示はそのチャンネルで鳴らしている音の構成音を見て判断します。そのため、曲の進行を表すコードではありません。
複数の解釈が出来る場合は、そのすべてが表示されます。
例: Cm7 A#6
ディミニッシュは、すべての構成音が短3度ずつ離れているので、必ず4つ出てき てしまいます。
例: Cdim D#dim E#dim Adim
テンションコードは、C7(-9 11 13)のように表示されます。理論上ありえない組み合わせでも表示されます。
対応しているコード (ルートがCの場合)
以上と、(-9,9,+9,11,+11,-13,13)のテンションコード。テンションコードは 検出されれば無条件に表示されます。
オプションメニューの中にある、MIDI THRUを選ぶとMIDI THRU機能が使用できます。この機能はMIDI THRUダイアログが表示している間のみ使用可能です。
ステータスメッセージ以外のすべてのメッセージを通します。エクスクルーシブも、もちろん通します。ただ、エクスクルーシブメッセージのTHRUは、メッセージの取りこぼしが起きるかもしれません。もし起きたらバグレポートをお願いします。私の環境では特に目立った取りこぼしはありませんでした。
また、出力するメッセージを加工する事も出来ます。出力チャンネルを変更する事が出来ます。また、ベロシティ値を加工する事も出来ます。また、MIDIエミュレーションモードの影響を受けます。
入力されたメッセージは、演奏モニタに反映されます。ノート表示も行われ、コード解析も行われます。
TMIDIは画面をめいいっぱい使ってWRD(歌詞)を表示する事が出来ます。この機能を使用するにはDirectX2以上が必要となります。
フルスクリーンモードにするには、最大化ボタンを押してください。これだけでOKです。ディスプレイとの同期周波数が切り替わるため、一瞬画面が乱れたり暗くなります。これでディスプレイを破壊することはないはずです。(もし壊れたら、コンピュータメーカの怠慢です。自作機はもちろん製作者の責任です。生半可な知識を使って組み立てないように。)
また、フルスクリーン時に画面色数の設定を変える事も出来ます。基本的に256色モードのときが一番パフォーマンスがいいです。環境設定のWRD設定の欄で設定してください。
MIDIエミュレーションにおける、それぞれの音源のエミュレーションの仕方、限界などについてを述べます。
まずMIDIエミュレーション機能は、音源のメーカ、機種により出力される音に違いがあるので、再現性という点では基本的に無理であるということを認識しておいてください。
また、TMIDIのエミュレーションは"とりあえず鳴らす"のが目標です。音を似させようという意図はまったくありません。
注:この文章での"互換性がある"というのは、MIDIメッセージを正しく受信するという意味です。音色に互換性があるわけではありません。
Roland製音源同士の変換は、対象音源が、使用音源より下位互換機種であれば、たいていうまくエミュレーションされます。マップ切替で対処しています。
その逆に上位互換機種である場合や、その他のメーカの音源用のデータは、バンクセレクトを無効にすることで対処します。No Instrumentを防ぐ事によって対処しています。
また、SC-33では、SC-55以上に搭載されているCMバンクをエミュレーションできるようにしていますので、一部の音色を除いてSC-55とほぼ同等の演奏が出来ます。
ver2.1からはXGのドラムマップ切替をGSのエクスクルーシブに変換します。ただし、使用音源がSC-88PROの場合は、隠し機能であるXG互換機能を使用します。
YAMAHA製音源同士の変換は音源側で対処してくれそうなので大丈夫なようです。 Roland用データは音源側でエミュレーション機能(TG-300モード)がありますので大丈夫です。ただし、C/Mバンクの無い音源が一部ありますので注意してください。
その他の音源についてはバンクセレクトを無効にして対処しています。
また、YAMAHAのTGシリーズはGS互換らしい(?)ので、SC-55などを選んでください(未確認情報)。CBX-T1はGM音源を選んだほうがいいみたいです。(未確認情報)
ほとんど資料の持ち合わせがなく、サンプルデータも少ないので動作については未知数です。おそらく動いているかと思いますが、、、
NS5RでGS,XG用,05R/W用のデータを演奏させることについては確認が取れてます。KORG音源をお持ちの方はSMFナイフ(須釜俊一さん作)を使用したほうがいいかもしれません。
SoundBlaster(AWE)32/64, WaveBlaster/IIについてはすべて同じ物と考えていただいて結構です。"Creative Sound Blaster32/AWE32"を選んでください。
こちらでもSound Blaster 32で動作確認を行っており、GS,XGのドラムマップ切替を、多少強引ですが実現しています。また、MT-32, CM-32/64のデータもパッチをあてることにより演奏できるようになっています。
蛇足ですが、SB16,32のドライバは非常に出来が悪いです。極めつけはオールノートオフが効かないことでしょう。このためTMIDIでは一時停止/停止しても音が止まりません。また、初期化しきれない部分があるようで音が音痴になったりします。
これらの現象を回避する予定はありません。気になる人はCreative Labsのほうに苦情を言ってやってください。(どうやらドライバのバージョンにも依るみたいです)
WinGrooveでは、一部のGSエクスクルーシブを受信するのでなるべくそちらを使用するようにしています。内部的にはSC-33と同様の処理をします。
MidiStar/GSは、GS音源との互換性が高いようです。SC-33+α(SC-55-α)と考えて結構です。
その他のGM音源であればSoundBlaster32と同等のエミュレーションを行います。GM音源以外は対応していません。(MT-32,CM-32/64など)
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は正確に時間を進めますのでメッセージ送信にかかった時間分だけ取り戻そうとします。その結果テンポが一時的に速くなってしまいます。(トータルで見た場合のテンポの平均は正確ですが)
音源の初期化について多少問題があるようなので、ここに述べます。
まず、ユーザードラムを使用している演奏データは正常に演奏できない場合があります。 このような場合は、音源の "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" にすると、一般保護例外がでるようです。 原因はエクスクルーシブを送ったときに発生するようです。
DDEとはDynamic Data Exchangeの略称で、Windowsにおけるプロセス間通信機能の名称です。
DDEを使うと異なるアプリケーション間でデータを連携したり、コントロールしたりすることが出来ます。TMIDIでは、演奏を開始させたり、停止させたりすることが出来ます。
ここでは、サービスの要求側をクライアント、サービスを供給する側をサーバと呼びます。
TMIDIのDDEサーバはXTYP_CONNECT,XTYP_EXECUTE,XTYP_REQUEST,XTYP_DISCONNECTトランザクションをサポートしています。サービス名を "TMIDI" トピック名を "TMIDI" にして接続してください。また、他のアプリケーションからの操作をロックすることができます(排他制御)
以下はテーブルを使用しています。
コマンド名 | 機能 |
---|---|
lock | ユーザーによるボタンなどの操作を一部ロックします。また、接続している他のクライアントの操作もロックします。同時にロックできるのは1つのクライアントまでです。 |
unlock | ロックを解除します |
openfile [ファイル名] | ファイルを開きます (WRD,TOR,MID何でも可) |
playfile [ファイル名] | ファイルを開いて演奏します。コマンドラインと同じように/Mオプションを使用できます。 |
play [番号] | リスト中の指定した番号の曲を演奏します。 |
stop | 演奏を停止します。 |
pause | 一時停止します。 |
resume | 一時停止を解除します。 |
changeWRD | WRDウィンドウに切り替えます。 |
changeLIST | LISTウィンドウに切り替えます。 |
changeDOC | DOCウィンドウに切替 |
changeSTATUS | STATUSウィンドウに切替 |
changeMINI | MINIウィンドウに切替 |
changeFULLSCREEN | 全画面表示に切替 (動作が多少おかしくなる場合があります) |
play 4
4番目の曲を演奏します。
playfile my favorite.tor
"my favorite.tor"というリストファイルをオープンして演奏を開始します。
戻り値はすべてCP_WINANSIの文字列形式。失敗した場合はNULLを返します。
以下はテーブルを使用しています。
アイテム名 | 戻り値の意味 | 機能 |
---|---|---|
getcount | リスト内の曲数 | リストに存在する曲の数を返します。 |
gettitle [番号] | 題名 | MIDIファイルの題名を返します。 |
getlength [番号] | 長さ(ミリ秒単位) | MIDIファイルの長さを返します。 |
getfilename [番号] | 題名 | MIDIファイル名を返します。 |
getbasefolder | ディレクトリ名 | 基本フォルダを返します。 |
getlistfilename | リストファイル名 | 現在使用しているリストファイル名を返します。 |
gettime | 場所(ミリ秒単位) | 現在の演奏ポインタを返します。 |
getstatus | play/stop/pause | 現在のTMIDIの状態を返します。 |
getplayfile | 番号 | 現在演奏している曲の番号を返します。 |
ver1.2以前の履歴は不明です。
一部テーブルを使用しています。
OS | Windows NT workstation 4.0 Service Pack 3 Internet Explorer 4.0 |
Mother Board | ASUS XP55T2P4 Rev.3.0 (430HX chipset) L2-Cache 512KB |
CPU | Intel Pentium 133MHz (external 66MHz) |
Memory | 80MB |
SCSI I/F | ASUS SC-200 (NCR 53C810) |
Sound Card | ENSONIQ AudioPCI (Wavetable/Wave/MIDI In,Out) |
Video Card | Millennium WRAM 2MB RAMDAC 220MHz |
MIDI I/F | SC-88内蔵 シリアルI/F (PC-2 38400bps) たまーに SB16 MIDI出力 を使います(でも使いものにならない) |
MIDI KB | YAMAHA CBX-K1 |
MIDI音源 | SC-88 |
CD-ROM | TOSHIBA XM-3701B(SCSI 6.6倍速) NEC製(ATAPI 4倍速) |
MOドライブ | FUJITSU M2512A |
HDD | IBM DORS-32160(SCSI) |
Ethernet Card | PLANET FNW-9600-T (Realtek RTL-8129) |
Mother Board | ASUS P55TP4N |
CPU | Pentium 133MHz |
Memory | 32MB |
Video Card | Diamond SpeedStar64 (CL-GD5434) |
MIDI | Sound Blaster 32 + RAM 2MB (GSパッチ) |
Ethernet Card | ノーブランドPCI (WinBond W89C940) |
Panasonic Woody (430HXらしい) | |
CPU | Pentium 200MHz |
Memory | 96MB |
Video Card | 多分 Canopus PowerWindow 3DV (S3 ViRGE) |
MIDI | 多分 YAMAHA OPL3 |
このTMIDI Player(TMIDI.EXEと付属するドキュメント)に関する著作権は ふみぃ (本名:大竹敏史) に帰属します。
再配布は、非商用利用に限り、実費以外の金銭のやりとりがなければ可です。また、商用BBSでの配布も、その性格から非商用利用とみなします。
転載、掲載する場合はアーカイブの中身を変えないままお願いします。ただし、ish,uuencode,MIME Base64 Encoding、LHA自己解凍型(LHA,LHMELT等)と、展開した状態での配布は可とします。
転載場所を把握したいので、転載した場合はできるだけ報告をお願いします。バージョンアップ時は不要です。転載報告メールはサブジェクト(件名、題名)に "転載" の文字を入れていただけるとこちらの管理が楽になります(^^)。あと、ヘルプやwwwに転載者のお名前を紹介する場合があるので、その可否についてもお願いします。また、特に問題が無ければ返信を出しません。孫転載も可能です。
雑誌、本、CD-ROMへの掲載/添付などの、商用利用の場合は事前に許可が必要です。また、2回目掲載時以降(月1回以上発行される雑誌にもう一度掲載されること)は、処理が煩雑になるため、許可は不要で、報告のみ必要です。
店頭デモは構いませんが、TMIDIを添付しての販売は禁止します。許可は不要です。
私のホームページ(http://www.ns.kogakuin.ac.jp/~c396022/)へのリンクはフリーです。ただ、一声かけていただけると嬉しいです。リンク許可は出さないので、返信の必要な許可依頼メールはご遠慮ください。
ホームページ以外のページへのリンクはご遠慮ください。予告無しに移動、削除される場合があります。ただし、強制力はありませんが。
お約束ですが、このソフトを使用した結果生じた損害は保証しませんし、バージョンアップ,サポートの義務を負いません。
このソフトに関する情報は、私のWWWサイトにあります。ホームページの場所はhttp://www.ns.kogakuin.ac.jp/~c396022/です。また、ベータ版の配布も行っています。
このソフトに関する質問、意見、感想なども受け付けております。連絡先は c396022@ns.kogakuin.ac.jpもしくは、ゆいNET YUI17650 Fumy までお願いします。
質問に対する回答は、個別に返信しないものはできるだけ、TMIDI PlayerのFAQページに に掲載します。(しょっちゅう移動するのでURLは自分で探してくださいね)
また、ごく一般的な質問はネットニュースの以下の場所でお願いします。
あと、双方の時間とお金の節約のためにメールを出す方は以下のことをお願いします。
TMIDIを制作する上で以下の方にお世話になりました。ご協力感謝いたします。
他にもここに載せるべき方々がいると思いますので、お名前を掲載しても良い方はメールで連絡していただければ幸いです。
また、毎回TMIDIを転載していただいている方、ありがとうございます。m(__)m
たくさんの方に転載していただき、こちらのほうで一部把握出来なくなるほどの量になってしまいまして転載者の方々のお名前を載せる事が出来なくなりました。申し訳ありません。整理出来次第、お名前を載せる事にします。
このソフトの制作に当たっては、次のような書籍/資料を参考にしました。
HTML文書を書くに当たって、次のような書籍/資料を参考しました。
このソフトの制作/解析には、次のソフトを使用させていただきました。
この命令以降の文を演奏の始まる前に実行します。 ;(セミコロン)でつなげることもできます。
versionにはMIMPIのバージョンを記述します。4.0だったら400とします。
WRDコマンドの1行を実行するタイミングを設定します。nには1小節を96としたティック数-1を指定します。MIMPIと違い、速いタイミングにしても正確にカウントします。
mode=1にすると、1行単位でなく文字単位でタイミングを決められます。(デフォルトはmode=0)
このモードにすると "|_\"は特別な意味を持ちます。"_"はnで決めたタイミングを待ちます。"|"で囲んだ文字は1回のタイミングで表示することを意味します。"\"は"|"や"_"や"\"を表示するために使います。
例1:
__あ___| いうえお|___| かきくけこ|____
例2: "\1,200_"と表示する場合
\\1,200\_
measureで指定した小節まで待ちます。@OFFSETを指定されている数値を加えます。stepはmeasureで指定した小節からstepティック(4分音符の分解能は48)分だけ待ちます。
例:
@WAIT(54,144) 4/4の曲の場合、54小節目の3拍目まで待ちます。
@WAIT()で指定する数値を補正します。
measure小節のstepティックだけ待ちます。プレイヤーによってはずれるので、使わないほうがいいです。
@WAIT()と同じです。
曲の演奏が終了するまで待ちます。TMIDIの場合は曲の演奏が終了するとWRDも停止しますので、実質上この命令は意味がありません。
テキスト画面のカーソル位置を変更します。(1;1)がホームポジションです。
テキスト表示の制御をします。
ESC[をstrの前にくっつけてテキスト表示します。エスケープシーケンスを使うときに便利です。
テキスト表示の色を変更します。
指定した範囲のテキスト画面を消去します。
指定した範囲のテキスト画面をスクロールします。
グラフィック画面の初期化をします。アクティブページとディスプレイページを0にして、表示状態になります。
グラフィック画面を消去します。
描画ページ(active)と表示ページ(display)を変更します。
グラフィック画面の表示制御をします。
線/四辺形を描きます。
中心座標(x,y)、半径rの円を描画します。
PHOファイルをロードします。
#0のパレットを変更します。#0なので画面にすぐ反映します。r,g,bはそれぞれ0-F(10進で0-15)を指定できます。
例:
@PAL(000,00F,0F0,0FF,F00,F0F,FF0,FFF,................)
#pバンクのパレットを変更します。#0のときは画面にすぐ反映します。
#pバンクのパレットを色反転します。#0の時は画面にすぐ反映します。
#p1バンクから#p2バンクへパレットを滑らかに変更します。
書き込みするプレーンを指定します。4ビットで最上ビットからEGBRと指定します。
x1,y1,x2,y2で指定した範囲と(xd,yd)で指定した座標にコピー/交換をします。
Woody-RINNさんの開発したMAG形式の画像ファイルを表示します。
BUCHIさんが開発したWRDCMD2(演出君メカ)のコマンドです。
TMIDIにはいくつかの独自仕様が存在します。 @GSCREEN,@GMOVE,^XCOPYなどのページ番号には0,1以外の値を使うことができます。 0と1はMIMPIと同じ仕様ですが、2以上は「演出君メカ」の仮想VRAM領域になります。 この機能によって仮想VRAM領域も普通のページと同様の操作ができます。 もちろん、この機能を利用するとTMIDI専用WRDになりますが。
Music Instrument Digital Interfaceの略です。デジタル楽器同士をつなげるインターフェスのことです。コネクタの仕様はDIN 5pinで、オープンコレクタにより受信装置側のフォトカプラを駆動させます。通信方法は、非同期シリアル転送、31.25kbpsの速度で行います。1つのケーブルで16chのデータを送る事が出来ます。
31.25kbpsという速度は平均的に見れば十分な速度ですが、瞬間的に見ると十分ではありません。例えば、ノートONを送るのに必要な所用時間は約1msです。16チャンネル同時に1チャンネルにつき3和音を鳴らした場合、1x3x16=48msもかかります。これはもたりとして人間の耳に聞こえてしまいます。(通常はこんな鳴らし方する人はいませんが。あくまで例ですんで^^;)
Desk Top Music (卓上音楽?)の略です。ですが、普通に音楽をするのと特に変わらないので、なんか差別されているような感じがして嫌いな言葉です。また、DTM=カラオケという感じにもなっていたりします。ちなみに私はカラオケが嫌いです。誘わないでください。(笑)
MIMPI というソフトで使われた歌詞表示用のファイルです。現在の歌詞表示ファイルの標準です。規格としては不安定、いい加減な仕様なので、互換プレイヤー同士で表示結果が異なったりします。この弊害を取り除くべく、各地で標準歌詞フォーマットが考えられているようです。
あなたが使用する音源の名称です。エミュレーションでは変換先の音源名になります。
MIDIデータ側が推奨する音源の名前です。エミュレーションでは変換元の音源名になります。最近ではSC-88が多いようです。88PROも増えてきました(T_T)
それぞれの音源専用の命令のことです。たとえばGS音源用のエクスクルーシブは他社の音源では無視されます。
GM規格の音源同士では楽器の並びは同じですが、旧世代の音源(MT-32等)はGM音源とは著しく並びが違います。GM音源でMT-32用の曲を聞くと楽器の対応がめちゃくちゃになります(たとえばピアノのパートがギターになったり) そこで、TMIDIではパッチテーブルという楽器の並びを替える表を作り、エミュレーションします。
定義ファイルとは エミュレーションを実行するための情報を記述するためのものです。このファイルを適切に書き換えることにより自分のマイナーな音源に対応させることも可能です。
ver2.1より、このファイルがTMIDI.EXE本体に内蔵されました。カスタマイズしたい方はこの内蔵ファイルに追加する形になります。そのための雛形としてSAMPLE.DEFを添付しました。
旧世代のMIDI音源では、音色の並びが音源によりまったくバラバラだったり、機種間の互換性がまったくありませんでした。そこで、GM規格が登場し”ある程度”互換性がとれるようになったわけです。
Roland社が提唱するMIDI音源の規格です。GS規格用とかかれたデータは大抵GS規格の音源ならほとんど演奏可能です。もちろん、GM規格を含んでいます。
GS互換と呼ばれる(もちろんRoland以外)音源がいくつか出回っていますが、完全な互換性がないのがほとんどです。注意してください
RolandのGS規格に対応するべくYAMAHAが提唱した規格です。もちろん、GM規格を含んでいます。最近インターネットで流行っているようです。
RolandのGS規格を満たしているMIDI音源です。現在のDTMの主流です。それぞれに上位互換性はありますが、マップ切替しないといけないという欠点があります。また、MT-32といった旧世代MIDI音源の音色を内蔵しており、適切な設定をすればある程度聞けるようになっています。
YAMAHAのXG規格を満たしている音源です。私には詳細は分かりません。
KORGのMIDIキーボード、音源です。名機M1の音色を継承しているとのことです。私は所有していませんので詳細についてはわかりません。
KORGの最新機種です。GS規格、XG規格、05R/Wの仕様をすべて満たしています。が、音色が多少異なったりTVF/TVAの係り具合が違いますので(当然か)完全に同じには再現できません。
シンガポールのCreativeLabsのサウンドカードです。Win上ではMIDI音源相当になります。一般的にはGM規格の一部を満たしています(というのもこのカードはボード上のメモリにWAVEをいれているため、ユーザーが好きな音を入れられます)
エクスクルーシブを受け付けないので、GS音源用のデータを聞く場合はエミュレーションを設定しなければなりません。
このカードは割といい音をだします。(繊細な音が出せるようです)ただし標準のWAVEが貧弱なため(とくにドラム)メモリ増設してWAVEをよくしたほうがいいです。
アンプへデジタル(SPDIF)接続すれば音質面(dynamic range, S/N比)では言うことなしでしょう。(もちろんいいアンプを用意しなければ意味がありません)
Microsoft社が販売しているオペレーティングシステム、Microsoft Windowsのこと。現在、Windows 95, Windows NT 4.0が主流です。
Windows 95/NT3.1以降搭載されたAPIの名称です。Win16と比較して、マルチスレッド、コンソールアプリケーションサポート、セキュリティ、ファイル入出力の面で強化されました。(Windows 95ではセキュリティは無視されます)
Windows 3.1までに搭載されたAPIの名称です。
アプリケーションインターフェースのことです。アプリケーションソフトと、ドライバ(システムなどなど)との間を結ぶインターフェスです。Win32 APIならば、Windowsシステムと、そのアプリケーションの間を結んでいるインターフェスの事です。
従来のWindowsでは、ハードウェアに近いレベルでのプログラミングが出来ず、何をするにもWindowsが介在するため、動作が遅かったり、機能に制限が付いたり、不可能だったりしました。DirectXを使うことにより、それぞれのハードウェアにより近いレベルでプログラミングが出来るようになり、高速化されます。
DirectDrawは、DirectXの一つのコンポーネントであり、主にディスプレイに関係する部分を担当します。ここで注意しなければならないのは、DirectDrawがアプリケーションを高速化させるのではなく、ハードウェアに直接アクセスする手段を提供するに過ぎないということです。つまり、DirectDraw専用にプログラミングしなければならないのです。また、ハードウェアが一部の機能を提供しない場合は、その部分をDirectDrawがエミュレートしてやります。このエミュレーションはかなり遅いです。
アプリケーションソフトが、プログラム実行中にコンピュータのリソースに不正アクセスした場合に出現します。たいていの場合は、プログラマが意図しない操作をユーザが行ったり、単なるバグなどで発生します。
このエラーが表示される時、詳細というボタンを押すと、そのエラーの詳しい情報が出てきます。この情報を余さずコピーしてプログラマに送ると非常に喜ばれます。このログがあるだけで、バグ取りが非常にスムースに行えます。逆に、このログが無いとバグ取りは非常に困難です。
Windowsは常にCPUが暇です。私のマシンではCPUの使用率は通常5%以下です。これはWindowsはイベントドリブン型といって、なにかアクション(マウスが押されたなど)が起きたときのみソフトが動くようになっているからです。TMIDIでは、このアイドル時間を利用してリアルタイム表示を行っています。このため、常にCPU使用率のゲージが100%になってしまいます。もちろん、他のソフトがアクションを起こしたときはそちらが優先して実行されるのでマシンが重くなるような事はありません。あくまであまった時間だけ使用します。
世界中に存在するネットワーク同士を接続したネットのこと。BBSのようにある1ヶ所にあるホストコンピュータにデータが貯えられるシステムとは違います。
インターネットで使われている技術をそのままローカルネットワーク(LAN)で実現した形態。
World Wide Webの略です。世界中のコンピュータに置いてある情報がリンクし合い、 コンピュータ間を渡り歩けるシステムです。波乗りのようにコンピュータの間を移動できるので ネットサーフィンする とも言います。
WWWにおいてあるデータはウェブページという形で画面上に表示されます。この画面上には他のコンピュータへのリンクが置いてあり、それをクリック(選択)することにより、そのコンピュータのウェブページに移動する事が出来ます。
WWWブラウザを起動すると最初に出てくるページがホームページです。拠点という意味です。また、情報提供者の拠点となるページも、ホームページといいます。
ヒューレットパッカード社の登録商標です。ホームページの略でもないし、はいぱー○りすのことでもありません。:-)
WWWにおける、文書構造とハイパーリンクを表現するために作られた言語がHTMLです。SGMLのアプリケーションです。現在(1997/08/15)、HTML 2.0 が正式な規格です。現在、W3Cによって HTML 4.0 が Draft段階で公開されています。
掲示板のようなものです。日本には、有名所で fj.* (from japan), japan.*, tnn.*などがあります。基本的にはどのグループも誰でも投稿可能です(一部例外があります)。また、BBSと違い、実名主義です。