MIDIDataライブラリとは、MIDIデータ作成・編集用のライブラリなのですが、トラックの追加がうまくいかず困っております。
以下のページからMIDIIDataライブラリとそのガイドブックがDLいただけます。
おーぷんMIDIぷろじぇくと
何処が間違っているのかご指導いただけませんか?
以下がソースコードとなります。
Track1はピアノのメロディで、Track2がギターの伴奏なのですが、トラックや音色の振り分けが上手くいっていないようです。。
#include <stdio.h>
#include <MIDIData.h>
int main() {
MIDIData* pMIDIData;
MIDITrack* pMIDITrack1;
/* MIDIデータの生成(フォーマット1,トラック数2,TPQNベース,120) */
pMIDIData = MIDIData_Create(MIDIDATA_FORMAT0, 2, MIDIDATA_TPQNBASE, 120);
/* 最初のトラックへのポインタを取得 */
pMIDITrack1 = MIDIData_GetFirstTrack(pMIDIData);
/* メロディのイベントを挿入 */
MIDITrack_InsertTrackName(pMIDITrack1, 0, "メロディ"); /* タイトル */
MIDITrack_InsertTempo(pMIDITrack1, 0, 60000000 / 120); /* 120BPM */
MIDITrack_InsertProgramChange(pMIDITrack1, 0, 0, 2); /* Piano */
/* メロディのノートイベントを挿入*/
MIDITrack_InsertNote(pMIDITrack1, 0, 0, 60, 100, 120); /* ど */
MIDITrack_InsertNote(pMIDITrack1, 120, 0, 64, 100, 120); /* み */
MIDITrack_InsertNote(pMIDITrack1, 240, 0, 67, 100, 120); /* そ */
MIDITrack_InsertNote(pMIDITrack1, 360, 0, 60, 100, 120); /* ど */
/* エンドオブトラックイベントを挿入 */
MIDITrack_InsertEndofTrack(pMIDITrack1, 500);
/*--------------------------------------------------------------------*/
MIDITrack* pMIDITrack2 = MIDITrack_Create();
pMIDITrack2 = MIDIData_GetFirstTrack(pMIDIData);
/* 伴奏のイベントを挿入 */
MIDITrack_InsertTrackName(pMIDITrack2, 0, "伴奏"); /* タイトル */
MIDITrack_InsertTempo(pMIDITrack2, 0, 60000000 / 120); /* 120BPM */
MIDITrack_InsertProgramChange(pMIDITrack2, 0, 0, 26); /* Guitar */
/* 伴奏のノートイベントを挿入*/
MIDITrack_InsertNote(pMIDITrack1, 0, 0, 60, 50, 480); /* ど */
MIDITrack_InsertNote(pMIDITrack1, 0, 0, 64, 50, 480); /* み */
MIDITrack_InsertNote(pMIDITrack1, 0, 0, 67, 50, 480); /* そ */
MIDITrack_InsertNote(pMIDITrack1, 0, 0, 71, 50, 480); /* し */
/* エンドオブトラックイベントを挿入 */
MIDITrack_InsertEndofTrack(pMIDITrack2, 500);
/*メロディの後に伴奏を挿入*/
MIDIData_InsertTrackAfter(pMIDIData, pMIDITrack2, pMIDITrack1);
/* MIDIデータを保存 */
MIDIData_SaveAsSMF(pMIDIData, L"C:メロディ&伴奏.mid");
/* MIDIデータをメモリ上から削除 */
MIDIData_Delete(pMIDIData);
pMIDIData = NULL;
return 1;
}