Last Update : 2007/03/xx
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に返ります。
テキトーなディバイス名。ここら辺はパソコンの環境にかなり依存すると思います。
ディバイス | 説明 |
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」。
■ 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 :
画像ファイルの表示)
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のコマンド文字の説明。(英語) |