MIDI XFCN 1.0

 

■はじめに

 MIDI XFCNは、HyperCardでMIDIデータを再生するための外部関数(XFCN)です。スタックのリソースフォークに置いた'Midi'リソースを再生します。MIDI XFCNを使用するにはQuickTime 2.0以上がインストールされている必要があります。

 

■'Midi'リソースについて

 'Midi'リソースは、Standard MIDI File(ファイルタイプ'Midi')のデータフォークをそのまま1つのリソースに保存したものです。作者が勝手に定義したリソースタイプなので、同じ名前のものが存在していたらごめんなさい(^^;) 'Midi'リソースを作成するには付属のMidiResMakerというアプリケーションを使用すると便利です。

 

■MIDI XFCNの使い方

 MIDI XFCNの関数名はMIDIです。具体的な使い方は付属のスタックが参考になると思います。XFCN自体もこのスタックのものを複製して使用してください。

 MIDI XFCNには2つ、または3つの引数が必要です。1番目の引数がセレクターになっており、渡す文字列によって4つの働きをします。この文字列を「コマンド」と呼ぶことにしましょう。コマンドにはstart, idle, stop, pauseの4つがあります。コマンドに大文字と小文字の区別はありません。

 MIDI XFCNは関数ですから値を返します。この値はMIDI XFCNが内部的に使用しているメモリブロックの場所を表す文字列です。このメモリブロックはstartコマンドで作成され、stopコマンドで破棄されます。ここではこれを「データ文字列」と呼ぶことにしましょう。

 このデータ文字列は、MIDI XFCNの1番目の引数にidle, stop, pauseのいずれかのコマンドを指定した場合には2番目の引数として渡す必要があります。通常は最初にstartコマンドを実行したときに、返された値をグローバル変数に保存しておくことになるでしょう。 同時に複数の曲を再生する場合(そんなことする奴いるのか?(^^;))は、このデータ文字列によって曲を区別します。

 

各コマンドの解説

●start

 MIDI XFCNを初めて呼ぶ場合は、必ずこのstartコマンドを使用しなければなりません。1番目の引数にはstartを指定します。2番目の引数に再生したい'Midi'リソースのリソース番号を指定します。startコマンドはリソースのデータを読み込み、再生を始めます。3番目の引数には再生を繰り返す回数を指定します。つまり、ループです。ループは最大9999回までです。それ以上の値を指定しても9999回しか再生しません。0を指定するか、この引数を省略すると再生は1回のみ行われます。0より小さい値を指定すると、無限にループします。

 startコマンドは、処理に成功するとその曲のデータ文字列を返します。失敗すると空の文字列を返します。

●idle

 startコマンドが正常に終了したら、このコマンドを繰り返し呼ぶ必要があります。通常はプログラムのループの中やon idle等で呼ぶことになるでしょう。idleコマンドの呼び出しは必ず必要です。これによって、他のプログラムの動作中にバックグラウンドで曲を再生することが可能になっています。

 1番目の引数はidleです。2番目の引数にはstartコマンドが返したデータ文字列を渡します。引数に空の文字列を渡すとidleコマンドは何もしません。データ文字列と違うもの(再生終了した曲のデータ文字列も含む)を渡さないように気を付けてください。おそらくシステムエラーとなります。

 idleコマンドは再生中であれば、引数として渡したデータ文字列をそのまま返します。再生が終了していれば空の文字列を返します。このidleコマンドが返す値によって、曲が終了しているかどうかを知ることができるわけです。返された値は、データ文字列を保存しておいたグローバル変数にそのまま代入してしまうことをお勧めします。これによってidleコマンドが次に呼ばれたときに変な値が渡されるミスを防ぐことができます。これはstopやpauseコマンドでも同様です。

●stop

 再生中に曲を停止したい場合に使用します。 このコマンドは曲の再生中にスタックが閉じられる場合にも必要です。

 1番目の引数はstopです。2番目の引数にはstartコマンドが返したデータ文字列を渡します。引数に空の文字列を渡すとstopコマンドは何もしません。

 stopコマンドは停止に成功した場合空の文字列を返します(stopコマンドは失敗しません(^^;))尚、曲が最後まで再生された場合はidleコマンドが自動的に再生を停止するため、stopコマンドを呼ぶ必要はありません。

●pause

 再生中の曲を一時停止するためのコマンドです。 既に一時停止されている場合は、再生を再開します。

 1番目の引数はpauseです。2番目の引数にはstartコマンドが返したデータ文字列を渡します。引数に空の文字列を渡すとpauseコマンドは何もしません。

 pauseコマンドは引数として渡したデータ文字列をそのまま返します。処理が失敗した場合には空の文字列を返します。

 MIDI XFCNは再生のために一時ファイルを作成する構造上、startコマンドの実行に若干の時間がかかります。startコマンドのあとすぐにpauseコマンドを呼ぶことによって、先読みのような使い方も可能です。

 

■おわりに

 MIDI XFCNはフリーウェアです。扱いについては、一般的なフリーウェアと同等と考えてください。著作権は浅利哲およびみずーちあきひろが保有しています。配布は自由ですが、BBS等に転載する場合は浅利宛に電子メール(できればインターネットのほうがありがたいです)で連絡していただければ幸いです。また、フリーウェア/シェアウェア、商用タイトル等に使用する場合には、スタックのどこかに“MIDI XFCN (c) 1997 S.Asari, A.Mizuuchi.”のような一文を入れていただけたら嬉しいです。

 最後に、万一あなたがMIDI XFCNを使用して何らかの被害を被っても、作者は何の責任も取りません。御自身のリスクでご使用ください。


戻る ダウンロード