Yeah, I know there's a bit of clipping.
I think it's because I'm summing what amount to a bunch of normalized
random data -- so some of those sums end up outside -1 < x < +1,
though I do normalizing steps between sums, so... I don't know exactly
where the clipping is coming from -- I think it's coming from my "poor
man's reverb" effect, which, that thing should probably be replaced with
something better and faster, but... like I said, I don't know JACK
about DSP, I'm just playing around with my computer and my compiler and
my soundcard.
Best thing ever would be to send me a patch!
-- steve
________________________________
From: Jeremy Salwen <jeremysalwen(a)gmail.com>
To: Stephen Cameron <smcameron(a)yahoo.com>
Cc: "linux-audio-user(a)lists.linuxaudio.org"
<linux-audio-user(a)lists.linuxaudio.org>
Sent: Friday, October 28, 2011 9:09 PM
Subject: Re: [LAU] Explodomatica - explosion sound effect generator
Very cool. I was playing around with it. I do have one suggestion though: It seems you
are introducing unwanted artifacts due to clipping.
First, you probably don't want clipping. However, it is showing up, even in your demo
samples.
Second, you might want clipping (Probably we've ingrained digital clipping in our
perception of explosion sounds), but if you do, you're not clipping in the right way.
I haven't looked at your code, but because I had the exact same symptoms while using
libsndfile, I'm guessing that what you are doing is feeding libsndfile floats with
values >1 or <-1. If you want proper clipping, these samples would be pulled to the
closest value within the range [-1,1]. However, due to performance reasons (I'm
guessing), this is not what libsndfile does, but instead it wraps around. So 1.1 will be
interpreted as the amplitude of -0.9.
Here's what it looks like:
http://i.imgur.com/sselM.png
That image is from demo0.wav. This causes the "clicking" artifacts you hear in
the file. In order to fix this, just go through and find any samples > 1 and replace
them with 1, and similarly with -1, right before you write the data out with libsndfile.
This should give you proper "chopped peaks" clipping. Or, if you don't want
clipping at all, just calculate the max amplitude and divide every sample by it before
outputting.
Good luck and thanks,
Jeremy
On Fri, Oct 28, 2011 at 2:05 PM, Stephen Cameron <smcameron(a)yahoo.com> wrote:
I made a little explosion sound effect generator, the idea being to help out people
looking for such things for making video games, and so on. It relies on portaudio,
libsndfile, and gtk2.
I don't really know what I'm doing when it comes to DSP, so probably some of you
will laugh when you see my algorithms. But it does more or less make explosion sounds.
It's here:
http://smcameron.github.com/explodomatica
Enjoy
-- steve
_______________________________________________
Linux-audio-user mailing list
Linux-audio-user(a)lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-user