HSP3命令入門講座 <mci命令>

Last Update : 2007/03/xx

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

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

 mci "コマンド文字列"

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

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

↑TOP↑

ディバイス

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

ディバイス 説明
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」。

↑TOP↑

mci命令の雑多情報

■ HSPのサウンド再生手段
 HSP(HSP3)でサウンドを再生する手段は、基本的にこのmci命令とmm〜命令(mmload命令、mmplay命令、mmstop命令)の2つです。ゲームプログラミングなどで、パフォーマンス良くもっとも高度な音楽再生を実現したい場合は、HSP拡張プラグインや汎用ライブラリを使うことになります。これは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 : 画像ファイルの表示

↑TOP↑

MCI機能のリンク集

 MCIというのは別にHSP固有の機能ではありません。他言語向けも含めて役立つ情報を載せてるサイトがいろいろとあります。参考になるページをテキトーに拾ってみるみる。(mci命令自体はHSP2とHSP3で仕様変更はありません。)

HSP Mr.Manri's Homepage サンプルはHSP2時代のもの。[全般]
S.Programs NETページ サンプルはHSP2時代のもの。[CDオーディオ/MIDIシーケンサ]
時の館ページ サンプルはHSP2時代のもの。[MIDIシーケンサ]
ちょくとのページページ 一部のコマンド文字の説明。
Visual Basic int21ページ [全般]
GarGer-Studioページ [MIDIシーケンサ]
VisualBasicSite&Tipsページ [CDオーディオ]
ひまわり ひまわりでいこうページ [MIDIシーケンサ/CDオーディオ/WAVEオーディオ/MPEGビデオ]
C Programing Placeページ 43〜48章。[MIDIシーケンサ/CDオーディオ/AVIビデオ]
WisdomSoftページ [全般]
--- e道具屋ページ 一部のコマンド文字の説明。
MSDNページ 生みの親Microsoftのコマンド文字の説明。(英語)

↑TOP↑

〜HSP3 あれこれ〜
ウィンドウ | オブジェクト | ファイル | フォルダ | キーボード | マウス | メニュー | システム | 文字列 | COM | その他

Copyright © 2005-2011 ゲーム作成ソフトHSPの情報をいろいろと Let's HSP!. All rights reserved.