diff --git a/puredata_fr.md b/puredata_fr.md index 1d22896..9776303 100644 --- a/puredata_fr.md +++ b/puredata_fr.md @@ -430,6 +430,7 @@ On dispose aujourd'hui de nombreux outils dans Pure Data pour manipuler les sign ### Ressources * [Patch d'exemple sur les filtres](./resources/09-filters.pd) +* [Patch d'exemple avec filtres, oscillateurs légèrements désaccordés et enveloppe ADSR](./resources/09-filters-detuned-enveloppes.pd) * [Filtres dans Pure Data (EN)](http://write.flossmanuals.net/pure-data/filters/) @@ -659,6 +660,35 @@ Or, pour une machine donnée, 1 seul programme peut se mettre en écoute d'un po \newpage + +## Chapitre 17 : Automatonism + +Le projet Automatonism se décrit comme "un synthétiseur modulaire qui fonctionne dans l'environnement Pure Data". Cela signifie qu'il utilise le blocs de traitement de signaux et de données de Pure Data, mais qu'il fonctionne aussi en partie avec ses propres fonctionnalités. Par exemple pour ajouter des boîtes, Automatonism a ses propres menus. + +Tout d'abord, récupérer Automatonism depuis [le site officiel](https://www.automatonism.com/the-software). Il consiste en une suite de patches et d'outils graphiques pour créer efficacement des séquenceurs, des sons complexes, des filtres, des mixers, ... Le dossier télécharger contient 1 fichier main.pd, et 3 sous-dossiers : + +![Dossier de base d'Automatonism, à mettre dans le répertoire "Mes Documents" -> "Pure Data"](./screenshots/17-dossier-de-base.png) + +### À faire : +* Déplacer le dossier dans votre répertoire de documents Pure Data +* Dupliquer le dossier complet, puis ouvrir le fichier main.pd du nouveau dossier + +Pour jouer des notes avec Automatonism, il faut comprendre que ce logiciel se base sur des **signaux** pour les déclenchements de notes. En effet, l'idée de base des **synthétiseurs modulaires** est que l'on doit pouvoir brancher directement n'importe quelle sortie de module audio dans l'entrée d'un autre module audio. + +Concrètement, pour déclencher une seule note (comme un coup de grosse caisse), il faut alors créer des **enveloppes** très courtes. Cela va être fait par l'objet **vline\~** que l'on a déjà vu ensemble, pour créer une enveloppe-impulsion de durée 1 milliseconde. + + +![Triggers par enveloppes de notes (et pas par bangs)](./screenshots/17-signal-trigger.png) + +## À faire +* Lire le *MANUAL* Automatonism, en particulier le chapitre *signal flow* + +- - - + +\newpage + + + # Video ## Creating a GEM window and drawing a pretty cube diff --git a/resources/09-filters-detuned-enveloppes.pd b/resources/09-filters-detuned-enveloppes.pd new file mode 100644 index 0000000..1162f2a --- /dev/null +++ b/resources/09-filters-detuned-enveloppes.pd @@ -0,0 +1,286 @@ +#N canvas 89 66 1097 707 10; +#X floatatom 403 244 5 0 0 0 - - -; +#X obj 425 6 key; +#X floatatom 425 35 5 0 0 0 - - -; +#X obj 46 120 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X text 57 140 Do; +#X text 95 139 Do#; +#X obj 88 120 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 131 120 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 175 120 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X text 147 139 Ré; +#X text 187 138 Ré#; +#X obj 217 120 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 259 120 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 302 120 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 346 120 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X text 231 138 Mi; +#X text 274 138 Fa; +#X text 312 138 Fa#; +#X text 354 139 Sol; +#X text 393 139 Sol#; +#X text 447 140 La; +#X text 487 139 La#; +#X text 531 140 Si; +#X text 575 140 Do; +#X text 613 139 Do#; +#X text 665 139 Ré; +#X text 705 138 Ré#; +#X text 749 138 Mi; +#X obj 389 119 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 431 119 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 474 119 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 518 119 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 560 119 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 602 119 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 645 119 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 689 119 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 732 119 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X msg 46 172 48; +#X msg 87 172 49; +#X msg 132 172 50; +#X msg 176 173 51; +#X msg 217 173 52; +#X msg 259 173 53; +#X msg 303 173 54; +#X msg 346 173 55; +#X msg 390 173 56; +#X msg 431 173 57; +#X msg 473 173 58; +#X msg 518 172 59; +#X msg 560 170 60; +#X msg 602 170 61; +#X msg 647 170 62; +#X msg 689 170 63; +#X msg 733 171 64; +#X obj 246 67 route 113 122 115 101 100 102 116 103 121 104 117 106 +107 111 108 112 109; +#X obj 544 317 mtof; +#X obj 530 616 clip~ -0.5 0.5; +#X obj 521 647 dac~; +#X obj 731 399 osc~ 1; +#X obj 803 196 hradio 15 1 1 5 empty empty empty 0 -8 0 10 -4032 -1 +-1 2; +#X text 231 250 Note MIDI issue du clavier; +#X text 586 289 Note MIDI après choix de l'octave; +#X floatatom 803 237 5 0 0 0 - - -; +#X obj 803 258 * 12; +#X obj 544 265 + 0; +#X obj 803 215 - 2; +#X text 682 237 décalage d'octave =; +#X floatatom 544 287 5 0 0 0 - - -; +#X obj 803 149 loadbang; +#X msg 803 170 2; +#N canvas 0 23 450 278 (subpatch) 0; +#X array VisuOndeCarree 1024 float 3; +#A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; +#A 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; +#X coords 0 1 1024 -1 200 140 1 0 0; +#X restore 19 333 graph; +#X obj 304 530 tabwrite~ VisuOndeCarree; +#X obj 47 11 loadbang; +#X obj 14 69 send VisuMetro; +#X obj 304 510 receive VisuMetro; +#X obj 731 427 expr~ $v1 > 0; +#X obj 530 566 lop~; +#X text 588 575 LOP = LOw-Pass filter; +#X obj 560 523 hsl 128 15 20 20000 1 0 empty empty empty -2 -8 0 10 +-257985 -1 -1 6800 1; +#N canvas 0 23 450 278 (subpatch) 0; +#X array VisuOndeFiltree 1024 float 3; +#A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; +#A 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; +#X coords 0 1 1024 -1 200 140 1 0 0; +#X restore 18 509 graph; +#X obj 301 565 receive VisuMetro; +#X obj 301 592 tabwrite~ VisuOndeFiltree; +#X floatatom 551 546 5 0 0 0 - - -; +#X text 605 506 Fréquence de coupure (en Hz \, échelle LOG du slider) +; +#X obj 11 9 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 730 454 -~ 0.5; +#X obj 14 42 metro 100; +#X obj 258 429 vline~; +#X obj 521 516 *~; +#X msg 247 404 0.5 30 \, 0.1 30 60 \, 0.1 60 200 \, 0 200 400; +#X obj 263 331 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 526 409 phasor~; +#X obj 550 491 +~; +#X obj 527 380 * 2.007; +#X text 732 355 Création d'une onde sonore carrée \, en renvoyant +1 ou 0 selon le signe du signal d'entrée; +#X obj 593 412 phasor~; +#X obj 594 383 * 1.4995; +#X obj 582 441 *~ 0.3; +#X obj 538 469 +~; +#X obj 522 439 *~ 0.2; +#X connect 0 0 64 0; +#X connect 0 0 90 0; +#X connect 1 0 2 0; +#X connect 2 0 54 0; +#X connect 3 0 37 0; +#X connect 6 0 38 0; +#X connect 7 0 39 0; +#X connect 8 0 40 0; +#X connect 11 0 41 0; +#X connect 12 0 42 0; +#X connect 13 0 43 0; +#X connect 14 0 44 0; +#X connect 28 0 45 0; +#X connect 29 0 46 0; +#X connect 30 0 47 0; +#X connect 31 0 48 0; +#X connect 32 0 49 0; +#X connect 33 0 50 0; +#X connect 34 0 51 0; +#X connect 35 0 52 0; +#X connect 36 0 53 0; +#X connect 37 0 0 0; +#X connect 38 0 0 0; +#X connect 39 0 0 0; +#X connect 40 0 0 0; +#X connect 41 0 0 0; +#X connect 42 0 0 0; +#X connect 43 0 0 0; +#X connect 44 0 0 0; +#X connect 45 0 0 0; +#X connect 46 0 0 0; +#X connect 47 0 0 0; +#X connect 48 0 0 0; +#X connect 49 0 0 0; +#X connect 50 0 0 0; +#X connect 51 0 0 0; +#X connect 52 0 0 0; +#X connect 53 0 0 0; +#X connect 54 0 3 0; +#X connect 54 1 6 0; +#X connect 54 2 7 0; +#X connect 54 3 8 0; +#X connect 54 4 11 0; +#X connect 54 5 12 0; +#X connect 54 6 13 0; +#X connect 54 7 14 0; +#X connect 54 8 28 0; +#X connect 54 9 29 0; +#X connect 54 10 30 0; +#X connect 54 11 31 0; +#X connect 54 12 32 0; +#X connect 54 13 33 0; +#X connect 54 14 34 0; +#X connect 54 15 35 0; +#X connect 54 16 36 0; +#X connect 55 0 58 0; +#X connect 55 0 93 0; +#X connect 55 0 96 0; +#X connect 56 0 57 0; +#X connect 56 0 57 1; +#X connect 58 0 75 0; +#X connect 59 0 65 0; +#X connect 62 0 63 0; +#X connect 63 0 64 1; +#X connect 64 0 67 0; +#X connect 65 0 62 0; +#X connect 67 0 55 0; +#X connect 68 0 69 0; +#X connect 69 0 59 0; +#X connect 72 0 86 0; +#X connect 74 0 71 0; +#X connect 75 0 85 0; +#X connect 76 0 81 0; +#X connect 76 0 56 0; +#X connect 78 0 82 0; +#X connect 80 0 81 0; +#X connect 82 0 76 1; +#X connect 84 0 86 0; +#X connect 85 0 92 1; +#X connect 86 0 73 0; +#X connect 87 0 88 0; +#X connect 88 0 76 0; +#X connect 88 0 71 0; +#X connect 89 0 87 0; +#X connect 90 0 89 0; +#X connect 91 0 99 0; +#X connect 92 0 88 1; +#X connect 93 0 91 0; +#X connect 95 0 97 0; +#X connect 96 0 95 0; +#X connect 97 0 98 1; +#X connect 98 0 92 0; +#X connect 99 0 98 0; diff --git a/resources/09_drum_machine-exploded.pd b/resources/09_drum_machine-exploded.pd new file mode 100644 index 0000000..dfecfa8 --- /dev/null +++ b/resources/09_drum_machine-exploded.pd @@ -0,0 +1,58 @@ +#N canvas 207 54 759 689 10; +#X obj 64 400 readsf~; +#X obj 63 471 dac~; +#X obj 63 39 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1 +; +#X obj 64 82 f; +#X obj 104 83 + 1; +#X obj 64 59 metro 200; +#X floatatom 64 128 5 0 0 0 - - -; +#X obj 64 150 select 0 1 2 3 4 5 6 7, f 25; +#X obj 64 105 mod 8; +#X obj 64 180 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 84 180 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 104 180 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 124 180 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 144 180 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 164 180 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 184 180 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 204 180 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X msg 32 322 open 808_drum_kit/hihats/808-HiHats01.wav \, 1; +#X msg 386 338 open 808_drum_kit/snares/808-Clap02.wav \, 1; +#X msg 469 364 open 808_drum_kit/kicks/808-Kicks06.wav \, 1; +#X connect 0 0 1 0; +#X connect 0 0 1 1; +#X connect 2 0 5 0; +#X connect 3 0 8 0; +#X connect 3 0 4 0; +#X connect 4 0 3 1; +#X connect 5 0 3 0; +#X connect 6 0 7 0; +#X connect 7 0 9 0; +#X connect 7 1 10 0; +#X connect 7 2 11 0; +#X connect 7 3 12 0; +#X connect 7 4 13 0; +#X connect 7 5 14 0; +#X connect 7 6 15 0; +#X connect 7 7 16 0; +#X connect 8 0 6 0; +#X connect 9 0 17 0; +#X connect 10 0 18 0; +#X connect 11 0 17 0; +#X connect 12 0 19 0; +#X connect 13 0 17 0; +#X connect 14 0 19 0; +#X connect 15 0 17 0; +#X connect 16 0 19 0; +#X connect 17 0 0 0; +#X connect 18 0 0 0; +#X connect 19 0 0 0; diff --git a/screenshots/17-dossier-de-base.png b/screenshots/17-dossier-de-base.png new file mode 100644 index 0000000..a34aeaf Binary files /dev/null and b/screenshots/17-dossier-de-base.png differ diff --git a/screenshots/17-signal-trigger.png b/screenshots/17-signal-trigger.png new file mode 100644 index 0000000..0401ffd Binary files /dev/null and b/screenshots/17-signal-trigger.png differ