Opened 3 years ago

Last modified 17 months ago

#12832 new defect

DIRECTOR: Missing music cue in Spaceship Warlock intro

Reported by: eriktorbjorn Owned by:
Priority: normal Component: Engine: Director
Version: Keywords:
Cc: Game: Spaceship Warlock

Description (last modified by eriktorbjorn)

Judging by https://www.youtube.com/watch?v=fi_WSGdWeMs there should be a musical bridge between the percussion part of the intro and the song playing over the game title. This happens approximately between 45 and 50 seconds into the YouTube movie.

In ScummVM, it goes straight from the percussion to the song. This happens by in my Windows and Macintosh versions of the game. (I'm still a bit uncertain which files are needed for the Mac version, so I'm more confident about the Windows one.)

Change History (5)

comment:1 by eriktorbjorn, 2 years ago

Description: modified (diff)

comment:2 by eriktorbjorn, 2 years ago

For reference, these are my versions of the game:

Windows: Version 1.1.3 "MPC"
Macintosh: Version 1.1.1 "Classic"

(Oddly enough, the copyright year for 1.1.1 is 1996, while the copyright year for 1.1.3 is 1991 and 1994. I guess they were independently versioned.)

comment:3 by rvanlaar, 2 years ago

It seems that

Fplay("march")

is played and immediately superceded by

FPLAY("THEME", "continuous

There is ongoing discussion about this issue in Disord #engine-director.

comment:4 by eriktorbjorn, 17 months ago

This appears to be working in the Windows version now, but not in the Mac version.

comment:5 by eriktorbjorn, 17 months ago

I'm not sure, but I think this is the commit that fixed it in the Windows version:

f48dbb43b6b6483ef2160ae3d087eb2e0f06c7e5 is the first new commit
commit f48dbb43b6b6483ef2160ae3d087eb2e0f06c7e5
Author: Scott Percival <code@moral.net.au>
Date:   Sun Jul 31 19:00:13 2022 +0800

    DIRECTOR: Use LoopableAudioStream for score audio loops
    
    For looping sounds, the original code polled the score and created a new
    AudioStream every time the previous iteration finished playing. The
    downside of this approach is the sound needs to be fully resampled and
    buffered after each playback, which can be heard as a gap between loops.
    
    To fix this, loops now use a LoopableAudioStream. The reason why the
    previous code did not was to allow for a specific edge case.
    In Director, when a looping audio channel is set to cast member 0, the
    loop is allowed to finish the current iteration before the audio stops.
    Originally there wasn't a way of doing that, but now the
    LoopableAudioStream classes can stop playing after a number of
    iterations. As such, we keep a copy of the LoopableAudioStream handle
    and call for the loop to stop when the cast member gets set to 0.
    
    Improves looped audio playback in Eastern Mind.
    
    Fixes the guitar solo between the transition from BLAST.DXR to INTRO.DXR
    in Meet MediaBand.
    
    Fixes the audio transition between n.am and s.am in Meet MediaBand.

 engines/director/sound.cpp | 58 +++++++++++++++++++++++++---------------------
 engines/director/sound.h   |  7 +++++-
Note: See TracTickets for help on using tickets.