GSPlayerのMIDI再生プラグインを調査 | objective-cをちょい研究!ブログ

objective-cをちょい研究!ブログ

WILLCOMを卒業してiOS開発者に転身しました。。
コメント&トラックバック大歓迎です。

GSPlayerのMIDIプラグイン用DLLを外部参照してMIDIが再生できないか調べて
いたんですが、実際に音を出しているのはGSPlayer本体のようで、DLLをコール
して簡単に音を鳴らすなんてわけにはいかないようです(^^;


http://www.ameblo.jp./willcom-phs/entry-10071175274.html
(2/8 Zero3でMIDI再生するソフト(GSPlayer))


GSPlayer本体のソースも公開されているので、こちらも調べてみました。
再生部分はライブラリ(LIB)化していて、本体からLIBを呼出すようになっていて
ました。このLIBを拝借して、音が鳴らせるかの調査。


<ライブラリファイルを作る>
1.GSPlayerのソース(gsp228src.zip)を落とします。
http://hp.vector.co.jp/authors/VA032810/
(GreenSoftware様)


2.次の3つのプロジェクトをそれぞれVisual Studioで呼出してビルドします。

libmad\libmad.vcproj
libovd\libovd.vcproj
maplay\maplay.vcproj


3.lib\ARMV4Dbgフォルダにライブラリファイルが生成されます。

libmad.lib
libovd.lib
maplay.lib


<ライブラリを読み込む>
自作のC++プログラムに生成したライブラリを組み込みます。


1.作ったライブラリをC++ソースと同じフォルダにコピーします。
2.ライブラリの参照設定します。

ソリューションエクスプローラのプロジェクトを右クリック
プロパティ→構成プロパティ→リンカ→入力
[追加の依存ファイル]欄に下記を貼り付け

winsock.lib libmad.lib libovd.lib maplay.lib


3.GSPlayerのincludeフォルダにあるmaplay.h mapplugin.h をソースと同じフォルダにコピー。


4.ソースから呼出してみる

#include "maplay.h"


HANDLE hLib;
hLib = MAP_Initialize(); //初期化


BOOL b1 = MAP_Open(hLib, _T("\\My Documents\\test.mid")); //MIDIファイルを読込む
BOOL b2 = MAP_Play(hLib); //MIDIファイル再生


//b1,b2は、1が帰ってくれば成功、0が帰ってくれば失敗


あらかじめGSPlayerでMIDIが鳴るようにインストールしといてください。
作ったアプリと同じフォルダにgspmidi.dllをおけばMIDIが鳴るはずです。