#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 }
|