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