00001 #include "MIDI.h" 00002 00003 int main(int argc,char* argv[]) 00004 { 00005 MIDI::File file("output.mid"); 00006 00007 MIDI::Header* header=file.header(); 00008 header->setTicksPerBeat(480); 00009 00010 MIDI::Track* track=new MIDI::Track(); 00011 00012 MIDI::MetaGenericEvent* timeSignature=new MIDI::MetaGenericEvent(0,MIDI_METAEVENT_TIMESIGNATURE,4); 00013 timeSignature->setParam(0,4); 00014 timeSignature->setParam(1,2); 00015 timeSignature->setParam(2,24); 00016 timeSignature->setParam(3,8); 00017 00018 MIDI::MetaGenericEvent* keySignature=new MIDI::MetaGenericEvent(0,MIDI_METAEVENT_KEYSIGNATURE,2); 00019 keySignature->setParam(0,0); 00020 keySignature->setParam(1,0); 00021 00022 MIDI::MetaNumberEvent* tempo=new MIDI::MetaNumberEvent(0,MIDI_METAEVENT_SETTEMPO,3,900000); 00023 00024 track->addEvent(timeSignature); 00025 track->addEvent(keySignature); 00026 track->addEvent(tempo); 00027 00028 for(int i=0;i<128;i++) 00029 { 00030 track->addEvent(new MIDI::ChannelEvent(0,MIDI_CHEVENT_NOTEON,0,i,100)); 00031 track->addEvent(new MIDI::ChannelEvent(100,MIDI_CHEVENT_NOTEOFF,0,i,0)); 00032 } 00033 00034 for(int i=127;i>=0;i--) 00035 { 00036 track->addEvent(new MIDI::ChannelEvent(0,MIDI_CHEVENT_NOTEON,0,i,100)); 00037 track->addEvent(new MIDI::ChannelEvent(100,MIDI_CHEVENT_NOTEOFF,0,i,0)); 00038 } 00039 00040 track->addEvent(new MIDI::MetaGenericEvent(25,MIDI_METAEVENT_ENDOFTRACK,0)); 00041 00042 file.addTrack(track); 00043 00044 file.write(); 00045 }