SuperCollider : PatTerns

SuperCollider :: Categories :: PageIndex :: RecentChanges :: RecentlyCommented :: Login/Register
Routines < Index > liste de Patterns

Le langage fournit une librairie importante de classes permettant d'aborder la composition algorithmique; elles descendent de la class Pattern

Patterns et ses descendants



a = 7.asStream;
a.postln;
a.next.postln;
)

Pseq, Prout, Prand, Pseries, etc.

le pattern le plus proche de Routine est Prout:
(
var a, b, c;
a = Prout.new({
        3.do({ arg i; 3.rand.yield; })
    });
// construit deux //streams// depuis le pattern
b = a.asStream;
c = a.asStream;
4.do({ b.next.postln; });   // imprime 4 valeurs depuis le premier //stream//
4.do({ c.next.postln; });   // imprime 4 valeurs depuis le second  //stream//
)



itération sur une fonction
Pfunc
Prout
Séquence de valeurs
Pseq

p = Pseq([1, 2, 3], inf);
p = p.asStream;
20.do {p.next.postln; };

Séquences aléatoires
Prand, Pwrand
// choix aléatoire dans la liste de valeurs, stream infini
p = Prand([1, 2, 3], inf);
p = p.asStream;
20.do {p.next.postln; };

//ici, le choix aléatoire est pondéré
/*le deuxième array (dont la somme doit être égale à 1) donne les poids respectifs des éléments du premier array*/
p = Pwrand([1, 2, 3], [0.8, 0.1, 0.1], inf);
p = p.asStream;
20.do {p.next.postln; };
//on obtient ici une grande majorité de 1

Séries


utilisation dans le domaine musical

-~ dans une utilisation typique, on utilise l'objet Pbind, qui lie un ou plusieurs patterns à un synth.

// example:
(
Pbind(
    \instrument, \default,
    \degree, Pseq([1,3,5,7], inf),
    \dur, 0.125,
    \octave, 4,
    \root, 3
).play
)

dans cet exemple, la classe Pbind recoit en argument une série de paires, le premier élément de chaque paire étant (par ex. \degree) un symbole , et le deuxième une valeur , ou un pattern de valeurs (value pattern).
les symboles dans un Pbind
il existe un ensemble de symboles prédéfinis représentant des événements musicaux typiques (instrument, durée, degré, hauteur, fondamentale, fréquence, midinote, etc.)
les valeurs associées à ce symbole
quel synth joue ce pattern?


//autre exemple
SynthDef(\hiHat, {|freq = 540, amp = 1, release = 1, rq = 1|
    var instr, env, freqMuls, hFreq = 6000;
    freqMuls = #[1, 1.4471, 1.6170, 1.9265, 2.5028, 2.6637];
    env = EnvGen.kr(Env.perc(0.00001, releaseTime: release, curve: -4), doneAction: 2);
    instr = Mix.ar(LFPulse.ar(freq  * freqMuls)) ;
    instr = RHPF.ar( RHPF.ar(instr, hFreq, rq), hFreq, rq) * (amp/freqMuls) * env;
    Out.ar(0, instr!2)
}).store;

t = 60/480;

Pbind( \instrument, \hiHat, \freq, 540,  \dur, t, \release, Prand([t, t* 0.2], inf), \rq, Pseq([0.6, 0.75, 1], inf)).play;




Routines < Index > liste de Patterns

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.2469 seconds