Fellow Chuckists, "Delay" definately has a floatingpoint denormalisation issue (well, either Delay or Envelope). My feedbackloop went something like this; soundsource => Delay del => dac; del => Envelope feedback => del: .9 => feedback.gain; In this form it has to loop for quite a while before the issue shows up in cpu usage and it will probably be most evident in situations where other Ugens are also using floatingpoint opperations. A smaller value then .9 for the gain should speed up the phenomenon. In my case my "soundsource" had filled the Delay with sound, then went quiet, after some time the CPU meter rose fairly sharply, because of the controll using HID that I had over the feedback envelope I could make the CPU usage go down again with one switch, meaning I'm absolutely positive it was this loop that was to blame. This is on Windows, using the unnoficial ASIO build that Philippe posted, delay time was around one second or so, neither of which should matter that much. Kas.
Hi Kassen!
"Delay" definately has a floatingpoint denormalisation issue (well, either Delay or Envelope).
My feedbackloop went something like this;
soundsource => Delay del => dac; del => Envelope feedback => del: .9 => feedback.gain;
I wasn't able to reproduce the denormalization symptoms even with a much smaller feedback gain (.1 and .001), and looking through the code for Delay and Envelope didn't raise any immediate red (or orange) flags. However, the gain on the Envelope itself is an unchecked multiplicant. I've added the check to de-denormalize on that gain, which means it should affect all UGen.gain. Hopefully this will keep things under control. The fixed version is in CVS. Rock on. Best, Ge!
On 8/7/07, Ge Wang
Hi Kassen!
Hi Ge, long time no read, hope you are well!
I wasn't able to reproduce the denormalization symptoms even with a much smaller feedback gain (.1 and .001), and looking through the code for Delay and Envelope didn't raise any immediate red (or orange) flags.
That's odd, I was able to spike the CPU, then take it out again with a HID command so I would be very surprised if that CPU spike came from anything else. Also; I didn't see any spikes at all untill I added this delay/ envelope combo to my code. Perhaps my Pentium4 deals with this matter differently then your Mac? This would be a issue where CPU architecture matters quite a bit, I imagine. However, the gain on the Envelope itself is an
unchecked multiplicant. I've added the check to de-denormalize on that gain, which means it should affect all UGen.gain. Hopefully this will keep things under control. The fixed version is in CVS.
Ok. Then I'll keep this code like this and get into the habbit of manually switching off the feedback every once in a while and see wether the update fixes this. BTW, I don't think I saw a reply from you on those issues (from a while back) with array instantiations and larger arays of Ugens in classes yet, did you perhaps find some time to look into those as well? Thanks, Kas.
participants (2)
-
Ge Wang
-
Kassen