Csound and CsoundAC API  5.17
Public Types | Public Member Functions | Static Public Member Functions | Data Fields
csound::MidiFile Class Reference

Reads and writes format 0 and format 1 standard MIDI files. More...

#include <Midifile.hpp>

Public Types

enum  MetaEventTypes {
  META_SEQUENCE_NUMBER = 0x00, META_TEXT_EVENT = 0x01, META_COPYRIGHT_NOTICE = 0x02, META_SEQUENCE_NAME = 0x03,
  META_INSTRUMENT_NAME = 0x04, META_LYRIC = 0x05, META_MARKER = 0x06, META_CUE_POINT = 0x07,
  META_CHANNEL_PREFIX = 0x20, META_END_OF_TRACK = 0x2f, META_SET_TEMPO = 0x51, META_SMPTE_OFFSET = 0x54,
  META_TIME_SIGNATURE = 0x58, META_KEY_SIGNATURE = 0x59, META_SEQUENCER_SPECIFIC = 0x74
}
enum  MidiControllers {
  CONTROLLER_MOD_WHEEL = 1, CONTROLLER_BREATH = 2, CONTROLLER_FOOT = 4, CONTROLLER_BALANCE = 8,
  CONTROLLER_PAN = 10, CONTROLLER_EXPRESSION = 11, CONTROLLER_DAMPER_PEDAL = 0x40, CONTROLLER_PORTAMENTO = 0x41,
  CONTROLLER_SOSTENUTO = 0x42, CONTROLLER_SOFT_PEDAL = 0x43, CONTROLLER_GENERAL_4 = 0x44, CONTROLLER_HOLD_2 = 0x45,
  CONTROLLER_7GENERAL_5 = 0x50, CONTROLLER_GENERAL_6 = 0x51, CONTROLLER_GENERAL_7 = 0x52, CONTROLLER_GENERAL_8 = 0x53,
  CONTROLLER_TREMOLO_DEPTH = 0x5c, CONTROLLER_CHORUS_DEPTH = 0x5d, CONTROLLER_DETUNE = 0x5e, CONTROLLER_PHASER_DEPTH = 0x5f,
  CONTROLLER_DATA_INC = 0x60, CONTROLLER_DATA_DEC = 0x61, CONTROLLER_NON_REG_LSB = 0x62, CONTROLLER_NON_REG_MSB = 0x63,
  CONTROLLER_REG_LSB = 0x64, CONTROLLER_REG_MSG = 0x65, CONTROLLER_CONTINUOUS_AFTERTOUCH = 128
}
enum  MidiEventTypes {
  CHANNEL_NOTE_OFF = 0x80, CHANNEL_NOTE_ON = 0x90, CHANNEL_KEY_PRESSURE = 0xa0, CHANNEL_CONTROL_CHANGE = 0xb0,
  CHANNEL_PROGRAM_CHANGE = 0xc0, CHANNEL_AFTER_TOUCH = 0xd0, CHANNEL_PITCH_BEND = 0xe0, SYSTEM_EXCLUSIVE = 0xf0,
  SYSTEM_MIDI_TIME_CODE = 0xf1, SYSTEM_SONG_POSITION_POINTER = 0xf2, SYSTEM_SONG_SELECT = 0xf3, SYSTEM_TUNE_REQUEST = 0xf6,
  SYSTEM_END_OF_EXCLUSIVE = 0xf7, SYSTEM_TIMING_CLOCK = 0xf8, SYSTEM_START = 0xfa, SYSTEM_CONTINUE = 0xfb,
  SYSTEM_STOP = 0xfc, SYSTEM_ACTIVE_SENSING = 0xfe, META_EVENT = 0xff
}

Public Member Functions

virtual void clear ()
void computeTimes ()
virtual void dump (std::ostream &stream)
virtual void load (std::string filename)
 MidiFile ()
virtual void read (std::istream &stream)
virtual void save (std::string filename)
virtual void write (std::ostream &stream)
virtual ~MidiFile ()

Static Public Member Functions

static int chunkName (int a, int b, int c, int d)
static int readInt (std::istream &stream)
static short readShort (std::istream &stream)
static int readVariableLength (std::istream &stream)
static int toInt (int c1, int c2, int c3, int c4)
static short toShort (int c1, int c2)
static void writeInt (std::ostream &stream, int value)
static void writeShort (std::ostream &stream, short value)
static void writeVariableLength (std::ostream &stream, int value)

Data Fields

double currentSecondsPerTick
int currentTick
double currentTime
unsigned char lastStatus
double microsecondsPerQuarterNote
MidiHeader midiHeader
std::vector< MidiTrackmidiTracks
TempoMap tempoMap

Detailed Description

Reads and writes format 0 and format 1 standard MIDI files.

Member Enumeration Documentation

Enumerator:
META_SEQUENCE_NUMBER 
META_TEXT_EVENT 
META_COPYRIGHT_NOTICE 
META_SEQUENCE_NAME 
META_INSTRUMENT_NAME 
META_LYRIC 
META_MARKER 
META_CUE_POINT 
META_CHANNEL_PREFIX 
META_END_OF_TRACK 
META_SET_TEMPO 
META_SMPTE_OFFSET 
META_TIME_SIGNATURE 
META_KEY_SIGNATURE 
META_SEQUENCER_SPECIFIC 
Enumerator:
CONTROLLER_MOD_WHEEL 
CONTROLLER_BREATH 
CONTROLLER_FOOT 
CONTROLLER_BALANCE 
CONTROLLER_PAN 
CONTROLLER_EXPRESSION 
CONTROLLER_DAMPER_PEDAL 
CONTROLLER_PORTAMENTO 
CONTROLLER_SOSTENUTO 
CONTROLLER_SOFT_PEDAL 
CONTROLLER_GENERAL_4 
CONTROLLER_HOLD_2 
CONTROLLER_7GENERAL_5 
CONTROLLER_GENERAL_6 
CONTROLLER_GENERAL_7 
CONTROLLER_GENERAL_8 
CONTROLLER_TREMOLO_DEPTH 
CONTROLLER_CHORUS_DEPTH 
CONTROLLER_DETUNE 
CONTROLLER_PHASER_DEPTH 
CONTROLLER_DATA_INC 
CONTROLLER_DATA_DEC 
CONTROLLER_NON_REG_LSB 
CONTROLLER_NON_REG_MSB 
CONTROLLER_REG_LSB 
CONTROLLER_REG_MSG 
CONTROLLER_CONTINUOUS_AFTERTOUCH 
Enumerator:
CHANNEL_NOTE_OFF 
CHANNEL_NOTE_ON 
CHANNEL_KEY_PRESSURE 
CHANNEL_CONTROL_CHANGE 
CHANNEL_PROGRAM_CHANGE 
CHANNEL_AFTER_TOUCH 
CHANNEL_PITCH_BEND 
SYSTEM_EXCLUSIVE 
SYSTEM_MIDI_TIME_CODE 
SYSTEM_SONG_POSITION_POINTER 
SYSTEM_SONG_SELECT 
SYSTEM_TUNE_REQUEST 
SYSTEM_END_OF_EXCLUSIVE 
SYSTEM_TIMING_CLOCK 
SYSTEM_START 
SYSTEM_CONTINUE 
SYSTEM_STOP 
SYSTEM_ACTIVE_SENSING 
META_EVENT 

Constructor & Destructor Documentation

csound::MidiFile::MidiFile ( )
virtual csound::MidiFile::~MidiFile ( )
virtual

Member Function Documentation

static int csound::MidiFile::chunkName ( int  a,
int  b,
int  c,
int  d 
)
static
virtual void csound::MidiFile::clear ( )
virtual
void csound::MidiFile::computeTimes ( )
virtual void csound::MidiFile::dump ( std::ostream &  stream)
virtual
virtual void csound::MidiFile::load ( std::string  filename)
virtual
virtual void csound::MidiFile::read ( std::istream &  stream)
virtual
static int csound::MidiFile::readInt ( std::istream &  stream)
static
static short csound::MidiFile::readShort ( std::istream &  stream)
static
static int csound::MidiFile::readVariableLength ( std::istream &  stream)
static
virtual void csound::MidiFile::save ( std::string  filename)
virtual
static int csound::MidiFile::toInt ( int  c1,
int  c2,
int  c3,
int  c4 
)
static
static short csound::MidiFile::toShort ( int  c1,
int  c2 
)
static
virtual void csound::MidiFile::write ( std::ostream &  stream)
virtual
static void csound::MidiFile::writeInt ( std::ostream &  stream,
int  value 
)
static
static void csound::MidiFile::writeShort ( std::ostream &  stream,
short  value 
)
static
static void csound::MidiFile::writeVariableLength ( std::ostream &  stream,
int  value 
)
static

Field Documentation

double csound::MidiFile::currentSecondsPerTick
int csound::MidiFile::currentTick
double csound::MidiFile::currentTime
unsigned char csound::MidiFile::lastStatus
double csound::MidiFile::microsecondsPerQuarterNote
MidiHeader csound::MidiFile::midiHeader
std::vector<MidiTrack> csound::MidiFile::midiTracks
TempoMap csound::MidiFile::tempoMap