命令講座 <mci命令>

Last Update : 2007/03/xx

mci命令 (音楽ファイル・動画ファイルの再生)

 Windowsの「MCI」(Media Control Interface / Multimedia 〜)機能をHSPから呼び出す命令です。HSP2とHSP3で互換など機能的な変更は行われてません。

 mci "コマンド文字列"

 簡単に言えば、音楽ファイルや動画ファイルのようなマルチメディアを、単純なコマンド文字列で制御できる命令です。内部では「mciSendString関数」というWin32 API関数を呼び出してます。Windows 95の前のWindows 3.1時代に登場した旧世代の機能で、現在では「DirectX」がこの分野に取って代わってます。

 「play」や「stop」など全部で46種(一般的にはその内の41種)のコマンド文字が用意されてます。mci命令の結果は、数値の場合にシステム変数stat、文字列の場合にシステム変数refstrに返ります。

^

ディバイス

 テキトーなディバイス名。ここら辺はパソコンの環境にかなり依存すると思います。

ディバイス 説明
CDAudio CDオーディオ (音楽CD)
Sequencer MIDIシーケンサ (MIDIファイル)
WaveAudio WAVEオーディオ (WAVEファイル)
AVIVideo
<Digital-video>
AVIビデオ (AVIファイル)
MPEGVideo
(MPEGVideo2)
MPEGビデオ (MPEGファイル、MP3ファイル、
WMAファイル、WMVファイル、など)

 対応デバイスの表示するソースコード。

;	デバイス数取得
	mci "sysinfo all quantity"
	mes "デバイス数: "+stat
	if stat = -1 : stop

	repeat stat, 1
;		デバイス名取得 (インデックス番号1〜)
		mci "sysinfo all name "+cnt
		mes refstr
	loop

;	閉じる
	mci "close all"

 Windows 9x系OSの場合は、対応ディバイスはWindowsフォルダ内にある「system.ini」、拡張子は「win.ini」。Windows NT系OSの場合は、対応ディバイスはレジストリの「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\MCI32」、拡張子は「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\MCI Extensions」。

^

mci命令の雑多情報

■ HSPのサウンド再生手段
 HSP(HSP3)でサウンドを再生する手段は、基本的にこのmci命令とmm〜命令(mmload命令、mmplay命令、mmstop命令)の2つです。ゲームプログラミングなどで、もっとも高度な再生処理を実現したい場合は、拡張プラグインや汎用ライブラリを使うことになります。これはDirectX(DirectSound、DirectMusic)による再生が可能です。(→ 参照、音楽再生関連のHSP拡張プラグイン

■ 半角スペースがあるファイルパスの対処
 MCIのコマンド文字列は、半角スペースというのがコマンドの「区切り」として機能します。たとえば、「load」コマンドで読み込むファイルのパスが「C:\Program Files\〜」だとすると、パス指定としておかしくなるわけです。そうならないよう、パスの前後を「"」(ダブルコーテーション)で括っておく必要があります(HSPのスクリプト上では「\"」)。

■ ウェイトフラグと通知フラグ
 「wait」 : 処理が終了するまで、HSP側に処理を戻さないフラグです。HSPのmmload命令(HSP3)やsndload命令(HSP2)にあるモード2に相当するものです。「play」コマンドなんかで指定します。
 「notify」 : 処理が完了(再生終了)した場合や失敗した場合に通知するフラグです。「MM_MCINOTIFY」($03B9)というメッセージが送られてくるので、HSPのoncmd命令で処理します。(→ 参照、HSPWikiちょくとさんページ

■ PACKFILE機能 (パックファイル)
 HSPのPACKFILE機能で実行ファイルに埋め込んだファイルをMCIから直接利用することはできません。あくまでハードディスク上のファイルや、CDやDVDだけ読み込めます。ちなみに、HSPのmmload命令(HSP3)やsndload命令(HSP2)は、WAVEファイルのみPACKFILE機能を利用できます。

■ GIFファイル
 MCIを利用してGIFファイル&アニメーションGIFファイルを表示する手法を紹介してます。(→ HSP Tips : 画像ファイルの表示

^

MCI機能のリンク集

 MCIというのは別にHSP固有の機能ではありません。他言語向けのサイトでも役立つサイトがいろいろとあります。参考になるページをテキトーに拾ってみるみる。

^

Copyright © 2005-2008 HSP情報サイト Let's HSP!. All rights reserved.