#include <stdio.h>
#include <MIDIData.h>
int main() {
MIDIData* pMIDIData;
MIDITrack* pMIDITrack;
/* MIDIデータの生成(フォーマット0,トラック数1,TPQNベース,120) */
pMIDIData = MIDIData_Create(MIDIDATA_FORMAT0, 1, MIDIDATA_TPQNBASE, 120);
if (pMIDIData == NULL) {
printf("MIDIデータの生成に失敗しました。\n");
return 0;
}
/* 最初のトラックへのポインタを取得 */
pMIDITrack = MIDIData_GetFirstTrack(pMIDIData);
/* イベントを挿入 */
MIDITrack_InsertTrackName(pMIDITrack, 0, "ちょうちょ"); /* タイトル */
MIDITrack_InsertTempo(pMIDITrack, 0, 60000000 / 120); /* 120BPM */
MIDITrack_InsertProgramChange(pMIDITrack, 0, 9, 0); /* Piano1 */
/* ノートイベントを挿入 Time ch key vel dur */
MIDITrack_InsertNote(pMIDITrack, 0, 9, 42, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 0, 9, 36, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 120, 9, 42, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 240, 9, 42, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 240, 9, 38, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 360, 9, 42, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 480, 9, 42, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 480, 9, 36, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 600, 9, 42, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 600, 9, 36, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 720, 9, 42, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 720, 9, 38, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 840, 9, 42, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 960, 9, 42, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 960, 9, 36, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 1080, 9, 42, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 1200, 9, 42, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 1200, 9, 38, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 1320, 9, 42, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 1440, 9, 42, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 1440, 9, 36, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 1560, 9, 42, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 1560, 9, 36, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 1680, 9, 42, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 1680, 9, 38, 100, 120);
MIDITrack_InsertNote(pMIDITrack, 1800, 9, 42, 100, 120);
/* エンドオブトラックイベントを挿入 */
MIDITrack_InsertEndofTrack(pMIDITrack, 1920);
/* MIDIデータを保存 */
MIDIData_SaveAsSMF(pMIDIData, "eightbeat.mid");
/* MIDIデータをメモリ上から削除 */
MIDIData_Delete(pMIDIData);
pMIDIData = NULL;
return 1;
}
MIDI情報のTIMEの取得について
MIDI情報のTIMEの取得について
自分でプログラムで書いて作ったMIDIデータのTIMEを取得できるようにしたいのですが、どのようなプログラムで取得できるようになりますか?MIDIデータのプログラムは下記のようになります。このMIDIデータを読み込ませ、楽譜にしようと考えているのですが、Timeの読み込ませ方が分からなくて困っています。アドバイスの方よろしくお願いします。おーぷんMIDIぷろじぇくと(http://openmidiproject.osdn.jp/)というフリーのライブラリを使用したりしています。
Re: MIDI情報のTIMEの取得について
MIDIデータ の TIME とはなんでしょうか?
デルタタイムでしょうか? それとも絶対時刻でしょうか? それとも演奏時間ですか?
MIDIdataLib を使用して MIDIファイルを読込めば、MIDIEvent 構造体の m_lTime に絶対時刻が入っているようです。
サンプルプログラムは実行してみましたか?
デルタタイムでしょうか? それとも絶対時刻でしょうか? それとも演奏時間ですか?
MIDIdataLib を使用して MIDIファイルを読込めば、MIDIEvent 構造体の m_lTime に絶対時刻が入っているようです。
サンプルプログラムは実行してみましたか?