Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
MithrixChimeraMusic
Plays the Monty Python and the Holy Grail intermission music during the lunar chimera intermission of the Mithrix fight.
By Bungo
CHANGELOG
Changelog
1.2.2
- README fix: corrected misleading phase wording.
1.2.1
- Simplified config descriptions and READMEs.
1.2.0
- Bypassed Unity's audio system entirely. Audio now plays via
System.Media.SoundPlayer(managed .NET, wraps winmm.dll under the hood). Loops viaPlayLooping, stops viaStop. The Wwise pause/resume on phase enter/exit still mutes the game music while the song plays. - Switched target framework from
netstandard2.1tonet472to accessSystem.Media. - Volume is now applied by scaling 16-bit PCM samples in-place at load time. Changing the volume requires a game restart (SoundPlayer has no live volume API).
- Stale
BundleBuilder/folder is no longer needed; safe to delete.
1.1.0
- Switched audio loading to AssetBundle (
AssetBundle.LoadFromMemory→LoadAllAssets<AudioClip>). Unity's runtime audio APIs (AudioClip.Create,UnityWebRequestMultimedia.GetAudioClip) all returned 0-property placeholder clips in the RoR2/BepInEx environment. Bundles bake the clip at editor time, so the loader gets a real Unity audio asset. - Added
BundleBuilder/with an Editor script and step-by-step README for producing the bundle from a small Unity 2019.4 project. - Removed all the prior workarounds (manual WAV parser, PCMReaderCallback streaming, audio-config diagnostics).
1.0.10
- Diagnostic: log Unity's full AudioSettings config and try
AudioSettings.Resetto recover from a stuck audio state.
1.0.9
- Diagnostic build: creates a 1-second synthetic sine-wave clip on load to determine whether
AudioClip.Createworks at all in this environment.
1.0.8
- Defer audio load by one frame past Awake —
AudioClip.Createwas returning placeholder clips with all zero metadata (length/samples/channels/frequency all 0) when called too early in the Unity lifecycle. - Soften clip validation (don't bail on samples=0) and log full clip state for diagnostics.
1.0.7
- Streaming AudioClip via PCMReaderCallback. The non-streaming
AudioClip.Createcouldn't allocate the ~58 MB float buffer (SetData failed; AudioClip contains no data); streaming mode pulls samples on demand from the in-memory PCM array. - Added WAV header logging so any future parse mismatch is visible.
1.0.6
- Bypassed Unity's audio decoder entirely. Even WAV via UnityWebRequestMultimedia was returning AudioClips stuck in
Unloadedstate in this RoR2/BepInEx environment. Now parses the embedded WAV manually (16-bit PCM) and feeds float samples intoAudioClip.Create+SetData. No file URI, no decoder, no async load.
1.0.5
- Switched embedded audio from OGG to WAV — Unity's OGG decoder in this RoR2/BepInEx environment was returning AudioClips stuck in
Unloadedstate with zero samples. WAV (PCM) skips the codec path entirely and loads reliably.
1.0.4
- Wait for AudioClip decode to finish (loadState polling) — Unity's OGG decode can be async
- Re-encoded embedded audio at 44.1kHz with clean start timestamp (some Unity 2019 builds choke on 48kHz / nonzero start_pts)
1.0.3
- Use BepInEx cache path for the OGG temp file (avoids file URI breakage from special chars in
Application.temporaryCachePath) - Switched debug trigger to
Run.BeginStage(the previousStage.Starthook didn't exist and crashed Awake) - More verbose request diagnostics
1.0.2
- Added
Debug.PlayOnStageStartconfig to play the song at every stage start (for verifying audio without grinding to Mithrix) - Fixed silent OGG load failure on Windows (proper file URI conversion)
- More diagnostic logging during clip load and song start
1.0.0
- Initial release
- Plays the Monty Python and the Holy Grail intermission music during the chimera intermission of the Mithrix fight
- Configurable phase + volume; mutes game music during the phase