Collage de SCTweets

Le code sctweet original est Frederik Olofsson (codes Frederik Olofsson) , je l’ai quelque peu malmené pour faire ceci: (cf. le patch ci-dessous) Ceci dit j’aimerais l’ameliorer d’autant que mes ~myPlayer1 etc ne marchent pas…l’ensemble sonne pourtant super bien mais demande beaucoup à l’ordinateur!
Au départ il n’y avait qu’une ligne de code que j’ai dupliquée en 6 fois en modifiant certains arguments…Si vous avez une idée pour l’améliorer (et notamment les .free, ca sera avec grand plaisir! Merci d’avance!


arg amp = 0.01,  dur =0.06, sus = 1;

~myPlayer1 = (
	{|i|x=i+6.rand;Pbind(\dur,dur,\sustain,sus,\amp,amp,\degree,Pgauss(x,sin(x+Ptime()%6/6e3)*9),\pan,1).play}!2;
{|i|x=i+12.rand;Pbind(\dur,dur,\sustain,sus,\amp,amp,\degree,Pgauss(x,sin(x+Ptime()%6/6e3)*9),\pan,-1,).play}!2;
);


~myPlayer2 = (
	{|i|x=i+2.rand;Pbind(\dur,dur,\sustain,sus,\amp,amp,\degree,Pgauss(x,sin(x+Ptime()%6/6e3)*9),\pan,1).play}!2;
{|i|x=i+3.rand;Pbind(\dur,dur,\sustain,sus,\amp,amp,\degree,Pgauss(x,sin(x+Ptime()%6/6e3)*9),\pan,-1).play}!2;
);

~myPlayer3 = (
	{|i|x=i+2.rand;Pbind(\dur,dur,\sustain,sus,\amp,amp,\degree,Pgauss(x,sin(x+Ptime()%6/6e3)*9),\pan,1).play}!2;
{|i|x=i+3.rand;Pbind(\dur,dur,\sustain,sus,\amp,amp,\degree,Pgauss(x,sin(x+Ptime()%6/6e3)*9),\pan,-1).play}!2;
);
) 


~myPlayer1.free;
 ~myPlayer2.free; 
 ~myPlayer3.free; 

Salut, tu peux simplifier pas mal le code pour avoir quelque chose de plus gérable. Pour pouvoir manipuler les paramètres en temps réel, je passe ici par JITLib. Le code ci-dessous détaille un peu plus comment tu peux gérer ta source :

// Démarrage du serveur avec ProxySpace
ProxySpace.push(s.boot);

// Déclaration du pattern	
(
~base = Pbind(
		\dur,0.06,
		\sustain,1,
		\amp,0.01,
		\dev, Pfunc { (1..6)+6.rand },
		\degree, Pgauss(
			Pkey(\dev),
			sin(Pkey(\dev) + Ptime()%6/6e3)*9),
		\pan,1)
)

// Je joue la source avec un fade-in graduel
~base.play(fadeTime: 8);

// Deux temps de transition entre chaque réévaluation
~base.fadeTime = 2;

// Ici, réévaler le pattern après avoir modifié un paramètre
// Jouer aussi avec les fadeTime pour se faire une idée

// Fade-out graduel jusqu'à la fin
~base.stop(fadeTime: 8);

// On "détruit" le pattern pour récupérer la mémoire.
~base.clear();

Ce tweet demande beaucoup à l’ordinateur car il utilise le synthétiseur par défaut de SuperCollider et joue un très grand nombre de notes, très rapidement. Ce n’est pas du tout économe, je pense que le défi pour redFrik était de jouer une nappe sonore intéressante sans écrire de synthèse. Ca me paraît risqué de jouer avec autrement que pour faire une démo.

Note que tu peux aussi aller beaucoup plus loin avec ta source, en appliquant par exemple des effets ou en jouant à fond avec JITLib:

(
// Un LFO supplémentaire pour gérer la panoramique
~lfo = { SinOsc.ar(LFNoise2.ar(1/3).range(1, 4)).range(-0.75, 0.75) };
~base = Pbind(
		\dur,0.06,
		\sustain,1,
		\amp,0.01,
		\dev, Pfunc { (1..6)+6.rand },
		\degree, Pgauss(
			Pkey(\dev),
			sin(Pkey(\dev) + Ptime()%6/6e3)*9),
		\pan,~lfo)
)

// J'applique ici un filtre passe-bas avec une 
// fréquence de coupure qui se déplace graduellement
(
~base[100] = \filter -> {
	arg in;
	RLPF.ar(in, LFNoise2.ar(1/4).range(500, 5000), rq: 0.2)
};
)
1 Like

merci Bubo, je vais étudier ça avec attention! :blush:

Frederik fait le plus beau code, ses sInstruments sont d’une beauté à voir