#include <music.h>
Public Member Functions | |
| MusicPlayer (bool isFloppy=false, bool isMacintosh=false) | |
| void | playFile (const Common::Path &xmiPath, bool loop=false) |
| _MIDIPlayFile @ 20a2:024c. loop=true mirrors | |
| void | playMus (uint num, bool loop=false) |
| void | send (uint32 b) override |
Public Member Functions inherited from Audio::MidiPlayer | |
| virtual void | stop () |
| virtual void | pause () |
| virtual void | resume () |
| bool | isPlaying () const |
| int | getVolume () const |
| virtual void | setVolume (int volume) |
| void | syncVolume () |
| bool | hasNativeMT32 () const |
| void | metaEvent (byte type, const byte *data, uint16 length) override |
Public Member Functions inherited from MidiDriver_BASE | |
| virtual void | send (int8 source, uint32 b) |
| void | send (byte status, byte firstOp, byte secondOp) |
| void | send (int8 source, byte status, byte firstOp, byte secondOp) |
| virtual void | sysEx (const byte *msg, uint16 length) |
| virtual uint16 | sysExNoDelay (const byte *msg, uint16 length) |
| virtual void | metaEvent (int8 source, byte type, const byte *data, uint16 length) |
| virtual void | stopAllNotes (bool stopSustainedNotes=false) |
| virtual bool | isReady (int8 source=-1) |
Additional Inherited Members | |
Static Public Attributes inherited from MidiDriver_BASE | |
| 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 | GM_REVERB_DEFAULT = 0x28 |
| static const uint8 | GS_RHYTHM_FIRST_NOTE = 0x1B |
| static const uint8 | GS_RHYTHM_LAST_NOTE = 0x58 |
Protected Types inherited from Audio::MidiPlayer | |
| enum | { kNumChannels = 16 } |
Protected Member Functions inherited from Audio::MidiPlayer | |
| virtual void | sendToChannel (byte ch, uint32 b) |
| virtual void | endOfTrack () |
| virtual void | onTimer () |
| void | createDriver (int flags=MDT_MIDI|MDT_ADLIB|MDT_PREFER_GM) |
Protected Member Functions inherited from MidiDriver_BASE | |
| void | midiDumpInit () |
| int | midiDumpVarLength (const uint32 &delta) |
| void | midiDumpDelta () |
| void | midiDumpDo (uint32 b) |
| void | midiDumpSysEx (const byte *msg, uint16 length) |
| void | midiDumpFinish () |
Static Protected Member Functions inherited from Audio::MidiPlayer | |
| static void | timerCallback (void *data) |
Protected Attributes inherited from Audio::MidiPlayer | |
| Common::Mutex | _mutex |
| MidiDriver * | _driver |
| MidiParser * | _parser |
| byte * | _midiData |
| MidiChannel * | _channelsTable [kNumChannels] |
| uint8 | _channelsVolume [kNumChannels] |
| bool | _isLooping |
| bool | _isPlaying |
| int | _masterVolume |
| bool | _nativeMT32 |
Protected Attributes inherited from MidiDriver_BASE | |
| bool | _midiDumpEnable |
| uint32 | _prevMillis |
| Common::Array< byte > | _midiDumpCache |
MIDI music player. Mirrors MIDI.C in EEMCD.EXE (_MIDIPlayFile / _MIDIPlay / _StopMIDI / _IsMIDIPlaying / _StartTravelMusic family at 20a2:00e2-05c9).
Original uses Miles AIL: _InitMIDI @ 20a2:013a registers ADLIB.ADV / SBFM.ADV / MT32MPU.ADV; _MIDIPlayFile @ 20a2:024c installs AdLib timbres from SAMPLE.AD (29be:14d6) via _AIL_install_timbre before _AIL_start_sequence. We use Audio::MidiDriver_Miles_AdLib_create (loads SAMPLE.AD) for AdLib and the Miles MT-32 driver for MT-32.
Music files: THEME.XMI — opening anims + title. MUS00000..MUS00004 — travel music (siteNumber % 5). MUS00005 — winner (_DisplayCorrect @ 1df2:0789). MUS00006 — loser (_DisplayAlibi @ 1df2:018a).
| void EEM::MusicPlayer::playMus | ( | uint | num, |
| bool | loop = false |
||
| ) |
_MIDIPlay(num) @ 20a2:047d. CD: "MUS%05u.XMI"; floppy: TRAVEL-N.XMI / FANFARE2.XMI.
|
overridevirtual |
Output a packed midi command to the midi stream. The 'lowest' byte (i.e. b & 0xFF) is the status code, then come (if used) the first and second opcode.
Reimplemented from Audio::MidiPlayer.