2012年6月19日火曜日

MIDIIO on VC++ つづき

環境が二転三転しています.
当初はWindows 7(64bit) + VisualC++2010でやっていましたが
なんと今はWindows Vista(32bit) + VisualC++2008でやっています.
本当はWindows XP(32bit)上でプログラミングしたかったのですが,
どうしてもVisualC++のプロジェクトが作成できない.
そんなこんなでサブ機でプログラミングしています.

環境は変わりましたが,前回の設定を変更する必要はありません.

今回は音が出るところまで確認しました( ´∀`)
つまり,そこまで行けばあとはプログラミング次第です.

やっていきましょう( ・`ω・´)★


MIDIIO VC用Wrapperのダウンロード

どうやらC++/CLI上ではぴゅあーなCで書かれたMIDIIOライブラリだけで叩くのはきついようです.
というわけで素敵なお方がC++用Wrapperを作成して下さっているので
ありがたく使わせていただきましょう.
http://www.geocities.jp/yuusui_housuu/openmidiproject/midiiolibcpp/index.html
ここからダウンロードします.とりあえずアップデートが一番新しいのでいいと思います.

そして前回と同じようにヘッダーファイルはVCのincludeディレクトリに放り込みましょう.
ダウンロードしたファイルを解凍し,中に入っているMIDIIO_cpp.hを
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include
ここでしたね.


ファイルの配置・修正

そのMIDIIO_cpp.hは一点だけ修正します.
#include "../MIDIIOLib0.8/MIDIIO.h"
これを
#include <MIDIIO.h>
にします.
VisualC++が見ているincludeディレクトリ内にMIDIIO.hを前回入れているからこれで済むのです.

次に同じく解凍した中に入っているMIDIIO_cpp.cpp
これをプロジェクトのソースファイル・ディレクトリに追加します.
ダウンロード元のサイトにある画像のようにすれば大丈夫です.

このMIDIIO_cpp.cppも修正します.

①インクルード元を変更
さっきのヘッダファイルと同様に
#include "MIDIIO_cpp.h"

#include <MIDIIO_cpp.h>
に変更します.
上の手順でincludeディレクトリにヘッダファイルを追加したからです.

②デバッグ用とか知らんし
#ifdef _DEBUG
        #pragma comment(lib, "../MIDIIOLib0.8/Debug/MIDIIOd.lib");
#else
        #pragma comment(lib, "../MIDIIOLib0.8/Release/MIDIIO.lib");
#endif
このifdef文を大胆に
#pragma comment(lib, "MIDIIO.lib");
これだけにしちゃいます.
前回,MIDIIO.libをSysWOW64(もしくはSystem32)に置いています.
なのでVC++はこれだけでライブラリを参照できます.

③プリコンパイル済みヘッダは使用しません
#include "stdafx.h"
この一文を消しましょう.
ついでに,このままではエラーだらけになるので,

プロジェクトのプロパティから
「構成プロパティ」> 「C/C++」>「プリコンパイル済み…」
と選択し,
「プリコンパイル済みヘッダーの作成/使用」を
プリコンパイル済みヘッダーを使用しない
に変更します.

以上で今しがたダウンロードしたファイルの編集は終了です.


ストプログラム実装

さきほどのMIDIIO C++ Wrapperのサイトにある
サンプルプログラムを動かしてみましょう.

今回はWindow FORMプロジェクトなので
main関数はとりあえず一旦触りません.

前回同様testFunc関数内に記述していきます.
前回作ったtestFunc関数の中身は全部消しちゃいましょう.
そこに
2.MIDI出力を実現する
のmain関数内の処理をコピペします.

それから,ヘッダファイルのインクルードも忘れずに.
#include "..\MIDIIOLib0.8_cpp0.2\MIDIIO_cpp.h"
こいつだけは 
#include <MIDIIO_cpp.h>
こうなります.

そして,main関数内の適当な場所でtestFunc関数を呼んであげましょう.
 
音が出ましたか?
これでMIDI出力サンプルが動いたはずです.
 
あとは適当に実装を重ねていきましょう.
それでは〜 

0 件のコメント:

コメントを投稿