Public Member Functions | |
MusicPlayerXMI (GroovieEngine *vm, const Common::String >lName) | |
void | send (int8 source, uint32 b) override |
void | metaEvent (int8 source, byte type, byte *data, uint16 length) override |
void | stopAllNotes (bool stopSustainedNotes) override |
void | processXMIDITimbreChunk (const byte *timbreListPtr, uint32 timbreListSize) override |
bool | isReady (int8 source=-1) override |
void | setUserVolume (uint16 volume) override |
![]() | |
MusicPlayerMidi (GroovieEngine *vm) | |
void | send (uint32 b) override |
void | sysEx (const byte *msg, uint16 length) override |
uint16 | sysExNoDelay (const byte *msg, uint16 length) override |
void | metaEvent (byte type, byte *data, uint16 length) override |
void | pause (bool pause) override |
![]() | |
MusicPlayer (GroovieEngine *vm) | |
void | playSong (uint32 fileref) |
void | stop () |
void | setBackgroundSong (uint32 fileref) |
void | playCD (uint8 track) |
void | startBackground () |
bool | isPlaying () |
void | setMidiInit (bool midiInit) |
bool | isMidiInit () |
void | frameTick () |
void | setBackgroundDelay (uint16 delay) |
void | setGameVolume (uint16 volume, uint16 time) |
![]() | |
void | send (byte status, byte firstOp, byte secondOp) |
void | send (int8 source, byte status, byte firstOp, byte secondOp) |
Protected Member Functions | |
void | updateVolume () override |
bool | load (uint32 fileref, bool loop) override |
void | unload (bool updateState=true) override |
![]() | |
void | onTimerInternal () override |
void | endTrack () |
bool | loadParser (Common::SeekableReadStream *stream, bool loop) |
![]() | |
void | midiDumpInit () |
int | midiDumpVarLength (const uint32 &delta) |
void | midiDumpDelta () |
void | midiDumpDo (uint32 b) |
void | midiDumpSysEx (const byte *msg, uint16 length) |
void | midiDumpFinish () |
Additional Inherited Members | |
![]() | |
static const uint8 | MIDI_CHANNEL_COUNT = 16 |
static const uint8 | MIDI_RHYTHM_CHANNEL = 9 |
static const byte | MIDI_COMMAND_NOTE_OFF = 0x80 |
static const byte | MIDI_COMMAND_NOTE_ON = 0x90 |
static const byte | MIDI_COMMAND_POLYPHONIC_AFTERTOUCH = 0xA0 |
static const byte | MIDI_COMMAND_CONTROL_CHANGE = 0xB0 |
static const byte | MIDI_COMMAND_PROGRAM_CHANGE = 0xC0 |
static const byte | MIDI_COMMAND_CHANNEL_AFTERTOUCH = 0xD0 |
static const byte | MIDI_COMMAND_PITCH_BEND = 0xE0 |
static const byte | MIDI_COMMAND_SYSTEM = 0xF0 |
static const byte | MIDI_CONTROLLER_BANK_SELECT_MSB = 0x00 |
static const byte | MIDI_CONTROLLER_MODULATION = 0x01 |
static const byte | MIDI_CONTROLLER_DATA_ENTRY_MSB = 0x06 |
static const byte | MIDI_CONTROLLER_VOLUME = 0x07 |
static const byte | MIDI_CONTROLLER_BALANCE = 0x08 |
static const byte | MIDI_CONTROLLER_PANNING = 0x0A |
static const byte | MIDI_CONTROLLER_EXPRESSION = 0x0B |
static const byte | MIDI_CONTROLLER_BANK_SELECT_LSB = 0x20 |
static const byte | MIDI_CONTROLLER_DATA_ENTRY_LSB = 0x26 |
static const byte | MIDI_CONTROLLER_SUSTAIN = 0x40 |
static const byte | MIDI_CONTROLLER_PORTAMENTO = 0x41 |
static const byte | MIDI_CONTROLLER_SOSTENUTO = 0x42 |
static const byte | MIDI_CONTROLLER_SOFT = 0x43 |
static const byte | MIDI_CONTROLLER_REVERB = 0x5B |
static const byte | MIDI_CONTROLLER_CHORUS = 0x5D |
static const byte | MIDI_CONTROLLER_RPN_LSB = 0x64 |
static const byte | MIDI_CONTROLLER_RPN_MSB = 0x65 |
static const byte | MIDI_CONTROLLER_ALL_SOUND_OFF = 0x78 |
static const byte | MIDI_CONTROLLER_RESET_ALL_CONTROLLERS = 0x79 |
static const byte | MIDI_CONTROLLER_ALL_NOTES_OFF = 0x7B |
static const byte | MIDI_CONTROLLER_OMNI_ON = 0x7C |
static const byte | MIDI_CONTROLLER_OMNI_OFF = 0x7D |
static const byte | MIDI_CONTROLLER_MONO_ON = 0x7E |
static const byte | MIDI_CONTROLLER_POLY_ON = 0x7F |
static const uint16 | MIDI_RPN_PITCH_BEND_SENSITIVITY = 0x0000 |
static const uint16 | MIDI_RPN_MASTER_TUNING_FINE = 0x0001 |
static const uint16 | MIDI_RPN_MASTER_TUNING_COARSE = 0x0002 |
static const uint16 | MIDI_RPN_NULL = 0x7F7F |
static const uint8 | MIDI_META_END_OF_TRACK = 0x2F |
static const uint8 | MIDI_META_SEQUENCER = 0x7F |
static const uint16 | MIDI_PITCH_BEND_DEFAULT = 0x2000 |
static const uint8 | MIDI_PANNING_DEFAULT = 0x40 |
static const uint8 | MIDI_EXPRESSION_DEFAULT = 0x7F |
static const uint16 | MIDI_MASTER_TUNING_FINE_DEFAULT = 0x2000 |
static const uint8 | MIDI_MASTER_TUNING_COARSE_DEFAULT = 0x40 |
static const uint8 | MT32_PITCH_BEND_SENSITIVITY_DEFAULT = 0x0C |
static const uint8 | GM_PITCH_BEND_SENSITIVITY_DEFAULT = 0x02 |
static const uint8 | GS_RHYTHM_FIRST_NOTE = 0x1B |
static const uint8 | GS_RHYTHM_LAST_NOTE = 0x58 |
![]() | |
static void | onTimer (void *data) |
![]() | |
byte * | _data |
MidiParser * | _midiParser |
MidiDriver * | _driver |
![]() | |
GroovieEngine * | _vm |
bool | _midiInit |
Common::Mutex | _mutex |
uint16 | _userVolume |
uint16 | _gameVolume |
![]() | |
bool | _midiDumpEnable |
uint32 | _prevMillis |
Common::Array< byte > | _midiDumpCache |
|
overridevirtual |
Send a MIDI command from a specific source. If the MIDI driver does not support multiple sources, the source parameter is ignored.
Reimplemented from MidiDriver_BASE.
|
overridevirtual |
Send a meta event from a specific source. If the MIDI driver does not support multiple sources, the source parameter is ignored.
Reimplemented from MidiDriver_BASE.
|
overridevirtual |
Stops all currently active notes. Specify stopSustainedNotes if the MIDI data makes use of the sustain controller to make sure sustained notes are also stopped.
Usually, the MIDI parser tracks active notes and terminates them when playback is stopped. This method should be used as a backup to silence the MIDI output in case the MIDI parser makes a mistake when tracking acive notes. It can also be used when quitting or pausing a game.
By default, this method sends an All Notes Off message and, if stopSustainedNotes is true, a Sustain off message on all MIDI channels. Driver implementations can override this if they want to implement this functionality in a different way.
Reimplemented from MidiDriver_BASE.
|
inlineoverridevirtual |
Processes the timbre chunk specified for a track in an XMIDI file. This will load the necessary timbres into the MIDI device using SysEx messages.
This function will likely return before all SysEx messages have been sent. Use the isReady method to check if the driver has finished preparing for playback. Playback should not be started before this process has finished.
Implements Audio::MidiDriver_Miles_Xmidi_Timbres.
|
overridevirtual |
A driver implementation might need time to prepare playback of a track. Use this function to check if the driver is ready to receive MIDI events.
source | Check if the driver is ready to receive events from this specific source. Specify -1 to check readiness regardless of source. |
Reimplemented from MidiDriver_BASE.