APiDRV.DOC

From MSX MUSIC WIKI
Jump to: navigation, search

▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼▽▼

 Music-driver for APi-driver system (MIDI・OPLL・PCM・PSG・SCC 対応)

       APiDRV ver3.11
               動作機種:MSXturboR
               動作環境:MSX-DOS2
                        MSX-MIDI / MIDI-IF#3 (MIDI使用時)
                         SCC-sound-cartridge (SCC使用時)
       (copyright)1992-1996        各務裕之
       (original) 1990-1993        永田英哉/電波新聞社  「NAGDRV」
       special-thanks                加賀和孝

▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲△▲


■【はじめに】

 このソフトウェア「APiDRV」は、Music-compiler「APiMML」で作成された演奏 ファイル(拡張子".MD?")によって MIDI・OPLL・PCM・PSG・SCC を演奏する、MSX- DOS2専用の外部コマンドです。  MIDI・PCM部は、X68000用のミュージック・ドライバ「NAGDRV」(永田英哉氏作) とほぼ互換性があります。  MIDIは、MSX-MIDI準拠("FS-A1GT", "FS-A1ST+μ-PACK")のインターフェイス、 及び MIDIインターフェイス3に対応しています。「MIDIサウルス」のインター フェイスには対応していません。  MSX2+以前の機種や、MSX-DOS1上では動作しませんので、御注意下さい。

 演奏できるチャンネル数は、以下の通りです。

       MIDI : 16ch  (要:MSX-MIDI/MIDI-IF#3)
       OPLL :  9ch
       PCM  :  1ch  (option"/P<n>"により1~8ch/実用上1~4ch)
       PSG  :  3ch
       SCC  :  5ch  (要:Konami製 SCC-sound-cartrigde)


 以下の説明のうち、次のような文字はそれぞれ次の意味を表します。

       < ・・ >        : 省略不可能
       [ ・・ ]        : 省略可能
       num        : 数値
       str        : 文字



■【使用方法】

 APiDRV は MSX-DOS2上で使用します。usage は次のようになります。

> APIDRV <入力ファイル>[.MD?] [オプション]


《入力ファイル》

       APiMML で出力されたファイルを指定します。
       ドライブ・パス・ファイルで指定します。
       拡張子省略時は、".MD?" になります。
       ワイルドカードも指定できます。


《オプション》

       オプションは大文字でも小文字でも構いません。
       1つのオプションの前には、必ず1つの "/" を付けてください。
 /H        : help                ヘルプを表示します。
                       入力ファイル無指定時にも、自動的にヘルプを表示します。
 /I        : info                MIDI,SCCの接続状況を表示します。
 /A        : auto-fadeout        曲が1回ループした時点で自動的にフェードアウトします。
 /L[n]        : loop                ワイルドカード単位で、繰り返し演奏します。
                       値が0、または省略した時は、無限ループします。
 /T        : active-Sens.        MIDIアクティヴセンシング(MIDIクロック)を送信します。
 /M        : MIDI-quiet        MIDIへの出力を禁止します。
 /F        : FM-quiet        OPLLへの出力を禁止します。
 /P[n]        : PCM-poli        PCM-poliモードにします。
                       加えて、最大チャンネル数(範囲:1~8)を設定します。
                       (値の省略時には、8 が設定されます。)
                       但し、周波数に依り最大値の限度が異なります。
                       値が 0 の時、PCMへの出力を禁止します。
                       また、その時はPCMファイルの入力も行いません。
 /S        : PSG-quiet        PSGへの出力を禁止します。
 /C        : SCC-quiet        SCCへの出力を禁止します。
 /G    : forcefully        隠し】入力ファイルのエラー・チェックを行いません。
 /W<n> : PCM-clk-wait        隠し】PCMの同期クロックのウェイト長を指定します。
                       初期値は17です。数が大きい程、周波数が低くなります。


《キーボード・コントロール》

       演奏中に以下のキーを押すことで、いくつかの処理をします。
 [RETURN]                次の曲に進みます。(ワイルド・カード指定時)
                       全ての曲が終わったなら、DOSに戻ります。
                       "/L"の指定時は、DOSに戻らず最初の曲に戻ります。
                       マウスボタン左でも、同様の動作をします。
 [CTRL]+[RETURN]        フェードアウトせずに、次の曲に進みます。
                       それ以外は、[RET]と同様です。
 [ESC]                        強制的にDOSに戻ります。
                       [CTRL]+[C],[CTRL]+[STOP]は、使用しないでください。
                       マウスボタン右でも、同様の動作をします。
 [SPACE]                一時停止・再生を切り替えます。
                       "TR0"コマンドの解除も、このキーで行います。
                       キー・オフはされません。
 [HOME]                その曲の先頭から再演奏します。
 [GRAPH]                4倍で早送り(ファスト)します。
                       押している間、有効です。
 [↓]                        1/2で遅回し(スロー)します。
                       押している間、有効です。
 [SHIFT]                一時停止します。
                       押している間、有効です。離すと再開します。
                       停止中は、他のキーが効かないことがあります。

 [SHIFT]+[CTRL] コマ送りします。

                       押すごとに1カウントづつ進みます。
                       [SHIFT]は押したままで、[CTRL]で調節すると良いでしょう。
 [←→]                テンポを調節します。
                       押すごとに約0.3%づつ上下します。
 [←→]+[CTRL]                テンポを調節します。
                       押している間、連続して変化します。

 [↑] テンポを元の値に戻します。

 [TAB]+[文字キー] トラック毎に発音(note-on)をマスクします。

                       キーの割り当ては以下の通りです。
                           full-key        [1]:track01 ~ [¥]:track13
                                       [Q]:track14 ~ [[]:track25
                                       [A]:track26 ~ []]:track37
                                       [Z]:track38 ~ [_]:track48
                           ten-key        [0123456789.,+-*/]:track00~15
                       [文字キー]のみで、マスクを解除します。
                       [HOME]でリプレイすると、全マスクが解除されます。
                       同時に3個以上キーを押すと誤動作することがあります。


《環境変数》

       APiDRVは以下の環境変数を使用します。
 APIDRVPCM                PCMファイルを検索するパスを設定します。
                       複数の指定も可能です。
                       その場合、スペース,タブ,コンマで区切ってください。
 APIDRVSEG                システムセグメントに割り付けたPCMの情報を示します。
                       "APiPCM" によって設定されます。
                       ユーザが変更・削除してはいけません。



■【PCM】

 PCMファイルは、プライマリ・マッパーから必要なセグメントを確保して格納 されます。扱えるPCMファイルの最大長は、プライマリ・マッパーの空きマッパ ーサイズまでです。セグメントが確保できなかった場合、PCMの演奏は行いません。

 PCMファイルは、環境変数"APIDRVSEG"で示されたファイル名と一致した場合、 それに示されたセグメントを直接データエリアにとります。"APIDRVSEG"と一致 しない場合、環境変数"APIDRVPCM"で設定されたパスから順次検索されます。  "APIDRVPCM"が設定されていなければ、カレント・ドライブのカレント・ディ レクトリのみから検索されます。  すべての検索を終えても見つからなかった場合、PCMの演奏は行いません。

 PCMの演奏には、mono/poliの2モードがあります。ディフォルトでは、monoモ ードが選択されます。切り替えは、オプション "/P<n>" で設定します。  mono(モノフォニック)モードの場合、8ch全てがキーオンされますが、2音以 上同時に鳴る場合、前に鳴った音は消されます。(PCM8未使用時と同様です。)  poli(ポリフォニック)モードの場合、最大チャンネル数("/P<n>" のパラメ ータ)を超えるチャンネルは無視されます。その代わり、複数のチャンネルは合 成されて、同時に出力できます(PCM8使用時と同様です)。  ただし、CPUの限界上、最大poli数は以下の通りです。(複数チャンネルで同 じ周波数を使った場合。異なる周波数を使えば、多少変動します。)

       15.6KHz : 1ch        10.4KHz : 2ch         7.8KHz : 3ch         5.2KHz : 4ch

 ヴェロシティは8がディフォルトで、1ごとに2dBづつ上下します。  加算とシフトで音量を調節しているため、値ごとに処理量が違います。8で最 も処理が軽く、3で最も重くなります。



■【エラー】

・Not MSX-DOS2. MSX-DOS2ではありません   DOS1や他のCP/M等で起動したときに表示されます。

・Not MSXturboR. MSXturboRではありません   MSX2+以前の機種で起動したときに表示されます。

・Bad option. オプションが不正です   存在しないオプションを指定したときに表示されます。

・MIDI-interface is not found.

                       MIDIインターフェイスが見つかりません

  MSX-MIDIが存在しなかった時に表示されます。   MIDIサウルスは、MSX-MIDIとして認識しません。

・Memory exhosted. メモリーが足りません   入力ファイルのサイズが大き過ぎます。   以下のようにすれば、中間ファイルを多少短くできます。

       �タイ・コマンドを "&" から "^" あるいは "・" で置き換える
       �マルチ・トラックの箇所を、Sub-part に置き換える



■【諸注意】

 Z80モードで立ちあげた場合は、自動的にR800-ROMモードになります。DRAMモ ードでないのは、メモリマッパーのDRAMモード用のセグメントが保証されていな い可能性があるからです。

 曲データの中には、曲名などが漢字で入力されているものもありますので、で きるだけ漢字モードで使用されることをお勧めします。といいながら、自分はい つも ANK モードですが。(TPA が減るのが嫌だし)

 FMパートはNAGDRVとの互換性はありません。これは、X68KではOPMというチッ プを使っているからです。

 "APiPCM" で "APIDRVSEG" に割り当てられるファイルはただ1つなので、最も よく使うファイルを設定すると良いでしょう。また、十分なフリーセグメントも お忘れなく。RAMディスクを開く前に割り当てるのが良いと思います。



■【参考】

 このソフトウェアの作成にあたって、以下の文献・資料を参考にしています。

・電波新聞社 マイコンBASICmagazine '90-12 「NAGDRV FOR X68K」

                                                        永田英哉・あんど 著

・電波新聞社 Disk-NAG/2

・アスキー MSX-magazine '92-04 p66 「A1GTテクニカル・アナリシス」

                                                                石川直太 著

・アスキ− MSX2 テクニカルハンドブック

・アスキ− MSXturboR テクニカルハンドブック

                                                                石川直太 著

・アスキ− MSX-Datapack turboR版

・アスキ− MSX2+ パワフル活用法

                                                                杉谷成一 著

・ASCAT MSXテクニカルガイドブック第四版

                                                                   木村歩 著

・哲学出版 Z80 マシン語秘伝の書

                                                                 日高徹 著

・技術評論社 X68000 プログラマーズ・ハンドブック

                                                                 宍倉幸則 著

・Roland SC-55 取扱い説明書

・日本ソフトバンク Oh!X '92-06 「PCM8」

                                                                 江藤啓 著

・日本ソフトバンク MIDI BOOK

                                        コンピュータ・ミュージック研究会 著
                                                         (以上、敬称略)



■【使用および配布について】

 このソフトウェアはfree-wareです。著作権は作者が保持しています。非営利 に限り、誰でも無料で使用することができます。  ソースファイル(拡張子".MS?")、中間ファイル(拡張子".MD?")に於いては、 作曲者(原曲の著作者)および曲データ制作者がそれぞれ著作権を保有します。

 転載・配布は自由です。確認はいりませんが、出来れば(事後でもよいので) 連絡を頂けたらと思います。ただし、商的利用をする際は、著作者の許可を得て 下さい。また、転載先でのレスポンスは、転載した各自の責任で行ってください。  各自に於いて改良・改造したものは、その旨を明記した上で配布は自由とします。

 このソフトウェアを使用した結果の影響については、一切の責任を負いかねま すので、あらかじめご了承ください。



■【ありがとぉ】

 この開発において、協力して頂いた、

  加賀和孝氏(X68000XVIユ−ザ),   TIFFANY氏,ひっとまん氏,たかを氏,祭野れん氏,魔法陣#氏,[MARIO]氏,   TAKAO氏,NG氏,Ain氏,NAMCHU氏,NEWSEA氏,BOIS氏,藤本昌利氏,   PP-NETの皆さん,Natsume-NetのMSXボードの皆さん,アリスの冒険の皆さん,   使ってくれたMSXユーザの方、どもね☆


 また、遺失した時の復旧に協力して下さった、

  鷲巣正明氏,山口直人氏

 に感謝します。


 そして、原作者の永田英哉(Yu-You)氏に深い感謝を捧げます。



■【奥付】

 この開発において、加賀和孝氏から多くの支援を頂きました。深く御礼申し上 げます。また、HDDの誤作動によるファイル喪失の復旧に協力して下さった鷲巣 正明氏,山口直人氏に、またshemをNatsume-Netに転載して下さったKIS氏に、深 く感謝します。


 音長が 16bit まで拡張したので、今まで長い音長は "&" で繋げていたのを、 "^" や新設の "・" でも書けるようになりました。但し、連符内では使えないこ ともあります。


 テンポが実際の値より遅れてしまう現象は前から分かっていたけど、何回ソー スを見直してみても、何処も間違えていない。あいやー、困った。  取り合えず、2.04551%程度早くしてみました。一応これで補正出来ているの が、何となく理不尽。


 NEWSEA氏と藤本昌利氏の要望&助言によって、MIDIインターフェイス3に対応 してみました。基本的には、MSPの作者山本義一氏のアイデア、

       I/Oの0ECH~0EFHに8253相当のタイマが実装されていることを確認する
       (8253が実装されていれば,カウンタ2のタイマ設定を行ってからカウンタ2の値を読むと,
        刻々と値が変わることから実装されていることを確認できる)

を使ってチェックしてます。  ただし、タイマの初期化を行っていないので、実行時にタイマ#0及び#2が 停止していると認識しません。取り合えず、GTのMain-ROMの$002EをDRAMモード で$00に書き換えてチェックしたところ、きちんと external-MIDI として認識し たので大丈夫でしょう。(無責任)


 音色"VE" の内部演算を 8bit から 16bit に変更したので、以前の ver とは 微妙に聞こえ具合が違ってくるかも知れません。


[訳注:連絡先省略]