This is a very common issue (at least i've had this problem quite a few times!). What you need to do is to make sure that your signal never goes over 100db (or 1 in audio terms in Pd) on his way to the output.
For instance, just before each of your [throw~] objects, you could put a [*~ 0.5]. That would reduce the "volume" considerably.
You have to keep in mind that whenever you add audio channels together (like for instance when all of your catch~'s end up into your dac~), the general volume increases. If it goes beyond 1, you will hear a distortion, no matter whether the volume of your speakers is high or not.
So what i would do is something like this:
|
|
[*~ 0.5]
|
[throw~]
[catch~]
|
everytime you have a throw/catch couple, and something like this before the output:
|
| [vsl]
| |
| [pack 0 10]
| |
| [line~]
| |
| /
[*~]
|
[dac~]
the vsl thing is a vertical slider, which to can set to range from 0 (volume turned all the way down) to, say, 5.
You can then adjust the value by which you multiply your audio signal before the throw~ (0.5 might be too high or too low depending on your signal).
In general, you shouldn't move your volume slider above 1. But if your signal is too weak in the end due too multiplying each channel by 0.5, you may want to raise it to a reasonable value (which implies moving the slider beyond 1).
Hope this helps.