diff options
| author | Jamieson Christian | 2002-11-04 18:29:26 +0000 |
|---|---|---|
| committer | Jamieson Christian | 2002-11-04 18:29:26 +0000 |
| commit | c10287988edffe5833b444e039348804ee28ddf7 (patch) | |
| tree | 48b51216cb68a93762144e1fd40ea488535ebae9 /scumm/imuse.cpp | |
| parent | 2442bce6f376e080e770e5d5380d817f6da6e043 (diff) | |
| download | scummvm-rg350-c10287988edffe5833b444e039348804ee28ddf7.tar.gz scummvm-rg350-c10287988edffe5833b444e039348804ee28ddf7.tar.bz2 scummvm-rg350-c10287988edffe5833b444e039348804ee28ddf7.zip | |
Increased GM channel resource to full spectrum (0-15, instead of 0-8 Base MIDI config); misc. pitchbend cleanups
svn-id: r5403
Diffstat (limited to 'scumm/imuse.cpp')
| -rw-r--r-- | scumm/imuse.cpp | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/scumm/imuse.cpp b/scumm/imuse.cpp index 0c2949375e..8010dee0ed 100644 --- a/scumm/imuse.cpp +++ b/scumm/imuse.cpp @@ -608,7 +608,7 @@ class IMuseGM : public IMuseDriver { IMuseInternal *_se; OSystem *_system; MidiDriver *_md; - MidiChannelGM _midi_channels[9]; + MidiChannelGM _midi_channels[16]; int16 _midi_pitchbend_last[16]; byte _midi_pitchbend_factor_last[16]; @@ -4550,11 +4550,7 @@ void IMuseGM::midiPitchBend(byte chan, int16 pitchbend) void IMuseGM::midiPitchBendFactor (byte chan, byte factor) { if (_midi_pitchbend_factor_last[chan] != factor) { _midi_pitchbend_factor_last[chan] = factor; - _md->setPitchBendRange (chan, factor); // For high-level semantic drivers (such as QTMA) - _md->send(( 0 << 16) | (101 << 8) | (0xB0 | chan)); - _md->send(( 0 << 16) | (100 << 8) | (0xB0 | chan)); - _md->send((factor << 16) | ( 6 << 8) | (0xB0 | chan)); - _md->send(( 0 << 16) | ( 38 << 8) | (0xB0 | chan)); + _md->setPitchBendRange (chan, factor); } } @@ -4776,13 +4772,15 @@ void IMuseGM::update_pris() lopri = 255; lomc = NULL; for (i = ARRAYSIZE(_midi_channels), mc = _midi_channels;; mc++) { - if (!mc->_part) { - lomc = mc; - break; - } - if (mc->_part->_pri_eff <= lopri) { - lopri = mc->_part->_pri_eff; - lomc = mc; + if (mc->_chan != 9) { + if (!mc->_part) { + lomc = mc; + break; + } + if (mc->_part->_pri_eff <= lopri) { + lopri = mc->_part->_pri_eff; + lomc = mc; + } } if (!--i) { |
