SuperCollider : TempsLogiqueTempsPhysique

SuperCollider :: Categories :: PageIndex :: RecentChanges :: RecentlyCommented :: Login/Register
Le Temps< Index > Routines


Temps logique, temps physique


soit:
s.sendBundle(temps, {... fonction pour le serveur...})

le temps de latence donné en argument sera parfaitement respecté si:

latence donnée en argument > ( temps de processing + temps d'envoi du message sur le réseau + latence de l'interface audio)


Par exemple:
SynthDef(\sinGrain, { |freq = 440, amp = 0.4, bus = 0|
OffsetOut.ar(bus, SinOsc.ar(freq, 0, amp) * EnvGen.kr(Env.perc(0.01, 0.1), doneAction: 2));
}).send(s);

(
s.makeBundle(5, { Synth(\sinGrain) }); //temps logique : 5 secondes

{ (1..5000000) + 1; }.bench; //un calcul quelconque nécessitant des ressources du cpu (bench donne le temps passé à l'effectuer)

s.makeBundle(5, { Synth(\sinGrain, [freq: 880, bus: 1]) }); //un nouvel envoi, avec le même temps logique (5s.)
)

Le second message est envoyé quelques secondes après le premier, mais les deux notes sonnent rigoureusement en même temps.

On peut donc lancer plusieurs threads portant le même temps logique, un après l'autre, ils seront synchronisés au final.

! Sil la latence donnée en argument n'est pas suffisante, on a en retour le ou les messages "late x.yyyyy" ; rien ne garantit plus dans ce cas la synchronisation des évenements.

There are no comments on this page. [Add comment]

Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by Wikka Wakka Wiki 1.1.6.3
Page was generated in 0.1084 seconds