#include "jdkmidi/world.h"
#include "jdkmidi/track.h"
#include "jdkmidi/multitrack.h"
#include "jdkmidi/filereadmultitrack.h"
#include "jdkmidi/fileread.h"
#include "jdkmidi/fileshow.h"
#include "jdkmidi/sequencer.h"
Go to the source code of this file.
Functions | |
void | DumpMIDIBigMessage (MIDITimedBigMessage *msg) |
void | DumpMIDITimedBigMessage (MIDITimedBigMessage *msg) |
void | DumpMIDITrack (MIDITrack *t) |
void | DumpAllTracks (MIDIMultiTrack *mlt) |
void | DumpMIDIMultiTrack (MIDIMultiTrack *mlt) |
void | PlayDumpSequencer (MIDISequencer *seq) |
int | main (int argc, char **argv) |
|
Definition at line 85 of file jdkmidi_test_sequencer.cpp. References DumpMIDITrack(), jdkmidi::MIDIMultiTrack::GetClksPerBeat(), jdkmidi::MIDITrack::GetNumEvents(), jdkmidi::MIDIMultiTrack::GetNumTracks(), and jdkmidi::MIDIMultiTrack::GetTrack().
00086 { 00087 00088 fprintf( stdout , "Clocks per beat: %d\n\n", mlt->GetClksPerBeat() ); 00089 00090 for( int i=0; i<mlt->GetNumTracks(); ++i ) 00091 { 00092 if( mlt->GetTrack(i)->GetNumEvents() > 0 ) 00093 { 00094 fprintf( stdout, "DUMP OF TRACK #%2d:\n", i ); 00095 DumpMIDITrack( mlt->GetTrack(i) ); 00096 fprintf( stdout, "\n" ); 00097 } 00098 00099 } 00100 00101 } |
|
Definition at line 40 of file jdkmidi_test_sequencer.cpp. References jdkmidi::MIDISystemExclusive::GetLength(), jdkmidi::MIDIBigMessage::GetSysEx(), jdkmidi::MIDIMessage::IsSysEx(), and jdkmidi::MIDIMessage::MsgToText().
|
|
Definition at line 103 of file jdkmidi_test_sequencer.cpp. References DumpMIDITimedBigMessage(), jdkmidi::MIDIMultiTrack::GetClksPerBeat(), jdkmidi::MIDIMultiTrackIterator::GetCurEvent(), jdkmidi::MIDIMultiTrackIterator::GoToNextEvent(), and jdkmidi::MIDIMultiTrackIterator::GoToTime().
00104 { 00105 MIDIMultiTrackIterator i( mlt ); 00106 MIDITimedBigMessage *msg; 00107 00108 fprintf( stdout , "Clocks per beat: %d\n\n", mlt->GetClksPerBeat() ); 00109 00110 i.GoToTime(0); 00111 00112 do 00113 { 00114 int trk_num; 00115 00116 if( i.GetCurEvent(&trk_num, &msg ) ) 00117 { 00118 fprintf( stdout, "#%2d - ", trk_num ); 00119 DumpMIDITimedBigMessage( msg ); 00120 } 00121 } while( i.GoToNextEvent() ); 00122 00123 } |
|
Definition at line 56 of file jdkmidi_test_sequencer.cpp. References jdkmidi::MIDISystemExclusive::GetLength(), jdkmidi::MIDIBigMessage::GetSysEx(), jdkmidi::MIDITimedBigMessage::GetTime(), jdkmidi::MIDIMessage::IsSysEx(), and jdkmidi::MIDIMessage::MsgToText().
|
|
Definition at line 72 of file jdkmidi_test_sequencer.cpp. References DumpMIDITimedBigMessage(), jdkmidi::MIDITrack::GetEventAddress(), and jdkmidi::MIDITrack::GetNumEvents().
00073 { 00074 MIDITimedBigMessage *msg; 00075 00076 for( int i=0; i<t->GetNumEvents(); ++i ) 00077 { 00078 msg = t->GetEventAddress( i ); 00079 DumpMIDITimedBigMessage( msg ); 00080 00081 } 00082 00083 } |
|
Definition at line 176 of file jdkmidi_test_sequencer.cpp. References jdkmidi::MIDIFileRead::Parse(), and PlayDumpSequencer().
00177 { 00178 if( argc>1 ) 00179 { 00180 MIDIFileReadStreamFile rs( argv[1] ); 00181 MIDIMultiTrack tracks(64); 00182 MIDIFileReadMultiTrack track_loader( &tracks ); 00183 MIDIFileRead reader( &rs, &track_loader ); 00184 MIDISequencer seq( &tracks ); 00185 00186 reader.Parse(); 00187 00188 //DumpMIDIMultiTrack( &tracks ); 00189 00190 00191 PlayDumpSequencer( &seq ); 00192 } 00193 00194 return 0; 00195 } |
|
Definition at line 125 of file jdkmidi_test_sequencer.cpp. References DumpMIDITimedBigMessage(), jdkmidi::MIDISequencer::GetNextEvent(), jdkmidi::MIDISequencer::GetNextEventTimeMs(), and jdkmidi::MIDISequencer::GoToTimeMs().
00126 { 00127 float pretend_clock_time = 0.0; 00128 float next_event_time = 0.0; 00129 MIDITimedBigMessage ev; 00130 int ev_track; 00131 00132 seq->GoToTimeMs( pretend_clock_time ); 00133 00134 if( !seq->GetNextEventTimeMs( &next_event_time ) ) 00135 { 00136 return; 00137 } 00138 00139 // simulate a clock going forward with 10ms resolution for 1 minute 00140 00141 for( ; pretend_clock_time<60.0*1000.0; pretend_clock_time+=10.0 ) 00142 { 00143 00144 // find all events that came before or a the current time 00145 00146 while( next_event_time <= pretend_clock_time ) 00147 { 00148 if( seq->GetNextEvent( &ev_track, &ev ) ) 00149 { 00150 // found the event! 00151 // show it to stdout 00152 00153 fprintf( stdout, "tm=%06.0f : evtm=%06.0f :trk%02d : ", 00154 pretend_clock_time, next_event_time, ev_track ); 00155 00156 DumpMIDITimedBigMessage( &ev ); 00157 00158 // now find the next message 00159 00160 if( !seq->GetNextEventTimeMs( &next_event_time ) ) 00161 { 00162 // no events left so end 00163 00164 fprintf( stdout, "End\n" ); 00165 return; 00166 } 00167 00168 } 00169 } 00170 } 00171 00172 00173 } |