Public Member Functions | Static Public Member Functions | Protected Attributes | Static Protected Attributes

Raul::SMFReader Class Reference
[Realtime Audio Utility Library]

Standard Midi File (Type 0) Reader. More...

#include <SMFReader.hpp>

List of all members.

Public Member Functions

 SMFReader (const std::string filename="")
bool open (const std::string &filename) throw (std::logic_error, UnsupportedTime)
bool seek_to_track (unsigned track) throw (std::logic_error)
 Seek to the start of a given track, starting from 1.
uint16_t type () const
uint16_t ppqn () const
size_t num_tracks ()
int read_event (size_t buf_len, uint8_t *buf, uint32_t *ev_size, uint32_t *ev_delta_time) throw (std::logic_error, PrematureEOF, CorruptFile)
 Read an event from the current position in file.
void close ()

Static Public Member Functions

static uint32_t read_var_len (FILE *fd) throw (PrematureEOF)

Protected Attributes

std::string _filename
FILE * _fd
uint16_t _type
uint16_t _ppqn
uint16_t _num_tracks
uint32_t _track
uint32_t _track_size

Static Protected Attributes

static const uint32_t HEADER_SIZE = 22
 size of SMF header, including MTrk chunk header

Detailed Description

Standard Midi File (Type 0) Reader.

Currently this only reads SMF files with tempo-based timing.

Member Function Documentation

bool Raul::SMFReader::seek_to_track ( unsigned  track  )  throw (std::logic_error)

Seek to the start of a given track, starting from 1.

Returns true if specified track was found.

int Raul::SMFReader::read_event ( size_t  buf_len,
uint8_t *  buf,
uint32_t *  ev_size,
uint32_t *  delta_time 
) throw (std::logic_error, PrematureEOF, CorruptFile)

Read an event from the current position in file.

File position MUST be at the beginning of a delta time, or this will die very messily. ev.buffer must be of size ev.size, and large enough for the event. The returned event will have it's time field set to it's delta time (so it's the caller's responsibility to keep track of delta time, even for ignored events).

Returns event length (including status byte) on success, 0 if event was skipped (eg a meta event), or -1 on EOF (or end of track).

If buf is not large enough to hold the event, 0 will be returned, but ev_size set to the actual size of the event.

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