fmod 4 java - DspUnit.GetSpectrum returns 0's

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();
	  }
  }

maybe try with a PCM sound file… if it works then convert PCM to mp3 using JLayer API and open the converted PCM to do the work.

WAV files use PCM right? Doesn’t seem to work using a WAV-file.

I don’t know about what your DSPUnit is. But the loop for the Swing graphics display is quite correct, whereever you might add some double-buffering to it.

Yea I know, but I don’t feel like continuing until I figure out how to get the spectrum.