diff --git a/README.md b/README.md index 523f9e8..253dd3b 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,8 @@ sudo systemctl status osc_server.service * restructure so that there is a intro section with video examples of nice patches * more robust end patches -* finish french translation +* Rename all screenshots and patches, for consistency between chapters' numbers and figures/patches names +* finish french translation (GEM) # done diff --git a/puredata_fr.md b/puredata_fr.md index 2c42c09..9928573 100644 --- a/puredata_fr.md +++ b/puredata_fr.md @@ -18,7 +18,7 @@ img:hover{ # Pure Data -![intro](./resources/pd_intro.jpg) +![Exemples de "patches" Pure Data](./resources/pd_intro.jpg) ## Introduction @@ -58,11 +58,11 @@ Lien utiles : À l'ouverture, Pure Data n'affiche que la fenêtre principale, avec une barre de menu et un espace blanc en-dessous. Cette espace blanc sera la **console**, qui va afficher des infos utiles, des erreurs, ... -![fenêtre principale](./screenshots/PD_main_window.png) +![Fenêtre principale, avec la console](./screenshots/PD_main_window.png) La fenêtre de programme audio, appelée fenêtre de **patch**, s'affiche lorsque l'on va dans le menu "Fichier" -> "Nouveau". C'est dans cette fenêtre que l'on va créer les boîtes, et les connections entre ces boîtes, pour créer graphiquement un programme audio. -![fenêtre principale](./screenshots/PD_hello_world.png) +![Console, premier patch et menu Ajouter](./screenshots/PD_hello_world.png) ### À faire : @@ -144,7 +144,7 @@ Pour faire des calculs arithmétiques (additions, soustractions, ... et des fonc * **patches** * [calculator patch](./resources/01_calculators.pd) * **Page-mémo** - * [Aide-mémoire pour les objets PureData](https://puredata.info/docs/tutorials/pd-refcard) + * [Aide-mémoire pour les objets PureData [à imprimer]](https://puredata.info/docs/tutorials/pd-refcard) * **online information** * [hot and cold inlets (EN)](https://puredata.info/docs/manuals/pd/x2.htm#s3.3) * [Entrées chaudes/froides, flux de données (FR)](https://fr.flossmanuals.net/puredata/le-flot-de-donnees/) @@ -234,7 +234,7 @@ Lorsqu'un patch audio sera prêt, il ne faudra pas oublier de cocher la case DSP Attention : PureData permet de créer n'importe quel son, et il n'y a donc pas de limitation du volume en sortie. Il faut d'abord ne jamais mettre le casque trop fort, et on mettra systématiquement un limiteur en sortie (vu juste après). -

Attention : Ne jamais mettre les écouteurs trop fort, et toujours mettre un limiteur (objet "clip") à 0.1 avant le bloc de sortie audio. Vos tympans sont très précieux, prenez-en soin !

+

Attention : Ne jamais mettre les écouteurs trop fort, et toujours mettre un limiteur (objet "clip") à 0.5 avant le bloc de sortie audio. Vos tympans sont très précieux, prenez-en soin !

![audio device](./resources/uawy.jpg) @@ -270,7 +270,7 @@ Le bloc **dac\~** est un *Digital to Analog Converter*, Convertisseur Numérique ### Ressources * **patches** - * [a 440Hz synth patch with, limiter](./resources/04_a_simple_synth-limiter.pd) + * [a 440Hz synth patch, with limiter](./resources/04_a_simple_synth-limiter.pd) * [a simple synth patch (! without limiter)](./resources/04_a_simple_synth.pd) * **online information** * [waveshaping](http://www.pd-tutorial.com/english/ch03s05.html) @@ -399,19 +399,19 @@ externals** option. ## Chapitre 9 : Filtres -Dans les domaines d'études des signaux, on s'intéresse tout d'abord à leur forme d'onde. Par exemple : +Dans les domaines d'étude des signaux, on commence en général par s'intéresser à leur forme d'onde, dans ce qu'on appelle le **domaine temporel** (dans lequel les choses évoluent au cours du temps). Par exemple : * l'onde osc\~ sinusoïdale fait un sorte de vague * l'onde phasor\~ est en dents de scie * l'onde carrée ressemble à des créneaux de châteaux-forts -En pratique, il est très commun de s'intéresser aussi à la **représentation fréquentielle** des signaux. Dans le **domaine fréquentiel**, on ne voit plus le signal évoluer dans le temps, mais on le décompose en un très grand nombre de petits signaux cosinusoïdaux de fréquences différentes. Les fréquences faibles (entre 20Hz et 100Hz) sont les fréquences que notre cerveau interprète comme graves (ou basses), et les fréquences hautes (entre 2kHz et 20kHz) sont les fréquences que notre cerveau interprète comme aigües. +En pratique, on s'intéresse aussi beaucoup à la **représentation fréquentielle** des signaux. Dans le **domaine fréquentiel**, on ne voit plus le signal évoluer dans le temps, mais on le décompose en un très grand nombre de petits signaux sinusoïdaux de fréquences différentes. Les fréquences faibles (entre 20Hz et quelques 100Hz) sont les fréquences que notre cerveau perçoit comme graves (ou basses), et les fréquences hautes (entre 2kHz et 20kHz) sont les fréquences que notre cerveau perçoit comme aigües. -Cette représentation se fait par la **Transformation de Fourier** dont les bases mathématiques dépassent largement le cadre de cette formation, mais dont il faut connaître le nom pour comprendre certaines documentations. +Cette représentation se fait par la **Transformation de Fourier**, dont les bases mathématiques dépassent largement le cadre de cette formation. Connaître son nom est cependant très utile pour comprendre certaines documentations. On dispose aujourd'hui de nombreux outils dans Pure Data pour manipuler les signaux dans le **domaine fréquentiel**, et non **pas dans le domaine temporel**. Ces outils sont appelés des **filtres**, et on a par exemple ces 3 filtres de base : * la boîte **lop\~**: *LOw-Pass filter*, qui laisse passer les fréquences basses en-dessous d'une fréquence de coupure, et qui coupe les fréquences plus hautes que la fréquence de coupure * la boîte **hip\~**: *HIgh-Pass filter*, qui laisse passer les fréquences hautes au-dessus de la fréquence de coupure, et qui coupe les fréquences plus basses que la fréquence de coupure -* la boîte **bp\~**: *Band-Pass filter**, qui laisse passer une bande de fréquences dans les fréquences médium, et coupe à la fois les fréquences hautes et les fréquences basses +* la boîte **bp\~**: *Band-Pass filter*, qui laisse passer une bande de fréquences dans les fréquences médium, et coupe à la fois les fréquences hautes et les fréquences basses ![Patch d'exemple : filtre passe-bas sur onde carrée](./screenshots/09-filters.png) @@ -427,6 +427,9 @@ On dispose aujourd'hui de nombreux outils dans Pure Data pour manipuler les sign * [Filtres dans Pure Data (EN)](http://write.flossmanuals.net/pure-data/filters/) +--- + + ## Chapitre 10 : Drum machine On peut charger et jouer des fichiers sons à l'aide de l'objet **readsf\~**. Pour cela il faut déclencher l'envoi d'un **message "open Chemin/Vers/Mon_Fichier.wav"** dans l'objet readsf\~. Le chargement du fichier est alors complètement géré par Pure Data. @@ -459,8 +462,48 @@ Ci-dessous, vous trouverez des patches d'une boîte à rythme très simple, et d ## Chapitre 11 : Sub-patches et Abstractions -Pour expliquer les sub-patches et les abstractions, on va partir d'un cas concret. Lorsque l'on veut jouer +Pour expliquer les sub-patches et les abstractions, on va partir d'un cas concret. Lorsque l'on veut jouer avec le clavier d'ordinateur, on doit toujours commencer un patch par les mêmes boîtes ci-dessous : +![Exemple réutilisé dans presque tous les patches](./screenshots/11-abstraction-base.png) + +Or, on va vouloir deux choses en pratique : +- que ces boîtes prennent moins de place à l'écran (qu'on puisse toutes les ranger dans une super-boîte, ce qu'on appelle un **subpatch**) +- que l'on puisse réutiliser proprement - et de manière robuste - cette fonction "Key To Frequency" dans n'importe quel patch (on utilisera alors plutôt les **abstractions**) + +### Sub-patch + +Un sub-patch est un simple conteneur (une super-boîte) dans laquelle on va aller ranger et cacher d'autres boîtes. Pour créer un sub-patch vide, il faut créer une boîte "**pd NomDeMonSubpatch**". + +![Création d'un sub-patch vide nommé KeyboardToFreqSubpatch](./screenshots/11-subpatch-empty.png) + +Ensuite, on va déplacer toutes les boîtes qui doivent être rangées dans ce sub-patch. Le problème est alors que pour modifier l'octave, on doit ouvrir et modifier le sub-patch. Pour résoudre ce problème, on va créer un **inlet**, c'est-à-dire une entrée de données pour le sub-patch. + +![Remplissage du sub-patch, avec ses entrées et sorties](./screenshots/11-subpatch-inlet-outlet.png) + +### Abstraction + +Les sub-patches permettent de donner de l'ordre et de la structure à de gros patches (comme dans le chapitre qui suit : Pure Data Orchestra). Le problème principal est qu'il faut copier-coller ce sub-patch dans chaque nouveau patch qui doit utiliser le clavier d'ordinateur comme clavier MIDI. C'est un problème car si on fait une mise à jour du sub-patch à un endroit, par exemple si l'on a détecté puis corrigé un bug, **les copies du sub-patch ne seront pas modifiées car elles sont indépendantes**. + +Pour résoudre ce problème, on va créer un patch Pure Data indépendant pour notre ensemble de boîtes "Keyboard To Frequency". + + + +![Patch principal qui utilise un second patch d'abstraction](./screenshots/11-abstraction-patch.png) + +### À faire +* Question : depuis le patch principal, comment fait-on pour différencier un subpatch d'une abstraction ? +* Créer des sub-patches et des abstractions très simples - par exemple : qui font des additions - pour bien comprendre la différence entre abstraction et sub-patch +* Créer votre propre abstraction KeyboardToMidiNote ou KeyboardToFrequency + + +### Remarque importante +Lorsque l'on insère une abstraction dans un patch, on crée ce que l'on appelle une **instance** de cette abstraction. En programmation orientée-objet classique, on parle d'**instance de classe**, avec les classes (les objets) qui sont définies par du code informatique (C#, C++, Python, etc.) plutôt que par des liaisons entre des boîtes comme dans Pure Data. + +### Ressources +* [Sub-patches (EN)](http://write.flossmanuals.net/pure-data/subpatches/) +* [Abstractions (EN)](http://write.flossmanuals.net/pure-data/abstractions/) + +--- \newpage @@ -513,12 +556,14 @@ Par rapport aux simples connexions de signaux de données, sur lesquelles le son * [Patch du délai écho](./resources/11_delay-feedback.pd) +--- + ## Chapitre 14 : effets audio avancés - flanger Un autre effet est le flanger. Le principe est assez proche du délai : on va ajouter au signal sonore une copie de lui-même, mais avec cette fois un retard très court. L'effet obtenu est assez facilement reconnaissable (essayer le patch ci-dessous). -![flanger patch](./screenshots/12-flanger.png) +![Flanger patch](./screenshots/12-flanger.png) ### À faire * Re-créer et tester le patch ci-dessus @@ -532,6 +577,8 @@ Un autre effet est le flanger. Le principe est assez proche du délai : on va aj * [Patch du flanger](./resources/12_flanger.pd) +--- + \newpage ## Chapter 15: package manager, external libraries @@ -542,10 +589,10 @@ You can access it by going to the menu **help** and choosing **find externals**. Some very useful ones are: * mrpeach (for everything network and OSC related) -* list-abs (list abstractions that make manipulating and searching lists very easy) * cyclone (a bunch of useful little gems) * comport (for interfacing with arduino and other serial devices) * hid (useful for gamepads and joysticks) +* list-abs (list abstractions that make manipulating and searching lists very easy) ![installing externals](./resources/dniz.jpg) @@ -572,20 +619,27 @@ You can download automatonism from the link below. ## Chapitre 16 : OSC et musique contrôlée par la météo -L'OSC (*Open Sound Control*) est un protocole fréquemment utilisé pour la communication entre . Les messages OSC peuvent être transmis via des paquets UDP/IP (ou plus rarement TCP/IP) entre des machines connectées sur un même réseau. +L'OSC (*Open Sound Control*) est un protocole fréquemment utilisé en musique numérique pour la communication de données de contrôle : notes à jouer, tempo, etc. Les messages OSC peuvent être transmis via des paquets UDP/IP (ou plus rarement TCP/IP) entre des machines connectées sur un même réseau. -On ne va pas trop s'étendre sur ce standard, mais il faut quand même connaître la structure de base des messages. +On ne va pas trop s'étendre sur ce standard, mais il faut quand même connaître la structure de base des messages. Ils sont constitués de deux éléments principaux : +* une adresse au format URL, par exemple "/main_oscillator/adsr" +* une liste d'arguments, par exemple "30.0 51.7 400 120" (2 nombres à virgule puis 2 nombres entiers) -Il sont ***************:::: +Vous n'avez pas besoin d'aller trop loin dans la connaissance du standard. En effet, nous vons avons préparé un patch qui envoie des requêtes puis reçoit les infos depuis un serveur OSC branché directement dans la salle de formation, sur un Raspberry Pi. Ce serveur récupère des infos en ligne, comme les coordonnées géographiques et la météo de certaines villes, le cours du bitcoin, la charge CPU et RAM du serveur, ... Et les met à disposition via OSC. L'adresse IP vous sera donnée au moment où le serveur sera branché et correctement démarré dans la salle de formation. + +![Patch de connexion, requêtes et réception OSC](./screenshots/16-osc-patch.png) Attention : lorsque le *receiver* OSC (qui réceptionne les données du RPi serveur) est présent dans un patch, il se connecte automatiquement sur le port pour lequel il est configuré - ici, cela doit être le port 8081. -Or, pour une machine donnée, 1 seul programme peut se mettre en écoute d'un port ; il ne faut donc avoir qu'un seul patch PureData ouvert à la fois pour que la boîte "mrpeach/receiver" fonctionne à coup sûr. +Or, pour une machine donnée, 1 seul programme peut se mettre en écoute d'un port ; il ne faut donc avoir qu'un seul patch Pure Data ouvert à la fois pour que la boîte "mrpeach/receiver" fonctionne à coup sûr. + +![Visualisation des données OSC reçues depuis le serveur local](./screenshots/16-osc-console.png) ### Ressources * [OSC et bibliothèque MrPeach](https://fr.flossmanuals.net/puredata/osc/) - - - + \newpage # Video diff --git a/resources/11-abstract-keyboard.pd b/resources/11-abstract-keyboard.pd new file mode 100644 index 0000000..bde8c0f --- /dev/null +++ b/resources/11-abstract-keyboard.pd @@ -0,0 +1,4 @@ +#N canvas 34 23 949 287 10; +#X floatatom 454 130 5 0 0 0 - - -; +#X obj 454 64 hradio 15 1 1 5 empty empty empty 0 -8 0 10 -260097 -1 +-1 2; diff --git a/resources/11-abstraction-base.pd b/resources/11-abstraction-base.pd new file mode 100644 index 0000000..13cf4d7 --- /dev/null +++ b/resources/11-abstraction-base.pd @@ -0,0 +1,151 @@ +#N canvas 324 51 785 509 10; +#X floatatom 392 247 5 0 0 0 - - -; +#X obj 414 9 key; +#X floatatom 414 38 5 0 0 0 - - -; +#X obj 35 123 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X text 46 143 Do; +#X text 84 142 Do#; +#X obj 77 123 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 120 123 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 164 123 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X text 136 142 Ré; +#X text 176 141 Ré#; +#X obj 206 123 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 248 123 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 291 123 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 335 123 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X text 220 141 Mi; +#X text 263 141 Fa; +#X text 301 141 Fa#; +#X text 343 142 Sol; +#X text 382 142 Sol#; +#X text 436 143 La; +#X text 476 142 La#; +#X text 520 143 Si; +#X text 564 143 Do; +#X text 602 142 Do#; +#X text 654 142 Ré; +#X text 694 141 Ré#; +#X text 732 141 Mi; +#X obj 378 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 420 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 463 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 507 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 549 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 591 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 634 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 678 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 721 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X msg 35 175 48; +#X msg 76 175 49; +#X msg 121 175 50; +#X msg 165 176 51; +#X msg 206 176 52; +#X msg 248 176 53; +#X msg 292 176 54; +#X msg 335 176 55; +#X msg 379 176 56; +#X msg 420 176 57; +#X msg 462 176 58; +#X msg 507 175 59; +#X msg 549 173 60; +#X msg 591 173 61; +#X msg 636 173 62; +#X msg 678 173 63; +#X msg 722 174 64; +#X obj 235 70 route 113 122 115 101 100 102 116 103 121 104 117 106 +107 111 108 112 109; +#X obj 518 406 mtof; +#X obj 669 266 hradio 15 1 1 5 empty empty empty 0 -8 0 10 -4032 -1 +-1 3; +#X text 220 253 Note MIDI issue du clavier; +#X text 560 380 Note MIDI après choix de l'octave; +#X floatatom 669 307 5 0 0 0 - - -; +#X obj 669 328 * 12; +#X obj 518 356 + 0; +#X obj 669 285 - 2; +#X text 548 307 décalage d'octave =; +#X floatatom 518 378 5 0 0 0 - - -; +#X obj 669 219 loadbang; +#X msg 669 240 2; +#X floatatom 518 437 5 0 0 0 - - -; +#X connect 0 0 61 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 67 0; +#X connect 56 0 62 0; +#X connect 59 0 60 0; +#X connect 60 0 61 1; +#X connect 61 0 64 0; +#X connect 62 0 59 0; +#X connect 64 0 55 0; +#X connect 65 0 66 0; +#X connect 66 0 56 0; diff --git a/resources/11-subpatch-keyboard.pd b/resources/11-subpatch-keyboard.pd new file mode 100644 index 0000000..cbc3a36 --- /dev/null +++ b/resources/11-subpatch-keyboard.pd @@ -0,0 +1,162 @@ +#N canvas 34 23 949 287 10; +#N canvas 39 347 930 510 KeyboardToFreqSubpatch 1; +#X obj 830 223 inlet; +#X obj 832 481 outlet; +#X floatatom 392 247 5 0 0 0 - - -; +#X obj 414 9 key; +#X floatatom 414 38 5 0 0 0 - - -; +#X obj 35 123 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X text 46 143 Do; +#X text 84 142 Do#; +#X obj 77 123 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 120 123 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 164 123 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X text 136 142 Ré; +#X text 176 141 Ré#; +#X obj 206 123 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 248 123 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 291 123 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 335 123 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X text 220 141 Mi; +#X text 263 141 Fa; +#X text 301 141 Fa#; +#X text 343 142 Sol; +#X text 382 142 Sol#; +#X text 436 143 La; +#X text 476 142 La#; +#X text 520 143 Si; +#X text 564 143 Do; +#X text 602 142 Do#; +#X text 654 142 Ré; +#X text 694 141 Ré#; +#X text 732 141 Mi; +#X obj 378 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 420 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 463 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 507 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 549 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 591 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 634 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 678 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 721 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X msg 35 175 48; +#X msg 76 175 49; +#X msg 121 175 50; +#X msg 165 176 51; +#X msg 206 176 52; +#X msg 248 176 53; +#X msg 292 176 54; +#X msg 335 176 55; +#X msg 379 176 56; +#X msg 420 176 57; +#X msg 462 176 58; +#X msg 507 175 59; +#X msg 549 173 60; +#X msg 591 173 61; +#X msg 636 173 62; +#X msg 678 173 63; +#X msg 722 174 64; +#X obj 235 70 route 113 122 115 101 100 102 116 103 121 104 117 106 +107 111 108 112 109; +#X obj 518 406 mtof; +#X obj 669 266 hradio 15 1 1 5 empty empty empty 0 -8 0 10 -4032 -1 +-1 2; +#X text 220 253 Note MIDI issue du clavier; +#X text 560 380 Note MIDI après choix de l'octave; +#X floatatom 669 307 5 0 0 0 - - -; +#X obj 669 328 * 12; +#X obj 518 356 + 0; +#X obj 669 285 - 2; +#X text 548 307 décalage d'octave =; +#X floatatom 518 378 5 0 0 0 - - -; +#X obj 669 219 loadbang; +#X msg 669 240 2; +#X floatatom 518 437 5 0 0 0 - - -; +#X connect 0 0 58 0; +#X connect 2 0 63 0; +#X connect 3 0 4 0; +#X connect 4 0 56 0; +#X connect 5 0 39 0; +#X connect 8 0 40 0; +#X connect 9 0 41 0; +#X connect 10 0 42 0; +#X connect 13 0 43 0; +#X connect 14 0 44 0; +#X connect 15 0 45 0; +#X connect 16 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 54 0; +#X connect 38 0 55 0; +#X connect 39 0 2 0; +#X connect 40 0 2 0; +#X connect 41 0 2 0; +#X connect 42 0 2 0; +#X connect 43 0 2 0; +#X connect 44 0 2 0; +#X connect 45 0 2 0; +#X connect 46 0 2 0; +#X connect 47 0 2 0; +#X connect 48 0 2 0; +#X connect 49 0 2 0; +#X connect 50 0 2 0; +#X connect 51 0 2 0; +#X connect 52 0 2 0; +#X connect 53 0 2 0; +#X connect 54 0 2 0; +#X connect 55 0 2 0; +#X connect 56 0 5 0; +#X connect 56 1 8 0; +#X connect 56 2 9 0; +#X connect 56 3 10 0; +#X connect 56 4 13 0; +#X connect 56 5 14 0; +#X connect 56 6 15 0; +#X connect 56 7 16 0; +#X connect 56 8 30 0; +#X connect 56 9 31 0; +#X connect 56 10 32 0; +#X connect 56 11 33 0; +#X connect 56 12 34 0; +#X connect 56 13 35 0; +#X connect 56 14 36 0; +#X connect 56 15 37 0; +#X connect 56 16 38 0; +#X connect 57 0 69 0; +#X connect 58 0 64 0; +#X connect 61 0 62 0; +#X connect 62 0 63 1; +#X connect 63 0 66 0; +#X connect 64 0 61 0; +#X connect 66 0 57 0; +#X connect 67 0 68 0; +#X connect 68 0 58 0; +#X connect 69 0 1 0; +#X restore 454 98 pd KeyboardToFreqSubpatch; +#X floatatom 454 130 5 0 0 0 - - -; +#X obj 454 64 hradio 15 1 1 5 empty empty empty 0 -8 0 10 -260097 -1 +-1 2; +#X connect 0 0 1 0; +#X connect 2 0 0 0; diff --git a/resources/16_exemple-meteo.pd b/resources/16_exemple-meteo.pd index a97564b..30e7fb7 100644 --- a/resources/16_exemple-meteo.pd +++ b/resources/16_exemple-meteo.pd @@ -1,23 +1,36 @@ -#N canvas 460 443 659 450 10; +#N canvas 590 120 683 450 10; #X obj 409 42 mrpeach/udpreceive 8081; #X obj 409 65 mrpeach/unpackOSC; -#X obj 131 247 mrpeach/packOSC; -#X msg 140 185 send /get/weather \$1; -#X obj 131 322 mrpeach/udpsend; -#X msg 95 94 send /get/bitcoin; -#X msg 131 117 send /get/cpu; -#X msg 158 301 connect 192.168.0.235 8080; -#X msg 356 249; -#X obj 474 242 print; -#X obj 405 168 mrpeach/routeOSC /weather/coord/lon; -#X msg 140 157 symbol brussels; +#X obj 17 202 mrpeach/packOSC; +#X msg 165 148 send /get/weather \$1; +#X obj 17 307 mrpeach/udpsend; +#X msg 23 96 send /get/bitcoin; +#X msg 59 119 send /get/cpu; +#X msg 44 286 connect 192.168.0.235 8080; +#X obj 334 315 mrpeach/routeOSC /weather/coord/lon; +#X text 42 237 L'adresse IP du serveur doit être modifiée pour correspondre +à son adresse dans la salle de formation \, le jour de la formation +; +#X obj 472 120 print; +#X text 356 382 Longitude \, latitude; +#X obj 433 337 mrpeach/routeOSC /weather/coord/lat; +#X floatatom 370 364 5 0 0 0 - - -; +#X floatatom 430 363 5 0 0 0 - - -; +#X msg 165 120 symbol brussels; +#X text 446 264 Le routage OSC permet de ne récupérer que les messages +avec une URL bien spécifique; +#X text 22 29 Infos que l'on peut demander. La plus utile est la météo +\, car le serveur renvoie également toute une liste d'informations +utiles concernant la ville.; #X connect 0 0 1 0; +#X connect 1 0 8 0; #X connect 1 0 10 0; +#X connect 1 0 12 0; #X connect 2 0 4 0; #X connect 3 0 2 0; #X connect 5 0 2 0; #X connect 6 0 2 0; #X connect 7 0 4 0; -#X connect 10 0 8 0; -#X connect 10 0 9 0; -#X connect 11 0 3 0; +#X connect 8 0 13 0; +#X connect 12 0 14 0; +#X connect 15 0 3 0; diff --git a/screenshots/11-abstraction-base.png b/screenshots/11-abstraction-base.png new file mode 100644 index 0000000..7ef7598 Binary files /dev/null and b/screenshots/11-abstraction-base.png differ diff --git a/screenshots/11-abstraction-patch.png b/screenshots/11-abstraction-patch.png new file mode 100644 index 0000000..6b893b8 Binary files /dev/null and b/screenshots/11-abstraction-patch.png differ diff --git a/screenshots/11-subpatch-empty.png b/screenshots/11-subpatch-empty.png new file mode 100644 index 0000000..f7a72e1 Binary files /dev/null and b/screenshots/11-subpatch-empty.png differ diff --git a/screenshots/11-subpatch-inlet-outlet.png b/screenshots/11-subpatch-inlet-outlet.png new file mode 100644 index 0000000..3ca8e99 Binary files /dev/null and b/screenshots/11-subpatch-inlet-outlet.png differ diff --git a/screenshots/16-osc-console.png b/screenshots/16-osc-console.png new file mode 100644 index 0000000..e3b46ee Binary files /dev/null and b/screenshots/16-osc-console.png differ diff --git a/screenshots/16-osc-patch.png b/screenshots/16-osc-patch.png new file mode 100644 index 0000000..160bec4 Binary files /dev/null and b/screenshots/16-osc-patch.png differ