diff --git a/core/src/zero1hd/rhythmbullet/audio/visualizer/DoubleHorizontalVisualizer.java b/core/src/zero1hd/rhythmbullet/audio/visualizer/DoubleHorizontalVisualizer.java index 69e01b1..cd02d9d 100755 --- a/core/src/zero1hd/rhythmbullet/audio/visualizer/DoubleHorizontalVisualizer.java +++ b/core/src/zero1hd/rhythmbullet/audio/visualizer/DoubleHorizontalVisualizer.java @@ -21,9 +21,11 @@ public class DoubleHorizontalVisualizer implements Disposable { private int binsPerBar; private float offset; private int boundaryThickness; + private boolean debug = false; private boolean significantBeat; - private float dynamicAverageAmplitude; + private float maxAverageAmplitude; private byte significantFrames; + private byte requiredSignificantFrames; private float targetDelta; private float significantThreshold = 0.5f; private float spacePercentage = 0.7f; @@ -60,7 +62,8 @@ public class DoubleHorizontalVisualizer implements Disposable { public void act(float delta) { if (pcm.hasAudioChanged()) { - dynamicAverageAmplitude = 0; + maxAverageAmplitude = 0; + averageAmplitude = 0; significantBeat = false; } float[] freqBins = pcm.getFrequencyBins(); @@ -76,21 +79,24 @@ public class DoubleHorizontalVisualizer implements Disposable { } averageAmplitude /= amplitudes.length; - if (averageAmplitude < dynamicAverageAmplitude) { - dynamicAverageAmplitude -= 0.01f; - } else { - dynamicAverageAmplitude = averageAmplitude; + if (averageAmplitude > maxAverageAmplitude) { + maxAverageAmplitude = averageAmplitude; } - if (averageAmplitude > dynamicAverageAmplitude*significantThreshold && !significantBeat) { - if (dynamicAverageAmplitude > 0) { + if (averageAmplitude > maxAverageAmplitude*significantThreshold && !significantBeat) { + if (maxAverageAmplitude > 0) { significantFrames++; - if (significantFrames >= 16) { + if (significantFrames >= requiredSignificantFrames) { significantFrames = 0; significantBeat = true; } } } else { - significantBeat = false; + if (significantBeat) { + significantBeat = false; + requiredSignificantFrames = 16; + } else { + requiredSignificantFrames = 4; + } significantFrames = 0; } @@ -145,16 +151,18 @@ public class DoubleHorizontalVisualizer implements Disposable { shapeRenderer.rect(offset + (spaceBetweenBars+barWidth)*bar, y+height, barWidth, barHeights[bar]); shapeRenderer.rect(offset + (spaceBetweenBars+barWidth)*bar, y, barWidth, -barHeights[barHeights.length - 1 - bar]); } - shapeRenderer.setColor(Color.RED); - shapeRenderer.rect(0, dynamicAverageAmplitude+y, width, 1); - if (significantBeat) { - shapeRenderer.setColor(Color.GREEN); - } else { - shapeRenderer.setColor(Color.WHITE); + if (debug) { + shapeRenderer.setColor(Color.RED); + shapeRenderer.rect(0, maxAverageAmplitude+y, width, 1); + if (significantBeat) { + shapeRenderer.setColor(Color.GREEN); + } else { + shapeRenderer.setColor(Color.WHITE); + } + shapeRenderer.rect(0, averageAmplitude+y, width, 1); + shapeRenderer.setColor(Color.YELLOW); + shapeRenderer.rect(0, maxAverageAmplitude*significantThreshold + y, width, 1); } - shapeRenderer.rect(0, averageAmplitude+y, width, 1); - shapeRenderer.setColor(Color.YELLOW); - shapeRenderer.rect(0, dynamicAverageAmplitude*significantThreshold + y, width, 1); shapeRenderer.end(); Gdx.gl.glDisable(GL20.GL_BLEND); batch.begin(); diff --git a/core/src/zero1hd/rhythmbullet/graphics/ui/components/ScrollingText.java b/core/src/zero1hd/rhythmbullet/graphics/ui/components/ScrollingText.java index 83aae63..414e52c 100755 --- a/core/src/zero1hd/rhythmbullet/graphics/ui/components/ScrollingText.java +++ b/core/src/zero1hd/rhythmbullet/graphics/ui/components/ScrollingText.java @@ -159,8 +159,6 @@ public class ScrollingText extends Widget { coords.x = getX(); coords.y = getY(); - getStage().stageToScreenCoordinates(coords); - clipBounds.setX(coords.x+1); clipBounds.setY(coords.y - 0.5f*getHeight()); diff --git a/desktop/src/zero1hd/rhythmbullet/desktop/audio/PCMObtainer.java b/desktop/src/zero1hd/rhythmbullet/desktop/audio/PCMObtainer.java index d911e3a..1736f5b 100755 --- a/desktop/src/zero1hd/rhythmbullet/desktop/audio/PCMObtainer.java +++ b/desktop/src/zero1hd/rhythmbullet/desktop/audio/PCMObtainer.java @@ -125,7 +125,7 @@ public class PCMObtainer implements Observer, PCMSystem { @Override public void loadMusic() { - Gdx.app.debug("PCMObtainer", "music set."); + Gdx.app.debug("PCMObtainer", "music loaded."); sourceID = -1; channelCount = mc.getCurrentMusicHeader().getChannelCount();