Re: supernova sample-based scheduling bug?

[email protected] Mon, 10 May 2021 15:31:27 +0200
Newsgroups gmane.comp.audio.supercollider.user
Message-ID <[email protected]>
The thing is, even if Supernova is using the sample clack, the sclang 
client always uses the NTP system time. I think, true sample accurate 
scheduling only works between bundles scheduled at the same logical time 
in the client.

For example,

(
var delta = s.options.blockSize / s.sampleRate;
100.do { | i |
s.makeBundle( s.latency + (i * delta), { Synth( "test_playtrig" ) });
}
)

should yield sample accurate results on Supernova (using the sample 
clock). The bundles all share the same time base (= the current logical 

time) to which the individual delay is added.

Generally, arbitrary sample accurate scheduling between different 
applications is just not possible without sharing a common time source.

Christof

On 10.05.2021 14:58, [email protected] wrote:
> Hi list,
>
> I'm investigating the possibilities of supernova sample based scheduling (which seems to be the default setting), but I get unexpected results that lead me to believe that there is something wrong with it. I'm using the patch below to measure where the scheduled synths fall within the control frame, using OffsetOut. The idea is to schedule a trigger at every control frame and return its position in the block. The phasor is set to run from 0 to 63 in every control cycle, and the trigger is sent from another synth using OffsetOut to make sure it uses the correct timing. Now, this produces a stream of numbers in the post window, which theoretically should stay the same at all time (basically an arbitrary number between 0 and 63). But, in fact, the number changes every ±15 seconds. In some 
runs it seemed to alternate between two numbers, and then drifting a bit to numbers nearby. To my understanding I'm using logical time to schedule 
triggers at distinct sample counts, so it should actually be the same number forever (even though the sample clock will drift away from the SystemClock). But it looks a bit as if supernova is re-synchronizing to the SystemClock at an interval of about 15 seconds. Is this the case? And if yes, could this be changed so that it really uses logical time (perhaps with 
a manual way to re-sync to System time)? Btw I tried this on macos 10.14.6 with built-in audio, with Dante DVS and with a RME FireFace 800 as interface, all with the same results, SC version 3.11.2.
>
> (
> SynthDef( "test_sendtrig", {
> 	var in, ramp;
> 	in = In.ar(0);
> 	ramp = Phasor.ar(0, 1, 0, 64); // measure position in control frame
> 	SendTrig.ar( in, 0, Latch.ar( ramp, in ) );
> }).load;
>
> SynthDef( "test_playtrig", {
> 	OffsetOut.ar( 0, Impulse.ar( 0 ) );
> 	FreeSelf.kr( Impulse.kr(0) );
> }).load;
> )
>
> (
> OSCFunc({ |...args| args[0][3].postln }, '/tr' );
> s.makeBundle( 0.2, { Synth.tail(s, "test_sendtrig" ) });
> {
> 	inf.do({
> 		s.makeBundle( 0.2, { Synth( "test_playtrig" ) });
> 		(s.options.blockSize / s.sampleRate).wait;
> 	});
> }.fork;
> )
>
> cheers & thanks,
> Wouter
> _______________________________________________
> sc-users mailing list
>
> info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
> archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
> search: http://www.listarc.bham.ac.uk/lists/sc-users/search/


_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.birmingham.ac.uk/facilities/ea-studios/research/supercollider/mailinglist.aspx
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/