おーぷんMIDIぷろじぇくと(http://openmidiproject.osdn.jp/)のライブラリを使用して、電子ドラムで叩いた音をMIDIファイルとして出力したいと考えています。
現在試行錯誤しながらドラムのデバイス認識を行うところまでできました。
現在の進行中のプログラムは下記のとおりです。
ビルドも通り、デバックすると、
MIDI入力デバイス~~を開きました。
MIDI出力ファイル~~を開きました。
miと出ました。あとは電子ドラムを叩いて、その音をMIDI出力させることが現状の目的なんですが、これはどのようにしたらよいのですか?
ヒントかアドバイスでも頂けると嬉しいです。よろしくお願いします。
ライブラリを見たところ、MIDIIOライブラリだけでは実装できない?ので今現状としてはMIDIDataライブラリを見ている段階です。
c++#include
1#include <tchar.h> 2#include <iostream> 3#include <windows.h> 4#include <time.h> 5 6#include "..\MIDIIOLib1.1-x64\MIDIIO.h" 7#include "..\MIDIDataLib3.4\MIDIData.h" 8#include "..\MIDIClockLib1.0\MIDIClock.h" 9#include <opencv2/opencv.hpp> 10 11#define USE_DRUM 1 //0なら電子ドラム不使用、1なら電子ドラム使用 12 13MIDIIn* pMIDIIn; //MIDIの初期化 14MIDIOut* pMIDIOut; 15 16int main(int argc, char* argv[]) { 17 18 TCHAR szDeviceName[32]; 19 20 /* */ 21 long lRet; 22 23#if USE_DRUM 24 lRet = MIDIIn_GetDeviceNum(); 25 std::cerr << "Connected MIDI Device Num = " << lRet << std::endl; 26 27 lRet = MIDIIn_GetDeviceName(0, szDeviceName, 32); 28 if (lRet == 0) { 29 printf("利用できるMIDI入力デバイスはありません。\n"); 30 system("PAUSE"); 31 return 0; 32 } 33 34 pMIDIIn = MIDIIn_Open(szDeviceName); 35 36 if (pMIDIIn == NULL) { 37 std::cerr << "MIDI入力デバイス「" << szDeviceName << "」を開けません。" << std::endl; 38 return 0; 39 } 40 41 std::cerr << "MIDI入力デバイス「" << szDeviceName << "」を開きました。" << std::endl; 42 43#endif 44 45 /* MIDI出力デバイス(No.0)の名前を調べる */ 46 lRet = MIDIOut_GetDeviceName(0, szDeviceName, 32); 47 if (lRet == 0) { 48 std::cerr << "利用できるMIDI出力デバイスはありません。" << std::endl; 49 return 0; 50 } 51 /* MIDI出力デバイスを開く */ 52 pMIDIOut = MIDIOut_Open(szDeviceName); 53 if (pMIDIOut == NULL) { 54 std::cerr << "MIDI出力デバイス「" << szDeviceName << "」を開けません。" << std::endl; 55 return 0; 56 } 57 std::cerr << "MIDI出力デバイス「" << szDeviceName << "」を開きました。" << std::endl; 58 59}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/02 12:47