OpenTTD Source 20241224-master-gee860a5c8e
|
Data Structures | |
struct | DataBlock |
struct | TempoChange |
Public Member Functions | |
bool | LoadFile (const std::string &filename) |
Load a standard MIDI file. | |
bool | LoadMpsData (const uint8_t *data, size_t length) |
Create MIDI data from song data for the original Microprose music drivers. | |
bool | LoadSong (const MusicSongInfo &song) |
void | MoveFrom (MidiFile &other) |
Move data from other to this, and clears other. | |
bool | WriteSMF (const std::string &filename) |
Write a Standard MIDI File containing the decoded music. | |
Static Public Member Functions | |
static std::string | GetSMFFile (const MusicSongInfo &song) |
Get the name of a Standard MIDI File for a given song. | |
static bool | ReadSMFHeader (const std::string &filename, SMFHeader &header) |
Read the header of a standard MIDI file. | |
static bool | ReadSMFHeader (FileHandle &file, SMFHeader &header) |
Read the header of a standard MIDI file. | |
Data Fields | |
std::vector< DataBlock > | blocks |
sequential time-annotated data of file, merged to a single track | |
std::vector< TempoChange > | tempos |
list of tempo changes in file | |
uint16_t | tickdiv |
ticks per quarter note | |
Definition at line 19 of file midifile.hpp.
MidiFile::MidiFile | ( | ) |
Definition at line 1120 of file midifile.cpp.
MidiFile::~MidiFile | ( | ) |
Definition at line 1125 of file midifile.cpp.
|
static |
Get the name of a Standard MIDI File for a given song.
For songs already in SMF format, just returns the original. Otherwise the song is converted, written to a temporary-ish file, and the written filename is returned.
song | Song definition to query |
Definition at line 1025 of file midifile.cpp.
References AppendPathSeparator(), BASESET_DIR, MusicSongInfo::cat_index, FileExists(), MusicSongInfo::filename, MusicSongInfo::filetype, FioCreateDirectory(), FioFindFullPath(), GetMusicCatEntryData(), LoadMpsData(), MTT_MPSMIDI, MTT_STANDARDMIDI, OLD_GM_DIR, SP_AUTODOWNLOAD_DIR, and WriteSMF().
Referenced by MusicDriver_BeMidi::PlaySong(), MusicDriver_ExtMidi::PlaySong(), and MusicDriver_FluidSynth::PlaySong().
bool MidiFile::LoadFile | ( | const std::string & | filename | ) |
Load a standard MIDI file.
filename | name of the file to load |
Definition at line 445 of file midifile.cpp.
References BASESET_DIR, blocks, FioFOpenFile(), ReadSMFHeader(), tempos, and tickdiv.
bool MidiFile::LoadMpsData | ( | const uint8_t * | data, |
size_t | length | ||
) |
Create MIDI data from song data for the original Microprose music drivers.
data | pointer to block of data |
length | size of data in bytes |
Definition at line 822 of file midifile.cpp.
References MpsMachine::PlayInto().
Referenced by GetSMFFile().
bool MidiFile::LoadSong | ( | const MusicSongInfo & | song | ) |
Definition at line 830 of file midifile.cpp.
void MidiFile::MoveFrom | ( | MidiFile & | other | ) |
Move data from other to this, and clears other.
other | object containing loaded data to take over |
Definition at line 854 of file midifile.cpp.
|
static |
Read the header of a standard MIDI file.
[in] | filename | name of file to read from |
[out] | header | filled with data read |
Definition at line 404 of file midifile.cpp.
References BASESET_DIR, FioFOpenFile(), and ReadSMFHeader().
Referenced by LoadFile(), and ReadSMFHeader().
|
static |
Read the header of a standard MIDI file.
The function will consume 14 bytes from the current file pointer position.
[in] | file | open file to read from (should be in binary mode) |
[out] | header | filled with data read |
Definition at line 419 of file midifile.cpp.
References MemCmpT().
bool MidiFile::WriteSMF | ( | const std::string & | filename | ) |
Write a Standard MIDI File containing the decoded music.
filename | Name of file to write to |
Definition at line 898 of file midifile.cpp.
References blocks, MidiFile::DataBlock::data, FioFOpenFile(), NO_DIRECTORY, MidiFile::TempoChange::tempo, tempos, tickdiv, MidiFile::DataBlock::ticktime, and MidiFile::TempoChange::ticktime.
Referenced by GetSMFFile().
std::vector<DataBlock> MidiFile::blocks |
sequential time-annotated data of file, merged to a single track
Definition at line 32 of file midifile.hpp.
Referenced by LoadFile(), MoveFrom(), MpsMachine::PlayInto(), and WriteSMF().
std::vector<TempoChange> MidiFile::tempos |
list of tempo changes in file
Definition at line 33 of file midifile.hpp.
Referenced by LoadFile(), MoveFrom(), MpsMachine::PlayInto(), and WriteSMF().
uint16_t MidiFile::tickdiv |
ticks per quarter note
Definition at line 34 of file midifile.hpp.
Referenced by LoadFile(), MoveFrom(), MpsMachine::PlayInto(), and WriteSMF().