From 34ccddaea59c27ec99a48e5eb57fdf3aa43748f6 Mon Sep 17 00:00:00 2001 From: Stef <48526421+StefBuwalda@users.noreply.github.com> Date: Sun, 12 Oct 2025 00:04:59 +0200 Subject: [PATCH] Hotfix for loading clip volume issue (#174) --- .../java/org/toop/framework/audio/SoundEffectManager.java | 2 +- .../toop/framework/resource/resources/SoundEffectAsset.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/framework/src/main/java/org/toop/framework/audio/SoundEffectManager.java b/framework/src/main/java/org/toop/framework/audio/SoundEffectManager.java index 5e2bb8d..969b20c 100644 --- a/framework/src/main/java/org/toop/framework/audio/SoundEffectManager.java +++ b/framework/src/main/java/org/toop/framework/audio/SoundEffectManager.java @@ -44,7 +44,7 @@ public class SoundEffectManager implements org.toop.framework.audio.interfaces.S } asset.play(); - // TODO: Volume of Sound Effect isn't set when loading. When loading an effect it will be full volume. + logger.debug("Playing sound: {}", asset.getFile().getName()); } diff --git a/framework/src/main/java/org/toop/framework/resource/resources/SoundEffectAsset.java b/framework/src/main/java/org/toop/framework/resource/resources/SoundEffectAsset.java index a96e3f4..9519bba 100644 --- a/framework/src/main/java/org/toop/framework/resource/resources/SoundEffectAsset.java +++ b/framework/src/main/java/org/toop/framework/resource/resources/SoundEffectAsset.java @@ -15,6 +15,8 @@ import static javax.sound.sampled.LineEvent.Type.STOP; public class SoundEffectAsset extends BaseResource implements LoadableResource, AudioResource { private final Clip clip = AudioSystem.getClip(); + private double volume = 100; // TODO: Find a better way to set volume on clip load + public SoundEffectAsset(final File audioFile) throws LineUnavailableException { super(audioFile); } @@ -54,6 +56,7 @@ public class SoundEffectAsset extends BaseResource implements LoadableResource, if (baseFormat.getSampleSizeInBits() > 16) inputStream = downSampleAudio(inputStream, baseFormat); this.clip.open(inputStream); // ^ Clip can only run 16 bit and lower, thus downsampling necessary. + this.updateVolume(this.volume); this.isLoaded = true; } catch (LineUnavailableException | UnsupportedAudioFileException | IOException e) { throw new RuntimeException(e); @@ -79,6 +82,7 @@ public class SoundEffectAsset extends BaseResource implements LoadableResource, @Override public void updateVolume(double volume) { { + this.volume = volume; if (clip.isControlSupported(FloatControl.Type.MASTER_GAIN)) { FloatControl volumeControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);