Reopen the OPUS decoder when a note moves to another sample (#7137)

The decoder cached on a note was keyed on nothing, so a note reused for a
different streamed sample carried on decoding the previous track. Audible as
the wrong custom music: the sequence and soundfont the audio editor reports
are correct, only the samples reaching the mixer are not.

Reproduced on the game-start cutscene chain with a streamed music pack in 4
of 6 runs; 0 of 6 after.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: serprex <159546+serprex@users.noreply.github.com>
This commit is contained in:
David Racine
2026-09-06 09:10:21 -04:00
committed by GitHub
parent e44bd8d989
commit 17a4c2cf89
4 changed files with 39 additions and 13 deletions
+2 -2
View File
@@ -468,7 +468,7 @@ typedef struct {
/* 0x00F0 */ s16 dummyResampleState[0x10];
} NoteSynthesisBuffers; // size = 0x110
struct OggOpusFile;
struct OpusDecState;
typedef struct {
/* 0x00 */ u8 restart;
@@ -488,7 +488,7 @@ typedef struct {
/* 0x1A */ u8 unk_1A;
/* 0x1C */ u16 unk_1C;
/* 0x1E */ u16 unk_1E;
struct OggOpusFile* opusFile; // Only for streamed opus audio
struct OpusDecState* opusFile; // Only for streamed opus audio
} NoteSynthesisState; // size = 0x20
typedef struct {