port: the menu bed plays under the cutscene -- announced, deliberately not fixed
MenuAudio.stop_bed() exists and is called from nowhere, so the bed started on the main menu runs through S00A and loops on past it, putting two unrelated music tracks on the bus at once. Established from the source and authored data, not from measurement. NOT silenced: MISSION says leave an unmeasured detail plainly wrong rather than plausibly invented, and music over a cutscene is caught by any listener in a second where ducking would sound right and be a guess. _play_video announces it instead, and stop_bed is kept as the one line to change. Also records that the envelope correlator is unreliable for music under music -- 0.15-0.42 for every candidate, peaks moving with window and template. I was drafting '46 s of unexplained audio' when the cause was the authored loop: restart. A margin needs a control at the SAME SNR. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
This commit is contained in:
@@ -447,6 +447,26 @@ func _play_video(name: String, skippable: bool) -> void:
|
||||
get_tree().quit(2)
|
||||
return
|
||||
print(" -> video %s at %.2f s (%s)" % [name, _elapsed, v["path"]])
|
||||
# 🔴 THE MENU BED KEEPS PLAYING UNDER THE MOVIE, AND NOBODY DECIDED THAT.
|
||||
#
|
||||
# `MenuAudio.stop_bed()` exists and is called from nowhere, so the music
|
||||
# started on the main menu runs through the cutscene and on past it. That is
|
||||
# an UNMADE DECISION, not a choice: the movie carries its own music and
|
||||
# effects, so the port emits two unrelated music tracks at once, measured at
|
||||
# r=0.42 for the bed inside the movie's own window (docs/port/DECISIONS.md).
|
||||
#
|
||||
# It is NOT silenced here, deliberately. PORT-MISSION's rule is to leave an
|
||||
# unmeasured detail PLAINLY WRONG rather than plausibly invented, and this is
|
||||
# the textbook case: music over a cutscene is wrong in a way any listener
|
||||
# catches in one second, whereas stopping it would sound perfectly right and
|
||||
# be a guess about the game nobody has watched. The audible version gets
|
||||
# fixed; the plausible version ships forever.
|
||||
#
|
||||
# So it says so instead. Announcing the gap before opening it is what
|
||||
# `skipped_chain` already does for NEW GAME.
|
||||
if audio.bed_playing():
|
||||
print(" 🔴 the menu bed is STILL PLAYING under this movie -- unmeasured,")
|
||||
print(" left audible on purpose (BLOCKED.md: does menu music duck?)")
|
||||
|
||||
var stream := VideoStreamTheora.new()
|
||||
stream.file = v["path"]
|
||||
|
||||
@@ -170,12 +170,32 @@ func play_bed(role: String) -> void:
|
||||
_bed.play()
|
||||
|
||||
|
||||
## 🔴 DEAD CODE, and that is the finding rather than a tidiness note.
|
||||
##
|
||||
## Nothing in the port calls this. The bed therefore starts when the main menu
|
||||
## goes live and never stops -- through the cutscene, and on to the title after
|
||||
## it. Nobody chose that; it is what happens when the only way to stop something
|
||||
## is a function no caller remembers.
|
||||
##
|
||||
## It is the mirror of `ScreenView.skipped`, which was written every frame and
|
||||
## read by nobody. One is a fact recorded and never surfaced, the other a
|
||||
## capability provided and never used, and both were invisible for the same
|
||||
## reason: nothing fails when they are missed.
|
||||
##
|
||||
## Kept, not deleted. The day a capture says whether the game's menu music ducks
|
||||
## under a movie, this is the one line that has to change.
|
||||
func stop_bed() -> void:
|
||||
if _bed != null:
|
||||
_bed.stop()
|
||||
_bed_role = ""
|
||||
|
||||
|
||||
## Is the music bed sounding right now? Used by the boot to ANNOUNCE that it is
|
||||
## still playing under a movie, rather than to stop it.
|
||||
func bed_playing() -> bool:
|
||||
return _bed != null and _bed.playing
|
||||
|
||||
|
||||
## What the audio server is actually doing, for a run's write-up.
|
||||
##
|
||||
## `docs/port/AUDIO-VERIFICATION.md`: "recorded under a dummy driver" is a
|
||||
|
||||
Reference in New Issue
Block a user