Android equalizer not working with AudioTrack

Tags: ,



I am using android equalizer API to create a high pass filter. But even if I set every band to -1500 it does not seems to work. The audio is playing well but no eq effects. Here is my code.

    private void attachEq(int audioSessionId) {
    Equalizer eq = new Equalizer(100,audioSessionId);
    short[] freqRange = eq.getBandLevelRange();
    short minLvl = freqRange[0];
    short maxLvl = freqRange[1];

    eq.setBandLevel((short) 4,minLvl);
    eq.setBandLevel((short) 3,minLvl);
    eq.setBandLevel((short) 2,minLvl);
    eq.setBandLevel((short) 1,minLvl);
    eq.setBandLevel((short) 0,minLvl);
}

I am getting the audio session-id by

at.getAudioSessionId()

where at is an already initialized AudioTrack. As I said AudioTrack is playing fine but eq doesn’t seem to have any effect.

Edit: Do I have to set band levels before I call at.play() or after? I am doing it before at.play() and it doesn’t seem to work.

Answer

I figured it out! I wasn’t calling eq.setEnabled(true). Now it works!



Source: stackoverflow