DirectSound.txt
Notes
Translation: via Google in English
Contents
☆☆☆ DirectSound系 ☆☆☆ WAVEファイルの再生を行います。 また、OGGファイルの再生をすることもできます。 ☆☆☆ DSINIT 引数なし 戻り値(stat) 成功:1 or DS_OK 失敗:0 or DS_ERR 機能 DirectSoundを初期化します。HMMINITで初期化した場合は呼ばなくても結構です。 明確的に初期化したいときに呼んでください。 ☆☆☆ DSEND 引数なし 戻り値(stat) 必ず1が返ってくる。 機能 DirectSoundを終了します。 ☆☆☆ DSLOADFNAME p1, p2, p3, p4 引数 p1:ファイル名 p2:バッファ番号(0から1023までの値) 省略時0 p3:ファイルのシーク位置 省略時0 p4は0を指定するとウィンドウがアクティブではない時は音が鳴らないようにします。 1を指定するとウィンドウの状態にかかわらず音が鳴るようにします。 戻り値(stat) 成功:1 or DS_OK 失敗:0 or DS_ERR 機能 p1で指定されたファイル名のWAVEファイルを、p3の位置から、p2のバッファに読み込みます。 使用例)hmminit 1 ;DirectSoundを初期化する dsloadfname "wave.wav", 10 ;バッファ10番にファイルの最初からロード ☆☆☆ DSLOADFNAME2 p1, p2, p3, p4 引数 p1:ファイル名 p2:シーク位置 省略時0 p3:バッファーのサイズ 省略時2 p4は0を指定するとウィンドウがアクティブではない時は音が鳴らないようにします。 1を指定するとウィンドウの状態にかかわらず音が鳴るようにします。 戻り値(stat) 成功:1 or DS_OK 失敗:0 or DS_ERR 機能 ストリーム再生させたいp1で指定されたファイル名のWAVEファイルを、p2の位置から、1024番のバッファに読み込みます。 p3は何秒間のストリームバッファを作るか。 p3は、WAVEファイルを何秒間で分割するかということです。 使用例)hmminit 1 fname = "stream.wav" ;このWAVEファイルを5分の長さ dsloadfname2 "stream.wav", 0, 4 ;バッファ1024番に4秒毎に読み込みさせる。 dsplay 1024 ;再生。1024番はストリーム専用のバッファです。 ☆☆☆ DSLOADMEMORY p1, p2, p3 引数 p1:WAVEのデータ p2:バッファ番号(0から1023までの値) 省略時0 p3は0を指定するとウィンドウがアクティブではない時は音が鳴らないようにします。 1を指定するとウィンドウの状態にかかわらず音が鳴るようにします。 戻り値(stat) 成功:1 or DS_OK 失敗:0 or DS_ERR 機能 p1のWAVEデータをp2のバッファにロード 使用例)hmminit 1 fname = "wave.wav" exist fname wavesize = strsize sdim wavebuf, wavesize bload fname, wavebuf, wavesize dsloadmemory wavebuf, 0 ☆☆☆ DSOGGLOADFNAME p1, p2, p3 引数 p1:ファイル名 p2:バッファ番号(0から1023までの値) 省略時0 p3:ウィンドウのアクティブ状態での再生フラグ 省略時0 戻り値(stat) 成功:1 or DS_OK 失敗:0 or DS_ERR 機能 p1で指定されたファイル名のOGGファイルを、p2のバッファに読み込みます。 p3は0を指定するとウィンドウがアクティブではない時は音が鳴らないようにします。 1を指定するとウィンドウの状態にかかわらず音が鳴るようにします。 DSPLAY命令で再生することができます。 この命令は、読み込みが完了するまで、次の命令に進まなくなります。 大きいファイルを再生することで、リアルタイムな画面更新に影響が出て不都合がある場合は この命令の変わりに、DSOGGLOADFNAMETHREAD命令の方を使用すると、改善される可能性があります。 ☆☆☆ DSOGGLOADFNAMETHREAD p1, p2, p3 引数 p1:ファイル名 p2:バッファ番号(0から1023までの値) 省略時0 p3:ウィンドウのアクティブ状態での再生フラグ 省略時0 戻り値(stat) 成功:1 or DS_OK 失敗:0 or DS_ERR 機能 p1で指定されたファイル名のOGGファイルを、p2のバッファに読み込みます。 p3は0を指定するとウィンドウがアクティブではない時は音が鳴らないようにします。 1を指定するとウィンドウの状態にかかわらず音が鳴るようにします。 DSPLAY命令で再生することができます。 この命令は読み込みの完了などにかかわらず、即座に次の命令に進みます。 読み込みが完了したか調べる場合は、DSOGGLOADINGCHECK命令を使用します。 ☆☆☆ DSOGGLOADINGCHECK p1 引数 p1:バッファ番号(0から1023までの値) 省略時0 機能 p1で指定されたバッファにOGGファイルが読み込み中かどうかを調べます。 戻り値(stat) 読み込み中:1 読み込み終了:0 ☆☆☆ DSPLAY p1, p2 引数 p1:バッファ番号(0から1024までの値) p2:ループフラグ 省略時0 0の時はループしない 1の時はループする 戻り値(stat) 成功:1 or DS_OK 失敗:0 or DS_ERR 機能 p1のバッファを再生させる。 使用例)hmminit 1 dsloadfname "wave.wav", 0 dsplay 0 ☆☆☆ DSSTOP p1 引数 p1:バッファ番号(0から1024までの値) 戻り値(stat) 成功:1 or DS_OK 失敗:0 or DS_ERR 機能 p1のバッファの再生を止める。 ☆☆☆ DSRELEASE p1 引数 p1:バッファ番号(0から1024までの値) 戻り値(stat) 成功:1 or DS_OK 失敗:0 or DS_ERR 機能 p1のバッファを解放する。 2度と使わないwavを持っているのはメモリの無駄なので解放したほうが無難でしょう。 ☆☆☆ DSSETVOLUME p1, p2 引数 p1:バッファ番号(0から1024) p2:音量(0から100) 0の時、音量最小 100の時、音量最大 戻り値(stat) 成功:1 or DS_OK 失敗:0 or DS_ERR 機能 p1のバッファの音量を変更する。 ☆☆☆ DSGETVOLUME p1 引数 p1:バッファ番号(0から1024) 戻り値(stat) 音量が返る。 機能 p1のバッファの音量を調べる。 ☆☆☆ DSSETMASTERVOLUME p1 引数 p1:音量(0から100) 戻り値(stat) 成功:1 or DS_OK 失敗:0 or DS_ERR 機能 WAVEのマスターの音量を変えます。 ※これで音量を変えるとアクセサリ->エンターテイメント->ボリュームコントロールのWAVEの所が変動します。 ☆☆☆ DSGETMASTERVOLUME 引数なし 戻り値(stat) 成功:取得した音量 失敗:0 or DS_ERR ※失敗したときと、音量が0の時は同じ値が返るので注意してください。 機能 WAVEのマスターの音量を取得する。 ☆☆☆ DSSETMASTERFORMAT p1, p2, p3 引数 p1:チャンネル数 p2:サンプリングレート p3:ビット数 戻り値(stat) 成功:1 or DS_OK 失敗:0 or DS_ERR 機能 WAVEマスターの音質を設定します。 チャンネル数はステレオだったら2、モノラルだったら1 サンプリングレートは11.025kHzなら11025、22.05kHzなら22050、44.1kHzなら44100 1サンプルあたりのビット数、8か16 ちなみに初期設定は2,44100,16です。 で、何でこんなのがあるかというと、音質やCPUパワーなどに合わせて変更できるほうが便利だからです。 鳴らしたいwavファイルと基本音質の設定が違うとミキシングする時にCPUパワーを食いやすいです。 といってもそれほど気にするほどのものでもないと思います。 ☆☆☆ DSCHECKPLAY p1 引数 p1:バッファ番号(0から1024) 戻り値(stat) 再生中:1 or DS_OK 停止中:0 or DS_ERR 機能 p1のバッファが再生されているかチェックする。 使用例) hmminit 1 dsloadfname "wave.wav", 0 dsplay 0 *@ await 10 dscheckplay 0 if stat == DS_OK : goto *@b dialog "再生が終了しました" end ☆☆☆ DSDUPLICATE p1, p2 引数 p1:コピー先バッファ番号(0から1023までの値) p2:コピー元バッファ番号(0から1023までの値) 戻り値(stat) 成功:1 or DS_OK 失敗:0 or DS_ERR 機能 コピー元バッファー番号と同じ状態のものを、コピー先バッファー番号につくります。 DIRECTSOUNDの仕様上、同じ音でも重ね合わせる場合は2個バッファーを作成しなければならないのです。 しかし、それはメモリの無駄なので1つのメモリで共有させることができます。 使用例 hmminit 1 dsloadfname "wave.wav", 0 dsduplicate 1, 0 dsplay 1 stop