jdkmidi class library documentation

Copyright © 2004 J.D. Koftinoff Software, Ltd.

Released under the GNU General Public License (GPL)




Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members

jdkmidi::MIDIFileWriteMultiTrack Class Reference

#include <filewritemultitrack.h>

List of all members.

Public Member Functions

 MIDIFileWriteMultiTrack (const MIDIMultiTrack *mlt_, MIDIFileWriteStream *strm_)
virtual ~MIDIFileWriteMultiTrack ()
bool Write (int num_tracks, int division)

Private Member Functions

virtual bool PreWrite ()
virtual bool PostWrite ()

Private Attributes

const MIDIMultiTrackmultitrack
MIDIFileWrite writer


Constructor & Destructor Documentation

jdkmidi::MIDIFileWriteMultiTrack::MIDIFileWriteMultiTrack const MIDIMultiTrack mlt_,
MIDIFileWriteStream strm_
 

Definition at line 31 of file jdkmidi_filewritemultitrack.cpp.

00035     :
00036     multitrack( mlt_ ),
00037     writer( strm_ )
00038   {
00039   }

jdkmidi::MIDIFileWriteMultiTrack::~MIDIFileWriteMultiTrack  )  [virtual]
 

Definition at line 41 of file jdkmidi_filewritemultitrack.cpp.

00042   {
00043   }


Member Function Documentation

bool jdkmidi::MIDIFileWriteMultiTrack::PostWrite  )  [private, virtual]
 

Definition at line 113 of file jdkmidi_filewritemultitrack.cpp.

00114   {
00115     return true;
00116   }

bool jdkmidi::MIDIFileWriteMultiTrack::PreWrite  )  [private, virtual]
 

Definition at line 108 of file jdkmidi_filewritemultitrack.cpp.

00109   {
00110     return true;
00111   }

bool jdkmidi::MIDIFileWriteMultiTrack::Write int  num_tracks,
int  division
 

Definition at line 45 of file jdkmidi_filewritemultitrack.cpp.

References jdkmidi::MIDIFileWrite::ErrorOccurred(), jdkmidi::MIDITrack::GetEventAddress(), jdkmidi::MIDITrack::GetNumEvents(), jdkmidi::MIDITimedBigMessage::GetTime(), jdkmidi::MIDIMultiTrack::GetTrack(), jdkmidi::MIDIMessage::IsDataEnd(), jdkmidi::MIDIMessage::IsNoOp(), jdkmidi::MIDIClockTime, multitrack, PostWrite(), PreWrite(), jdkmidi::MIDIFileWrite::RewriteTrackLength(), jdkmidi::MIDIFileWrite::WriteEndOfTrack(), jdkmidi::MIDIFileWrite::WriteEvent(), jdkmidi::MIDIFileWrite::WriteFileHeader(), writer, and jdkmidi::MIDIFileWrite::WriteTrackHeader().

00046   {
00047     bool f=true;
00048     if( !PreWrite() )
00049     {
00050       return false;
00051     }
00052     
00053     // first, write the header.
00054     
00055     writer.WriteFileHeader( (num_tracks>0), num_tracks, division );
00056     
00057     // now write each track
00058     
00059     for( int i=0; i<num_tracks; ++i )
00060     {
00061       if( writer.ErrorOccurred() )
00062       {
00063         f=false;
00064         break;
00065       }
00066       
00067       const MIDITrack *t = multitrack->GetTrack(i);
00068       
00069       MIDIClockTime last_event_time=0;
00070       
00071       writer.WriteTrackHeader(0); // will be rewritten later
00072       
00073       if( t )
00074       {
00075         for( int event_num=0; event_num<t->GetNumEvents(); ++event_num )
00076         {
00077           const MIDITimedBigMessage *ev = t->GetEventAddress( event_num );
00078           if( ev && !ev->IsNoOp() )
00079           {
00080             last_event_time = ev->GetTime();
00081             
00082             if( !ev->IsDataEnd() )
00083             {
00084               writer.WriteEvent( *ev );
00085               
00086               if( writer.ErrorOccurred() )
00087               {
00088                 f=false;
00089                 break;
00090               }
00091             }
00092           }
00093         }
00094       }
00095       writer.WriteEndOfTrack(0);
00096       writer.RewriteTrackLength();
00097     }
00098     
00099     if( !PostWrite() )
00100     {
00101       return false;
00102     }
00103     
00104     return f;
00105   }


Member Data Documentation

const MIDIMultiTrack* jdkmidi::MIDIFileWriteMultiTrack::multitrack [private]
 

Definition at line 50 of file filewritemultitrack.h.

MIDIFileWrite jdkmidi::MIDIFileWriteMultiTrack::writer [private]
 

Definition at line 51 of file filewritemultitrack.h.


The documentation for this class was generated from the following files: