Hello there,
I am using fmod4java to get the spectrum of a soundstream I’m playing. I have initialized fmod, activated the dspunit, set a soundstream to play an mp3. The Spectrum type DspUnit.GetSpectrum() returns, however, is “empty”, i.e. it is full of 0.0… Does anyone have an idea what I’m doing wrong?
This is the code (which is not complete, comments, other classes and debugging left out)
private void initFMOD() {
try {
FMOD.init(44100, 32, 0);
activeSoundStream = SoundStream.open("everyday.mp3", Mode.SW2D, 0, 0);
DspUnit.getFFTUnit().setActive(true);
activeChannel = activeSoundStream.playEx(Channel.FREE, DspUnit.getFFTUnit(), false);
activeChannel.setVolume(255); // Just in case
dspTimer = new Timer(1000, this); // No need to rush it now
dspTimer.start();
updateFFT();
} catch (FMODException error) {
System.out.println("FMODException: "+error);
}
}
public void updateFFT() {
Graphics g = w_oPanel.getGraphics();
g.setColor(Color.WHITE);
dspSpectrum = DspUnit.getSpectrum();
float bands = 0;
for(int i=0;i<511;i++) {
bands += dspSpectrum.getBand(i); // This doesn't make bands useful, but shows it contains 0.0 after adding all getBands
}
g.drawString(""+bands, 150, 150); // Draws 0.0
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == dspTimer) {
updateFFT();
}
}