diff --git a/core/src/zero1hd/rhythmbullet/audio/visualizer/BasicVisualizer.java b/core/src/zero1hd/rhythmbullet/audio/visualizer/BasicVisualizer.java index aefa397..b0a4534 100755 --- a/core/src/zero1hd/rhythmbullet/audio/visualizer/BasicVisualizer.java +++ b/core/src/zero1hd/rhythmbullet/audio/visualizer/BasicVisualizer.java @@ -21,6 +21,7 @@ public class BasicVisualizer extends VisualizerCore { private int spaceBetweenBars; private Texture[] textures; private Sprite[] bars; + private float[] barHeights; private int smoothRange; private float barHeightMultiplier; private float rotation; @@ -40,7 +41,8 @@ public class BasicVisualizer extends VisualizerCore { angleRot = new Vector2(MathUtils.cosDeg(rotation), MathUtils.sinDeg(rotation)); textures = new Texture[barCount]; bars = new Sprite[barCount]; - + barHeights = new float[barCount]; + for (int i = 0; i < textures.length; i++) { textures[i] = new Texture(pixmap); bars[i] = new Sprite(textures[i]); @@ -53,30 +55,19 @@ public class BasicVisualizer extends VisualizerCore { @Override public void render(Batch batch, float parentAlpha) { if (mm != null) { - //Drawing... - for (int i = 0; i < barCount; i++) { - int avg = 0; - //Averaging the bars - for (int range = 0; range < smoothRange; range++) { - if (i+range < barCount) { - avg += bars[i+range].getHeight(); - } - if (i-range >= 0) { - avg += bars[i-range].getHeight(); - } - } - bars[i].setSize(barWidth, avg/(smoothRange*2)); + for (int i = 0; i < bars.length; i++) { bars[i].draw(batch); - } - - for (int i = 0; i < mirrors.size; i++) { - mirrors.get(i).render(batch, parentAlpha, bars); + for (int j = 0; j < mirrors.size; j++) { + mirrors.get(j).render(i, batch, parentAlpha, bars); + } } } super.render(batch, parentAlpha); } public void modify(float delta) { + + //Averaging bins together for (int i = 0; i < barCount; i++) { float barHeight = 2; @@ -85,7 +76,23 @@ public class BasicVisualizer extends VisualizerCore { } barHeight /= binsPerBar; barHeight *= barHeightMultiplier; - bars[i].setSize(barWidth, bars[i].getHeight() < barHeight ? barHeight : bars[i].getHeight() - 1.5f*Gdx.graphics.getHeight()*delta); + barHeights[i] = barHeight; + } + for (int i = 0; i < barCount; i++) { + int avg = 0; + //Averaging the bars + for (int range = 0; range < smoothRange; range++) { + if (i+range < barCount) { + avg += barHeights[i+range]; + } + if (i-range >= 0) { + avg += barHeights[i-range]; + } + } + avg /= smoothRange*2; + barHeights[i] = avg; + + bars[i].setSize(barWidth, bars[i].getHeight() <= barHeights[i] ? barHeights[i] : bars[i].getHeight() - 1.1f*Gdx.graphics.getHeight()*delta); } } diff --git a/core/src/zero1hd/rhythmbullet/audio/visualizer/MirrorVisualizer.java b/core/src/zero1hd/rhythmbullet/audio/visualizer/MirrorVisualizer.java index 2b01758..ebf9d5d 100755 --- a/core/src/zero1hd/rhythmbullet/audio/visualizer/MirrorVisualizer.java +++ b/core/src/zero1hd/rhythmbullet/audio/visualizer/MirrorVisualizer.java @@ -28,11 +28,9 @@ public class MirrorVisualizer { } } - public void render(Batch batch, float parentAlpha, Sprite[] bars) { - for (int i = 0; i < this.bars.length; i++) { - this.bars[i].setSize(bars[i].getWidth(), bars[i].getHeight()); - this.bars[i].draw(batch); - } + public void render(int renderID, Batch batch, float parentAlpha, Sprite[] bars) { + this.bars[renderID].setSize(bars[renderID].getWidth(), bars[renderID].getHeight()); + this.bars[renderID].draw(batch); } public void position(int barWidth, int spaceBetweenBars) {