4-2.音楽を鳴らす

無いと寂しいときもある。


では続いて音楽を再生してみましょう。

しかしそこはHSP。これも非常に簡単です。

さすがに命令一発とはいかないのですが、手順は簡単。mmload命令で音声ファイルを読み込み、mmplay命令で再生です。

読み込み

    mmload "filename", bufNum, mode

"filename" : ファイル名
bufNum : バッファ番号
mode : 再生モード

ヘルプを見ると分かるのですが、これは何も音声を再生するだけの命令ではありません。ですが、ここではとりあえず音声だけに絞っていきます。対応形式は以下の通り。

基本的に"filename"には再生したい音声ファイルのファイル名を指定すれば良いのですが、CDオーディオを読み込みたい場合は"CD:(トラック番号)"とします。CDのトラック3を読み込みたければ"CD:3"となります。

バッファ番号は再生するときに必要となります。どういう場面で使われるかというと、ゲームの効果音なんかで使います。効果音は大抵「再生したいときにすぐに鳴らないと困る」ので、先にこの命令で読み込んでしまうのです。そのときに「どこに読み込んだか」を区別する為にバッファ番号が必要となります。

再生モードは以下のようになっています(例によって音声再生に関わるモノのみに絞りました)。

まずモード0の通常再生ですが、これは「再生したら終わり」というモードです。

モード1。これは一回再生し始めたら、止める(後述のmmstop命令を使います)まで繰り返し再生し続けます。

モード2。これは、そのファイルを最後まで再生し終わるまで、プログラムの動作を止めるモードです。場面によっては有効ですが、使い方を間違えると次に進まなくなるので注意してください。

そしてモード3ですが、これはCDオーディオ再生時限定です。指定したトラック以降を次々に再生していくモードです。

再生

mmloadで読み込んだら、次にmmplayで再生します。

    mmplay bufNum

bufNum : バッファ番号

指定されたバッファ番号に読み込まれているファイルを再生します。

普通はmmplay命令が実行されたらすぐ次の処理に進むのですが、モード2が指定されている場合は再生終了まで止まります。

同じファイル形式の再生

例えば、バッファ0と1にWAVEファイルを読み込んであるとします。


    mmplay 0
    mmplay 1

その状態で上記のプログラムを実行すると、実はバッファ0に読み込んであるファイルは再生されません。

というのも、同じ形式のファイルを再生するときに、前のファイルの再生が終わっていない場合は、その再生を止めてしまいます。この場合は連続しているので、バッファ0は再生されるのですが、すぐ次にあるmmplay 1によってその再生は止められてしまい、バッファ1が再生されるのです。

複数のファイルを扱うときは注意してください。

なお、形式が異なっていれば(MIDIファイルとWAVEファイルを同時に再生するなど)このようなことは起こりません。

停止

演奏を止めたい場合はmmstop命令を使います。

    mmstop

(パラメータ無し)

パラメータを取らないという点で察しが付いた方もいるかと思うのですが、この命令はmmplayで再生されている全ての演奏を止めます。複数のファイルを同時に再生している場合はこの点に注意してください。

あと再生するときの音量には気をつけてください。


Last Modified: 2008-08-15