22 #ifndef SCUMM_IMUSE_DRV_MIDI_H 23 #define SCUMM_IMUSE_DRV_MIDI_H 25 #include "audio/mididrv.h" 29 class IMuseChannel_Midi;
30 class IMuseChannel_MT32;
34 friend class IMuseChannel_Midi;
40 void close()
override;
43 bool isOpen()
const override {
return _drv ? _drv->
isOpen() :
false; }
44 uint32
property(
int prop, uint32 param)
override {
return _drv ? _drv->
property(prop, param) : 0; }
45 void setTimerCallback(
void *timerParam,
Common::TimerManager::TimerProc timerProc)
override {
if (_drv) _drv->setTimerCallback(timerParam, timerProc); }
47 void send(uint32 b)
override {
if (_drv) _drv->
send(b); };
48 void sysEx(
const byte *msg, uint16 length)
override {
if (_drv) _drv->
sysEx(msg, length); }
49 virtual void setPitchBendRange(byte channel, uint range)
override {
if (_drv) _drv->setPitchBendRange(channel, range); }
56 IMuseChannel_Midi *getPart(
int number);
57 virtual void createChannels();
58 virtual void createParts();
59 virtual void releaseChannels();
62 const bool _newSystem;
65 IMuseChannel_Midi **_imsParts;
68 virtual void initDevice();
69 void initRolandGSMode();
70 virtual void deinitDevice();
72 void setNoteFlag(byte chan, byte note) {
if (_notesPlaying && chan < 16 && note < 128) _notesPlaying[note] |= (1 << chan); }
73 void clearNoteFlag(byte chan, byte note) {
if (_notesPlaying && chan < 16 && note < 128) _notesPlaying[note] &= ~(1 << chan); }
74 bool queryNoteFlag(byte chan, byte note)
const {
return (_notesPlaying && chan < 16 && note < 128) ? _notesPlaying[note] & (1 << chan) :
false; }
75 void setSustainFlag(byte chan, byte note) {
if (_notesSustained && chan < 16 && note < 128) _notesSustained[note] |= (1 << chan); }
76 void clearSustainFlag(byte chan, byte note) {
if (_notesSustained && chan < 16 && note < 128) _notesSustained[note] &= ~(1 << chan); }
77 bool querySustainFlag(byte chan, byte note)
const {
return (_notesSustained && chan < 16 && note < 128) ? _notesSustained[note] & (1 << chan) :
false; }
81 ChannelNode *_idleChain;
82 ChannelNode *_activeChain;
84 uint16 *_notesPlaying;
85 uint16 *_notesSustained;
89 friend class IMuseChannel_MT32;
95 void initDevice()
override;
96 void deinitDevice()
override;
97 void createChannels()
override;
98 void createParts()
override;
99 void releaseChannels()
override;
102 void sendMT32Sysex(uint32 addr,
const byte *data, uint32 dataSize);
104 ChannelNode *_hwRealChain;
106 const byte *_programsMapping;
void send(uint32 b) override
Definition: midi.h:47
virtual uint32 property(int prop, uint32 param)
Definition: mididrv.h:495
virtual uint32 getBaseTempo()=0
bool isOpen() const override
Definition: midi.h:43
uint32 DeviceHandle
Definition: mididrv.h:318
virtual bool isOpen() const =0
void(* TimerProc)(void *refCon)
Definition: timer.h:42
Definition: mididrv.h:309
uint32 getBaseTempo() override
Definition: midi.h:46
Definition: mididrv.h:537
void sysEx(const byte *msg, uint16 length) override
Definition: midi.h:48
virtual void sysEx(const byte *msg, uint16 length)
Definition: mididrv.h:216
virtual void send(uint32 b)=0
uint32 property(int prop, uint32 param) override
Definition: midi.h:44