F−BASIC386用 MSVドライバ MSVDRV.REX 説明書 >概要 F-BASIC386でMSVの演奏を可能にするREXファイルです >バージョン1.4での変更点 バグフィクッスのみです。 >収録ファイル MSVDRV.REX MSVドライバ本体です。 MSVREX.TXT 説明書です。 MSVREX.HED 概要ファイルです。転載時などに使えます。 MSVREX.BAS サンプルです。 SRC\ ソースファイルです。 MSVREXC.REX MSVREXコンパイラ本体です。 MSVREXC.TXT MSVREXコンパイラの説明書です。 MSVREXC.BAS MSVREXコンパイラのサンプルです。 >初期化方法 MSVDRV.REXを使用する前に以下の処理を行ってください 1.CLEAR命令でプロシジャ領域を確保してください。 必要なサイズは ・MSVDRV.REXサイズ 現在40000バイト程度 バージョンアップに備えて大きめに確保すると良いでしょう。 ・MSV・WPKファイルサイズ 配列変数領域を使わない場合のみ必要です。 演奏したいファイルによります。 ・他のREXファイルで使うサイズ 同時に使用するREXファイルによります。 上記の合計です。 例) 10000 CLEAR ,,,[配列変数領域の大きさ],40000 [配列変数領域の大きさ]はMSVサイズとWPKサイズを考慮して設定してください。 コンパイラの場合[配列変数領域の大きさ]は必要ありません。 2.LOADM命令でMSVDRV.REXをロードします。 普通のREXファイルと変わりません。 他のREXファイルを使う場合はオフセット指定してください。 例) 10010 MSVREXOFFSET&=0:REM 他のREXと共存させるとき設定 10020 LOADM "MSVDRV.REX",MSVREXOFFSET& 3.BREAKを禁止し、エラー処理を設定します。 ************ 最重要事項! ************ MSVドライバの終了処理を行わずにプログラムが終わると暴走の原因になります。 STOP OFF ON ERROR GOTO 〜 の二つの命令は最初に必ず実行してください またプログラムの正常終了時にもMSVドライバの終了処理を必ず行ってください。 例) 10030 STOP OFF:REM ブレイク禁止 10040 ON ERROR GOTO *ERROR_TRAP:REM エラー処理設定 4.BASICに音源を初期化させます。 PLAY "R"を実行すると音源が初期化されます。(重要事項!) これを実行しないと正常に演奏できない場合があります。 例) 10050 PLAY "R" >使用方法 機能番号 機能 (0) バージョンの取得 (1) バッファアドレスの設定 (2) ファイルの読込 (3) 演奏状態の取得 (4) 演奏開始 (5) 演奏停止 (6) 演奏一時停止 (7) 演奏一時停止解除 (8) フェードイン・アウト (9) 終了処理 (10) 情報取得(1.3機能拡張) (11) 拡張設定(1.3機能拡張) (12) ミュート状態取得 (13) ミュート設定 (14) 指定パート演奏停止(1.3新規機能) (15) 指定配列のデーターを指定パートで演奏する(1.3新規機能) (16) WPKファイルの読込(1.3新規機能) (0).バージョンの取得 RET& = CALLM(MSVREXOFFSET&,0) RET& バージョン 万の位はMSVライブラリのメジャーバージョン 百の位(2桁)はMSVライブラリのマイナーバージョン 十の位(1桁)はMSVDRV.REXのメジャーバージョン 一の位(1桁)はMSVDRV.REXのマイナーバージョン このバージョンでは10014を返します。 MSVライブラリのバージョンは1.00です。 MSVDRV.REXのバージョンは1.4です。 (1).バッファアドレスの設定 形式1) RET& = CALLM(MSVREXOFFSET&,1,VARPTR(BufferArray(0)),BufferSize) BufferArray 読み込みバッファにする配列名 BufferSize 配列のサイズ(バイト単位) RET& 0なら正常終了 0以外は初期化失敗 配列名の後ろには必ず(0)を付けてください。 配列を使って動的にバッファを確保する時に使います。 コンパイルする場合に有効です。 形式2) RET& = CALLM(MSVREXOFFSET&,1,0,RexAreaBufferSize) RexAreaBufferSize プロシジャ領域に確保したサイズ 他のREXファイルと併用しない場合CLEAR命令で指定したサイズと同じ値です。 RET& 0なら正常終了 0以外は初期化失敗 従来と同様にプロシジャ領域の後部をバッファにします。 ゲームのBGMなど、演奏ファイルが限られている場合に使えます。 (2).ファイルの読込 RET& = CALLM(MSVREXOFFSET&,2,VAPTR(Filename$)) Filename$ 演奏したいファイル名を設定した文字列変数。 RET& 0なら正常終了 0以外は読込失敗 FMB・PMB・WPK等の音色ファイルも同時に読み込まれます。 予めバッファアドレスの設定を行っておく必要があります。 (3).演奏状態の取得 RET& = CALLM(MSVREXOFFSET&,3) RET& 0なら停止中、1なら演奏中、2なら一時停止中です。 (4).演奏開始 RET& = CALLM(MSVREXOFFSET&,4) RET& 0なら正常終了です。 (5).演奏停止 RET& = CALLM(MSVREXOFFSET&,5) RET& 0なら正常終了です。 (6).演奏一時停止 RET& = CALLM(MSVREXOFFSET&,6) RET& 0なら正常終了です。 (7).演奏一時停止解除 RET& = CALLM(MSVREXOFFSET&,7) RET& 0なら正常終了です。 (8).フェードイン・アウト RET& = CALLM(MSVREXOFFSET&,8,Ch,Fade,Stime) Ch 設定チャンネルです。 0〜5までがFM音源、6〜13までがPCM音源です。 255で全てのチャンネルを一度に設定します。 Fade 増減速度です。 増減速度にはマイナス指定で減衰、プラスで増大します。 Stime ステップタイムです。 ステップタイムはフェード設定後、演奏停止するまでの時間です。 通常のMSVは384指定で全音符分になります。 各チャンネルで共通で一番最後に指定したものが有効です。 0を指定すると停止動作しません。 指定チャンネルだけの停止動作という使用方法は出来ません。 RET& 0なら正常終了です。 (9).終了処理 RET& = CALLM(MSVREXOFFSET&,9) RET& 0なら正常終了です。 割り込みを復元しバッファを開放します。 プログラム終了・バッファ配列ERASEの前に必ず実行してください。 ************ 最重要事項! ************ MSVドライバの終了処理を行わずにプログラムが終わると暴走の原因になります。 (10).情報取得(1.3機能拡張) 形式1) RET& = CALLM(MSVREXOFFSET&,10,Infono) Infono 情報番号 RET& 取得した情報 ・情報番号0 MSVドライバのワークアドレスが返ります。 ワークについての詳細はMSVライブラリ for High-Cを参照してください。 ・情報番号1 MSV演奏データがメモリ中に存在していたら0以外を返します。 具体的には、チャンネル0の演奏データのアドレスが返ります。 ・情報番号3(1.3新規機能) 総演奏クロックが返ります。 ・情報番号4(1.3新規機能) 使用パート数が返ります。 ・情報番号5(1.3新規機能) 全音符の分解能に対応する番号が返ります。 1が384、2が192、3が128、4が96です。 形式2) RET& = CALLM(MSVREXOFFSET&,10,Infono,VARPTR(Filename$)) Infono 情報番号 Filename$ MSVファイル名 RET& 取得した情報 ・情報番号2 指定したMSVファイルが必要とするバッファサイズをバイト単位で返します。 MSVライブラリ自身の要求メモリサイズは含まれません。 実際のバッファ取得値より大きめに確保してください。 (11).拡張設定(1.3機能拡張) RET& = CALLM(MSVREXOFFSET&,11,Setupno,Value) Setupno 拡張設定番号です。 Value 設定値です。 RET& 0なら正常終了です。 ・拡張設定番号0 MSV演奏を無限ループにします。 解除するまで有効です。 設定値は0以外で無現ループ、0で解除になります。 ・拡張設定番号1 無限ループファイルの実際のループ回数を設定します。 MSV演奏で無限ループ指定が含まれているデータに対して、 実際に何回ループするのかを指定します。 デフォルトは無限に設定されています。 次に設定変更するまで有効です。 設定値は0で無限、0以上で実際にループする回数です。 ・拡張設定番号2 相対テンポを設定します。 次に設定変更するまで有効です。 設定値は-250〜250です。0を指定すると解除になります。 ・拡張設定番号3 FM音源の高品質演奏モードを指定します。 MSVデータ中にこの指定がされている場合はこの設定は無視されます。 解除するまで有効です。 設定値は1で高品質演奏モード、0で解除になります。 ・拡張設定番号4(1.3新規機能) 使用パート数を指定します。 効果音再生等で使用します。通常は使う必要はありません。 ・拡張設定番号5(1.3新規機能) 全音符の分解能を指定します。 設定値は1で384、2で192、3で128、4で96になります。 (12).ミュート状態取得 RET& = CALLM(MSVREXOFFSET&,12,Ch) Ch チャンネル番号です。 0〜5までがFM音源、6〜13までがPCM音源です。 RET& 0ならミュート中、1なら解除状態です。 (13).ミュート設定 RET& = CALLM(MSVREXOFFSET&,13,Ch,Mute) Ch 設定チャンネルです。 0〜5までがFM音源、6〜13までがPCM音源です。 Mute 0ならミュート、0以外なら解除します。 RET& 0なら正常終了です。 (14).指定パート演奏停止(1.3新規機能) RET& = CALLM(MSVREXOFFSET&,15,Ch) Ch 停止チャンネルです。 0〜5までがFM音源、6〜13までがPCM音源です。 RET& 0なら正常終了です。 (15).指定配列のデーターを指定パートで演奏する(1.3新規機能) RET& = CALLM(MSVREXOFFSET&,16,Ch,VARPTR(MsvdataArray&(0))) Ch 演奏チャンネルです。 0〜5までがFM音源、6〜13までがPCM音源です。 MsvdataArray& MSV演奏データが格納されている配列 RET& 0なら正常終了です。 予めバッファアドレスの設定を行っておく必要があります。 演奏中の場合、MSV_partstop関数を実行して演奏を止める必要があります。 (16).WPKファイルの読込(1.3新規機能) RET& = CALLM(MSVREXOFFSET&,17,Wpkch,VAPTR(Filename$)) Wpkch WPK音色を使用するチャンネル数(1〜8)です。 Filename$ WPKファイル名を設定した文字列変数。 RET& 0なら正常終了 0以外は読込失敗 予めバッファアドレスの設定を行っておく必要があります。 WPKファイルを読み込むとPMBファイルも初期化されます。 LOAD@命令で読み込みなおす必要があります。 >履歴 [バージョン1.4](1998/09/02公開) バグフィクッスのみです。 [バージョン1.3](1998/09/01公開) 1行コンパイル関連機能を追加しました。 [バージョン1.2](1998/08/15公開) バージョン1.1のWPKチャンネルの異常発声問題を修正しました。 バージョン1.1の音色ファイル読み込み制限をなくしました。 バージョン1.1の必要バッファサイズ取得機能を正式公開しました。 [バージョン1.1](1998/07/31公開) バージョン1.0のメモリ不足時にハングする問題を修正しました。 配列を使った動的メモリ確保を可能にしました。 機能追加に伴い呼びだし方法を変更しました(従来の方法も可能)。 ミュ−ト・一時停止機能を追加しました。 [バージョン1.0修正版](1998/07/20公開) 余分なファイルを書庫から削除しました。 [バージョン1.0](1998/07/17公開) ちょっとはやまってβ版をとばして正式公開してしまいました。 メモリ不足時にハングすることがありました。 α版のEUPドライバとの相性問題を解消しました。 ループオフを標準にしました。 機能を追加しました。 [α版](1998/07/16公開) EUPドライバとの相性問題により暴走することがありました。 説明書もいいかげんでβ版とか書いてあります。 >使用・転載・配付・改造について 以下の条件に従い、自由に使用・転載・配付・改造できます 作者は本プログラムで生じた損害を一切補償する義務を負わないものとする 以下に引用したMSVライブラリの使用条件に従って使用してください。 MSVライブラリはフリーソフトです。自作プーレーヤー、同人ソフト、ゲーム、市販ソ フトなどたとえ営利目的でも使用可能です。また MSVライブラリを使用したというコメ ントも必要ありません。ただ、MSVの枠を越えるようなこと(勝手に拡張するとか、著作 権を偽るとか)はしないでください。 莫大な時間を費やしているので、MSVに賛同できるとか、開発に協力したいという意味 での寄付などは受け付けています。お金だけでなく、開発に使えるような物でも非常に ありがたいです。励ましのMAILなども心の支えになります。 >著作権 MSVDRV.REXの著作権はMaimyaにあります。 MSVDRV.REXはMSVライブラリ for High-C V1.00を使用しています。 MSVライブラリ for High-C V1.00 僧侶の天使 NIFTY-Serve(VEE03743) 電脳わーるど(DW0106) ----------------------------------------------------------------------- Mamiya E-mail mamiya@proc.org.tohoku.ac.jp HOMEPAGE(頭脳圧搾工場) http://www.proc.org.tohoku.ac.jp/~naonori/befis/