aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/sound/midiparser_sci.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/sound/midiparser_sci.cpp')
-rw-r--r--engines/sci/sound/midiparser_sci.cpp14
1 files changed, 5 insertions, 9 deletions
diff --git a/engines/sci/sound/midiparser_sci.cpp b/engines/sci/sound/midiparser_sci.cpp
index ad4b0da397..22a5c6de9c 100644
--- a/engines/sci/sound/midiparser_sci.cpp
+++ b/engines/sci/sound/midiparser_sci.cpp
@@ -392,15 +392,11 @@ void MidiParser_SCI::sendInitCommands() {
// Set initial voice count
if (_pSnd) {
if (_soundVersion <= SCI_VERSION_0_LATE) {
- static_cast<MidiPlayer *>(_driver)->onNewSound();
-
- for (int i = 0; i < 15; ++i) {
- byte voiceCount = 0;
- if (_channelUsed[i]) {
- voiceCount = _pSnd->soundRes->getInitialVoiceCount(i);
- sendToDriver(0xB0 | i, 0x4B, voiceCount);
- }
- }
+ // Send header data to SCI0 sound drivers. The driver function which parses the header (opcode 3)
+ // seems to be implemented at least in all SCI0_LATE drivers. The things that the individual drivers
+ // do in that init function varies.
+ if (_track->header.byteSize())
+ static_cast<MidiPlayer *>(_driver)->initTrack(_track->header);
} else {
for (int i = 0; i < _track->channelCount; ++i) {
byte voiceCount = _track->channels[i].poly;