began work on integrating analysis system, cleaned up audio system

This commit is contained in:
2017-05-12 15:58:44 -05:00
parent cc2d9329b5
commit dce73a662f
15 changed files with 171 additions and 297 deletions

View File

@@ -213,8 +213,8 @@ public class AudioAnalyzer {
overlappedBeats.shrink();
}
public void startAnalyticalThread(final AudioData audiofile) {
public void startAnalyticalThread(AudioData audiofile) {
audioPCM = new float[audiofile.getReadWindowSize()];
fftData = new float[audiofile.getReadWindowSize()];
spectrum = new float[(audiofile.getReadWindowSize()/2)+1];
lastSpectrum = new float[(audiofile.getReadWindowSize()/2)+1];

View File

@@ -3,7 +3,6 @@ package zero1hd.polyjet.audio;
import javax.sound.sampled.AudioFormat;
import com.badlogic.gdx.audio.Music;
import com.badlogic.gdx.files.FileHandle;
public interface AudioData {
/**
@@ -18,11 +17,6 @@ public interface AudioData {
*/
public int getReadIndex();
/**
* Sets the current audio file
*/
public void setAudioFile(FileHandle setAudio);
/**
* Completely resets the current audio data. Think of pooling, except, only one instance which is reused instead of multiple.
*/

View File

@@ -23,22 +23,6 @@ public class Mp3AudioData implements AudioData {
public Mp3AudioData(FileHandle setAudio) {
setAudioFile(setAudio);
}
@Override
public void readIndexUpdate() {
readIndex = (int) (playbackMusic.getPosition() * audioFormat.getSampleRate() / readWindowSize);
}
@Override
public int getReadIndex() {
return readIndex;
}
@Override
public void setAudioFile(FileHandle setAudio) {
reset();
try {
audStream = AudioSystem.getAudioInputStream(setAudio.file());
@@ -51,7 +35,17 @@ public class Mp3AudioData implements AudioData {
playbackMusic = Gdx.audio.newMusic(setAudio);
}
@Override
public void readIndexUpdate() {
readIndex = (int) (playbackMusic.getPosition() * audioFormat.getSampleRate() / readWindowSize);
}
@Override
public int getReadIndex() {
return readIndex;
}
@Override

View File

@@ -10,7 +10,6 @@ import com.badlogic.gdx.audio.Music;
import com.badlogic.gdx.files.FileHandle;
import zero1hd.wavedecoder.WavDecoder;
import zero1hd.wavedecoder.WavInfo;
public class WavAudioData implements AudioData {
private int readWindowSize = 1024;
@@ -18,15 +17,24 @@ public class WavAudioData implements AudioData {
int readIndex;
Music playbackMusic;
WavDecoder decoder;
WavInfo wavinfo;
public WavAudioData(FileHandle audioFileHandle) {
setAudioFile(audioFileHandle);
public WavAudioData(FileHandle file) {
reset();
try {
decoder = new WavDecoder(file);
decoder.initDataStream();
decoder.getHeaderInfo();
} catch (InvalidParameterException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
playbackMusic = Gdx.audio.newMusic(file);
format = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, (float) decoder.getSampleRate(), 16, decoder.getChannels(), decoder.getChannels()*2, (float) decoder.getSampleRate(), false);
}
@Override
public void readIndexUpdate() {
readIndex = (int) (playbackMusic.getPosition() * wavinfo.getSampleRate() / readWindowSize);
readIndex = (int) (playbackMusic.getPosition() * decoder.getSampleRate() / readWindowSize);
}
@Override
@@ -34,23 +42,6 @@ public class WavAudioData implements AudioData {
return readIndex;
}
public void setInfo(WavInfo wavinfo) {
this.wavinfo = wavinfo;
}
@Override
public void setAudioFile(FileHandle audioFileHandle) {
reset();
try {
decoder.setAudioFile(wavinfo);
} catch (InvalidParameterException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
playbackMusic = Gdx.audio.newMusic(audioFileHandle);
format = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, (float) wavinfo.getSampleRate(), 16, wavinfo.getChannels(), wavinfo.getChannels()*2, (float) wavinfo.getSampleRate(), false);
}
@Override
public void reset() {
if (playbackMusic != null) {