[chuck-users] Heavy distortion/clipping in Windows (Kassen)

Marc Evans marc.p.evans at gmail.com
Fri Mar 13 19:26:45 EDT 2015


Just to reinforce Kas's point:

Recently, I had an experience using headphones with ChucK on my mac where I
had an improperly set filter value, and it blew up in my ears. Before
trying the code, I had set the volume on my mac to the lowest setting, but
as Kas and others have explained, when you multiply 0.01 by 10^30, you get
10^28 (figures approximate...), so it's basically giving you the loudest
possible sound on your computer, even if you've set your volume as low as
possible.

My ears seem to be fine, but I was pretty rattled by the experience.
Talking to a friend about it, he mentioned that he knew someone who really
destroyed her hearing in one ear playing with filters in MAX.

>From now on, I'm going to be using this code, and inserting one of these
before my DAC whenever I use chuck:

class HardLimit extends Chugen {

    2 => float limit;

    fun float tick(float in) {

        return Math.min(Math.max(in, -limit), limit);

    }

    fun float setLimit(float limit) {

        limit => this.limit;

    }

}


I think this is a serious issue for mac users and that it should be
addressed in the next build. My suggestion is to have a parameter of the
dac ugen called dac.limit, which is automatically set to 2 or 3 or so, and
which acts as a hard limit applied to the audio data going into the dac. A
user could set their own limit or set it to -1 or something to indicate no
limit. But I think the default should be something that will not destroy
anyone's hearing. :-)


Marc




On Thu, Feb 26, 2015 at 5:33 AM, Kassen <signal.automatique at gmail.com>
wrote:

> Hey, Robert!
>
> On 26 February 2015 at 06:50, Robert Poor <rdpoor at gmail.com> wrote:
>
>> On Wed, Feb 25, 2015 at 11:18 AM, Kassen <signal.automatique at gmail.com>
>>  wrote:
>>
>>>
>> > [on windows] turning down the volume to a comfortable level won't help
>> against that explosion
>>
>> Are you saying there's no way to turn down the *output* of the DACs?
>>
>>
> Let me first clarify; where you wrote "[on Windows]" I meant in systems
> using a floating point internal sound router. In our case that is really
> only OSX.
>
> Clearly you can turn the dac up or down using dac.gain( float).
>
> What I meant is that we have some sort of issue in our code that sends a
> signal with a huge amplitude, let's assume some signal with 10 digits worth
> of amplitude, it is hard to turn that down in a meaningful way. If we set
> the dac's gain to 0.1 then there will still be 9 digits worth of amplitude
> left; still orders of magnitude louder than what our hardware can deal
> with.
>
> Under normal conditions we would not make such a mistake, but runaway
> feedback, such as we might encounter in a unstable filter, will rapidly
> approach the max of what can be expressed in double-precission floats.
>
> There ways to deal with that. We could use a limiter or clipper. You can
> also use a external hardware gain and leave your system volume at 100%.
>
> I hope that clarifies how I believe it all works. If you are on Windows or
> Linux I don't believe this will matter to you, sorry if I was unclear there.
>
> Yours,
> Kas.
>
> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>
>


-- 
Marc Evans
PhD Student in Music Composition at UCSB
Stanford BA '10, Music; MA '11, Music, Science and Technology
www.marcevansmusic.com

"We are here on Earth to do good to others. What the others are here for, I
don't know."
    --W. H. Auden
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cs.princeton.edu/pipermail/chuck-users/attachments/20150313/1f2d0c72/attachment.html>


More information about the chuck-users mailing list