Opened 5 years ago

Closed 2 years ago

#10838 closed defect (fixed)

SHERLOCK: Scalpel - Bad sound effect

Reported by: eriktorbjorn Owned by: dreammaster
Priority: normal Component: Engine: Sherlock
Version: Keywords:
Cc: Game: Sherlock Holmes: Case of the Serrated Scalpel

Description

Current ScummVM development version, English version of the game.

Steps to reproduce:

  • Start the game.
  • Open the debug console.
  • Type "scene 16". This should put you outside Lord Brumwell's mansion.
  • Move the bell pull.

The sound effect that plays ("JFCHIME") plays at 1100 Hz, and is almost inaudible. Playing it at 11000 Hz makes it sound much more reasonable to me.

Change History (5)

comment:1 by raziel-, 4 years ago

Summary: SHERLOCK: Bad sound effect in The Case of the Serrated ScalpelSHERLOCK: Scalpel - Bad sound effect

comment:2 by eriktorbjorn, 2 years ago

The 3DO version of that scene can be found at about 12:25 into https://www.youtube.com/watch?v=ep4OBxq_xog&list=PL9tH-kQslZN3jrUjT9sll4gAvvdLoAGTE&index=10

That would seem to confirm that 11000 Hz is appropriate here, so something like this should be the correct workaround:

diff --git a/engines/sherlock/sound.cpp b/engines/sherlock/sound.cpp
index 0e5652d52c..423687a79b 100644
--- a/engines/sherlock/sound.cpp
+++ b/engines/sherlock/sound.cpp
@@ -313,6 +313,14 @@ bool Sound::playSoundResource(const Common::String &name, const Common::String &
 
                byte *decoded = (byte *)malloc((size - 1) * 2);
 
+               // WORKAROUND: The door bell at Lord Brumwell's mansion sounds really
+               // strange at 1100 Hz. The game isn't heavy on sounds, but other sound
+               // effects seem to be mostly at 11000 Hz, and that sounds about right
+               // here since it matches the 3DO version.
+               if (name == "JFCHIME.SND" && rate == 1100) {
+                       rate = 11000;
+               }
+
                // Holmes uses Creative ADPCM 4-bit data
                int counter = 0;
                byte reference = ptr[0];

comment:3 by eriktorbjorn, 2 years ago

The original also seems to play the sound at too low frequency, but not as badly as ScummVM. Perhaps it automatically adjusted the rate to within sane limits? Even so, I stand by my workaround.

comment:5 by dreammaster, 2 years ago

Owner: set to dreammaster
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.