OGGファイル再生の最近のブログ記事

さて、後半部分です。
定義した命令を使って処理を書いていきます。

f_name = "song1.ogg"
再生したいファイルのファイル名を記述します。
ここではsong1.oggを用意して、これを再生することにします。


pm = varptr (f_name)
song1.oggのポインタを取得します。ポインタについては私もよくわからないので、
こうすればうまくいくということだけで詳細は説明はご勘弁を・・・

VoxLoad pm
oggをロードします。先ほどのポインタを使います。

VoxID = stat
VoxLoad関数からの戻り値が必要になるので、statに入っていたものを保存しておきます。これを後で使います。


VoxSetLoop VoxID,10
ループ回数をセットします。必須ではありません。10回ループさせています。

VoxPlay VoxID
これを実行するとはじめてoggが再生されます。


さて、以上で基本的な使い方は終わりです。
DLLに必要な関数が入っているので呼び出し方さえわかれば意外と簡単だったはずです。
これを改良してさまざまなアプリケーション開発に役立ててみてはいかがでしょうか。

具体的にはどのようにしたらいいのでしょうか?

さて、Vox.dllのヘルプファイルを見てみましょう。
VoxHelp.CHMです。
今回使うのは、そこの中のC関数リファレンスです。(C++の方ではないことに注意)
たとえば、oggを再生したかったら、次のような関数が見つかります。

bool VoxPlay( int ID )

再生を開始します。

引数
int ID VoxLoadで取得したドライバID

返値
true 再生成功
false 再生失敗


となっていますね。そこで


#func (好きな命令の名前) "VoxPlay" int


とします。
私は

#func VoxPlay "VoxPlay" int

のようにDLLの関数と同じ命令名にすることおすすめしますが、

#func aaa "VoxPlay" int

のようにすることももちろん可能です。

また、返値とかいてあるところについては、
HSPのシステム変数statにはいるようです。よってそこを参照すればOKです。

※説明中の各色が対応しています。

このようにして、自分の使いたい関数を一通り定義しておきます。
あとは、それを使って普通のHSPの命令を書くときのように書いていけばよいだけです。
(DLLの定義部分だけをヘッダファイルとして作成し、includeするとシンプルになるかもしれません。)

今回は、拡張プラグイン(DLL)を使って*.oggのファイルを再生する方法のサンプルと、 その解説をしていきます。

サンプルソースはつぎのようになります。
難しそうに見えますが、実は簡単です。
野村XXさんの作ったVox.dllを使用します。
このDLLの説明書にはHSP2.6用のものしかありません。
そこでここではHSP3.0で動作するサンプルを紹介いたします。


◆スクリーンショット
ogg_sample1.png
非常にシンプルなサンプルです


◆解説
#uselib "Vox.dll"
で使用するDLLを指定します。今回はVox.dllを使用するのでそのように書きます。
#func VoxSetLoopA "VoxSetLoop" int,int
ここではDLLの関数を定義しています。
ここで定義した関数は、以下HSPの普通の命令のように呼び出して使うことができます。
このようにした場合、VoxSetLoopをVoxSetLoopAと定義しています。
この定義の後で、たとえば、
VoxSetLoopA 1,10
とすれば、ID1の曲のループ回数を10回にするという設定ができます。
左側がHSPで使用する命令名です。右側がDLL側の関数名になります。
そのうしろのintなどは関数の引数です。
DLLのマニュアルなどに書いてあるのでそれを見ながら書きましょう。


※長くなるので2回目へ続きます・・・