AudioDataLib
A C++ library of classes supporting a variety of audio-data tasks.
Loading...
Searching...
No Matches
AudioDataLib::MidiData Class Reference

This data representing the contents of a MIDI file. More...

#include <MidiData.h>

Inheritance diagram for AudioDataLib::MidiData:
AudioDataLib::FileData

Classes

class  ChannelEvent
 
class  Event
 
class  MetaEvent
 
class  SystemExclusiveEvent
 
struct  Timing
 
class  Track
 This is a single time-line of MIDI messages (also called events), or a sequence of MIDI messages meant to execute one after another. More...
 

Public Types

enum  FormatType { SINGLE_TRACK = 0 , MULTI_TRACK = 1 , VARIOUS_TRACKS = 2 }
 

Public Member Functions

 MidiData ()
 
virtual ~MidiData ()
 
virtual void DumpInfo (FILE *fp) const override
 
virtual void DumpCSV (FILE *fp) const override
 
virtual FileDataClone () const override
 
void Clear ()
 
bool CalculateTrackLengthInSeconds (uint32_t i, double &totalTimeSeconds, Error &error) const
 
FormatType GetFormatType () const
 
void SetFormatType (FormatType formatType)
 
const TimingGetTiming () const
 
void SetTiming (Timing timing)
 
const TrackGetTrack (uint32_t i) const
 
TrackGetTrack (uint32_t i)
 
void AddTrack (Track *track)
 
bool RemoveTrack (uint32_t i)
 
uint32_t GetNumTracks () const
 
- Public Member Functions inherited from AudioDataLib::FileData
 FileData ()
 
virtual ~FileData ()
 

Static Public Member Functions

static MidiDataCreate ()
 
static void Destroy (MidiData *midiData)
 

Protected Attributes

FormatType formatType
 
Timing timing
 
std::vector< Track * > * trackArray
 

Friends

class MidiFileFormat
 

Detailed Description

This data representing the contents of a MIDI file.

Instances of this class can be used to read or write MIDI file data. They can also be passed to the MidiPlayer class or the MidiMsgRecorderDestination class for playback or recording, respectively.

Member Enumeration Documentation

◆ FormatType

This is the type of MIDI data you're dealing with. As of this writing, there is no support for VARIOUS_TRACKS, but the others are supported.

Enumerator
SINGLE_TRACK 
MULTI_TRACK 
VARIOUS_TRACKS 

Constructor & Destructor Documentation

◆ MidiData()

MidiData::MidiData ( )

◆ ~MidiData()

MidiData::~MidiData ( )
virtual

Member Function Documentation

◆ AddTrack()

void MidiData::AddTrack ( Track * track)

◆ CalculateTrackLengthInSeconds()

bool MidiData::CalculateTrackLengthInSeconds ( uint32_t i,
double & totalTimeSeconds,
Error & error ) const

Calculate and return the time duration (in seconds) of the MIDI data for a given track.

Parameters
[in]iThis is the zero-based track number. Use GetNumTracks to know how many tracks there are.
[out]totalTimeSecondsThe playback length of the track measured in seconds.
[out]errorAn Error object instance containing error information if something went wrong.
Returns
True is returned on success, otherwise false, and the error parameter should have reasons for the failure.

◆ Clear()

void MidiData::Clear ( )

Remove all tracks from this MIDI file data object.

◆ Clone()

FileData * MidiData::Clone ( ) const
overridevirtual

The derived implimentation should return a new derived instance of the class in question with identical, but separate data.

Implements AudioDataLib::FileData.

◆ Create()

MidiData * MidiData::Create ( )
static

◆ Destroy()

void MidiData::Destroy ( MidiData * midiData)
static

◆ DumpCSV()

void MidiData::DumpCSV ( FILE * fp) const
overridevirtual

Derivative implimentations should produce a command-separated list of human-readable data which can also be loaded as a CVS in spreadsheet software.

Parameters
[in]fpA pointer to a FILE object to which the text should be written.

Implements AudioDataLib::FileData.

◆ DumpInfo()

void MidiData::DumpInfo ( FILE * fp) const
overridevirtual

Derivative implimentations should produce informative, human-readable text about the file data.

Parameters
[in]fpA pointer to a FILE object to which the text should be written.

Implements AudioDataLib::FileData.

◆ GetFormatType()

FormatType AudioDataLib::MidiData::GetFormatType ( ) const
inline

◆ GetNumTracks()

uint32_t AudioDataLib::MidiData::GetNumTracks ( ) const
inline

◆ GetTiming()

const Timing & AudioDataLib::MidiData::GetTiming ( ) const
inline

◆ GetTrack() [1/2]

MidiData::Track * MidiData::GetTrack ( uint32_t i)

◆ GetTrack() [2/2]

const MidiData::Track * MidiData::GetTrack ( uint32_t i) const

◆ RemoveTrack()

bool MidiData::RemoveTrack ( uint32_t i)

◆ SetFormatType()

void AudioDataLib::MidiData::SetFormatType ( FormatType formatType)
inline

◆ SetTiming()

void AudioDataLib::MidiData::SetTiming ( Timing timing)
inline

Friends And Related Symbol Documentation

◆ MidiFileFormat

friend class MidiFileFormat
friend

Member Data Documentation

◆ formatType

FormatType AudioDataLib::MidiData::formatType
protected

◆ timing

Timing AudioDataLib::MidiData::timing
protected

◆ trackArray

std::vector<Track*>* AudioDataLib::MidiData::trackArray
protected

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