From abf3028cfb2d52a4793ab36f20cb9cd215d2302c Mon Sep 17 00:00:00 2001 From: Recrown Date: Sun, 15 Apr 2018 14:04:59 -0500 Subject: [PATCH] slightly better buffer system --- .../desktop/audio/visualizer/DesktopVisualizer.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/audio/visualizer/DesktopVisualizer.java b/desktop/src/zero1hd/rhythmbullet/desktop/audio/visualizer/DesktopVisualizer.java index fc7e052..0ca763b 100755 --- a/desktop/src/zero1hd/rhythmbullet/desktop/audio/visualizer/DesktopVisualizer.java +++ b/desktop/src/zero1hd/rhythmbullet/desktop/audio/visualizer/DesktopVisualizer.java @@ -89,7 +89,14 @@ public class DesktopVisualizer extends MusicManagerFFT implements Visualizer { } private void bufferChanged() { - playingBuffer.clear(); + //set position to beginning to prepare for overwrite + playingBuffer.position(0); + //if the backing playing buffer is full, we have two sections: A and B. A is the one before B, and is read from due to playback latency and offset. B is merely a buffer. + if (playingBuffer.limit() == playingBuffer.capacity()) { + //put the second portion into the first... + playingBuffer.put(playingBuffer.array(), buffer.capacity(), buffer.capacity()); + } + //put the new buffer in the second portion. playingBuffer.put(compareBuffer); } @@ -118,7 +125,7 @@ public class DesktopVisualizer extends MusicManagerFFT implements Visualizer { } int originalPos = buffer.position(); - playingBuffer = ShortBuffer.allocate(buffer.capacity()); + playingBuffer = ShortBuffer.allocate(buffer.capacity()*2); buffer.rewind(); playingBuffer.put(buffer); playingBuffer.flip();