#include <mididrv_m_mt32.h>
Classes | |
struct | MChannelData |
Public Member Functions | |
int | open (MidiDriver *driver, bool nativeMT32) override |
void | send (int8 source, uint32 b) override |
void | metaEvent (int8 source, byte type, byte *data, uint16 length) override |
void | setInstrumentAssignments (const MInstrumentAssignment *assignments) |
void | stopAllNotes (bool stopSustainedNotes) override |
Public Member Functions inherited from MidiDriver_MT32GM | |
MidiDriver_MT32GM (MusicType midiType) | |
int | open () override |
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 | 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 | 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 | onTimer () override |
Protected Member Functions inherited from MidiDriver_MT32GM | |
virtual void | initControlData () |
virtual void | initMidiDevice () |
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 | controlChange (byte outputChannel, byte controllerNumber, byte controllerValue, int8 source, MidiChannelControlData &controlData, bool channelLockedByOtherSource=false) |
virtual void | programChange (byte outputChannel, byte patchId, 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) |
virtual bool | addActiveNote (uint8 outputChannel, uint8 note, int8 source) |
virtual bool | removeActiveNote (uint8 outputChannel, uint8 note, int8 source) |
virtual void | removeActiveNotes (uint8 outputChannel, bool sustainedNotes) |
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 |
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 () |
Protected Attributes | |
MChannelData | _mChannelData [9] |
int8 | _mInstrumentMidiChannels [16] |
uint8 | _mInstrumentMapping [16] |
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 | |
static const uint8 | MIDI_NOTE_MAP [24] |
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 |
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 |
M driver for the Roland MT-32. The M format is focused on OPL2 and conversion to MIDI is rudimentary. Only note on/off, channel volume (using note velocity) and program change are implemented by the original driver. A mapping of M instruments to MIDI instruments must be set using setInstrumentAssignments before starting playback of a track.
|
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_MT32GM.
|
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_MT32GM.
void Ultima::Nuvie::MidiDriver_M_MT32::setInstrumentAssignments | ( | const MInstrumentAssignment * | assignments | ) |
Sets the assignments of the 16 M instruments to the MIDI instruments and MIDI output channels they should use.
assignments | An instrument assignment array of length 16 |
|
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_MT32GM.
|
overrideprotectedvirtual |
Runs the MIDI driver's timer related functionality. Will update volume fades and sends messages from the SysEx queue if necessary.
Reimplemented from MidiDriver_MT32GM.