Author |
Message |
Kenneth

Joined: Apr 16, 2009 Posts: 43 Location: Stockholm, Sweden
|
Posted: Thu Apr 16, 2009 6:40 am Post subject:
Easy filter (software) |
 |
|
I have used computers to create "samples" for like 20 years. ATARI ST and ST Replay (8 bit mono sampler/player) was the first hardware I used, later Amiga and then PC's.
I don't have a clue what others use but I got a number of nice things I can share, first it will be my filter.
sample = Function_sinus(phase) .... returns the phase of a sinus, a float in the range -1 to 1, the ocillator I use in this example.
Then do this to the sample:
x = |sample| ... the absolute value (0-1)
s = SGN(sample) ... returns the sign of the sample (-1 or 1)
x = x^Q ... the actual filter where Q is the setting of the filter, 0-1 lowpass, 1-whatever higpass (values between 0.25 and 100 are useful, 1 is = no filter effect)
Then last
sample = x*s ... restores the sign of the sample.
Is that useful for anyone? |
|
Back to top
|
|
 |
DrJustice

Joined: Sep 13, 2004 Posts: 2114 Location: Morokulien
Audio files: 4
|
Posted: Thu Apr 16, 2009 8:36 am Post subject:
Re: Easy filter (software) |
 |
|
Kenneth wrote: | Is that useful for anyone? |
Yes, this is a very useful technique
It isn't a filter tough, but rather a transfer function, or as we say in synth speak a 'waveshaper'.
This particular function, y = x^c, is often used as a soft clipper. When c = 1, the signal passes unaltered as you have observed, and as c approaches zero we get more (harder) clipping and the signal becomes more and more like a square wave. (I changed the Q to a c, so as not to confuse it with a filters Q factor, and instead c is our waveshaper 'coefficient' in the range 0-1).
In an actual filter, the output value depends on previous input values. A very simple first order lowpass filter looks like:
y(n) = x(n) + c * (y(n-1)-x(n))
where n is the sample number and c is the filter coefficient which determines the cutoff frequency. For each sample you calculate this filter and save y, then use y again it for the next sample. To find c use:
exp(-2.0*PI*(fc/fs))
where fc is the desired cutoff frequency and fs is the samplerate.
DJ
-- |
|
Back to top
|
|
 |
Kenneth

Joined: Apr 16, 2009 Posts: 43 Location: Stockholm, Sweden
|
Posted: Thu Apr 16, 2009 9:11 am Post subject:
|
 |
|
Thanks for the reply.
Waveshaper, yes, that makes sence. But if you use it like I do, directly after the ocillator and after that you do envelop, then it sounds wery much like a filter, that's why I always thought of it as a filter
As I said, I always used my own stuff and have no clue of how to do it the "proper" way, but of course, I can learn if I need to. If I understood what you wrote a real filter is iterative. I have worked a lot with fractals so I understand iteriation well. Your filter function looks a lot like a fractal function... Hmm, maybe it is possible to create a fractal from it?  |
|
Back to top
|
|
 |
DrJustice

Joined: Sep 13, 2004 Posts: 2114 Location: Morokulien
Audio files: 4
|
Posted: Thu Apr 16, 2009 10:41 am Post subject:
|
 |
|
Kenneth wrote: | Waveshaper, yes, that makes sence. But if you use it like I do, directly after the ocillator and after that you do envelop, then it sounds wery much like a filter, that's why I always thought of it as a filter  |
The sound can sometimes remind of filtering, but the major difference is that a transfer function will introduce different harmonics in the signal, whereas a filter can only amplify or attenuate the harmonics that are already in the signal. This distinction is very important. E.g. in practise a filter can not introduce aliasing, but (non bandwidth limited) waveshaping will do so.
Quote: | As I said, I always used my own stuff and have no clue of how to do it the "proper" way, but of course, I can learn if I need to. If I understood what you wrote a real filter is iterative. I have worked a lot with fractals so I understand iteriation well.
|
You've got that right!
Quote: | Your filter function looks a lot like a fractal function... Hmm, maybe it is possible to create a fractal from it?  |
Not quite, but fractals are very useful in musical applications, both for waveform generation and composition. Armed with the stuff you now know, waveshaping, fractals and filtering, you can do a lot of interesting synthesis and processing.
DJ
-- |
|
Back to top
|
|
 |
Kenneth

Joined: Apr 16, 2009 Posts: 43 Location: Stockholm, Sweden
|
Posted: Thu Apr 16, 2009 12:34 pm Post subject:
|
 |
|
DrJustice wrote: | Quote: | Your filter function looks a lot like a fractal function... Hmm, maybe it is possible to create a fractal from it?  |
Not quite, but.. |
lol
Change it to this:
Iteriation loop
{
x(n) = 2 * y(n-1) * x(n-1) + a
y(n) = x(n-1) + b * (y(n-1)-x(n-1))
}
Now I'm sure it will make a fractal, maybe not any good stuff but fractal
If my HD's did not break one after the other I would have got a number of tools for creating sounds... but they are all lost by now I think (and I do not know where to look if there are any still alive, it was some years ago now).
Here I got some of my fractal works:
http://commons.wikimedia.org/wiki/User:Solkoll
http://commons.wikimedia.org/wiki/Template:Solkoll_2D
http://commons.wikimedia.org/wiki/Template:Solkoll_3D |
|
Back to top
|
|
 |
|