New to DSP, want to build an audio effect filter

Status
Not open for further replies.

alexmedkex

Newbie level 2
Joined
Jun 12, 2013
Messages
2
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Visit site
Activity points
16
Hi all,

I am a computer engineering student who recently took a course on signal processing. I found it very interesting, but the course mainly focused on the mathematics and theory without any physical application. I now want to experiment and try to build some kind of filter on my own. I thought about creating a delay effect, but I don't know how to do it on a circuit level. Does anyone know of anywhere I can find information about this? I googled around and, to my surprise, couldn't find much of interest. Is delay even easy to build? If not, could you recommend any effect that is?

Thank you in advance!
 

Is delay even easy to build?
Of course it is. If your course had any impact, you should be able to build it from the scratch, just considering the nature of a delay, without consulting the internet.

In computer terms, consider a FIFO or a circular buffer.

You can find literature about more sophisticated audio effects on the internet and as printed books, first of all there's the outstanding DAFX by Udo Zoelzer.
 

Of course it is. If your course had any impact, you should be able to build it from the scratch, just considering the nature of a delay, without consulting the internet.

Didn't know this was the forum for elitists only, sorry for disturbing your excellent mind!
 

Surprisingly, making simple filters DSP style is surprisingly easy, the easiest way to do this is probably:

Output = (1-Cut)*Output + Cut*Input

Where Input is between -1 and 1 and Cut is between 0 and 1 (cutoff).

All that is actually happening here is that the output is equal to a portion of the old output signal and the new input signal. Plugging in a few values makes this easier to see.

Say your input is the array: 0 1 1 1 1

Putting this into the filter above will give us the output values for 5 runs through the filter

Initially:
Output = 0
Cut = 0.5

0.5*0 + 0.5*0 = 0
0.5*0 + 0.5*1 = 0.5
0.5*0.5 + 0.5*1 = 0.75
0.75*0.5 + 0.5*1 = 0.875
0.5*0.875 + 0.5*1 = 0.9375

As you can see, the filter has "slowed down" the rate of change of the values in the array instead of going from 0 directly to 1, it will never actually reach 1 but will get there eventually.

Large values of C will give no cutoff, where small values will give more cutoff.

Depending on what you're using to calculate this filter, you may see that using the above formula uses two double calculations, by doing simple algebraic rearranging, you can cut this down to just one double calculation:

Output = Output + Cut*(Input - Output)

The above gives a low pass filter. To get a High pass filter, you just do the input - the lowpass function

HPOut = Input - Output
 

Status
Not open for further replies.

Similar threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…