The past year I’ve not done much with Soundcollider. All the extra, unwanted, noises “it” makes started to annoy me. So I postponed using it until I could get a new machine. I thought the old one (12 years) was the problem. Now, with an i9-12900, 32Gb, Win11 pro, the sounds are still there.
So, what is the cause? A demo code below, it uses 20%.
There are little clicks, cracks. These can be seen in the spectrum scope. The output from the synth is limited to 1500Hz by nature of what I made. When it clicks the right leg of the graph kicks up. Sometimes just a little. Sometimes a lot with “noise” on it.
As it is seen in the scope I doubt it has anything to do with the sound device UMC404HD (latest driver, v5.30.0). Switching from the ASIO driver to using WASPI changes nothing, as I expected.
Using different settings for the numOutputBusChannels
(2, 4), hardwareBufferSize
, numWireBufs
, blockSize
, sampleRate
, or the bit-depth through the OS didn’t change a thing.
I tried the LeakDC
and Intergrator
in the scene file with no avail.
Is it something in Windows?
Is it something in Supercollider?
Is it how I write the code?
TIA,
ingo
(
~shuheiKawachi = {
arg x, y, a, b;
((cos(x) * cos(y))
+ (cos((sqrt(a) * x - y) / b)
* cos((x + (sqrt(a) * y) ) / b))
+ (cos(( sqrt(a) * x + y) /b)
* cos((x - (sqrt(a) * y*y)) / b))); // /3;
};
)
(
/*
Major circle 'sweeps' minor circle through xy-space.
Minor circle samples the function on 'segments' points.
These values are amplitudes for DynKlang.
*/
Ndef.new(\circSegs, {
arg segments = 50
, xMajor = 0.0
, yMajor = 10.0
, rMajor = 30.1
, rMinor = 0.1
, circlefreq = 0.0001 //1.0
;
var arr, grey, xMinor, yMinor, freqs, amps, phase;
freqs = Array.exprand(50, 50, 1500).sort; //segments?
phase = #[0.0]!50; //segments?
amps = Array.new; //set max segments?
xMinor = xMajor + (rMajor * SinOsc.ar(circlefreq));
yMinor = yMajor + (rMajor * SinOsc.ar(circlefreq, pi/2));
amps = Array.fill(
50, //segments?
{
arg seg;
x = xMinor + (rMinor * sin(seg*2*pi/segments));
y = yMinor + (rMinor * cos(seg*2*pi/segments));
grey = ~shuheiKawachi.(x, y, 2*pi, 0.5);
grey = Wrap.ar(grey, 0, 1)/segments;
grey
}
);
d = DynKlang.ar(`[freqs, amps, phase]);
//d = Integrator.ar(d, 0.3, 1.0, 0.1);
//d = LeakDC.ar(d);
Out.ar(0,d!2)
});
)
Ndef(\circSegs).clear;