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
}