Public Member Functions | |
MidiDriver_Miles_Midi (MusicType midiType, MilesMT32InstrumentEntry *instrumentTablePtr, uint16 instrumentTableCount) | |
void | send (int8 source, uint32 b) override |
void | deinitSource (uint8 source) override |
void | stopAllNotes (bool stopSustainedNotes=false) override |
uint32 | property (int prop, uint32 param) override |
void | processXMIDITimbreChunk (const byte *timbreListPtr, uint32 timbreListSize) override |
Public Member Functions inherited from MidiDriver_MT32GM | |
MidiDriver_MT32GM (MusicType midiType) | |
int | open () override |
virtual int | open (MidiDriver *driver, bool nativeMT32) |
void | close () override |
bool | isOpen () const override |
bool | isReady (int8 source=-1) override |
uint32 | property (int prop, uint32 param) override |
void | send (uint32 b) override |
void | send (int8 source, uint32 b) override |
void | sysEx (const byte *msg, uint16 length) override |
uint16 | sysExNoDelay (const byte *msg, uint16 length) override |
void | sysExQueue (const byte *msg, uint16 length, int8 source=-1) |
uint16 | sysExMT32 (const byte *msg, uint16 length, const uint32 targetAddress, bool queue=false, bool delay=true, int8 source=-1) |
void | metaEvent (int8 source, byte type, byte *data, uint16 length) override |
void | stopAllNotes (bool stopSustainedNotes=false) override |
void | clearSysExQueue () |
MidiChannel * | allocateChannel () override |
MidiChannel * | getPercussionChannel () override |
uint32 | getBaseTempo () override |
virtual bool | allocateSourceChannels (uint8 source, uint8 numChannels) |
void | deinitSource (uint8 source) override |
Public Member Functions inherited from MidiDriver_Multisource | |
void | setSourceType (SourceType type) |
void | setSourceType (uint8 source, SourceType type) |
void | setSourceVolume (uint16 volume) |
void | setSourceVolume (uint8 source, uint16 volume) |
void | resetSourceVolume () |
void | resetSourceVolume (uint8 source) |
void | setSourceNeutralVolume (uint16 volume) |
void | setSourceNeutralVolume (uint8 source, uint16 volume) |
void | startFade (uint16 duration, uint16 targetVolume) |
void | startFade (uint8 source, uint16 duration, uint16 targetVolume) |
void | abortFade (FadeAbortType abortType=FADE_ABORT_TYPE_END_VOLUME) |
void | abortFade (uint8 source, FadeAbortType abortType=FADE_ABORT_TYPE_END_VOLUME) |
bool | isFading () |
bool | isFading (uint8 source) |
void | setControllerDefault (ControllerDefaultType type) |
void | setControllerDefault (ControllerDefaultType type, int16 value) |
void | setControllerDefaults (ControllerDefaultType type, int16 *values) |
void | clearControllerDefault (ControllerDefaultType type) |
void | setInstrumentRemapping (const byte *instrumentRemapping) |
void | syncSoundSettings () |
void | setTimerCallback (void *timer_param, Common::TimerManager::TimerProc timer_proc) override |
Public Member Functions inherited from MidiDriver | |
void | midiDriverCommonSend (uint32 b) |
void | midiDriverCommonSysEx (const byte *msg, uint16 length) |
virtual void | setPitchBendRange (byte channel, uint range) |
void | sendMT32Reset () |
void | sendGMReset () |
virtual void | setEngineSoundFont (Common::SeekableReadStream *soundFontData) |
virtual bool | acceptsSoundFontData () |
Public Member Functions inherited from MidiDriver_BASE | |
void | send (byte status, byte firstOp, byte secondOp) |
void | send (int8 source, byte status, byte firstOp, byte secondOp) |
virtual void | metaEvent (byte type, byte *data, uint16 length) |
Protected Member Functions | |
void | initControlData () override |
void | initMidiDevice () override |
void | applySourceVolume (uint8 source) override |
Protected Member Functions inherited from MidiDriver_MT32GM | |
virtual void | initMT32 (bool initForGM) |
virtual void | initGM (bool initForMT32, bool enableGS) |
virtual void | processEvent (int8 source, uint32 b, uint8 outputChannel, MidiChannelControlData &controlData, bool channelLockedByOtherSource=false) |
virtual void | applyControllerDefaults (uint8 source, MidiChannelControlData &controlData, uint8 outputChannel, bool channelLockedByOtherSource) |
virtual void | noteOnOff (byte outputChannel, byte command, byte note, byte velocity, int8 source, MidiChannelControlData &controlData) |
virtual void | polyAftertouch (byte outputChannel, byte note, byte pressure, int8 source, MidiChannelControlData &controlData, bool channelLockedByOtherSource=false) |
virtual void | channelAftertouch (byte outputChannel, byte pressure, int8 source, MidiChannelControlData &controlData, bool channelLockedByOtherSource=false) |
virtual void | pitchBend (byte outputChannel, uint8 pitchBendLsb, uint8 pitchBendMsb, int8 source, MidiChannelControlData &controlData, bool channelLockedByOtherSource=false) |
bool | isOutputChannelUsed (int8 outputChannel) |
virtual byte | mapMT32InstrumentToGM (byte mt32Instrument) |
virtual byte | mapGMInstrumentToMT32 (byte gmInstrument) |
byte | correctInstrumentBank (byte outputChannel, byte patchId) |
virtual int8 | mapSourceChannel (uint8 source, uint8 dataChannel) |
void | applySourceVolume (uint8 source) override |
void | stopAllNotes (uint8 source, uint8 channel) override |
void | onTimer () override |
Protected Member Functions inherited from MidiDriver_Multisource | |
void | updateFading () |
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 () |
Additional Inherited Members | |
Public Types inherited from MidiDriver_Multisource | |
enum | SourceType { SOURCE_TYPE_UNDEFINED, SOURCE_TYPE_MUSIC, SOURCE_TYPE_SFX } |
enum | FadeAbortType { FADE_ABORT_TYPE_END_VOLUME, FADE_ABORT_TYPE_CURRENT_VOLUME, FADE_ABORT_TYPE_START_VOLUME } |
enum | ControllerDefaultType { CONTROLLER_DEFAULT_PROGRAM, CONTROLLER_DEFAULT_INSTRUMENT_BANK, CONTROLLER_DEFAULT_DRUMKIT, CONTROLLER_DEFAULT_CHANNEL_PRESSURE, CONTROLLER_DEFAULT_PITCH_BEND, CONTROLLER_DEFAULT_MODULATION, CONTROLLER_DEFAULT_VOLUME, CONTROLLER_DEFAULT_PANNING, CONTROLLER_DEFAULT_EXPRESSION, CONTROLLER_DEFAULT_SUSTAIN, CONTROLLER_DEFAULT_RPN, CONTROLLER_DEFAULT_PITCH_BEND_SENSITIVITY } |
Public Types inherited from MidiDriver | |
enum | DeviceStringType { kDriverName, kDriverId, kDeviceName, kDeviceId } |
enum | { MERR_CANNOT_CONNECT = 1, MERR_DEVICE_NOT_AVAILABLE = 3, MERR_ALREADY_OPEN = 4 } |
enum | { PROP_OLD_ADLIB = 2, PROP_CHANNEL_MASK = 3, PROP_SCUMM_OPL3 = 4, PROP_USER_VOLUME_SCALING = 5, PROP_MIDI_DATA_REVERSE_PANNING = 6, PROP_OPL_ACCURACY_MODE = 7, PROP_OPL_CHANNEL_ALLOCATION_MODE = 8, PROP_MILES_VERSION = 9, PROP_OPL_RHYTHM_MODE_IGNORE_NOTE_OFF = 10 } |
typedef uint32 | DeviceHandle |
Static Public Member Functions inherited from MidiDriver_MT32GM | |
static void | timerCallback (void *data) |
Static Public Member Functions inherited from MidiDriver | |
static Common::String | musicType2GUIO (uint32 musicType) |
static MidiDriver * | createMidi (DeviceHandle handle) |
static DeviceHandle | detectDevice (int flags) |
static DeviceHandle | getDeviceHandle (const Common::String &identifier) |
static bool | checkDevice (DeviceHandle handle, int flags, bool quiet) |
static MusicType | getMusicType (DeviceHandle handle) |
static Common::String | getDeviceString (DeviceHandle handle, DeviceStringType type) |
static const char * | getErrorName (int error_code) |
Static Public Attributes inherited from MidiDriver_MT32GM | |
static const byte | MT32_DEFAULT_INSTRUMENTS [8] |
static const byte | MT32_DEFAULT_PANNING [8] |
static const uint8 | MT32_DEFAULT_CHANNEL_VOLUME = 102 |
static const uint8 | GM_DEFAULT_CHANNEL_VOLUME = 100 |
static const uint8 | GS_DRUMKIT_FALLBACK_MAP [128] |
static const uint8 | MT32_DISPLAY_NUM_CHARS = 20 |
static const uint32 | MT32_DISPLAY_MEMORY_ADDRESS = 0x20 << 14 |
Static Public Attributes inherited from MidiDriver_Multisource | |
static const uint8 | MAXIMUM_SOURCES = 10 |
static const uint16 | DEFAULT_SOURCE_NEUTRAL_VOLUME = 255 |
Static Public Attributes inherited from MidiDriver | |
static const byte | _mt32ToGm [128] |
static const byte | _gmToMt32 [128] |
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 | GS_RHYTHM_FIRST_NOTE = 0x1B |
static const uint8 | GS_RHYTHM_LAST_NOTE = 0x58 |
Protected Attributes inherited from MidiDriver_MT32GM | |
Common::Mutex | _allocationMutex |
Common::Mutex | _activeNotesMutex |
MidiDriver * | _driver |
MusicType | _midiType |
bool | _nativeMT32 |
bool | _enableGS |
bool | _midiDataReversePanning |
bool | _midiDeviceReversePanning |
bool | _scaleGSPercussionVolumeToMT32 |
bool | _isOpen |
uint16 | _outputChannelMask |
int | _baseFreq |
MidiChannelControlData * | _controlData [MIDI_CHANNEL_COUNT] |
int8 | _channelMap [MAXIMUM_SOURCES][MIDI_CHANNEL_COUNT] |
uint16 | _availableChannels [MAXIMUM_SOURCES] |
const byte * | _mt32ToGMInstrumentMap |
const byte * | _gmToMT32InstrumentMap |
uint8 | _maximumActiveNotes |
ActiveNote * | _activeNotes |
uint32 | _sysExDelay |
Common::List< SysExData > | _sysExQueue |
Common::Mutex | _sysExQueueMutex |
Protected Attributes inherited from MidiDriver_Multisource | |
MidiSource | _sources [MAXIMUM_SOURCES] |
ControllerDefaults | _controllerDefaults |
const byte * | _instrumentRemapping |
bool | _userVolumeScaling |
uint16 | _userMusicVolume |
uint16 | _userSfxVolume |
bool | _userMute |
Common::Mutex | _fadingMutex |
uint16 | _fadeDelay |
uint32 | _timerRate |
void * | _timer_param |
Common::TimerManager::TimerProc | _timer_proc |
Protected Attributes inherited from MidiDriver_BASE | |
bool | _midiDumpEnable |
uint32 | _prevMillis |
Common::Array< byte > | _midiDumpCache |
Static Protected Attributes inherited from MidiDriver_MT32GM | |
static const uint8 | MAXIMUM_MT32_ACTIVE_NOTES = 48 |
static const uint8 | MAXIMUM_GM_ACTIVE_NOTES = 96 |
Static Protected Attributes inherited from MidiDriver_Multisource | |
static const uint16 | FADING_DELAY = 25 * 1000 |
|
overridevirtual |
Send a MIDI command from a specific source. If the MIDI driver does not support multiple sources, the source parameter is ignored.
Implements MidiDriver_Multisource.
|
overridevirtual |
De-initialize a source. Call this after playing a track or sound effect using this source. This will unlock and unprotect channels used by this source and stop any active notes from this source. Automatically executed when an End Of Track meta event is received.
Reimplemented from MidiDriver_Multisource.
|
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.
|
overridevirtual |
Get or set a property.
Reimplemented from MidiDriver_Multisource.
|
overridevirtual |
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.
|
overrideprotectedvirtual |
This will initialize the _controlData array with the default values for MT-32 or GM (depending on the _nativeMT32 value).
Reimplemented from MidiDriver_MT32GM.
|
overrideprotectedvirtual |
Initializes the MIDI device. Will call initMT32 or initGM.
Reimplemented from MidiDriver_MT32GM.
|
overrideprotectedvirtual |
Applies the current source volume to the active notes and/or MIDI channels of the specified source. 0xFF can be specified to apply the source volume for all sources.
source | The source for which the source volume should be applied, or all sources if 0xFF is specified. |
Implements MidiDriver_Multisource.