Architecture du serveur <
Index >
Passage de Message
SynthDef
représentation dans le langage d'une définition de la synthèse
- sc-server utilise des définitions de synthèse comme modèle pour la création du graphe [... expliquer graphe ...]
- la méthode .play appliquée à une fonction, utilisée jusqu'ici était juste une facilité, un Synthdef était automatiquement fabriqué en sous-main pour nous
- La Classe SynthDef encapsule la représentation dans le langage d'une définition, et fournit des méthodes pour créer de nouveaux defs, les sauver, ou les envoyer sur le serveur.
-
Envoi au serveur
le SynthDef, pour être utilisé, doit être passé au Serveur.
trois méthodes possibles:
- SynthDef(...).load(s): le synthdef est écrit sur le disque dur, et envoyé au serveur; il est dorénavant disponible pour une réutilsation future, sans besoin de le réenvoyer (il sera disponible sur le serveur même après recompilation)
- SynthDef(...).send(s): le synthdef est envoyé directement au serveur en cours . Pas d'écriture sur le disque.
- SynthDef(...).store: nécessaire pour utiliser l'instrument défini dans le cadre de pattern d'events (voir Patterns)
Fonctions UGen Graph
[
UGen Graph Functions and Special Argument Forms]
- Le cœur d'un def est la fonction définissant le graphe de générateurs (UGens) [ := ]
- décrit l'interconnection des UGens , les entrées et sorties, les paramètres contrôlables
- les arguments de la fonction deviennent des instances de l'objet Control
- ils peuvent avoir des valeurs par défaut, ou être paramétrés au moment de la création du synth sur le serveur
- après la création, ils peuvent êtres contrôlés au travers des méthodes 'set' et 'setn' définies sur l'objet Node, ou avec les messages équivalents n_set et n_setn (messaging style)
trois types d'arguments spéciaux:
initial rate
- commenceant par "i_" (par ex. i_freq)
- ou spécifié par \ir dans les arguments de vitesse (voir plus loin)
- statique, non modulable
- ne peut répondre aux messages /n_set ou /n_map
- économie de cpu
trigger rate
- commenceant par "t_" (ex. t_trig)
- ou spécifié par \tr dans les arguments de vitesse (voir plus loin)
- crée une instance de TrigControl
- crée une impulsion à vitesse de contrôle (control rate), à la valeur donnée
- utilisé pour les triggers
litteral array
- crée un Control multicanal
- changeable avec la méthode Node.setn, ou le message n_setn
- vous êtes responsables du nombre correct de valeurs [...]
éléments statiques, éléments dynamiques
- un def est une structure statique
- évalué une fois, à la création du graphe sur le serveur.
- n'est pas réévaluée à la création d'un nouveau synth l'utilisant
- un élément rand, par ex, ne sera évalué qu'une fois, le nombre généré ne changera pas à la création de nouveaux synths
- certains UGens, par ex. Rand, peuvent fournir un résultat analogue à une réévaluation de fonction dans sclang
(
SynthDef("help-notRand", { Out.ar(0, SinOsc.ar(rrand(400, 800), 0, 0.2)
* Line.kr(1, 0, 1, doneAction: 2)); }).send(s);
)
a = Synth("help-notRand");
b = Synth("help-notRand"); // the same freq as a
L'exemple suivant génèrera une fréquence aléatoire différente pour chaque nouveau Synth:
(
SynthDef("help-isRand", { Out.ar(0, SinOsc.ar(Rand(400, 800), 0, 0.2)
* Line.kr(1, 0, 1, doneAction: 2)); }).send(s);
)
a = Synth("help-isRand");
b = Synth("help-isRand"); // une nouvelle freq à chaque évaluation
Architecture du serveur <
Index >
Passage de Message
There are no comments on this page. [Add comment]