Pure Data : initiation

Jérôme Abel
http://impala.utopia.free.fr/pd
Document de synthèse réalisé pour deux ateliers d'initiation niveau 1 et 2
à Mains d'Oeuvres, Paris, dans le cadre des formations proposées parl'association Art Sensitif, le 23 et 30 septembre 2006. La lecture de ladeuxième partie, plus pratique, pourra s'accompagner du dossiercompressé comprenant un atelier complet d'initiation composé de patchs
pure data, téléchargeable sur le site.
Dernière mise à jour : 22 novembre 2007.
Sous licence creative commons by-nc(respecter la parenté, usage non-commercial)

Première partie
Qu'est-ce que c'est ?
Autour de pd
A quoi ça sert ?
Références
Entrées / Sorties
Ressources Entrées / SortiesD'où ça sort ?
Qui en est le créateur ?
Qui sont ses fidèles ?
Quelle licence ?
Comment se le procurer ?
Différences avec un langage de programmation ?
Multi-plateforme ?
Différences avec MaxMSP ?
Où trouver des ressources ?
En France
Pure Data initiation - 11.20072

Qu'est-ce que c'est ?
A. Un logiciel pour faire des organigrammes
B. Un logiciel de montages électroniques ou de plomberie
C. Un environnement de programmation graphique en temps réelpour la création musicale et multimédia

Pure Data initiation - 11.20073

Qu'est-ce que c'est ?
A. Un logiciel pour faire des organigrammes
B. Un logiciel de montages électroniques ou de plomberie
C. Un environnement de programmation graphique en temps
réel pour la création musicale et multimédia

Pure Data initiation - 11.20074

Autour de pd(Une diversité de connaissances présentant un formidable intérêt,mais qui pose aussi un certain nombre de difficultés)Informatique /Programmation

Acoustique /Audionumérique

Électronique

Physique /Mathématiques

Musique

Arts
Pure Data initiation - 11.20075

A quoi ça sert ?
Un programme qui fait des programmes. Il permet une grande variétéd'approches esthétiques. Les seules limites, dit-on, sont celles del'imagination. La difficulté n’est plus la construction de l’outil, mais sa
définition, sa conception, en tenant compte d'impératifs musicaux,artistiques, techniques.

> Modéliser des instruments électroniques (synthétiseurs,
sampler, effets, séquenceur midi, ...)> Applications multimédias, interfaces, interactions (jeux,
instruments, robotique, design d'interaction, stream...)> Concerts, performance, compositions, installations (vidéo /sonore), conception sonore (sound design)> Outil technique de mesures acoustiques> Outil pédagogique (acoustique, synthèse, 3D, ...)
Pure Data initiation - 11.2007

6

A quoi ça sert ?

Boîte aux lettres
sonore/interactive(Hacking)

Streaming audio/vidéo

Pure Data initiation - 11.2007

Performance /Instrument

7A quoi ça sert ?

Live 3D/son

Robotique

Pure Data initiation - 11.20078

Références
Impala Utopia (Jérôme Abel)
Unité 01
http://impala-utopia.org

Team?
Robot Rock Band
http://robotrockband.com

Joan Bagès I Rubi
D.E.A Systèmes Musicaux Interactifs avec
interface physique
http://www.techn.upf.es/master/mad02/~m2308/paginawab-personal-JoanBagesRubi/cat/escolta.htm

IO team(Josh Steiner, Jacob Zweig,
George Campbell, Patina Mendez, Steven
Mc Donald, Nevin Cheung, Star Morin,
Jon Nelson, Hans-Cristoph Steiner,
Megan Keene, Candice Lucado, Aaron
Young, Pasha Donelly, Adrian Mulvaney,
JD Hillard)
Improbable orchestra
http:/xiphoidprocess.com/io

Chdh (Cyrille Henry, Damien Henry,
Nicolas Montgermont)
image d'une performance
http://chdh.free.fr

Voir d'autres réalisations sur lesite de la convention internationalede 2007, qui a eu lieu à Montréal :http://pure-data.ca/fr/

Pure Data initiation - 11.2007

9

Entrées / Sorties

Pure Data initiation - 11.2007(non exhaustif)10

Entrées / Sorties

Interfaceanalogique> numérique(non exhaustif)

Interfacenumérique> analogique

Pure Data initiation - 11.200711

Entrées / Sorties(non exhaustif)

Exemple d'une chaîne interactive
Capteurs

Interfaces
capteurs

Interfaces
actionneurs
Logiciels

Usb > Midi

Actionneurs

Passage entre différents mondes
Physique > analogique (électricité) > numérique (binaire) > analogique (électricité) > physiquePure Data initiation - 11.200712

Ressources Entrées / Sorties
C.U.I (Create USB Interface)
http://www.create.ucsb.edu/%7Edano/CUI/
http://ciam.dyndns.org/~vitamin/tof/cuiad/
Arduino + Wiring
http://hardware.processing.org/
Interfaces capteurs + actionneurs + documentations (électroniques, logiciels, ...)
http://www.interface-z.com/
Liens Emmanuel FLETY - IRCAM Development Blog
http://recherche.ircam.fr/equipes/temps-reel/movement/flety/static.php?page=static050310-210011

The WiSe Box Project, The EtherSense Project, AtoMIC Pro : Analog to MIDI Interface, Eobody

Do It Yourselft (D.I.Y) APO 33 (joystick, clavier)
http://www.apo33.org/aposite/index.php/Chaos_Micromedias_project
Liens D.I.Y
http://del.icio.us/giair/DIY
Centre de Ressources d'Art Sensitif à Mains d'Œuvres
http://www.craslab.org/
Pure Data initiation - 11.200713

D'où ça sort ?

Pure Data initiation - 11.200714

D'où ça sort ?
Il tire son origine de l'éditeur Patcher écrit par Miller Pucketteen 1988. Le logiciel a été cédé à la société américaine Opcode,où il a été réécrit par David Zicarelli sous le nouveau nom de
Max/MSP. Miller Puckette a décidé de reprendre la conception
de Patcher pour faire un nouveau logiciel dans le but d'obtenir unlogiciel libre et transportable à des fins musicales en temps réel.
Il est distribué gratuitement sur le Web, maintenu par Miller
Puckette, maintenant directeur associé du CRCA
(Center for Research in Computing and the Arts) de l'Universitéde Californie. De nombreux développeurs se sont par la suite
joints au projet.

Pure Data initiation - 11.200715

Qui en est le créateur?
Maman ...

Miller Puckette, l'enfant prodige, propage la bonne nouvelle. Nous lui devonsobéissance, notre corps et notre âme lui appartiennent.
Pure Data initiation - 11.200716

Qui sont ses fidèles ?
?

Rencontres sous forme de conférences, d'ateliers, de formations, de festivals.
A noter : la 1ère convention internationale à Graz (Autriche) en 2004, etla deuxième convention à Montréal en Août 2007.
Pure Data initiation - 11.200717

Quelle licence ?
La licence qui protège ce logiciel permet un travailcollaboratif en le rendant accessible au niveau des sources eten permettant de le distribuer gratuitement. Pure Data estétrangement en copyright, mais il est libre d'utilisation (logiciel
libre) pour n'importe quel usage : « Standard Improved BSD
License ».
Une large communauté de part le monde participe à ce
projet. Elle se compose de développeurs et d'utilisateurs. Les
premiers créent de nouveaux objets en langage C ou
contribuent à améliorer le fonctionnement général duprogramme. Les seconds l'utilisent à des fins artistiques,scientifiques ou pédagogiques. Ils peuvent aussi contribuer en
faisant des remarques aux développeurs ou en aidant à leurmanière (documentations, ...).
Pure Data initiation - 11.2007

18

Comment se le procurer ?
A. une connexion internet suffit
B. une connexion internet et une carte bleue
C. une connexion internet, une carte bleue, et la récitation de
mantras.

Pure Data initiation - 11.2007

19

Comment se le procurer ?
A. une connexion internet suffit
B. une connexion internet et une carte bleue
C. une connexion internet, une carte bleue, et la récitation de
mantras.

Pure Data initiation - 11.200720

Différences avec un
langage de programmation ?
Ce n'est pas vraiment un langage de programmation en tant que tel,mais un environnement d'implémentation. Il emprunte à la programmation
classique certaines notions : noms d'objets, de méthodes, certains types dedonnées (int, float, ...). C'est un système conçu de façon modulaire. Chaqueutilisateur peut adapter le logiciel selon ses besoins, la copie de bout de code
est très facile, ce qui permet de faire des prototypes assez rapidement.
Il exploite un langage de programmation non procédural avancé(programmation orientée objet) qui permet à l'utilisateur d'effectuer desmodifications au code en temps réel sans que celui-ci doive chaque foisêtre recompilé.
Alors que pour un langage de programmation, il y a trois étapes :1. enregistrer un fichier (fichier source)
2. le compiler dans un terminal (fichier binaire compréhensible par la machine)
3. le lancer dans un terminal.
Pure Data initiation - 11.200721

Différences avec un
langage de programmation ?
Cependant, la non-linéarité de cette approche peut parfois causer des difficultés
dans la conception des patchs, surtout à l'étape de composition. Elle peut notamment
entraîner de la confusion dans la compréhension et dans la gestion de l'ordre desopérations. On peut arranger ça, on le verra plus tard.
(> voir http://www.earcatching.com/pdconv/index.htm : convention de programmation pour travailler à plusieurs.).

Exemple avec une boucle
but : afficher 0,1,2,3,4 dans un terminal
En Java :Dans Pure Data :for (int i = 0; i < 5; i++) {System.out.println(i);}Problème d'organisation des fils.
Problème de lisibilité, d'ordre.
Ca commence où, qui fait quoi ?

Pure Data initiation - 11.200722

Multi-plateforme ?
C'est un environnement portable avec une architecture à deux
composants, client/serveur : l'interface graphique-utilisateur TCL/TK et lemoteur d'exécution temps réel ("le serveur"). Ils peuvent ainsi être développés
séparément.

TCL/TK est un kit d'outils gratuit pour créer des interface-utilisateur,portable sur d'autres système d'exploitation. La communication entre les deux
se fait via un protocole indépendant du matériel, qui peut utiliser uneconnexion réseau comme couche de transport (le firewall doit permettre cetteliaison)Le fait d'être multi-plateforme implique quelques contraintes. Un moteur
graphique compatible est peu performant puisqu'il n'est pas spécifiquement
optimisé pour un type de machines.
Plateformes : Win32, Irix, BSD, GNU/Linux, MacOsX, Pda, Ipod
Pure Data initiation - 11.200723

Différences avec MaxMSP ?
(voir : ./pd/doc/1.manual/x5.htm#s3)
Le point commun c'est Miller Puckette, qui a collaboré au développement
de ce type de logiciel à l'Ircam. Ils appartiennent à la même famille « patcher
programming languages » (Max/FTS, ISPW Max, Max/MSP, jMax, etc.)
Au départ, il y a Max, un système midi. Ensuite, a été ajouté la partie MSP (MaxSignal Processing), qui permet de générer du son en temps réel.
> Il est possible d'exporter les connaissances acquises de l'un vers l'autre, mais
pas les fichiers. En théorie, ca peut marcher en nommant les fichiers « .pat ».
> Les objets de base sont identiques, mais certains ne se nomment pas de lamême façon.
Frères ennemis> Max bénéficie de plus de dix ans de recherches et d'ajouts. Plus complet.
ou faux jumeaux ?
> Pd dispose d'objets singuliers notamment pour des opérations de réseau quin'ont pas d'équivalent sur Max.
> Max est commercialisé par Cycling 74, Pd est un logiciel libre (état d'esprit, conviction politique, éthique)> MAXMSP / Jitter : prix = 1000 €, prix étudiant : 600 € (max seul = 600€ ou 300€ pour étudiants)(mais il existe aussi des applications libres, ARGO : http://perso.orange.fr/Paresys/ARGO)> Ordre des instructions droite gauche dans l'emplacement du patch. Dans pure data, ordre des instructions = ordre de création> Max bénéficie d'une bien meilleure documentation (c'est ce qu'on essaie de réparer ici)
> Interface plus conviviale. (couleurs, outils).
> Certains professeurs utilisant Max dans les écoles, ne proposent pas la solution gratuite de pure data (= lobby ou ignorance ?)> Avec max on peut créer des VST/ RTAS plugin et des applications standalone (= autonome, évite d'installer le logiciel)> La gestion des traits de connections dans Max en traits droits et anguleux permet une meilleure visibilité. (dans pd la fonction
menu Edit > tidy up n'est pas encore vraiment efficace)
D'autres logiciels sont basés sur ce principe modulaire (patcher) : Bidule, Isadora, Reaktor, Eyes web, Modular (Clavia), vvvv, ...

Pure Data initiation - 11.200724

Où trouver des ressources ?
Le concepteur du logiciel (téléchargement, documentation, ...)* Miller Puckette (en) : http://www-crca.ucsd.edu/~msp/
Site officiel (téléchargement, FAQ, documentations, communauté, patchs ...)* Communauté internationale (en) : http://www.puredata.info/* Forum anglophone (en) : http://puredata.hurleur.com/
Les mailing lists pour des questions plus avancées (chercher dans les archives) :* Mailing lists (en) : http://lists.puredata.info/listinfo

Projet Pdpédia de lexique collaboratif en ligne en cours de construction :* Pdpédia (multilingue) : http://wiki.puredata.info/

À venir sur la page de pdpédia, une liste de liens hiérachisés parcatégories (vidéo, audio, captation, etc.).
Pure Data initiation - 11.2007

25

Deuxième Partie
Installation
Organisation
Démarrage
Ressources dans Pd
Le patch
Terminologie

Pure Data initiation - 11.2007

26

Installation
Deux liens pour télécharger le logiciel. Deux versions existent : Pd et Pd
extended. Il faut savoir que le noyau, c'est-à-dire Pd avec les objets debase, on dit objets natifs, est sur le site de Miller Puckette. Il est développé
séparément des bibliothèques (ou librairies) qui gravitent autour de Pd. Pourdébuter, il vaut mieux privilégier la version extended. Elle incorpore uneversion stable de pure data, en générale plus ancienne, mais avec
beaucoup plus d'objets donc de fonctionnalités.
> http://www.puredata.info/downloads
Pd-extended :Zexy 1.3.
Iemlib 1.15, bibliothèque de l'univesristé IEM.
Cyclone 0.1 49, bibliothèque d'objets tirés de Max/Msp.
Gem 0.9, bibliothèque vidéo.
Pmpd 0.5, bibliothèque d'objets permettant la modélisation de physique mécanique.
Xsample 0.3.0pre20, bibliothèque d'objets permettant des fonctions avancées de lecture et d'écriture de fichiers sonores.
OSC, bibliothèque d'objets permettant la communication par protocole OSC.

> Hans-Christoph Steiner : http://at.or.at/hans/pd/installers.html
Pure Data initiation - 11.200727

Installation
Le fichier d'installation (http://puredata.info/docs/faq)
Windows (.exe) : lancer l'installeur, choisir répertoire (depuis la version 0.37 ou
0.38 les espaces dans le chemin de ce répertoire ne posent plus de problèmes.)

MacOSX (.dmg): déplacer Pd.app où vous voulez
site de ressources pour MacOsX : http://homepage.mac.com/atl/pd/links.html
Linux (.deb) : dépaqueter la version extended ou installer les bibliothèques
une par une : dans un terminal en root, apt-get install puredata + planet
CCRMA (Voir plus précisément).
Distributions Linux orientées multimédia
Debian Multimedia, Knoppix, Pure:dyne, Ubuntu Studio, Apodio,
Dyne:bolic.
>>> Voir le site http://www.linuxmao.org/
Pure Data initiation - 11.200728

Organisation(des fichiers)
Pour Mac, il faut souvent procéder d'une autre façon :1. ouvrir le dossier "application"
2. trouver le lanceur pure data
3. click droit (ctrl + click) puis "afficher
le contenu du paquet"
4. ouvrir le dossier "contents/ressources/extra"

Répertoire principal :Linux, le répertoire est /usr/lib/pd/
Mac OsX, le répertoire est /usr/local/lib/pd/
Windows : le répertoire est choisi lors de l'installation: /pd.exe : appel du programme: documentation (manuel, exemples control, audio, fft; références (aides d' objets), ...)
: tous les objets et les bibliothèques (paquet d'objets), des fois, il s'appelle « externs »: Lanceur de pure data, il se termine par .bat pour windows

Les objets prennent l'extension :* .dll pour Windows* .pd_darwin pour Mac* .pd_linux pour Linux
Pure Data initiation - 11.200729

Démarrage
Le démarrage est effectué soit par le lanceur du programme (son icône en général), soit
par un fichier où est enregistré les options de démarrage (« startup options »,« configuration flags »). Pour gérer ces options de démarrage, il y a deux façons soit
lancer le programme et utiliser le menu, soit configurer soi-même le fichier. Au début,il vaut mieux privilégier le menu.

1. Menu
File > Startup
File > Path
Ordre à respecter :Apply > Save all settings > Ok
Dans cet exemple, on peut voir qu'ily a déjà les bibliothèques zexy, iemlib1,
cyclone, Gem, pmpd, xsample, iemlib2,
iem_mp3, iem_t3_lib.

Pure Data initiation - 11.200730

Démarrage
2. FichierOù trouver ce fichier de configuration ?
Windows :1. Soit dans le répertoire d'installation vu précédemment, c'est le fichier qui se
termine par .bat. S'il n'y en a pas, vous pouvez le créer suivant quelques règles
que nous verrons juste après.
2. Ou alors, si vous avez choisi l'installeur de Hans Christoph Steiner, il fautdouble-cliquer sur pd-settings.reg pour importer les configurations dans leregistre (accès aux bibliothèques). On peut voir le résultat dans le "registry",(Démarrer > Exécuter > Tapez regedit), clé (platform dependant way) :"HKEY_LOCAL_MACHINE\SOFTWARE\Pd".
MacOsX : Fichiers dont le nom contient "org" et "puredata" dans le dossier"Library/Preferences/" de votre dossier d'utilisateur ("home directory") :~/Library/Preferences/org.puredata.pd.plist
Linux : ~/.pdsettings. "~" est un raccourci pour le dossier "home"; les fichierscommençant par un point (".") sont la plupart du temps cachés.
Pure Data initiation - 11.200731

Démarrage
2. Fichier.bat pour Windows
Les fichiers qui se terminent par .bat sont une suite de commandes DOS. On peutles modifier (clic droit + modifier) avec un logiciel de traitement de texte basiquecomme bloc-notes. Pour le lancement de pure data, on peut en créer plusieurs selon
ses besoins (un pour la vidéo, un pour une installation, ...)
Exemple d'un fichier : (tout sur la même ligne)".\bin\pd.exe" -lib audience~ -font 10 -path ".\doc\vasp" -lib
fastools -lib cyclone -lib ext13 -lib maxlib -lib iemlib1 -lib
iemlib2 -lib iem_t3_lib -lib iem_mp3 -lib mjLib -lib motex -lib
OSC -lib percolate -lib pdogg -lib vasp -lib xeq -lib xsample-lib zexy -lib Gem -listdev %1 %2 %3 %4 %5 %6 %7

ATTENTION : Comme dans tous les programmes informatiques, chaquecaractère est important. Un espace a un sens, un point virgule aussi, etc...
Pure Data initiation - 11.2007

32

Démarrage
2. Fichier.bat pour Windows
Explications de ces commandes :(>>> pour toutes les options, voir ./pd/doc/1.manual/x3.htm#s4)"D:\pd\pd38\bin\pd.exe" : chemin pour trouver le programme (en premier)-lib audience~ : charger une bibliothèque (ici elle s'appelle audience~)-font 10 : taille de police-path ".\doc\vasp" : chemin pour charger des abstractions-listdev %1 %2 %3 %4 %5 %6 %7 : listing du matériel audio, midi
ATTENTION : Comme dans tous les programmes informatiques, chaquecaractère est important. Un espace a un sens, un point virgule aussi, etc...
Pure Data initiation - 11.200733

DémarrageAnnexe : chemin absolu et chemin relatif./bin/pd.exe : On va chercher le fichier à partir du répertoireoù on est situé. C'est indiqué par le point « . ». C'est donc un
chemin relatif, il dépend de la position où on se trouve.
C:/pd/bin/pd.exe : On cherche le fichier à partir de la racine,du début de l'arborescence des dossiers de la machine. C'est
indiqué par le slash « / ». C'est donc un chemin absolu, où quel'on soit dans l'arborescence de l'ordinateur, ce chemin sera
toujours correct.
/usr/bin/pd : La même chose sous sytème UNIX (Linux,
MacOsX)
Pure Data initiation - 11.200734

Démarrage
2. Fichier avec Linux et MacOsX> Créer un fichier avec un éditeur de texte :#vim /home/utilisateur/.pdrc=> ~/.pdrc pour Linux,=> /Users/utilisateur/.pdrc pour Mac#vim /home/utilisateur/lanceur
Les fichiers commençant par un « . » sont cachéspar défaut

Fichier « .pdrc » (saut de ligne) :-path /usr/lib/pd/externs-path /usr/lib/pd/externs/cyclone-path /usr/lib/pd/externs-path /usr/lib/pd/iemabs-lib iemlib1:iemlib2-lib cyclone-lib zexy> Quelques fois, il faut donner toutes lespermissions au dossier ou au fichier :# chmod -R a+rw /home/utilisateur/# chmod a+rw /home/utilisateur/.pdrc

Fichier exécutable « lanceur » (tout à la ligne) :#!bin/sh/usr/bin/pd -jack -r 44100 ...

> Rafraîchir le fichier :# source /home/giair/.pdrc# source /home/giair/lanceur

Pure Data initiation - 11.200735

Démarrage
Deux fenêtres s'ouvrent avec un lanceur .bat de Windows :- Le Terminal (fenêtre noire).
- La fenêtre principale avec menu qui fait aussi office de fenêtre de sortie (utile pourvisualiser des informations, les erreurs)
On retrouve la configuration dedémarrage écrite dans la fenêtre
noire et le résultat dans la fenêtre
principale.
Quand le message« Can't load library » apparaît
dans la fenêtre de sortie : le chemind'accès à la bibliothèque n'est pas
correct=> vérifiez bien les espaces,
guillements, chaque caractère
dans File > Path ou File > Startup
Pure Data initiation - 11.200736

Ressources dans Pd
Deux manières de trouver les ressources de pure data : soit en ouvrant le logiciel etensuite le menu help, soit en naviguant directement dans l'arborescence des fichiers.

Menu Help > html
Documentation html : ./pd/doc/1.manual/

Menu Help > Browser
Documentation début : ./pd/doc/2.control.examples/
Documentation audio : ./pd/doc/3.audio.examples/
Liste des objets natifs : ./pd/doc/5.reference/0.INTRO.txt ou Clic
Droit + Help dans une zone blanche du patch.
Tous les objets et bibliothèques : ./pd/doc/5.reference/
Documentations des bibliothèques : ./pd/doc/manuals/(Gem, Iem, Maxlib, Vasp, pmpd, ...)
Nouveauté dans la version pd.0.39.3.extended (menu Help > Browser > manuals) : lesdossiers 0.Intro, 1.Sound, 2.Image, 3.Networking et 4.Physical offrent unapprentissage progressif. Petit bémol cependant, l'objet [folder_list] qui sert à naviguer
d'un patch à l'autre ne fonctionne pas bien sur Windows, sur Linux pas de problèmes.
Pure Data initiation - 11.200737

Le patch
On pense à une métaphore du réseau, une sorte de mécano cybernétique (dixit
Roland Cahen), une conception modulaire, systémique, qui est dorénavant
assimilée. Conception d'un ensemble d'instructions, de fonctions à l'aide du visuel.
Quelques similitudes :Schéma de performance
artistique (de Chdh)

Schéma électrique

Plomberie

Pure Data initiation - 11.2007

Synthétiseurs
modulaires38

Le patch
Pour commencer il faut créer un nouveau patch : Menu File > New. Un nouveau patch est une
page blanche. On y ajoute des objets Menu Put, et on les connecte entre eux avec des fils (ctl+e ou pomme + e, quand la main devient un cercle). L'information parcours le fil de haut (inlet)
en bas (outlet), comme de l'eau dans un tube, soumise à la gravitation.

1

Sens de lecture

2

Envoie un message« bang » dans leterminal de sortie

Ces deux configurations fontexactement la même chose, maisla première est plus simple à lire.

Pure Data initiation - 11.200739

Le patch
La construction d'un patch est imprégnée d'une certaine esthétique du bordel, des connections dans tous lessens. Ca impressionne certainement, mais ça rend la lisibilité difficile. Avec la pratique on peut éviter certains
pièges mais certains sont inévitables de toutes façons.
>>> http://www.earcatching.com/pdconv/index.htm : convention de programmation pour travailler à plusieurs.
>>> https://devel.goto10.org/desiredata : projet qui propose des améliorations ergonomiques à Pure Data.

Bonnelisibilité
Application Max/Msp
http://www.tinytool.org(Wilfried > Amnésie)Pure Data initiation - 11.200740

Le patch
Les documents .pd s'appellent des patchs ou moins couramment des canvas. Dans Pure Data, ils ont
l'apparence sympathique d'objets assemblés, et ouverts avec un éditeur de texte, c'est simplement du texte.
Dans le texte ci-dessous, on voit en première ligne le mot canvas suivi de l'appel de création des objets et desconnections, à ma connaissance, c'est tout ce qu'il y a. Cette économie d'information rend les fichiers très légers.
Le poids maximum d'un fichier dans la documentation du logiciel fait dans les 20 Ko. Je présente cet aspect
textuel car cela nous sert à s'échanger des patchs sur internet quand ils apparraissent seulement en version
texte. Cela peut paraître surprenant, mais en copiant le texte ci-dessous, et en renommant l'extension du fichieren .pd, on obtient bien un fichier pure data valide !
Une astuce de recherche de patchs Pure Data sur internet, utilise le terme canvas, car il se retrouve sur
tous les débuts de fichiers pd en texte (merci à Hu_koala).
Sur google, tapez : .pd #N canvas

Version pure data

Version textuelle

Pure Data initiation - 11.200741

Le patch#N Canvas = nouveau patchde 279 pixels de largeur et de 203 pixels de hauteur

Pure Data initiation - 11.200742

Le patchBoîte de type message (msg) qui s'intitule bonjour
située à 79 pixels du bord gauche et à 64 pixels du bord haut

Pure Data initiation - 11.200743

Le patchBoîte de type objet (obj) qui s'intitule print
située à 79 pixels du bord gauche et à 107 pixels du bord haut

Pure Data initiation - 11.200744

Le patchBoîte de type chiffres (floatatom)
située à 164 pixels du bord gauche et à 65 pixels du bord haut

Pure Data initiation - 11.200745

Le patch
En bleu, c'est l'ordre de création des éléments.

0

2
0

1

1

Connection (connect)entre le premier élément créé (0) et le deuxième (1)Le deuxième chiffre après l'identifiant de l'élément, c'est l'identifiant de la sortie pour l'élément d'où part la connection etl'identifiant d'entrée pour l'élément qui reçoit la connection (ici c'est 0 dans les deux cas, car les éléments n'ont qu'une
seule sortie et qu'une seule entrée)Pure Data initiation - 11.200746

Le patch
En bleu, c'est l'ordre de création des éléments.

0

2
2

1

1

Connection (connect)entre le troisième élément créé (2) et le deuxième (1)Pure Data initiation - 11.2007

47

Terminologie
ÉLÉMENTS (atoms) : En un mot, c'est tout ce qui n'est pas un fil, c'est-à-dire les boîtes. Il y adifférents types d'éléments : objets, messages, symboles (=String), G.U.I, commentaires, array(=tableau), ... Pour les distinguer, il y a des repères visuels sur le côté droit de chaque élément.
Objet =>

Nombre =>Message =>------------ forme de rectangle

Éléments textuels---------- forme de drapeau-------------- bord haut droit oblique---- bord haut droit oblique mais plus long----------- pas de forme particulière, juste du texte

G.U.I (Graphic User Interface)
Éléments graphiques

Pure Data initiation - 11.2007

48

Terminologie
G.U.I (Graphic User Interface) : Permet de faire des interfaces de contrôle et de visualiser les
informations

Pure Data initiation - 11.200749

Terminologie
GUI : exemple d'un patch avec interface de contrôle (TR808 Claudius Maximus)

CANVASBANG

HRADIO

Pure Data initiation - 11.2007

50

Terminologie
OBJETS : Il faut faire la distinction entre les objets natifs et les objets externes. Ces derniers
viennent des bibliothèques. Les objets sont différents d'une abstraction, car il sont écrits en C eton ne peut pas les ouvrir directement. En effet, la seule façon de voir à l'intérieur et de lesmodifier c'est avec le code source en C.
Il faut bien distinguer : mot clé invariable (nom de l'objet) et arguments (ou paramètres)
variables et relatifs à l'objet. Le mot clé est de type classe comme en programmation classique(fonctions ou méthodes).
Il faut donc connaître le nom des objets. La liste des objets :./pd/doc/5.reference/0.INTRO.txt ou Clic Droit + Help dans une zone blanche du patch
Tous les objets et bibliothèques : ./pd/doc/5.reference/

Pure Data initiation - 11.200751

---------------------------- GLUE -------------------------------bang - output a bang message
float - store and recall a number
symbol - store and recall a symbol
int - store and recall an integer
send - send a message to a named object
receive - catch "sent" messages
select - test for matching numbers or symbols
route - route messages according to first element
pack - make compound messages
unpack - get elements of compound messages
trigger - sequence and convert messagess
spigot - interruptible message connection
moses - part a numeric stream
until - looping mechanism
print - print out messages
makefilename - format a symbol with a variable fieldchange - remove repeated numbers from a stream
swap - swap two numbers
value - shared numeric value------------------------------ TIME ---------------------------------delay - send a message after a time delay
metro - send a message periodicallyline - send a series of linearly stepped numbers
timer - measure time intervals
cputime - measure CPU time
realtime -measure real time
pipe - dynamically growable delay line for numbers------------------------------ MATH ---------------------------------+ - * / powarithmetic== != > < >= <=relational tests& && | || %bit twiddlingmtof ftom powtodb rmstodb dbtopow dbtorms convert acoustical units
mod div sin cos tan atan atan2 sqrt log exp abs higher mathrandomlower mathmax mingreater or lesser of 2 numbers
clip
force a number into a range------------------------------ MIDI ---------------------------------notein ctlin pgmin bendin touchin polytouchin midiin sysexin - MIDI input
noteout ctlout pgmout bendout touchout polytouchout midiout - MIDI output
makenote - schedule a delayed "note off" message corresponding to a note-on
stripnote - strip "note off" messages------------------------------ TABLES---------------------------------tabread - read a number from a tabletabread4 - read a number from a table, with 4 point interpolation
tabwrite - write a number to a tablesoundfiler - read and write tables to soundfiles------------------------------ MISC ---------------------------------loadbang - bang on load
serial - serial device control for NT only
netsend - send messages over the internet
netreceive - receive them
qlist message sequencer
textfile - file to message converter
openpanel - "Open" dialog
savepanel - "Save as" dialog
bag set of numbers
poly polyphonic voice allocation
key, keyup - numeric key values from keyboard
keyname - symbolic key name-------------------------- AUDIO MATH ---------------------------------+~ -~ *~ /~ arithmetic on audio signals
max~ min~ - maximum or minimum of 2 inputs
clip~ - constrict signal to lie between two bounds
q8_rsqrt~ - cheap reciprocal square root (beware -- 8 bits!)
q8_sqrt~ - cheap square root (beware -- 8 bits!)
wrap~ - wraparound (fractional part, sort of)fft~ complex forward discrete Fourier transformifft~ - complex inverse discrete Fourier transformrfft~ - real forward discrete Fourier transform
rifft~ - real inverse discrete Fourier transform
framp~ - output a ramp for each blockmtof~, ftom~, rmstodb~, dbtorms~, rmstopow~, powtorms~ - acoustic
conversions-------------------------- AUDIO GLUE ---------------------------------dac~ audio output
adc~ audio input
sig~ convert numbers to audio signalsline~ - generate audio ramps
vline~ - deluxe line~
threshold~ detect signal thresholds
snapshot~ - sample a signal (convert it back to a number)vsnapshot~ deluxe snapshot~bang~ - send a bang message after each DSP block
samplerate~ get the sample rate
send~ - nonlocal signal connection with fanout
receive~ - get signal from send~
throw~ - add to a summing bus
catch~ - define and read a summing bus
block~ - specify block size and overlap
switch~ - switch DSP computation on and off
readsf~ - soundfile playback from disk
writesf~ - record sound to disk

Pure Data initiation - 11.200752

-------------------- AUDIO OSCILLATORS AND TABLES -----------------------phasor~ - sawtooth oscillatorcos~ cosine
osc~ cosine oscillator
tabwrite~ - write to a tabletabplay~ - play back from a table (non-transposing)tabread~ - non-interpolating table readtabread4~ - four-point interpolating table readtabosc4~ - wavetable oscillator
tabsend~ - write one block continuously to a tabletabreceive~ read one block continuously from a table-------------------- AUDIO FILTERS -----------------------vcf~ voltage controlled filter
noise~ - white noise generator
env~ envelope followerhip~ high pass filterlop~ low pass filter
bp~ band pass filter
biquad~ - raw filter
samphold~ - sample and hold unit
print~ - print out one or more "blocks"
rpole~ - raw real-valued one-pole filter
rzero~ - raw real-valued one-zero filter
rzero_rev~ rzero~, time-reversed
cpole~, czero~, czero_rev - corresponding complex-valued filters-------------------- AUDIO DELAY -----------------------delwrite~ - write to a delay linedelread~ - read from a delay line
vd~ read from a delay line at a variable delay time------------------------------ SUBWINDOWS ---------------------------------pd define a subwindow
table - array of numbers in a subwindow
inlet - add an inlet to a pd
outlet - add an outlet to a pd
inlet~, outlet~ - signal versions of inlet, outlet------------------------------ DATA TEMPLATES ----------------------------struct - define a data structuredrawcurve, filledcurve - draw a curve
drawpolygon, filledpolygon - draw a polygon
plot plot an array fielddrawnumber - print a numeric value------------------------------ ACCESSING DATA ---------------------------pointer - point to an object belonging to a template
get - get numeric fields
set - change numeric fields
element - get an array element
getsize - get the size of an arraysetsize - change the size of an array
append - add an element to a list
sublist - get a pointer into a list which is an element of another scalar
scalar - draw a scalar on parent

Pure Data initiation - 11.200753

Terminologie
OBJETS
Chaque objet a des entrées (inlets) et sorties (outlets) différentes. En faisant Clic droit + help, on
peut voir à quoi elles correspondent. Elles sont représentées par des petits rectangles noirs en
haut et en bas de l'objet.

inlet

inlet

outletCet objet génère une oscillation périodique régulière de type cosinus (osc~). L'argument est
440, il correspond à la fréquence de cette oscillation en période par seconde (Hertz). Cet objet adeux entrées et une sortie. (deux rectangles noirs en haut, et un en bas)

Pure Data initiation - 11.2007

54

Terminologie
OBJETS
Quand un objet n'est pas reconnu, ces contours ne sont pas finis, des tirets l'entourent. Dans ce
cas-là, un message apparaît dans la fenêtre de sortie : ... couldn't create

Pure Data initiation - 11.2007

55

Terminologie
EXTERNS (ou externals) : Ce sont des objets (écrits en C donc). Comme leur nom l'indique, ils
sont exterieurs à la version de base de pure data, des ajouts. Pour les installer, la procédure laplus courante est de les copier dans le répertoire extra ou externs.
Rappel des extensions des objets (natifs ou externes) : .pd_linux ou .pd_darwin ou .dll
BIBLIOTHÈQUE (ou librairie) : Paquet d'externs et/ou d'abstractions. Copier le dossier où sontstockés les objets ou abstractions dans le répertoire extra ou externs. Rajouter si nécessaire lechemin, ou le nom de la bibliothèque dans Menu > Path.
http://ccrma.stanford.edu/planetccrma/software/pdworld.html : Pd Externals CCRMA

Pure Data initiation - 11.2007

56

Terminologie
ABSTRACTION : C'est un nouveau patch dans lequel on a mis des objets, que l'on a enregistré
et qui va être utile dans d'autres patchs. On crée un objet ctl+ shift + 1 dans un nouveau patch
qui fera office de programme principal et on le nomme comme le fichier que l'on vient desauvegarder. On peut regarder à l'intérieur et modifier le contenu d'une abstraction (clic droit +open ou double clic). C'est donc un fichier.pd indépendant. Si on la sauve dans le répertoire detravail, elle est reconnue tout de suite, sinon il faut la sauvegarder dans un répertoire et indiquer
son chemin dans les options de démarrage : -path ''D:\pd\MesAbstractions'' par
exempleVoir : abstraction et sous-patch documentation (partie 6.3).
PATCH, SOUS-PATCH et ABSTRACTION : Quand on sauve un patch, on sauve le patch etses sous patchs. On ne sauve pas les abstractions qui sont contenues dans le patch, elles
doivent être sauvées indépendamment, en l'ouvrant et en la sauvant.
Un patch peut aussi être considéré comme une abstraction dans la mesure où c'est un
fichier.pd indépendant. On préfère utilisé le terme abstraction pour une fonction bien définie, leterme patch sera plutôt utilisé pour définir le programme principal.

Pure Data initiation - 11.2007

57

Terminologie
SOUS-PATCH : (créer un objet « pd nom_variable »). Fonctionne selon le principe des poupées
russes, encapsulation, on isole une fonction pour permettre d'organiser le programme. Meilleurelisibilité.

Patch principal

Dans cet exemple, les trois sous patchs sont tous
contenus dans le patch principal sauvé sous le nom« ExemplesSousPatchs.pd ». Si on sauve dansn'importe quel sous patchs on sauve l'ensemble
du patch. L'enregistrement sera visible dans lafenêtre de sortie. Les titres des fenêtres correspondent aux noms des sous patchs.

Pure Data initiation - 11.2007

58