18 #ifndef RAUL_SMF_READER_HPP
19 #define RAUL_SMF_READER_HPP
24 #include "raul/TimeStamp.hpp"
36 class PrematureEOF :
public std::exception {
37 const char* what()
const throw() {
return "Unexpected end of file"; }
39 class CorruptFile :
public std::exception {
40 const char* what()
const throw() {
return "Corrupted file"; }
42 class UnsupportedTime :
public std::exception {
43 const char* what()
const throw() {
return "Unsupported time stamp type (SMPTE)"; }
46 explicit SMFReader(
const std::string filename=
"");
49 bool open(
const std::string& filename)
throw (std::logic_error, UnsupportedTime);
53 uint16_t type()
const {
return _type; }
54 uint16_t ppqn()
const {
return _ppqn; }
55 size_t num_tracks() {
return _num_tracks; }
60 uint32_t* ev_delta_time)
61 throw (std::logic_error, PrematureEOF, CorruptFile);
65 static uint32_t read_var_len(FILE* fd)
throw (PrematureEOF);
71 std::string _filename;
83 #endif // RAUL_SMF_READER_HPP
#define MIDI_CMD_NOTE_PRESSURE
Key Pressure.
Definition: midi_events.h:113
#define MIDI_CMD_COMMON_MTC_QUARTER
MTC Quarter Frame.
Definition: midi_events.h:119
bool seek_to_track(unsigned track)
Seek to the start of a given track, starting from 1.
Definition: SMFReader.cpp:151
#define MIDI_CMD_CHANNEL_PRESSURE
Channel Pressure.
Definition: midi_events.h:116
#define MIDI_CMD_COMMON_SYSEX
Sysex (System Exclusive) Begin.
Definition: midi_events.h:118
#define MIDI_CMD_COMMON_TUNE_REQUEST
Tune Request.
Definition: midi_events.h:122
#define MIDI_CMD_CONTROL
Control Change.
Definition: midi_events.h:114
int read_event(size_t buf_len, uint8_t *buf, uint32_t *ev_size, uint32_t *ev_delta_time)
Read an event from the current position in file.
Definition: SMFReader.cpp:209
#define MIDI_CMD_COMMON_SONG_POS
Song Position.
Definition: midi_events.h:120
#define MIDI_CMD_PGM_CHANGE
Program Change.
Definition: midi_events.h:115
#define MIDI_CMD_COMMON_CLOCK
Clock.
Definition: midi_events.h:124
#define MIDI_CMD_NOTE_ON
Note On.
Definition: midi_events.h:112
#define MIDI_CMD_BENDER
Pitch Bender.
Definition: midi_events.h:117
#define MIDI_CMD_COMMON_SYSEX_END
End of Sysex.
Definition: midi_events.h:123
#define MIDI_CMD_COMMON_START
Start.
Definition: midi_events.h:126
static const uint32_t HEADER_SIZE
size of SMF header, including MTrk chunk header
Definition: SMFReader.hpp:69
#define MIDI_CMD_COMMON_STOP
Stop.
Definition: midi_events.h:128
#define MIDI_CMD_COMMON_CONTINUE
Continue.
Definition: midi_events.h:127
#define MIDI_CMD_COMMON_RESET
Reset.
Definition: midi_events.h:130
#define MIDI_CMD_COMMON_SENSING
Active Sensing.
Definition: midi_events.h:129
Standard Midi File (Type 0) Reader.
Definition: SMFReader.hpp:34
#define MIDI_CMD_COMMON_SONG_SELECT
Song Select.
Definition: midi_events.h:121
#define MIDI_CMD_NOTE_OFF
Note Off.
Definition: midi_events.h:111