Most recent edit on 2007-07-12 15:56:46 by SuperCollider
Additions:
Synth(\tic, [\note, 36+[0, 3, -6].choose, \amp, 1.5]);
Synth(\tic, [\note, 72+[0, 3, 4, 11, 10, 12, 14, 17, 18].choose, \amp, 0.2.rand]);
u.schedAbs(0, { Synth(\tic, [\note, rrand(61.8,67.5)]); 0.25 });
v.schedAbs(0, { Synth(\tic); 0.25 });
Deletions:
Synth(\bleep, [\note, 36+[0, 3, -6].choose, \amp, 1.5]);
Synth(\bleep, [\note, 72+[0, 3, 4, 11, 10, 12, 14, 17, 18].choose, \amp, 0.2.rand]);
u.schedAbs(0, { Synth(\bleep, [\note, rrand(61.8,67.5)]); 0.25 });
v.schedAbs(0, { Synth(\bleep); 0.25 });
Edited on 2007-07-12 15:51:50 by SuperCollider
Additions:
~- utilisée pour les interfaces graphiques
Edited on 2007-07-04 18:47:06 by SuperCollider
Additions:
Buffers< Index > Temps logique, temps physique
la gestion du temps est tributaire de la structure client/serveur de sc
Buffers< Index > Temps logique, temps physique
Deletions:
la gestion du temps est tributaire de la structure client/serveur de sc
Edited on 2007-05-31 11:57:35 by SuperCollider
Additions:
t = TempoClock(2); horloge à 120bpm (2 pulsations par secondes)
Deletions:
t = TempoClock(2); make a new tempoclock at tempo 120 bpm = 2 beats per second
Edited on 2007-05-31 11:56:42 by SuperCollider
Additions:
Exemples
Edited on 2007-05-31 11:55:55 by SuperCollider
Additions:
~- si un bundle arrive en retard, le serveur répond avec un message d'avertissement spécifiant ce retard, mais évalue tout de même le contenu du message
(voir Temps logique, temps physique)
Deletions:
~- si un bundle arrive en retard, le serveur réponds avec un message d'avertissement spécifiant ce retard, mais évalue tout de même le contenu du message
(voir TempsLogiqueTempsPhysique)
Edited on 2007-05-31 11:55:02 by SuperCollider
Deletions:
~- utilisation de passage de messages
Edited on 2007-05-31 11:54:41 by SuperCollider
Additions:
la gestion du temps est tributaire de la structure client/serveur de sc
Deletions:
~- la gestion du temps est tributaire de la structure client/serveur de sc
Edited on 2007-05-30 16:13:00 by SuperCollider
Additions:
sendBundle
listSendBundle
makeBundle(time, func, bundle)
Deletions:
sendBundle
listSendBundle
makeBundle(time, func, bundle)
Edited on 2007-05-30 16:12:01 by SuperCollider
Additions:
Deletions:
Scheduler
Oldest known version of this page was edited on 2007-05-30 16:09:51 by SuperCollider []
Page view:
~- la gestion du temps est tributaire de la structure client/serveur de sc
passage de messages au serveur
sendBundle
- utilisation de passage de messages
- aServer.sendBundle(time, args)
- envoie un bundle osc vers le serveur
- le temps spécifié permet au bundle d'être évalué à un point précis dans le futur
- le placement temporel respectif pour les messages est parfaitement respecté à condition que la latence donnée soit suffisante pour les traiter.
- si un bundle arrive en retard, le serveur réponds avec un message d'avertissement spécifiant ce retard, mais évalue tout de même le contenu du message
(voir
TempsLogiqueTempsPhysique)
s.sendBundle(0.2, ["/s_new", "default", x = s.nextNodeID, 0, 1], ["/n_set", x, "freq", 500]);
listSendBundle
- idem, mais collecte les messages dans un Array
makeBundle(time, func, bundle)
- le code inclu dans la fonction est envoyé dans un bundle, prévu pour le temps 'time'
voir
Server∞
Horloges
- horloge du système
- précise, mais ne peut appeler directement les primitives Cocoa (GUI)
- on doit 'deferer' tout appel à des fonctions GUI, dans ce contexte
- moins précise, inutilisable pour des valeurs rythmiques
- basé sur SystemClock
- planification relative à un tempo exprimé en battements par seconde
Scheduler
- planifie des fonctions à évaluer dans le futur
- sorte d'horloge, mais vous avez la main sur l'avancement du temps (offset)
s = Server.local;
s.boot;
// charger d'abord
(
SynthDef(\tic,{ arg note=80, amp=0.5, pan=0.0;
var freq, env;
freq = note.midicps;
env = EnvGen.kr(Env.perc(0.001, 0.1), doneAction:2);
Out.ar(0, Formant.ar(freq, freq*2)!2 * env*0.5*amp)
}).load(s);
)
//la valeur retournée par la fonction incluse sert de valeur temporelle (*delta time*) pour le déclanchement de l'appel suivant
(
SystemClock.sched(2.0,//start at 0.0 sec
{
Synth(\tic);
0.25 //la fonction est évaluée tout les 1/4 de sec.
}
)
)
//valeurs temporelles exprimées en beats
(
var t;
t = TempoClock(2); // make a new tempoclock at tempo 120 bpm = 2 beats per second
t.schedAbs(0, {
Synth(\tic);
1.0 // offset tout les 'temps' (beat)
})
)
////tempoClock
(
t = TempoClock.default;
t.schedAbs(t.elapsedBeats.ceil, // démarre au prochain temps plein
{
Synth(\bleep, [\note, 36+[0, 3, -6].choose, \amp, 1.5]);
[0.25,0.5].wchoose([0.3,0.7]);
})
)
(
t.schedAbs(t.elapsedBeats.ceil, // idem
{
Synth(\bleep, [\note, 72+[0, 3, 4, 11, 10, 12, 14, 17, 18].choose, \amp, 0.2.rand]);
[0.125, 2].wchoose([0.95, 0.05]);
}
)
)
t.tempo_(1.3)//+vite
t.tempo_(0.9)
////
//deux tempos
(
var u,v;
u = TempoClock(3/4);
v = TempoClock(5/4);
u.schedAbs(0, { Synth(\bleep, [\note, rrand(61.8,67.5)]); 0.25 });
v.schedAbs(0, { Synth(\bleep); 0.25 });
)
[
Routines, Task, Condition
Streams, Patterns, Events
le temps sur le serveur
]