0
0

Hello everyone,

I am a newbie to FMOD but I have audio playback working for mp3s.

I am writing a Smartphone 2003 application and would like to perform simple equalization on the audio stream.

I found a post in which Brett described the procedure for writing an EQ using the DSP interface (my only option since FSOUND_FX isn’t supported on Smartphone), and I just do not understand what values I should be plugging in. Can someone help me with the variables in Brett’s description, what they mean, and where I can get these values, your help will be greatly appreciated.

Thanks,
Will


Brett’s post

To write an equalizer, i recommend the following link and look up ‘Band pass filter’ or ‘BPF’ in this link
http://www.harmony-central.com/Computer … okbook.txt

To process fmod’s data, use a DSP callback. This is how you can get a chunk of audio data (in the mixer’s format, ie 16bit stereo) and filter it.

For FMOD Ex’s EQ I use the constant 0db peak gain BPF with

alpha = sin(w0)*sinh( ln(2)/2 * BW * w0/sin(w0) ) (case: BW)

This allows the user to specify a center frequency, and a bandwidth value in semitones, then i just interpolate between the filtered signal and the original signal to get a 0 to 1 level for the bandpass filter.

With 5 of these filters running at once at about 1 octave apart, you can have a 5 band equalizer.

  • You must to post comments
0
0

Hi Brett,

I have the Peaking EQ filter written using the Audio Cookbook.

Now I have another question.

When using the FSOUND_DSP_Callback function, there are two parameters I have a question about, originalBuffer and newBuffer.

Should I execute each EQ filter against the original buffer parameter for each of the various frequencies and then sum them up into the newBuffer parameter?

Or should I make it a running total and execute each filter against the value calculated from the previous filter?

For instance:

newBuffer[x] =
31hzFilter * originalBuffer +
62hzFilter * originalBuffer +
// … ;

or

newBuffer[x] =
(31hzFilter * originalBuffer) +
62hzFilter * (31hzFilter * originalBuffer) +
// …;

Your help will be greatly appreciated.

Thanks,
Will

  • You must to post comments
0
0

Can anyone reply to this?

I am just asking question in regard to equalization, am I on the right track?

Thanks,
Will

  • You must to post comments
Showing 2 results
Your Answer

Please first to submit.