I still think it would be helpful to see the Pd test that @eckel is running.
There is a suggestion in this thread that SuperCollider is performing worse than something in Pd, but it hasn’t been established that these two scenarios are comparable.
I just tried to set up two scenarios that I know to be compatible.
Pd:
On my machine, with the performance governor, and the built-in sound card at 256 samples:
- 4000 sines = 70% CPU = quite glitchy.
- 3500 sines = 62% CPU = mostly OK but still some occasional glitches in the audio.
Also, with 4000 sines, JACK’s xrun count does not increase with audible glitches. This makes sense, since Pd’s audio callback is not calculating the audio.
This means, among other things, that it may not be meaningful to say “Pd can go up to 93% CPU without xrun-ning.” Because of Pd’s design, it seems to me you’d get audio glitches before you get xruns (and that’s what happened on my machine).
SC:
(
SynthDef(\sin10, { |out|
Out.ar(out,
(SinOsc.ar(
NamedControl.kr(\freq, Array.fill(10, 440))
).sum * 0.005).dup
)
}).add;
)
n = Array.fill(400, { Synth(\sin10, [freq: Array.fill(10, { exprand(200, 800) })]) });
n.do(_.free);
4000 sines in SC clocks in at about 45% CPU. It glitches occasionally – I think slightly less often than Pd, but it’s hard to quantify that. In terms of audio glitches, they are basically neck and neck.
So my result is: on an Ubuntu-Studio-tuned system, with benchmarking cases that are designed to be as close to identical as possible, I can run roughly the same amount of DSP in both Pd and SC. The CPU numbers are reported differently, but the only thing that really matters is how much DSP can I get away with.
I think we have not ruled out the possibility that the initial results posted here were from an invalid test design.
hjh