furthered usage of new mini context object
This commit is contained in:
parent
d00f434275
commit
ba8a2182fb
@ -113,7 +113,7 @@ public class RhythmBullet extends Game {
|
||||
public void dispose() {
|
||||
Gdx.app.debug("Core", "disposing...");
|
||||
if (initComplete) {
|
||||
skinAtlas.dispose();
|
||||
// skinAtlas.dispose();
|
||||
getDefaultSkin().dispose();
|
||||
default_fontGenerator.dispose();
|
||||
darktech_ldr_fontGenerator.dispose();
|
||||
|
@ -12,7 +12,6 @@ import zero1hd.rhythmbullet.util.MiniSender;
|
||||
|
||||
public class AudioAnalyzer {
|
||||
private boolean containsData;
|
||||
private boolean finalized;
|
||||
FloatFFT_1D fft;
|
||||
private CoreMusicInfo musicInfo;
|
||||
|
||||
@ -20,8 +19,9 @@ public class AudioAnalyzer {
|
||||
float[] spectrum;
|
||||
float[] lastSpectrum;
|
||||
|
||||
Runnable analysisAlgorithm;
|
||||
Runnable thresholdCalculator;
|
||||
private ExecutorService exec = Executors.newSingleThreadExecutor();
|
||||
private Runnable analysisAlgorithm;
|
||||
private Runnable thresholdCalculator;
|
||||
|
||||
int bassBinBegin;
|
||||
int bassBinEnd;
|
||||
@ -57,7 +57,7 @@ public class AudioAnalyzer {
|
||||
private float secondsPerWindow;
|
||||
|
||||
private AudioDataPackage pack;
|
||||
public AudioAnalyzer() {
|
||||
public AudioAnalyzer(CoreMusicInfo audiofile) {
|
||||
sender = new MiniSender();
|
||||
|
||||
analysisAlgorithm = () -> {
|
||||
@ -297,11 +297,18 @@ public class AudioAnalyzer {
|
||||
pack.setMusicInfo(musicInfo);
|
||||
|
||||
if (work) {
|
||||
finalized = true;
|
||||
Gdx.app.debug("Audio Analyzer", "data cleaned and ready for map gen.");
|
||||
sender.send(MiniEvents.MUSIC_DATA_CLEANED);
|
||||
}
|
||||
};
|
||||
|
||||
audioPCM = new float[audiofile.getReadWindowSize()];
|
||||
spectrum = new float[(audiofile.getReadWindowSize()/2)+1];
|
||||
lastSpectrum = new float[(audiofile.getReadWindowSize()/2)+1];
|
||||
this.musicInfo = audiofile;
|
||||
work = true;
|
||||
|
||||
exec.submit(analysisAlgorithm);
|
||||
}
|
||||
|
||||
public void shrinkData() {
|
||||
@ -310,24 +317,12 @@ public class AudioAnalyzer {
|
||||
umSpectralFlux = null;
|
||||
}
|
||||
|
||||
public void startAnalyticalThread(CoreMusicInfo audiofile) {
|
||||
audioPCM = new float[audiofile.getReadWindowSize()];
|
||||
spectrum = new float[(audiofile.getReadWindowSize()/2)+1];
|
||||
lastSpectrum = new float[(audiofile.getReadWindowSize()/2)+1];
|
||||
this.musicInfo = audiofile;
|
||||
work = true;
|
||||
|
||||
ExecutorService exec = Executors.newSingleThreadExecutor();
|
||||
exec.submit(analysisAlgorithm);
|
||||
}
|
||||
|
||||
public void runThresholdCleaning(float rangeModifier) {
|
||||
this.bassThresholdMultiplier -= rangeModifier;
|
||||
this.umThresholdMultiplier -= rangeModifier;
|
||||
work = true;
|
||||
|
||||
if (containsData) {
|
||||
ExecutorService exec = Executors.newSingleThreadExecutor();
|
||||
exec.submit(thresholdCalculator);
|
||||
} else {
|
||||
throw new NullPointerException("Either you didn't start the spectral flux gen, or you didn't let it finish.");
|
||||
@ -337,7 +332,6 @@ public class AudioAnalyzer {
|
||||
public void runThresholdCleaning() {
|
||||
work = true;
|
||||
if (containsData) {
|
||||
ExecutorService exec = Executors.newSingleThreadExecutor();
|
||||
exec.submit(thresholdCalculator);
|
||||
} else {
|
||||
throw new NullPointerException("Either you didn't start the spectral flux gen, or you didn't let it finish.");
|
||||
@ -348,18 +342,6 @@ public class AudioAnalyzer {
|
||||
return (int) (durationOfRange/(musicInfo.getReadWindowSize()/musicInfo.getSampleRate()));
|
||||
}
|
||||
|
||||
public float getBassMaxValue() {
|
||||
return bassMaxValue;
|
||||
}
|
||||
|
||||
public float getmMaxValue() {
|
||||
return mMaxValue;
|
||||
}
|
||||
|
||||
public float getUMMaxValue() {
|
||||
return umMaxValue;
|
||||
}
|
||||
|
||||
public boolean containsData() {
|
||||
return containsData;
|
||||
}
|
||||
@ -368,44 +350,13 @@ public class AudioAnalyzer {
|
||||
return progress;
|
||||
}
|
||||
|
||||
public boolean isFinalized() {
|
||||
return finalized;
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
work = false;
|
||||
exec.shutdown();
|
||||
}
|
||||
|
||||
public int getPUID() {
|
||||
return PUID;
|
||||
}
|
||||
|
||||
public CoreMusicInfo getAudioData() {
|
||||
return musicInfo;
|
||||
}
|
||||
|
||||
public float getAvgSPB() {
|
||||
return avgSPB;
|
||||
}
|
||||
|
||||
public float getsecondsPerWindow() {
|
||||
return secondsPerWindow;
|
||||
}
|
||||
|
||||
public float getBassAvg() {
|
||||
return bassAvg;
|
||||
}
|
||||
|
||||
public float getUmAvg() {
|
||||
return umAvg;
|
||||
}
|
||||
|
||||
public float getmAvg() {
|
||||
return mAvg;
|
||||
}
|
||||
|
||||
public synchronized AudioDataPackage getAudioDataPackage() {
|
||||
if (pack != null) {
|
||||
exec.shutdown();
|
||||
return pack;
|
||||
} else {
|
||||
throw new NullPointerException("Pack isn't filled yet... You made a mistake somewhere!");
|
||||
|
@ -41,8 +41,13 @@ public class MainMenu extends ScreenAdapter implements TransitionAdapter {
|
||||
@Override
|
||||
public void preTransition() {
|
||||
stage.clear();
|
||||
mainPage.dispose();
|
||||
optionsPage.dispose();
|
||||
creditsPage.dispose();
|
||||
moreOptionsPage.dispose();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postTransition() {
|
||||
mainPage = new MainPage(core, targetPosition);
|
||||
mainPage.setPosition(0, 0);
|
||||
|
@ -52,7 +52,8 @@ public class PreGameScreen extends ScreenAdapter implements TransitionAdapter, M
|
||||
|
||||
@Override
|
||||
public void resize(int width, int height) {
|
||||
stage.getViewport().update(width, height);
|
||||
stage.getViewport().update(width, height, true);
|
||||
cameraPos.set(stage.getCamera().position);
|
||||
super.resize(width, height);
|
||||
}
|
||||
|
||||
@ -78,6 +79,8 @@ public class PreGameScreen extends ScreenAdapter implements TransitionAdapter, M
|
||||
@Override
|
||||
public void preTransition() {
|
||||
stage.clear();
|
||||
ap.dispose();
|
||||
ms.dispose();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -89,14 +92,10 @@ public class PreGameScreen extends ScreenAdapter implements TransitionAdapter, M
|
||||
|
||||
ap = new AnalyzePage(core);
|
||||
ap.miniSender.addListener(this);
|
||||
ap.setPosition(Gdx.graphics.getWidth(), ap.getY());
|
||||
ap.setPosition(Gdx.graphics.getWidth(), 0);
|
||||
stage.addActor(ap);
|
||||
}
|
||||
|
||||
public void setPhase(int phase) {
|
||||
cameraPos.x = Gdx.graphics.getWidth()*(phase + 0.5f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show() {
|
||||
Gdx.input.setInputProcessor(stage);
|
||||
|
@ -15,6 +15,7 @@ import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
|
||||
|
||||
import zero1hd.rhythmbullet.RhythmBullet;
|
||||
import zero1hd.rhythmbullet.audio.AudioAnalyzer;
|
||||
import zero1hd.rhythmbullet.audio.AudioDataPackage;
|
||||
import zero1hd.rhythmbullet.audio.map.RhythmMapAlgorithm;
|
||||
import zero1hd.rhythmbullet.screens.MainMenu;
|
||||
import zero1hd.rhythmbullet.stages.GamePlayArea;
|
||||
@ -246,40 +247,37 @@ public class CreativeHUD extends Stage implements MiniListener {
|
||||
musicPlayBackControls.getAudiofile().dispose();
|
||||
}
|
||||
musicPlayBackControls.setAudiofile(null);
|
||||
analyzer = new AudioAnalyzer();
|
||||
analyzer = new AudioAnalyzer(musicSelector.getSelectedMusic());
|
||||
analyzer.sender.addListener(this);
|
||||
|
||||
analyzer.startAnalyticalThread(musicSelector.getSelectedMusic());
|
||||
break;
|
||||
case SPECTRAL_FLUX_DONE:
|
||||
analyzer.runThresholdCleaning();
|
||||
break;
|
||||
case MUSIC_DATA_CLEANED:
|
||||
if (analyzer != null && analyzer.isFinalized()) {
|
||||
mapGen = new RhythmMapAlgorithm(gpa.em, gpa.cm, analyzer.getAudioDataPackage(), diffWindow.getSpeedModifier(), diffWindow.getHealthModifier(), diffWindow.getOverallDiffMod());
|
||||
mapGen.getSender().addListener(this);
|
||||
Thread mapGenThread = new Thread(mapGen);
|
||||
mapGenThread.start();
|
||||
}
|
||||
break;
|
||||
case MAP_GENERATED:
|
||||
Gdx.app.debug("creative", "successfully generated map.");
|
||||
musicPlayBackControls.setAudiofile(analyzer.getAudioData());
|
||||
volumeWindow.setMusic(analyzer.getAudioData());
|
||||
beatViewer.setMusic(analyzer.getAudioData(), analyzer.getAudioDataPackage());
|
||||
AudioDataPackage adp = analyzer.getAudioDataPackage();
|
||||
musicPlayBackControls.setAudiofile(adp.getMusicInfo());
|
||||
volumeWindow.setMusic(adp.getMusicInfo());
|
||||
beatViewer.setMusic(adp.getMusicInfo(), analyzer.getAudioDataPackage());
|
||||
ghud.setMusic(null);
|
||||
|
||||
bassUMgraphWindow.setData(analyzer.getAudioDataPackage().getBassPeaks(), analyzer.getAudioDataPackage().getuMPeaks(), analyzer.getAudioData());
|
||||
bassUMgraphWindow.getGraph().avgG1 = analyzer.getBassAvg();
|
||||
bassUMgraphWindow.getGraph().normalDataG1 = analyzer.getBassMaxValue();
|
||||
bassUMgraphWindow.getGraph().avgG2 = analyzer.getUmAvg();
|
||||
bassUMgraphWindow.getGraph().normalDataG2 = analyzer.getUMMaxValue();
|
||||
bassUMgraphWindow.setData(analyzer.getAudioDataPackage().getBassPeaks(), analyzer.getAudioDataPackage().getuMPeaks(), adp.getMusicInfo());
|
||||
bassUMgraphWindow.getGraph().avgG1 = adp.getBassAvg();
|
||||
bassUMgraphWindow.getGraph().normalDataG1 = adp.getBassMaxVal();
|
||||
bassUMgraphWindow.getGraph().avgG2 = adp.getuMAvg();
|
||||
bassUMgraphWindow.getGraph().normalDataG2 = adp.getuMMaxval();
|
||||
|
||||
mGraphWindow.setData(analyzer.getAudioDataPackage().getmPeaks(), null, analyzer.getAudioData());
|
||||
mGraphWindow.getGraph().normalDataG1 = analyzer.getmMaxValue();
|
||||
mGraphWindow.getGraph().avgG1 = analyzer.getmAvg();
|
||||
mGraphWindow.setData(analyzer.getAudioDataPackage().getmPeaks(), null, adp.getMusicInfo());
|
||||
mGraphWindow.getGraph().normalDataG1 = adp.getmMaxVal();
|
||||
mGraphWindow.getGraph().avgG1 = adp.getmAvg();
|
||||
gpa.setAudioMap(mapGen.getMap());
|
||||
ghud.setMusic(analyzer.getAudioData().getPlaybackMusic());
|
||||
ghud.setMusic(adp.getMusicInfo().getPlaybackMusic());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -15,6 +15,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.Table;
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
|
||||
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
|
||||
import com.badlogic.gdx.utils.Align;
|
||||
import com.badlogic.gdx.utils.Disposable;
|
||||
|
||||
import zero1hd.rhythmbullet.RhythmBullet;
|
||||
import zero1hd.rhythmbullet.audio.AudioAnalyzer;
|
||||
@ -27,7 +28,7 @@ import zero1hd.rhythmbullet.ui.builders.ScrollText;
|
||||
import zero1hd.rhythmbullet.util.MiniEvents;
|
||||
import zero1hd.rhythmbullet.util.MiniListener;
|
||||
|
||||
public class AnalyzePage extends Page implements MiniListener {
|
||||
public class AnalyzePage extends Page implements MiniListener, Disposable {
|
||||
private AnalyzePage ap = this;
|
||||
|
||||
AudioAnalyzer audioAnalyzer;
|
||||
@ -194,12 +195,12 @@ public class AnalyzePage extends Page implements MiniListener {
|
||||
|
||||
songInfo.clear();
|
||||
songInfo.defaults().align(Align.left | Align.top);
|
||||
audioAnalyzer = new AudioAnalyzer();
|
||||
audioAnalyzer.sender.addListener(this);
|
||||
|
||||
this.music = music;
|
||||
|
||||
audioAnalyzer.startAnalyticalThread(music);
|
||||
audioAnalyzer = new AudioAnalyzer(music);
|
||||
audioAnalyzer.sender.addListener(this);
|
||||
|
||||
|
||||
songInfo.add(new ScrollText(audioInfo.getSongName(), skin, true)).expandX().fillX().spaceBottom(20f);
|
||||
|
||||
for (int i = 0; i < info.length; i++) {
|
||||
@ -311,4 +312,12 @@ public class AnalyzePage extends Page implements MiniListener {
|
||||
public GamePlayMap getMap() {
|
||||
return mapGenAlgorithm.getMap();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
if (audioAnalyzer != null) {
|
||||
audioAnalyzer.stop();
|
||||
audioAnalyzer = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,10 +5,11 @@ import com.badlogic.gdx.scenes.scene2d.Group;
|
||||
import com.badlogic.gdx.scenes.scene2d.Touchable;
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.Label;
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
|
||||
import com.badlogic.gdx.utils.Disposable;
|
||||
|
||||
import zero1hd.rhythmbullet.util.MiniSender;
|
||||
|
||||
public class Page extends Group {
|
||||
public class Page extends Group implements Disposable {
|
||||
private Label pageTitle;
|
||||
|
||||
public MiniSender miniSender;
|
||||
@ -31,4 +32,8 @@ public class Page extends Group {
|
||||
public float getHeightBelowTitle() {
|
||||
return pageTitle.getY();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user