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;
BOOL b1 = MAP_Open(hLib, _T("\\My Documents\\test.mid")); //MIDIファイルを読込む
//b1,b2は、1が帰ってくれば成功、0が帰ってくれば失敗 |
あらかじめGSPlayerでMIDIが鳴るようにインストールしといてください。
作ったアプリと同じフォルダにgspmidi.dllをおけばMIDIが鳴るはずです。