Re: supernova sample-based scheduling bug?

[email protected] Sat, 22 May 2021 09:47:22 +0200
Newsgroups gmane.comp.audio.supercollider.user
Message-ID <[email protected]>
It might be an interesting option for some users to have. If you have
time, make a PR!

Am 21.05.2021 um 21:20 schrieb [email protected]:
> Hi Christof,
>
>> Op 20 mei 2021, om 15:58 heeft [email protected]
>> <mailto:[email protected]> het volgende geschreven:
>>
>>
>>> From my own experience with an older patched version of
>>> SuperCollider that could actually schedule at specific sample
>>> indices since the start of the server I know that is possible. Only
>>> one reference point with a time stamp connected to a sample index
>>> was enough to keep sample-sync operation, even over multiple
>>> machines, up for quite a long time with latencies around the normal
>>> 0.2s.
>> I think you were just being lucky. Unless the language scheduler
>> itself is also driven by the audio hardware clock, it will always use
>> a different clock source than the Server and the two clocks will
>> eventually drift.
>>
>> If the client clock is running *faster* than the Server clock, the
>> Server will just slowly accumulate bundles.
>>
>> If the client clock is running *slower* than the Server clock, you
>> will eventually get late bundles. Howerver, using a rather high
>> Server latency (like 0.2s), it takes some time until this happens.
>>
>> So this is still not a universal solution, I think.
>>
> Yes indeed the clocks will drift apart. They drift apart more with
> builtin mac audio than with a properly clocked audio interface, we
> measured. Still the the timing was (and is, as the system using this
> is still running and functional) perfectly sample-sync, the test that
> I posted earlier here would render perfect results for very long
> times. Only when a sample was skipped by the server (for example a cpu
> overload or a hardware failure) it would fail, logically. We actually
> experienced very little clock drift, it was very useable to work with,
> within the 0.2s latency frame. And the system had a simple re-sync
> procedure to be used when the clocks were too far apart. We advised
> users to do that every now and then, and for example at the start of a
> concert, also to be able to detect any hardware issues (which would
> immediately show up as fluctuating sample counts). The main reason for
> making it was the requirement of having two machines working in
> perfect sync, each feeding half of the speakers of a WFS system. But,
> as the patch has aged and I don't know how to port it to current sc
> (it wasn't created by us) I'm looking for alternatives now, so a bit
> disappointed that supernova doesn't do perfect sample-sync, or at
> least not in a very useful manner..
>
> cheers & thanks,
> Wouter
>
>
>> On 20.05.2021 15:20, [email protected] wrote:
>>> Hi Daniel and Christof,
>>>
>>> yes, indeed NTP scheduling is not sample accurate. I had hoped
>>> though that the sampleclock based implementation of supernova could
>>> somehow bypass that problem. Otherwise; why is it there? From my own
>>> experience with an older patched version of SuperCollider that could
>>> actually schedule at specific sample indices since the start of the
>>> server I know that is possible. Only one reference point with a time
>>> stamp connected to a sample index was enough to keep sample-sync
>>> operation, even over multiple machines, up for quite a long time
>>> with latencies around the normal 0.2s. In that case it would predict
>>> the sample index based on time passed since the reference
>>> measurement, and encode that in the bundle timestamp (which was the
>>> patched part of that version). I was hoping that supernova was doing
>>> something like that as well, but perhaps the normal NTP time stamp
>>> resolution is too low for that? Or the bundle timestamp sent with
>>> the messages is not actually based on logical time? Or is it that
>>> SystemClock time != NTP time?
>>>
>>> In any case, it would be very handy, and as far as I can tell also
>>> possible, to have actual sample based timing in SC if somehow actual
>>> sample indices could be sent with OSC messages.
>>>
>>> cheers & thanks,
>>> Wouter
>>>
>>>
>>>
>>>> Op 20 mei 2021, om 00:38 heeft [email protected]
>>>> <mailto:[email protected]> het volgende geschreven:
>>>>
>>>> Hi,
>>>>
>>>> I’ve described this behaviour also here, you can try improve by
>>>> tweaking the hardware buffer size but essentially you can’t get
>>>> around it with dynamic language time base as Christof pointed out.
>>>> You can use NRT though.
>>>>
>>>> https://scsynth.org/t/imperfection-of-language-based-timing/350
>>>> <https://scsynth.org/t/imperfection-of-language-based-timing/350>
>>>>
>>>> Cheers
>>>>
>>>> Daniel
>>>>
>>>>
>>>>
>>>
>