Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
ressource:logiciel:foxdot_troop:start [2021/09/19 14:31]
emoc [aide-mémoire]
ressource:logiciel:foxdot_troop:start [2022/07/22 10:45]
emoc [Instruments, attributs, effets, samples, gammes]
Ligne 8: Ligne 8:
  
 Voir  Voir 
-  * https://​github.com/​Qirky/​FoxDots+  * https://​github.com/​Qirky/​FoxDot
   * https://​foxdot.org/​installation/​   * https://​foxdot.org/​installation/​
  
-=== Installation de supercollider et foxdot sur debian ​stetch ​9.5 ===+=== Installation de supercollider et foxdot sur debian ​stretch ​9.5 ===
  
 <​code>​ <​code>​
Ligne 44: Ligne 44:
 Un bloc de code est composé de lignes qui se suivent sans ligne vide, il est exécuté d'un coup. \\  Un bloc de code est composé de lignes qui se suivent sans ligne vide, il est exécuté d'un coup. \\ 
 On exécute une ligne ou un bloc avec <​key>​Ctrl</​key>​ + <​key>​Enter</​key>​ après avoir placé le curseur sur la ligne \\ On exécute une ligne ou un bloc avec <​key>​Ctrl</​key>​ + <​key>​Enter</​key>​ après avoir placé le curseur sur la ligne \\
-Une variable ​est composée ​d'une lettre ​et d'un chiffre, exemples : d1, f4, etc. \\+Un «player» ​est toujours composé de deux caractères,​ pour jouer à plusieurs on recommande ​d'utiliser ​une lettre ​(initiale du pseudo) + un chiffre, exemples : d1, f4, etc. \\
 Par défaut, Foxdot fonctionne avec les paramètres suivants : Par défaut, Foxdot fonctionne avec les paramètres suivants :
-  * tempo à 120 BPM +  * tempo à 120 BPM, 
-  * tonalité en Do majeur +  * tonalité en Do majeur, 
-  * signature de temps en 4/4+  * signature de temps en 4/4
 +  * tous les effets sont désactivés,​  
 +  * la note jouée est 0,  
 +  * l'​octave est 5,  
 +  * la gamme est do majeur (C major) tonalité est celle définie par défaut, la durée de la note est 1, 
 +le volume est à 100% (1), et c'est joué en boucle
  
 +**Un instrument** \\
 +  p1 >> pads((0,​2,​4)) ​        // Les parenthèses définissent un accord
 +  p1 >> pads([0,​1,​2,​(3,​5,​7)]) // Les crochets carrés définissent une séquence
 +  p1 >> pads([0,​1,​2,​3],​ dur=[1,​1/​2,​1/​2],​ amp=[1.5,​0.5],​ sus=2, pan=[-1,1], oct=[5,​5,​5,​(4,​6)])
  
-==== Instruments,​ attributs, effets, samples ====+**Des rythmes** \\ 
 + 
 +Chaque instrument de percussion est défini par un caractère qui correspond à un répertoire de samples 
 +  d1 >> play("​x-o-"​) 
 +  d1 >> play("​x-o-",​ sample=[0,​1,​2]) 
 + 
 +On peut varier les rythmes avec : 
 +  d1 >> play("​x-o[--]"​) ​           # des crochets carrés pour jouer plusieurs samples sur un même pas 
 +  d1 >> play("​x-o(-o)"​) ​           # des parenthèses pour alterner entre plusieurs sons 
 +  d1 >> play("​x-o{-o*}"​) ​          # des accolades pour piocher un sample au hasard dans le répertoire correspondant 
 +  d1 >> play("​o ​  ",​ sample=[3]) ​  # changer l'​index du sample dans le répertoire 
 +  d1 >> play("​x-o{-[--]o}"​) ​       # mélange possible! 
 +  d1 >> play("​x-|o2|-"​) ​           # entre barres verticales : jouer le sample 2 du répertoire o  
 +  d1 >> play("<​x-o->< ​ + + [ +]>"​) # deux couches de percussions,​ entre chevrons 
 +  d1 >> play("<​x x       ​xx ​  ​x>< ​   o       ​o ​  ><:​ : : : : : : : >", amp=(1, 0.3, 0.4)) # amplification différente pour chaque couche 
 +  d1 >> play("< ​ x x           ><​[::​][:​ ]: : : : : [::][: ]: >< ​       o       >",​ amp=(1, 0.3, 0.8)) 
 + 
 +Rate modifie la vitesse de lecture 
 +  d1 >> play("​x-(-[-o])",​ dur=[3/​4,​3/​4,​1/​2],​ rate=[1,​2,​0.5,​-1]) 
 +   
 +<code python>​ 
 +Clock.bpm = 120 
 + 
 +h1 >> play("​x ​     xx x     "​) ​ # l'​espace correspond à un silence 
 +h2 >> play(" ​   o       ​o ​  "​) 
 +h3 >> play("​- - - - - - - - ") 
 +   
 +h1.stop(); h2.stop(); h3.stop();​ 
 +</​code>​ 
 + 
 +**Deux instruments,​ le second suit le premier** \\ 
 +<​code>​ 
 +y1 >> bass([0,​2,​3,​4],​ dur=1/2, slide=0) 
 +g1 >> varsaw(amp=0.3,​ oct=5).follow(y1) 
 + 
 +y1.stop() ; g1.stop() 
 +</​code>​ 
 + 
 +**Stopper tous les players** 
 +  Clock.clear() 
 + 
 +**Une suite d'​accords (avec des patterns)** \\ 
 +  ac >> space(P[(0,​3,​5),​ (1,4,6), (2,5,7), (4,7,9)], dur=4) 
 +   
 +**Réinitialiser un player** \\ 
 +  ex.reset() 
 + 
 +**Ajouter un attribut** \\ 
 +  g1 >> varsaw(amp=0.6,​ oct=5, tremolo=3) # tremolo est un attribut 
 + 
 +**Ajouter un effet** \\ 
 +  y1 >> bass([0,​2,​3,​4],​ amp=1, dur=[4, 1/2, 1/2, 3], slide=0, chop=5) # chop est un effet 
 + 
 +**Afficher le BPM** \\ 
 +  print(Clock.bpm) 
 + 
 +**Changer la gamme** \\ 
 +  Scale.default.set("​minor"​) 
 +  # Identique à : 
 +  Scale.default = "​minor"​ 
 +==== Instruments,​ attributs, effets, samples, gammes ​====
  
   print(SynthDefs) ​              # afficher tous les instruments   print(SynthDefs) ​              # afficher tous les instruments
Ligne 57: Ligne 126:
   print(FxList) ​                 # afficher tous les effets   print(FxList) ​                 # afficher tous les effets
   print(Samples) ​                # afficher tous les échantillons   print(Samples) ​                # afficher tous les échantillons
 +  print(Scale.names()) ​          # afficher les gammes
   ​   ​
 Ce qui donne avec la version 0.8.3 : Ce qui donne avec la version 0.8.3 :
Ligne 180: Ligne 250:
 '​~':​ Ride cymbal '​~':​ Ride cymbal
 </​code>​ </​code>​
 +</​panel>​
 +</​accordion>​
 +
 +<​accordion>​
 +<panel title="​foxdot : toutes les gammes">​
 +<code python foxdot_0.8.3_toutes_les_gammes.txt>​
 +['​aeolian',​ '​altered',​ '​bebopDom',​ '​bebopDorian',​ '​bebopMaj',​ '​bebopMelMin',​ '​blues',​ '​chinese',​ '​chromatic',​ '​custom',​ '​default',​ '​diminished',​ '​dorian',​ '​dorian2',​ '​egyptian',​ '​freq',​ '​halfDim',​ '​halfWhole',​ '​harmonicMajor',​ '​harmonicMinor',​ '​hungarianMinor',​ '​indian',​ '​justMajor',​ '​justMinor',​ '​locrian',​ '​locrianMajor',​ '​lydian',​ '​lydianAug',​ '​lydianDom',​ '​lydianMinor',​ '​major',​ '​majorPentatonic',​ '​melMin5th',​ '​melodicMajor',​ '​melodicMinor',​ '​minMaj',​ '​minor',​ '​minorPentatonic',​ '​mixolydian',​ '​phrygian',​ '​prometheus',​ '​romanianMinor',​ '​susb9',​ '​wholeHalf',​ '​wholeTone',​ '​yu',​ '​zhi'​]
 +</​code>​
 +{{:​ressource:​logiciel:​foxdot_troop:​foxdot_scalen.jpg?​direct&​1200|}}
 +
 +(Image d'​après [[https://​gitlab.com/​iShapeNoise/​foxdot_codingmusic_part1/​-/​blob/​main/​files/​FoxDot_CodingMusic_Part1_en.md|Foxdot,​coding music part 1]], Jens Meisner)
 </​panel>​ </​panel>​
 </​accordion>​ </​accordion>​
Ligne 185: Ligne 266:
 Et une petite cheatsheet à télécharger : {{ :​ressource:​logiciel:​foxdot_troop:​foxdot_cheat_sheet.pdf |foxdot cheatsheet}} Et une petite cheatsheet à télécharger : {{ :​ressource:​logiciel:​foxdot_troop:​foxdot_cheat_sheet.pdf |foxdot cheatsheet}}
 ==== Divers ==== ==== Divers ====
 +
 +**Comment sont programmés les players ?** \\
 +Chaque player est un SynthDef écrit en supercollider,​ il s'agit donc de synthèse sonore, excepté pour les sons de percussions qui sont des samples. On peut retrouver les définitions des SynthDefs dans le répertoire ''/​home/​user/​.local/​lib/​python3.5/​site-packages/​FoxDot/​osc/​scsyndef''​ \\
 +Un exemple avec **glass** : 
 +<code supercollider>​
 +SynthDef.new(\glass,​
 +{|freq=0, peak=1, rate=0, level=0.8, blur=1, vib=0, sus=1, pan=0, fmod=0, atk=0.01, rel=0.01, decay=0.01, bus=0, beat_dur=1, amp=1|
 +var osc, env;
 +sus = sus * blur;
 +freq = In.kr(bus, 1);
 +freq = [freq, freq+fmod];
 +sus=(sus * 1.5);
 +amp=(amp * 1.5);
 +freq=(freq * [1, (1 + (0.005 * rate))]);
 +osc=Klank.ar(`[[2,​ 4, 9, 16], [1, 1, 1, 1], [2, 2, 2, 2]], (PinkNoise.ar(0.0005).dup * SinOsc.ar((freq / 4), mul: 0.5, add: 1)), freq);
 +env=EnvGen.ar(Env(levels:​ [0, amp, 0],times: (sus * 2),curve: '​lin'​),​ doneAction: 0);
 +osc=(osc * env);
 +osc = Mix(osc) * 0.5;
 +osc = Pan2.ar(osc,​ pan);
 + ReplaceOut.ar(bus,​ osc)}).add;
 +</​code>​
  
 **Ajouter des répertoires de samples** \\ **Ajouter des répertoires de samples** \\
Ligne 190: Ligne 292:
   /​home/​emoc/​.local/​lib/​python3.5/​site-packages/​FoxDot/​lib/​Buffers.py   /​home/​emoc/​.local/​lib/​python3.5/​site-packages/​FoxDot/​lib/​Buffers.py
 Les échantillons sont rangés dans Les échantillons sont rangés dans
-  /​home/​emoc/​.local/​lib/​python3.5/​site-packages/​FoxDot/​sndv+  /​home/​emoc/​.local/​lib/​python3.5/​site-packages/​FoxDot/​snd
  
 +**Enregistrer ?** \\
 +On peut enregistrer depuis la fenêtre de SuperCollider
 +  Server.default.record
 +Pour arrêter
 +  Server.default.stopRecording
 +L'​enregistrement se fait en AIFF et le chemin vers le fichier est indiqué dans la fenêtre de supercollider,​ le fichier est automatiquement horodaté. ​
 ===== Ressources ===== ===== Ressources =====
  
Ligne 197: Ligne 305:
  
 Forum anglophone : https://​forum.toplap.org/​c/​communities/​foxdot/​17 Forum anglophone : https://​forum.toplap.org/​c/​communities/​foxdot/​17
 +
 +Tutoriel, en français de Marvin Wortman : http://​marvinwortman.me/​idlabs_foxdot
  
 **Tutoriels pour workshops** : https://​github.com/​Qirky/​FoxDot-Worksheet **Tutoriels pour workshops** : https://​github.com/​Qirky/​FoxDot-Worksheet
Ligne 204: Ligne 314:
   * snippets : https://​forum.toplap.org/​t/​share-your-snippets/​711   * snippets : https://​forum.toplap.org/​t/​share-your-snippets/​711
  
-article ​de l'​auteur sur Foxdot : http://​users.sussex.ac.uk/​~thm21/​ICLI_proceedings/​2016/​Colloquium/​68_FoxDot.pdf+Article ​de l'​auteur sur Foxdot : http://​users.sussex.ac.uk/​~thm21/​ICLI_proceedings/​2016/​Colloquium/​68_FoxDot.pdf 
 + 
 +Autre tutoriel complet (de Jens Meisner) : https://​gitlab.com/​iShapeNoise/​foxdot_codingmusic_part1
  
 D'​autres ressources sur : https://​fablabo.net/​wiki/​Livecoding et https://​ressources.labomedia.org/​live_coding D'​autres ressources sur : https://​fablabo.net/​wiki/​Livecoding et https://​ressources.labomedia.org/​live_coding
  
 +à propos de supercollider : https://​github.com/​madskjeldgaard/​awesome-supercollider
 ====== Troop ====== ====== Troop ======
  
Ligne 215: Ligne 328:
  
 Il est recommandé d'​utiliser la même version de Troop sur chaque machine qui se connecte au serveur et que le serveur et les clients soient de la même version. Il est recommandé d'​utiliser la même version de Troop sur chaque machine qui se connecte au serveur et que le serveur et les clients soient de la même version.
 +
 +Voir [[ressource:​logiciel:​foxdot_troop:​configuration_serveur_troop_debian_10|configuration d'un serveur troop sur debian 10]]
  
 {{:​ressource:​logiciel:​foxdot_troop:​foxdot_troop_server.png?​direct&​600|}} {{:​ressource:​logiciel:​foxdot_troop:​foxdot_troop_server.png?​direct&​600|}}
  • ressource/logiciel/foxdot_troop/start.txt
  • Dernière modification: 2023/11/29 23:09
  • par emoc