1
0
Fork 0

Raise the default audio volume, add a configuration slider

This commit is contained in:
ivan tkachenko 2025-11-01 21:17:45 +02:00
parent c62535841a
commit 825355dd54
2 changed files with 26 additions and 18 deletions

View File

@ -2,6 +2,7 @@
## MuzikaGromche 1337.9001.1 ## MuzikaGromche 1337.9001.1
- Raised the default audio volume, and added a configuration slider.
## MuzikaGromche 1337.9001.0 - v73 Music quieter Edition ## MuzikaGromche 1337.9001.0 - v73 Music quieter Edition

View File

@ -2177,10 +2177,13 @@ namespace MuzikaGromche
public static bool ExtrapolateTime { get; private set; } = true; public static bool ExtrapolateTime { get; private set; } = true;
public static bool ShouldSkipWindingPhase { get; private set; } = false; public static bool ShouldSkipWindingPhase { get; private set; } = false;
// Audio files are normalized to target -14 LUFS, which is too loud to communicate. Reduce by another -12 dB down to about -26 LUFS. // Audio files are normalized to target -14 LUFS, which is too loud to communicate. Reduce by another -9 dB down to about -23 LUFS.
public static float DefaultVolume = 0.25f; private const float VolumeDefault = 0.35f;
#if DEBUG private const float VolumeMin = 0.2f;
private const float VolumeMax = 0.5f;
// Ranges from quiet 0.20 (-14 dB) to loud 0.5 (-6 dB)
public static ConfigEntry<float> Volume { get; private set; } = null!; public static ConfigEntry<float> Volume { get; private set; } = null!;
#if DEBUG
// Latest set track, used for loading palette and timings. // Latest set track, used for loading palette and timings.
private static IAudioTrack? CurrentTrack = null; private static IAudioTrack? CurrentTrack = null;
// All per-track values that can be overridden // All per-track values that can be overridden
@ -2231,6 +2234,10 @@ namespace MuzikaGromche
new ConfigDescription("Display lyrics in the HUD tooltip when you hear the music.")); new ConfigDescription("Display lyrics in the HUD tooltip when you hear the music."));
LethalConfigManager.AddConfigItem(new BoolCheckBoxConfigItem(DisplayLyrics, requiresRestart: false)); LethalConfigManager.AddConfigItem(new BoolCheckBoxConfigItem(DisplayLyrics, requiresRestart: false));
Volume = configFile.Bind("General", "Volume", VolumeDefault,
new ConfigDescription("Volume of music played by this mod.", new AcceptableValueRange<float>(VolumeMin, VolumeMax)));
LethalConfigManager.AddConfigItem(new FloatSliderConfigItem(Volume, requiresRestart: false));
AudioOffset = configFile.Bind("General", "Audio Offset", 0f, new ConfigDescription( AudioOffset = configFile.Bind("General", "Audio Offset", 0f, new ConfigDescription(
"Adjust audio offset (in seconds).\n\nIf you are playing with Bluetooth headphones and experiencing a visual desync, try setting this to about negative 0.2.\n\nIf your video output has high latency (like a long HDMI cable etc.), try positive values instead.", "Adjust audio offset (in seconds).\n\nIf you are playing with Bluetooth headphones and experiencing a visual desync, try setting this to about negative 0.2.\n\nIf your video output has high latency (like a long HDMI cable etc.), try positive values instead.",
new AcceptableValueRange<float>(-0.5f, 0.5f))); new AcceptableValueRange<float>(-0.5f, 0.5f)));
@ -2249,7 +2256,6 @@ namespace MuzikaGromche
SetupEntriesForScreenFilters(configFile); SetupEntriesForScreenFilters(configFile);
SetupEntriesForExtrapolation(configFile); SetupEntriesForExtrapolation(configFile);
SetupEntriesToSkipWinding(configFile); SetupEntriesToSkipWinding(configFile);
SetupEntriesForVolume(configFile);
SetupEntriesForPaletteOverride(configFile); SetupEntriesForPaletteOverride(configFile);
SetupEntriesForTimingsOverride(configFile); SetupEntriesForTimingsOverride(configFile);
#endif #endif
@ -2333,13 +2339,6 @@ namespace MuzikaGromche
} }
} }
private void SetupEntriesForVolume(ConfigFile configFile)
{
Volume = configFile.Bind("General", "Volume", DefaultVolume,
new ConfigDescription("Volume of the music played by this mod.", new AcceptableValueRange<float>(0f, 1f)));
LethalConfigManager.AddConfigItem(new FloatSliderConfigItem(Volume, requiresRestart: false));
}
private void SetupEntriesForPaletteOverride(ConfigFile configFile) private void SetupEntriesForPaletteOverride(ConfigFile configFile)
{ {
const string section = "Palette"; const string section = "Palette";
@ -2714,25 +2713,33 @@ namespace MuzikaGromche
IntroAudioSource.maxDistance = Plugin.AudioMaxDistance; IntroAudioSource.maxDistance = Plugin.AudioMaxDistance;
IntroAudioSource.dopplerLevel = 0; IntroAudioSource.dopplerLevel = 0;
IntroAudioSource.loop = false; IntroAudioSource.loop = false;
IntroAudioSource.volume = Config.DefaultVolume; IntroAudioSource.volume = Config.Volume.Value;
LoopAudioSource = loopAudioGameObject.GetComponent<AudioSource>(); LoopAudioSource = loopAudioGameObject.GetComponent<AudioSource>();
LoopAudioSource.maxDistance = Plugin.AudioMaxDistance; LoopAudioSource.maxDistance = Plugin.AudioMaxDistance;
LoopAudioSource.dopplerLevel = 0; LoopAudioSource.dopplerLevel = 0;
LoopAudioSource.loop = true; LoopAudioSource.loop = true;
LoopAudioSource.volume = Config.DefaultVolume; LoopAudioSource.volume = Config.Volume.Value;
Config.Volume.SettingChanged += UpdateVolume;
Debug.Log($"{nameof(MuzikaGromche)} {nameof(MuzikaGromcheJesterNetworkBehaviour)} Patched JesterEnemy"); Debug.Log($"{nameof(MuzikaGromche)} {nameof(MuzikaGromcheJesterNetworkBehaviour)} Patched JesterEnemy");
} }
} }
#if DEBUG public override void OnDestroy()
void Update() {
Config.Volume.SettingChanged -= UpdateVolume;
}
private void UpdateVolume(object sender, EventArgs e)
{
if (IntroAudioSource != null && LoopAudioSource != null)
{ {
IntroAudioSource.volume = Config.Volume.Value; IntroAudioSource.volume = Config.Volume.Value;
LoopAudioSource.volume = Config.Volume.Value; LoopAudioSource.volume = Config.Volume.Value;
} }
#endif }
public override void OnNetworkSpawn() public override void OnNetworkSpawn()
{ {