MCI イントロダクション

MCI とは?

MCI (Media Control Interface) とは、Windows が提供するマルチメディアリソースを制御するコマンドインターフェイスです。

いってみれば、MCI に対して「CD 再生してよ」みたいなメッセージを送ると、MCI が勝手に再生してくれるという仕組みです。

HSP 標準の snd 命令などに比べてはるかに高機能な制御が可能なので、HSP で拡張 DLL などを使わずにマルチメディアプレイヤーを製作するなら、MCI の使用は避けて通れないでしょう。

MCI コマンド

MCI はコマンドインターフェイスです。
なので、MCI に仕事をして欲しい場合、MCI に対してコマンドを送ってやらなければなりません。

それが、MCI コマンドです。(そのまんま)

MCI コマンドは英語がベースです。open, play, stop, close など単純な英単語が基本で、よく使うこれらの基本的な命令はすぐに覚えられるでしょう。

MCI ROOM では、これら以外の便利なコマンドも扱っていますが、それらは使用される機会が多くはないため、覚えるよりも必要に応じて MCI ROOM を参照したほうがいいでしょう。

HSP からの利用

HSP から MCI にコマンドを送るのは、非常に簡単です。

HSP の mci 命令を使うだけです。

たとえば、CD オーディオを再生するコマンド文字列 "play cdaudio" を HSP から MCI に送るには、スクリプトエディタで次のように書くだけです。

    mci "play cdaudio"

CD ドライブにオーディオトラックのある CD が挿入されている場合、上のコマンドを実行するだけで CD が勝手に再生されます。
このまま HSP プログラムを終了させても、CD の再生は止まりません。CD の再生を停止するには、次のコマンドを実行します。

    mci "stop cdaudio"


MCI はこのようにして HSP から利用できます。

デバイスを開く

各デバイスのコマンド解説を読む前に、この MCI コマンドだけは知っておいてください。


  open (デバイス名) alias (エイリアス)

この命令を使って、エイリアス (別名という意味) を指定してデバイスを開きます。

デバイスを使用する前に必ずこのコマンドでデバイスを開いてください。
(以後 MCI ROOM では、デバイスを開くときは必ずエイリアスを指定するものとして解説します。)

デバイス名には、使用するデバイスやファイルの名前を指定します。
たとえば、CD オーディオデバイスなら cdaudio 、MIDI や WAVE のファイルならファイル名を指定します。

エイリアスで、与えられたデバイスのエイリアスを指定します。エイリアスを指定した後のMCIコマンドでは、デバイス名の代わりにこのエイリアスを使います。


  close (エイリアス)

open コマンドで開いたデバイスを閉じます。デバイスを閉じるときもエイリアスを指定して閉じます。
デバイスを閉じないままプログラムが終了してしまっても、デバイスは勝手に閉じられます。が、できるだけプログラム終了前にこのコマンドを実行しておいてください。


以下は、CD オーディオを 10 秒間再生して終了するサンプルです。
デバイス cdaudio を、cda というエイリアスで開いています。

    mci "open cdaudio alias cda"; cdaudio をエイリアス cda で開く
    mci "play cda"		; 再生開始
    wait 1000			; 10秒間待つ
    mci "stop cda"		; 再生停止
    mci "close cda"		; デバイスを閉じる

MCI の戻り値

MCI には戻り値があり、MCI を実行した結果がプログラムに返ってきます。

戻り値は、HSP のシステム変数 stat と refstr に代入されます。stat には数値型の戻り値が、 refstr には文字列型の戻り値がそれぞれ代入されます。

戻り値の内容やその意味は使用した MCI コマンドによって異なります。それぞれのコマンドの解説を参照してください。


mci 命令を実行した後の stat が -1 だった場合、MCI でエラーが発生したことを示しています。
たとえば、デバイスがすでに開かれているのに同じデバイスを開いた場合や、文法が解釈できない場合などです。