SuperCollider en français

super merci beaucoup Simon,je vais le lire avec grand intérêt, :slight_smile:
Pour l’avoir (trop vite) parcouru au boulot, il m’a semblé très clair et pédagogique !

@Dindoleon Permets moi de t’appeler Simon (j’ai vu ton prénom sur le tuto :wink:) et je viens de commencer à lire/étudier ton tuto: il est vraiment bien fait dans le sens ou pour ma part il vient compléter très pédagogiquement les autres tutos sur lesquels je travaille…donc un grand merci à toi! :blush:
J’ai une question très “naive” concernant l’installation de Emacs: Est-ce que Emacs s’installe dans l’IDE de SC? Histoire de bien comprendre le processus…et désolé si je te fais répéter certains de tes conseils
@Bubo Enchanté et je découvre Cookie Collective visiblement très actif sur la scène musicale de live coding. Je suis à Strasbourg, as tu par hasard des contacts là-bas? j’aimerais pouvoir constituer dans ma ville un petit groupe SC mais j’avoue ne pas trop savoir ou chercher…
Bonne journée à tout le monde :blush:

@beryann: Renseigne-toi sur Crash Server. Ils sont très actifs et ils font souvent des ateliers avec SuperCollider et FoxDot. Ils sont vraiment super doués et ça fait longtemps qu’ils pratiquent !

Concernant Emacs: Emacs est un éditeur de texte. Pour SuperCollider, il peut remplacer la partie SCIDE (l’IDE). Il faut bien avoir en tête que SuperCollider n’est pas vraiment un logiciel mais plusieurs blocs logiciels interconnectés : SCServer (le serveur audio), SCLang (le langage de programmation) et SCIDE (l’interface graphique). Une fois que tu comprends ça, tu te rends compte que l’IDE n’est pas si essentiel que cela et que tu peux faire du SuperCollider partout (Emacs, Neovim, VSCode, etc…).

1 Like

Comme l’a dit Bubo :slight_smile: !


La seule chose est que pour ‘relier’ emacs à SuperCollider, via le plugin scel, il existe deux méthodes :

  • compiler SuperCollider, ce qui est assez technique (en vrai pas trop).
  • l’installer via le Quark associé, ce qui est plus facile.

Pour installer un Quark, il faut déjà avoir accès à la partie langage SuperCollider, et si on a pas compilé, on ne peut passer que par ScIDE (pour simplifier).

Donc on ouvre ScIDE juste une fois, pour installer le Quark scel :

Quarks.install("https://github.com/supercollider/scel");

Et après ça on a plus besoin d’utiliser ScIDE.

@Dindoleon @Bubo Merci à vous deux pour toutes ces infos! Je comprends beaucoup mieux cette “histoire” de SciDE et d’Emacs…Je suis désormais sur Instagram le duo CrashServer que je ne connaissais pas du tout! Avez-vous déjà lu The SuperCollider Book? SuperCollider Book publié en 2011…Si oui qu’en pensez-vous? et pensez-vous qu’il s’adresse à une “débutant”? Bonne journée :blush:

C’est un livre daté je pense, mais une version 2 est en cours de rédaction. À voir comment cela évolue.

La mise-en-page est affreuse, les exemples ne sont jamais sur la même page que le paragraphe qui les décrit…

Autrement, je suis un peu mitigé sur les articles. Ça vaut le coup de le lire, sans aucun doute. Mais la clarté est parfois manquante, et l’accès est un peu difficile pour les débutants à mon avis.

Le chapitre Object Modeling commence bien, puis se transforme en une présentation du projet des auteurs qui, effectivement, utilise le prototypage, mais d’une manière si spécifique que je me suis demandé ce que je pouvais bien faire de leurs explications. En plus j’ai quasiment rien compris :crazy_face: . De surcroît ils prennent en exemple l’interfaçage graphique, dont la technologie a depuis été complètement changée.

Pour un usage classique, je dirai que le lire jusqu’à la page 255 est une bonne idée, mais que ce n’est pas la ressource prioritaire.


À part ça, c’est aussi un témoignage de James McCartney, le créateur originel du language, sur le contexte historique, technique et artistique dans lequel il a donné naissance à SuperCollider. Ça m’a beaucoup plu de lire cela.

Par ailleurs, il y a toute une section sur des cas pratiques d’utilisation de SuperCollider, très variés. Pour un musicologue ou un artiste qui s’intéresse à l’écosystème dans lequel il s’inscrit, c’est d’une grande valeur.


Enfin, le chapitre Developer Topics décrit les bases techniques de SuperCollider : la manière dont la machine virtuelle et le ramasse-miettes sont interconnectés au serveur sonore. C’est grâce à ce document que j’ai pu franchir le pas et passer d’une utilisation restreinte à sclang à la manipulation de concepts plus fondamentaux. C’est bien costaud.

1 Like

Hello! A propos de ressources, en voici de nouvelles: les (nombreuses) vidéos de Zlatkong sur YouTube en réponse de celles d’Eli Fieldsteel constituées en exercices afin de compléter ses cours. Je viens de les découvrir potachant avec assiduité celles de Fieldsteel et de Marier et cherchant justement à les assimiler au travers de différents exercices quitte à les inventer moi-même :smiling_face:. Zlatkong a posté environ 122 vidéos (tout de même! :sweat_smile:) cependant toutes ne portent pas sur SCollider mais sur Max ou sur l’audionumérique. Voilà…Ce post était là pour simplement signifier que les tutos de SC ainsi que les vidéos de Fieldsteel et de Marier (en français) constituent les 3 piliers (plus quelques autres documents) sur lesquels je m’appuie pour apprendre SC, mais que manquent hélas une prolongation de ceux-ci, c’est à dire des exercices avec (tant qu’à faire) leurs corrigés. D’ailleurs en ce qui vous concerne, comment avez-vous étudier SC? (c’est toujours intéressant de voir comment les autres ont procédé et leur parcours! :yum:)

2 Likes

Deux types d’exercices :

  • les exercices musicaux :
    – synthétiser une basse funk, un kick qui donne envie de danser, etc.
    – synthétiser un son d’un morceau qu’on aime bien (se demander comment le reproduire dans SC).
    – par contrainte : synthétiser uniquement avec des SinOsc, partir d’une Saw et utiliser uniquement la synthèse soustractive, etc.
    – composer telle forme (une valse, un morceau pop, l’ambiance sonore associée à un paysage ou une émotion, etc).

  • les exercices techniques :
    – une heure et demi pour produire un morceau fini (mon cauchemar).
    – implémenter tel ou tel algorithme :

    • un générateur de ligne mélodique, de basse, etc.
    • construire une interface graphique qui manipule un drone (et qui soit modulaire).
    • un générateur de synthé avec beaucoup de paramètres, la possibilité de tester les paramètres aléatoirement et de copier un format de donnée qui permet de réutiliser cette génération aléatoire.

Il n’y a pas de corrigé. La musique, ça sonne ou ça sonne pas, le reste on s’en fout (vraiment). Il y a des meilleures manières de faire les trucs techniques (algo optimisé, code clair et réutilisable, etc). Mais c’est trivial, ça s’apprend sur le tas peu à peu, et c’est vraiment négligeable par rapport à la question artistique. Si le bout de code sonne, même s’il est codé avec les pieds, c’est réussi.


@beryann j’en profite pour faire un peu de pub pour mon logiciel. Je commence à mieux maîtriser git, et j’ai décidé de réimplémenter mon soft étape par étape. git permet de suivre l’historique de modification, et je rajoute les fonctionnalités une à une afin que l’historique soit très clair en terme de construction de projet. Mais ce n’est pas ce qui est intéressant pour l’instant.

La première étape consiste à réimplémenter ma modélisation du chef d’orchestre (conductor). Le fichier est disponible ici : https://github.com/SimonDeplat/ModHa/blob/develop/core/conductor/conductor.scd . J’utilise le prototypage d’objet pour créer un objet conductor, qui dispose des méthodes associées au chef d’orchestre (entre guillemets). Pour l’instant, la possibilité de battre la mesure, d’indiquer là où en est le rythme, et quelques fonctionnalités liées aux questions de tonalité. Je pense que ça peut t’intéresser, notamment parce que tu peux copier-coller les méthodes rapidement pour t’en servir.

Le code est assez restreint pour l’instant, mais comme tout est déjà prêt, ça devrait s’étoffer rapidement.

2 Likes

Merci Simon pour la partie “exercices”…Quant au projet ModHa, j’ai vu sur Github qu’il s’agit d’une “DAW” basée sur SC. Ton projet de logiciel est très intéressant, en quoi consiste t-il précisément? :blush:

Il s’agit de mon ‘exercice’ personnel, qui accompagne ma découverte de SC depuis environ cinq ans.

Le jour où j’ai découvert qu’on pouvait créer une fenêtre et y ajouter des boutons dans SC, je me suis fait un petit séquenceur pour m’accompagner quand j’improvisais. À ce moment là, j’ai compris que SC était l’outil qui me permettrait de créer mon propre instrument de musique, qui correspond exactement à ma pratique musicale : l’impro (en temps réel donc) complexe.

La première version était restreinte à huit boutons, donc en gros du 4/4. Premier exercice : quel algorithme me permet de spécifier le nombre de temps pour pouvoir jouer en ternaire, en 7 temps etc. De la même manière, j’avais la rythmique, il me fallait la mélodie, la basse, etc.

Comme mentionné précédemment, je m’intéressais également à la philo des sciences et du langage. Un point important pour moi était que notre rapport au monde passe par la cognition, par le biais de systèmes formels : des agencement de symboles que nous interprétons comme étant la structure d’un sujet. La question était : quel est l’humain qui se représente le mieux la musique ? En gros, c’est le ‘chef d’orchestre musicologue’. Parce qu’il a théoriquement toute la connaissance sur la musique, et qu’il joue physiquement avec son orchestre.

Nous avons une cascade de systèmes formels :

  • la théorie musicale est traductible dans SuperCollider
  • SuperCollider est traductible en interface graphique
  • l’interface graphique est traductible en langage corporel (j’appuie sur le bouton sur l’écran tactile)

D’où :

  • la théorie musicale est traductible en langage corporel

En fait j’ai sauté une étape : mes sensations auditives sont traductibles (pas entièrement cependant) en théorie musicale.

Donc il y a ce moment magique où j’appuie sur le Do du piano avec mon doigt et ça sonne super dans mes oreilles. Ben là, c’est un peu pareil, mais avec des capacités qui ne sont pas restreintes à la forme de l’instrument (bon par contre je ne referai jamais un piano avec SC).


J’ai fait plusieurs versions incrémentales du ModHa. C’est un peu sans fin mais ça se stabilise peu-à-peu, à mesure que je gagne en compétences techniques.

Voici l’interface de contrôle du chef d’orchestre :

Voici l’interface d’un instrument :

Ça reste encore assez classique car je dois finaliser la base avant de m’amuser réellement.

En gros, on manipule un chef d’orchestre, qui manipule un orchestre. Les instruments sont sous un format de donnée particulier qui est décodé par le logiciel : on peut, à la volée, ajouter des instruments à l’orchestre, ce qui les connecte automatiquement à la battue et à la tonalité du chef d’orchestre, les relie aux sorties et aux effets, et créé l’interface graphique.

Tout est visuel, avec de gros boutons simples : on reboucle sur cette question de langage corporel vers langage auditif. Je peux le faire utiliser aux débutants sans souci : au détour de leurs expérimentations, ils appuient sur ‘lydian’. Sans avoir jamais lu une partition, ils ont modulé.


Un des buts du projet est que le code soit adaptable et réutilisable. Si certains sont intéressés par des composants, c’est avec plaisir que je les redistribue ou les explique. De surcroît, ça m’aide à avancer dans mon projet.

1 Like

Quelques nouvelles du ModHa dont la reconstruction vient de franchir une étape, même s’il reste rudimentaire.

Le principe est le suivant : on lance le serveur, puis on évalue main.scd . Nous sommes dans le paradigme de la programmation orientée objet, et l’évaluation de main vient de créer trois classes (ce sont des protos, pas des classes au sens strict, bref on s’en fout) :

  • un chef d’orchestre
  • un orchestre

Ces deux classes sont sensées être uniques, et ‘auto-instanciées’, ce sont des objets en tant que tels, et il ne fait pas sens de les dupliquer.

  • une classe d’instrument

Qui permet de créer des synthés à partir de modèle préconfigurés. Pour l’instant, un seul disponible (parce que c’est en développement), une sinusoïde simple enrobée dans une enveloppe percussive.

Une syntaxe particulière permet d’accéder aux classes/objets :

~mh[\conductor].setBPM(60);
~mh[\orchestra].createInstr("PercSine");
~mh[\orchestra].instr("PercSine").setFreqAt(0, 440);

Je trouve la syntaxe ‘jolie’, mais ça prend des plombes à taper. J’ai donc utilisé le preprocesseur mentionné précédemment pour créer un raccourci syntaxique :

c<setBPM(60);
o<createInstr("PercSine");
i<("PercSine").setFreqAt(0, 440);

Ce qui me donne envie de faire du livecoding ! J’ai laissé de côté l’interface graphique pour l’instant car je souhaite pouvoir contrôler le soft par du code, puis rajouter l’interface graphique comme simple appel des instructions de contrôle (les versions précédentes ne permettaient pas un contrôle aisé hors de l’interface graphique).

Bref, l’étape franchie est la possibilité de faire du son. Voici le code de ‘démo’ (le serveur tourne déjà, et main.scd a été évalué) :

(
// Un thème de bourrée trois temps, par Claire Herrbach
~midiTheme = [
	67, 0, 66, 0, 67, 0,
	74, 0, 72, 0, 70, 0,
	69, 0, 70, 69, 67, 66,
	67, 0, 63, 0, 62, 0,

	67, 0, 66, 0, 67, 0,
	74, 0, 72, 0, 70, 0,
	69, 0, 0, 0, 70, 0,
	69, 0, 0, 0, 69, 0
];
)

// Création d'un instrument
~instr = o<createInstr("PercSine");

// Mise-à-jour de la taille de sa partition
~instr.setScoreSize(~midiTheme.size);

// Assignation des notes
~instr.setMidiFreqs(~midiTheme);

// On met le volume à 0.5 sur chaque temps
~instr.setAmpAt(-1, 0.5);

// On demande à chaque temps de jouer 100% des fois
~instr.checkTriggers;

// On assigne la bonne signature rythmique au chef d'orchestre
c<setSignature(8, 6);

// Et le BPM
c<setBPM(60);

// Puis on lance la battue
c<startClock;

// Quand on en a marre :
c<stopClock;

Il reste du boulot, mais j’apprécie la clarté des instructions :

c<setSignature(8, 6);
c<setBPM(60);
c<startClock;

Salut Simon! Merci de donner des nouvelles de ce super projet…J’avoue que je ne comprends pas tout mais je capte qd même les grandes lignes :blush:
J’imagine qu’en terme de travail, ca doit être “kolossal”, mesurant mieux maintenant ce que représente de faire du stream même très simple…
Sinon suite à un précédent post, je suis en contact avec une communauté de live codeurs strasbourgeois qui se réunit deux fois par mois sous la houlette de https://www.youtube.com/@CrashServer visiblement ( et vais y participer régulièrement. Etudier seul a des limites! Il est temps de rejoindre le groupe lol
Ceci dit j’avance beaucoup plus vite sur SonicPi mais je commence à faire de petites lignes de code sans SC donc ça avance… :grinning:

Help! :grin: Je bosse dans le “A gentle introduction to SuperCollider” écrit pas Bruno Rovario et qui est ma foi plutôt bien fait mais je bute sur un morceau de code qui n’est pas très clair pour moi et qui est le suivant:

( // open big block
 Pbind(
 \freq, Pn(Pseries(110, 111, 10)),
 \dur, 0.5,
 \legato, Pwhite(0.1, 1)
 ).play;

 Pbind(
 \freq, Pn(Pseries(220, 222, 10)),
 \dur, 1,

 \legato, Pwhite(0.1, 1)
 ).play;

 Pbind(
 \freq, Pn(Pseries(330, 333, 10)),
 \dur, 1,
 \legato, 0.1
 ).play;
 ) 

J’ai mis la durée à 1 pour bien entendre plus lentement que le code d’origine (0.15) et j’entends bien 3 streams mais j’ai cru comprendre que ‘Pn’ répétait certaines notes mais ca n’est pas ce que je perçois… :thinking:
Et que fait Pseries avec les fréquences en fait?
Merci pour votre aide!! :blush:

Selon la doc.
Pseries.new(start: 0, step: 1, length: inf)
et
Pn.new(pattern, repeats: inf, key)
en clair, Pseries génére une séquence, laquelle est répétée avec Pn (infinite loop par défaut).

Pseries(110, 111, 10)) = Pseq([ 110, 221, 332, 443, 554, 665, 776, 887, 998, 1109 ], 1)

Seul remarque, je coderais plutôt comme ça:

( 
 a = Pbind(
 \freq, Pn(Pseries(110, 111, 10)),
 \dur, 0.5,
 \legato, Pwhite(0.1, 1)
 );

 b = Pbind(
 \freq, Pn(Pseries(220, 222, 10)),
 \dur, 1,
 \legato, Pwhite(0.1, 1)
 );

 c = Pbind(
 \freq, Pn(Pseries(330, 333, 10)),
 \dur, 1,
 \legato, 0.1
 );

Ppar([ a, b, c ]).play;
 )

Note que le décalage est dû que le premier Pbind va deux fois plus vite que les deux autres.

Salut Yann et merci de tes précisions! Du coup je découvre le “Ppar” embed event streams in parallel"! :grinning:
Merci et bonne journée!

Hello tout le monde et hello @Bubo !
J’ai rencontré hier soir lors d’un atelier Seb et…Seb les deux fondateurs de @CrashServer qui nous ont proposé une présentation très intéressante de @FoxDot pendant près de 2 heures, logiciel sur lequel est basé essentiellement leur pratique actuelle du live coding…J’ai pu aussi apprècié les différences significatives qui existent entre SuperCollider et Sonic Pi qui sont mes deux logciels fétiches, mais j’avoue que j’ai été séduit aussi par le coté très “compact” du langage Python dans ce logiciel très étonnant…Voilà
Bonne journée! :wink:

@beryann : pour continuer l’exploration, j’ai monté le mois dernier un petit site qui ne contient pas encore beaucoup d’informations mais qui a le mérite d’exister : https://livecoding.fr. J’y ajoute deux trois trucs lorsque j’ai le temps de continuer mais ça reste assez vide :slight_smile:

3 Likes

@Bubo Ton site est une mine précieuse d’informations, j’y découvre des ressources vraiment très intéressantes, bravo! :grinning:

Salut à toutes et tous! Bonne nouvelle: une catégorie “French” a été créée sur le site :grinning: et pour info, j’y ai laissé un post concernant la traduction de tutoriels en français que j’ai faites…Dites moi ce que vous en pensez: :slightly_smiling_face:
Tutoriels traduits en Français

1 Like

Bonjour tout le monde,

Je viens d’ouvrir un post concernant un événement académique que nous sommes en train d’organiser pour le printemps : [EN/FR] Journée d'étude Live Coding (Paris). Il y sera question de SuperCollider et de bien d’autres langages et approches.

Venez nombreux :slight_smile: !

1 Like