int main ( int argc, char **argv ) { if ( argc>1 ) { MIDIFileReadStreamFile rs ( argv[1] ); MIDIMultiTrack tracks ( 64 ); MIDIFileReadMultiTrack track_loader ( &tracks ); MIDIFileRead reader ( &rs, &track_loader ); MIDISequencerGUIEventNotifierText gui ( stdout ); MIDISequencer seq ( &tracks, &gui ); MIDIDriverDump driver ( 128,stdout ); MIDIManager mgr ( &driver, &gui ); reader.Parse(); seq.GoToZero(); mgr.SetSeq ( &seq ); DumpTrackNames ( &seq ); PlayDumpManager ( &mgr ); } return 0; }
int main ( int argc, char **argv ) { #ifdef WIN32 if ( argc > 1 ) { MIDIFileReadStreamFile rs ( argv[1] ); MIDIMultiTrack tracks ( 64 ); MIDIFileReadMultiTrack track_loader ( &tracks ); MIDIFileRead reader ( &rs, &track_loader ); MIDISequencerGUIEventNotifierText gui ( stdout ); MIDISequencer seq ( &tracks, &gui ); MIDIDriverWin32 driver ( 128 ); MIDIManager mgr ( &driver, &gui ); reader.Parse(); driver.StartTimer ( 20 ); driver.OpenMIDIOutPort ( MIDI_MAPPER ); seq.GoToZero(); mgr.SetSeq ( &seq ); mgr.SetTimeOffset ( timeGetTime() ); mgr.SeqPlay(); getchar(); mgr.SeqStop(); } return 0; #endif }
int main( int argc, char **argv ) { if ( argc > 1 ) { const char *infile_name = argv[1]; MIDIFileReadStreamFile rs( infile_name ); MIDIMultiTrack tracks; MIDIFileReadMultiTrack track_loader( &tracks ); MIDIFileRead reader( &rs, &track_loader ); // set amount of tracks equal to midifile tracks.ClearAndResize( reader.ReadNumTracks() ); // MIDISequencerGUIEventNotifierText notifier( stdout ); // MIDISequencer seq( &tracks, ¬ifier ); MIDISequencer seq ( &tracks ); // load the midifile into the multitrack object if ( !reader.Parse() ) { cerr << "\nError parse file " << infile_name << endl; return -1; } if ( argc > 2 ) { cout << endl; int mode = atoi ( argv[2] ); if ( mode == 0 ) { DumpMIDIMultiTrack( &tracks ); } else // mode = 1 { PlayDumpSequencer( &seq ); } } // cout << MultiTrackAsText( tracks ); // new util fun double dt = seq.GetMisicDurationInSeconds(); cout << "\nMisic duration = " << dt << endl; } else { cerr << "\nusage:\n jdkmidi_test_sequencer FILE.mid [0 for DumpMIDIMultiTrack]\n"; cerr << " [1 for PlayDumpSequencer]\n"; return -1; } return 0; }
void PlayDumpManager ( MIDIManager *mgr ) { MIDISequencer *seq = mgr->GetSeq(); double pretend_clock_time = 0.0; seq->GoToTime ( ( unsigned long ) pretend_clock_time ); mgr->SeqPlay(); // simulate a clock going forward with 10ms resolution for 1 minute for ( pretend_clock_time=0.0; pretend_clock_time<60.0*1000.0; pretend_clock_time+=100 ) { mgr->GetDriver()->TimeTick ( ( unsigned long ) pretend_clock_time ); } mgr->SeqStop(); mgr->GetDriver()->AllNotesOff(); }