[Scummvm-cvs-logs] CVS: scummvm/scumm imuse.cpp,2.100,2.101 imuse_internal.h,2.25,2.26
Jamieson Christian
jamieson630 at users.sourceforge.net
Wed Oct 1 08:20:07 CEST 2003
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/gui EditTextWidget.cpp,1.14,1.15 ListWidget.cpp,1.23,1.24 PopUpWidget.cpp,1.16,1.17 console.cpp,1.33,1.34 newgui.cpp,1.61,1.62 newgui.h,1.27,1.28
- Next message: [Scummvm-cvs-logs] CVS: scummvm/common/scaler hq2x.cpp,1.4,1.5 hq3x.cpp,1.3,1.4
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv3612/scummvm/scumm
Modified Files:
imuse.cpp imuse_internal.h
Log Message:
Fix for Bug [812737] ALL: pitchbend range with MT32
Manual scaling of pitchbends to account for the fact that the
MT32 doesn't respond to RPN-based pitchbend range adjustments.
Also tweaked the MT32 partial reserve settings per Bug [812740].
Index: imuse.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse.cpp,v
retrieving revision 2.100
retrieving revision 2.101
diff -u -d -r2.100 -r2.101
--- imuse.cpp 30 Sep 2003 13:18:25 -0000 2.100
+++ imuse.cpp 1 Oct 2003 15:19:12 -0000 2.101
@@ -1204,7 +1204,7 @@
g_system->delay_msecs (500);
// Set partial reserve equally for all channels
- memcpy(&buffer[4], "\x10\x00\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x48", 13);
+ memcpy(&buffer[4], "\x10\x00\x04\x04\x04\x04\x04\x04\x04\x04\x04\x00\x4C", 13);
midi->sysEx(buffer, 17);
}
@@ -1429,20 +1429,14 @@
void Part::set_detune(int8 detune) {
_detune_eff = clamp((_detune = detune) + _player->getDetune(), -128, 127);
- if (_mc) {
- _mc->pitchBend(clamp(_pitchbend +
- (_detune_eff * 64 / 12) +
- (_transpose_eff * 8192 / 12), -8192, 8191));
- }
+ if (_mc)
+ sendPitchBend();
}
void Part::pitchBend(int16 value) {
_pitchbend = value;
- if (_mc) {
- _mc->pitchBend(clamp(_pitchbend +
- (_detune_eff * 64 / 12) +
- (_transpose_eff * 8192 / 12), -8192, 8191));
- }
+ if (_mc)
+ sendPitchBend();
}
void Part::volume (byte value) {
@@ -1465,11 +1459,8 @@
void Part::set_transpose(int8 transpose) {
_transpose_eff = transpose_clamp((_transpose = transpose) + _player->getTranspose(), -24, 24);
- if (_mc) {
- _mc->pitchBend(clamp(_pitchbend +
- (_detune_eff * /*64*/82 / _pitchbend_factor) +
- (_transpose_eff * 8192 / _pitchbend_factor), -8192, 8191));
- }
+ if (_mc)
+ sendPitchBend();
}
void Part::sustain(bool value) {
@@ -1636,9 +1627,7 @@
void Part::sendAll() {
if (!clearToTransmit()) return;
_mc->pitchBendFactor(_pitchbend_factor);
- _mc->pitchBend(clamp(_pitchbend +
- (_detune_eff * 64 / 12) +
- (_transpose_eff * 8192 / 12), -8192, 8191));
+ sendPitchBend();
_mc->volume(_vol_eff);
_mc->sustain(_pedal);
_mc->modulationWheel(_modwheel);
@@ -1648,6 +1637,16 @@
_instrument.send(_mc);
_mc->chorusLevel(_effect_level);
_mc->priority(_pri_eff);
+}
+
+void Part::sendPitchBend() {
+ int16 bend = _pitchbend;
+ // RPN-based pitchbend range doesn't work for the MT32,
+ // so we'll do the scaling ourselves.
+ if (_player->_se->isNativeMT32())
+ bend = bend * _pitchbend_factor / 12;
+ _mc->pitchBend(clamp(bend + (_detune_eff * 64 / 12) +
+ (_transpose_eff * 8192 / 12), -8192, 8191));
}
void Part::programChange(byte value) {
Index: imuse_internal.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_internal.h,v
retrieving revision 2.25
retrieving revision 2.26
diff -u -d -r2.25 -r2.26
--- imuse_internal.h 30 Sep 2003 08:25:57 -0000 2.25
+++ imuse_internal.h 1 Oct 2003 15:19:12 -0000 2.26
@@ -332,6 +332,7 @@
void fix_after_load();
void sendAll();
+ void sendPitchBend();
bool clearToTransmit();
Part() {
@@ -442,6 +443,7 @@
void reallocateMidiChannels(MidiDriver *midi);
void setGlobalAdlibInstrument(byte slot, byte *data);
void copyGlobalAdlibInstrument(byte slot, Instrument *dest);
+ bool isNativeMT32() { return _native_mt32; }
// IMuse interface
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/gui EditTextWidget.cpp,1.14,1.15 ListWidget.cpp,1.23,1.24 PopUpWidget.cpp,1.16,1.17 console.cpp,1.33,1.34 newgui.cpp,1.61,1.62 newgui.h,1.27,1.28
- Next message: [Scummvm-cvs-logs] CVS: scummvm/common/scaler hq2x.cpp,1.4,1.5 hq3x.cpp,1.3,1.4
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list