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
ressource:logiciel:foxdot_troop:start [2021/09/19 14:38]
emoc [aide-mémoire]
ressource:logiciel:foxdot_troop:start [2023/11/29 23:09] (Version actuelle)
emoc
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 42: Ligne 42:
 ==== aide-mémoire ==== ==== aide-mémoire ====
  
-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 un bloc avec <​key>​Ctrl</​key>​ + <​key>​Enter</​key>​ après avoir placé le curseur sur la ligne \\ 
 +On peut aussi exécuter une seule ligne avec <​key>​Alt</​key>​ + <​key>​Enter</​key> ​\\
 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. \\ 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 rythme** \\+**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)]) 
 + 
 +**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> <code python>
 Clock.bpm = 120 Clock.bpm = 120
  
-h1 >> play("​x ​     xx x     "​)+h1 >> play("​x ​     xx x     "​) ​ # l'​espace correspond à un silence
 h2 >> play(" ​   o       ​o ​  "​) h2 >> play(" ​   o       ​o ​  "​)
 h3 >> play("​- - - - - - - - ") h3 >> play("​- - - - - - - - ")
- 
-h3 >> play("​- - - - - = - = ") 
   ​   ​
 h1.stop(); h2.stop(); h3.stop(); h1.stop(); h2.stop(); h3.stop();
 </​code>​ </​code>​
  
-**deux instruments,​ le second suit le premier** \\+**Deux instruments,​ le second suit le premier** \\
 <​code>​ <​code>​
 y1 >> bass([0,​2,​3,​4],​ dur=1/2, slide=0) y1 >> bass([0,​2,​3,​4],​ dur=1/2, slide=0)
Ligne 73: Ligne 100:
 **Stopper tous les players** **Stopper tous les players**
   Clock.clear()   Clock.clear()
-**une suite d'​accords (avec des patterns)** \\+ 
 +**Une suite d'​accords (avec des patterns)** \\
   ac >> space(P[(0,​3,​5),​ (1,4,6), (2,5,7), (4,7,9)], dur=4)   ac >> space(P[(0,​3,​5),​ (1,4,6), (2,5,7), (4,7,9)], dur=4)
-==== Instruments,​ attributs, effets, samples ====+   
 +**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 81: 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 204: 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 209: 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 214: 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 221: 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 228: 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 239: 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.1632055097.txt.gz
  • Dernière modification: 2021/09/19 14:38
  • par emoc