From 780bdc0297d2b8ddc438b201e2d1827891e9211b Mon Sep 17 00:00:00 2001 From: Ray Redondo Date: Sun, 6 Oct 2019 18:15:58 -0500 Subject: [PATCH 1/4] Cache audio loads so that they only happen once --- src/engine/audio/AudioPlayer.java | 32 ++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/src/engine/audio/AudioPlayer.java b/src/engine/audio/AudioPlayer.java index ea8dc0d..045eed6 100644 --- a/src/engine/audio/AudioPlayer.java +++ b/src/engine/audio/AudioPlayer.java @@ -35,25 +35,31 @@ private void closeStream(AudioInputStream stream) { } } + private HashMap clipCache = new HashMap<>(); + private void playFile(File f) { AudioInputStream ss = null; try { - final AudioInputStream stream = AudioSystem.getAudioInputStream(f); - ss = stream; + Clip audio; + if(!clipCache.containsKey(f)) { + final AudioInputStream stream = AudioSystem.getAudioInputStream(f); + ss = stream; - final Clip audio = AudioSystem.getClip(); - audio.open(stream); - audio.addLineListener(new LineListener() { - @Override - public void update(LineEvent event) { - Type eventType = event.getType(); - if (eventType == Type.STOP || eventType == Type.CLOSE) { - audio.close(); - closeStream(stream); + audio = AudioSystem.getClip(); + audio.open(stream); + audio.addLineListener(new LineListener() { + @Override + public void update(LineEvent event) { + Type eventType = event.getType(); + if (eventType == Type.STOP || eventType == Type.CLOSE) { + audio.close(); + closeStream(stream); + } } - } - }); + }); + clipCache.put(f, audio); + } audio.start(); } catch(IOException ioex) { From c7a4ee5a53ca15e2d552e7c0d7382ed6553af2ae Mon Sep 17 00:00:00 2001 From: Ray Redondo Date: Sun, 6 Oct 2019 18:19:19 -0500 Subject: [PATCH 2/4] Import HashMap --- src/engine/audio/AudioPlayer.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/engine/audio/AudioPlayer.java b/src/engine/audio/AudioPlayer.java index 045eed6..0cd0b28 100644 --- a/src/engine/audio/AudioPlayer.java +++ b/src/engine/audio/AudioPlayer.java @@ -3,6 +3,7 @@ import java.io.File; import java.io.IOException; import java.util.LinkedList; +import java.util.HashMap; import java.util.Queue; import javax.sound.sampled.AudioInputStream; From f557e0c18010e382e47e457ef37aa585aac92ba9 Mon Sep 17 00:00:00 2001 From: Ray Redondo Date: Sun, 6 Oct 2019 18:36:01 -0500 Subject: [PATCH 3/4] This is what I get for using nano to write code --- src/engine/audio/AudioPlayer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/audio/AudioPlayer.java b/src/engine/audio/AudioPlayer.java index 0cd0b28..fb7cc18 100644 --- a/src/engine/audio/AudioPlayer.java +++ b/src/engine/audio/AudioPlayer.java @@ -60,7 +60,7 @@ public void update(LineEvent event) { } }); clipCache.put(f, audio); - } + } else audio = clipCache.get(f); audio.start(); } catch(IOException ioex) { From f7778bd82c21ce2109decfe675b4977aa42d8007 Mon Sep 17 00:00:00 2001 From: Ray Redondo Date: Sun, 6 Oct 2019 18:39:24 -0500 Subject: [PATCH 4/4] Clip sucks --- src/engine/audio/AudioPlayer.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/engine/audio/AudioPlayer.java b/src/engine/audio/AudioPlayer.java index fb7cc18..4a4fb64 100644 --- a/src/engine/audio/AudioPlayer.java +++ b/src/engine/audio/AudioPlayer.java @@ -61,6 +61,7 @@ public void update(LineEvent event) { }); clipCache.put(f, audio); } else audio = clipCache.get(f); + audio.setFramePosition(0); audio.start(); } catch(IOException ioex) {