Pure data
Cet article est en construction: un auteur est en train de le modifier.
En principe, le ou les auteurs en question devraient bientôt présenter une meilleure version.
INTRODUCTION
Pure Data (souvent abrégé Pd) est un logiciel de création multimédia interactive couramment utilisé dans les domaines artistique, scientifique et pédagogique. Pure Data propose un environnement de programmation graphique dans laquelle l'utilisateur est invité à manipuler des icônes représentant des fonctionnalités et à les brancher ensemble.
Ci-dessous voilà à quoi peut ressembler une programmation graphique réalisée dans Pure Data. Ici un programme créé pour un exercice dans le cadre du cours STIC:STIC IV. Un programme qui permet d'additionner deux fréquences correspondant à des notes musicales, de faire varier la force du son et d'observer en temps réel les modulations de fréquences dans un graphique.
Portabilité et installation
Pure Data Fonctionne sur les plateformes Linux, Mac et Windows. C'est un logiciel libre et gratuit. La licence « Standard Improved BSD » protège ce logiciel et permet un travail collaboratif, l'accessibilité des sources et une distribution gratuite auprès des utilisateurs.
- développeur = [Miller Puckette]
- dernière version = 0.42.5.extended
- date de dernière version = 18 septembre 2010
- version avancée = 0.43
- date de version avancée =
- environnement = GNU/Linux, Mac OS X, Microsoft Windows
- langue = Anglais
- licence = Licence publique générale GNU|GPL
- site web = puredata.info
Le logiciel existe en deux version Pure Data Vanilla et Pure Data Extended
Pd Vanilla et Pd Extended
- Le noyau de Pure Data est Pd Vanilla. Elle est maintenu par son créateur, Miller Puckette.
- Pure Data Extended est une version étendue du logiciel Pd Vanilla par des développers qui se sont joints aux projet. Cette version ajoute de nombreuse "librairies" et offre ainsi plusieurs améliorations.
Les deux versions du logiciel sont disponibles sur le site de Pure Data
Fonctionnement du programme
"Pure Data est un système conçu de façon modulaire. Chaque utilisateur peut ainsi adapter le logiciel selon ses besoins. Il exploite un langage de programmation non procédural avancé (programmation orientée objet) qui permet à l'utilisateur d'effectuer des modifications au code en temps réel sans que celui-ci doive chaque fois être recompilé. 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 des opérations. Techniquement ce n'est pas un langage de programmation en tant que tel, mais un environnement d'implémentation, où l'utilisateur assemble des bouts de codes créés par d'autres, ce qui permet un prototypage ultra-rapide. L'interface du logiciel est donc une représentation visuelle de la logique qui sous-tend la programmation."Article wikpedia
Configuration audio et Midi
Il faut préalablement configurer les appareils audio avant d'utiliser Pd. Si vous décidez de recevoir ou d'envoyer des notes et des contrôles MIDI, il sera également nécessaire de configurer vos appareils MIDI. Pour en savoir plus sur ce format consulter l'article en:MIDI(anglais).
Pure Data a peut-être détecté automatiquement l'interface audio.
Pour tester si le son fonctionne :
- Media>Test Audio and Midi
Repérez les colonnes de carrés à gauche du patch sous le titre "TEST TONES". Ces carrés ou
cases sont des choix multiples dont les options sont : "OFF", "60" ou "80". Cliquez sur la case correspondant au choix "60" ou "80" et un carré noir apparaît dans la case que vous avez sélectionnée. On peut changer le son du test par un bruit en choisissant l'option "NOISE" plutôt que "TONE" en cliquant dans la case correspondante. Si vous entendez un son (un "La" en 440 Hz, ou du bruit), cela signifie que Pure Data a détecté votre interface audio. Dans le cas contraire, il va vous falloir la configurer.
Pour configurer si cela ne fonctionne pas:
- Media>Preferences>Audio setting
Une fenêtre de dialogue qui permet de configurer le nombre d'entrées et de sorties audio du logiciel ainsi que son taux d'échantillonnage. Vous n'entendrez rien si les options de ce dialogue sont mal configurées.
- Le taux d'échantillonnage (sample rate) est par défaut de 44 100 Hz, ce qui correspond au taux d'échantillonnage des disques compacts. Une autre valeur couramment utilisée ici est 48 000 Hz.
- Le Délai(Delay) est le temps pour temporiser le signal audio que Pure Data reçoit et pour
effectuer tous les calculs qu'on lui soumet avant de faire entendre des sons. "À intervalle régulier, Pure Data enregistre le son dans un espace mémoire, puis il applique toutes les opérations sur le son et, enfin, donne le résultat de ces calculs à l'interface audio. La durée de cet intervalle est spécifiée dans cette boîte de dialogue. Par défaut, il est de 50 ou 70 millisecondes."1 /!\ Ne pas trop réduire ce paramètre sinon Pure Data n'a pas le temps de tout calculer des craquements indésirables apparaitront.
- Activation du nombres d'entrées et de sorties(use multiple devices)
Vous pouvez activer ou non les entrées et sorties de votre interface audio (les selectionner, si elles sont inactives). La plupart du temps, on choisi la même interface pour les entrées et les sorties, avec du son mono ou stéréo. Si ce n'est pas le cas, il faut choisir deux canaux en entrée et deux autres en sortie.
Pour choisir le pilote Midi :
- Media>choix du pilote
Pour recevoir des notes et des contrôles MIDI quel qu'il soit, il faut
d'abord choisir un pilote. Les pilotes audio sont listés dans le menu "Media" avec leur
appellation. Sur GNU/Linux, vous pouvez choisir "Default" ou "ALSA". Le second fonctionne bien
chez moi.
Pour tester si le Midi fonctionne :
- Media>Test Audio and Midi
Le patch qui sert à tester l'audio sert également à tester le MIDI. Si tout est bien configuré, les nombres affichés dans ce patch devraient changer lorsque vous appuierez sur les touches de votre clavier MIDI.
On peut également envoyer des notes MIDI à un appareil ou à un autre logiciel branché à la sortie MIDI de Pure Data en cliquant sur la case de l'interrupteur qui a pour titre "MIDI OUT ".
Pour configure le MIDI
- Media>Preferences>MIDI setting
Cette boîte de dialogue vous de choisir quel appareil MIDI on désire utiliser ainsi que le nombre d'entrées et de sorties MIDI. Par exemple, si je souhaite brancher un clavier MIDI dans Pure Data, indiquez le chiffre 1 dans le nombre
d'entrées MIDI.
Aperçu des possibilités de Pure Data
Selon la Floss Manuals Foundation1 :
- Pure Data permet la gestion d'échantillonneurs (samplers) et d'effets, la composition musicale, ou encore, la création de séquenceur MIDI. LE logiciel est utilisé par certain musicien pour générer automatiquement de la matière sonore ou tout simplement comme aide à la composition musicale.
- Il peut également gérer des applications vidéo et 3D.
- Il est possible également d'interfacer un programme avec le monde physique en utilisant des capteurs (caméras, détecteurs de présence, etc.) pour commander des robots, interagir avec des sites internet, ou encore effectuer une visualisation de données. La plateforme de développement matériel Arduino est souvent utilisés par les utilisateurs de Pure Data. Dans ce cas on utilise les bibliothèques Pduino ou Msg.
- En art appliqué, il est utilisé en design d'interaction, en architecture et pour créer des jeux. Une belle illustration des utilisations artistiques professionnelles de Pure Data est disponible ici
- On l'utilise aussi dans les disciplines techniques et scientifiques comme l'électronique, les sciences physiques et les mathématiques. Il alors souvent comme un outil de mesures acoustiques.
- En tant qu'outil pédagogique pour les analyses acoustiques et audio-numériques, la synthèse sonore, la 3D, les opérations mathématiques. Grâce à son système de programmation intuitif, Pure Data favorise l'apprentissage et l'expérimentation. Il est possible de concevoir à l'aide de ce logiciel des dispositifs numériques originaux d'enseignement.
Quelques Illustrations
Prise en main
Console
Le programme est tout d'abord constitué d'une console (ou log). C'est la toute première fenètre s'ouvrant à l'ouverture du programme. Elle affiche certains messages d'erreurs concernant les éventuels problèmes de nos réalisations. Elle dsipose de différents mode d'affichage accessible en cliquant sur le numéro à coté du log dans la barre grise. On peut ainsi choisir d'afficher seulement les erreurs critiques, les simples avertissements etc.. La console sert aussi à afficher certaines informations durant l'execution de nos programme grâce à l'objet "print" dont nous reparlerons plus loin.
Patch
C'est le coeur de notre travail dans Pd. Le patch est un programme Pure Data enregistré en .pd. Lorsque nous cliquons sur "file">"new" nous créons un patch et c'est à l'intérieur de celui-ci que nous travaillerons. Les patchs peuvent faire appel à d'autre patch permettant de créer des programmes très élaborés. Le logiciel Pure Data est lui même constitué de ces différents patchs comme nous avons pu le voir, précédemment, avec le patch "Test Audio and MIDI".
Un patch à deux mode de fonctionnement :
- Le mode édition. C'est le mode de création de programme, nous le reconnaissons par le curseur de la souris représentant une main.
- Le mode action. C'est le mode de l'interaction. L'utilisateur ne peut plus déplacer ni modifier les boites mais peut interagir avec les éments cliquables de notre programme. Nous reconnaissons ce mode par le curseur de la souris sous forme d'une flêche.
Nous pouvons passez d'un mode à l'autre à tout moment en cliquant sur ctrl+e (windows/Linux) ou Pomme+e(MAc). Il est aussi possible de cliquer sur un élément tout en restant en mode édition en maintenant ctrl enfoncé.
Les Boites
Dans Pure Data on "programme" en reliant des boites entres elles. Ces boites sont accessibles depuis l'onglet "put" dans un patch. Chaque type de boite possèdent une ou plusieurs connexions d'entrée(inlet) et de sortie(outlet) représenté par des rectangles noirs sur les bord du cadre. Il existe 5 types de boite dans Pure Data Vanilla.
- Boite objet(object) :raccourci clavier ctrl+1. Ces boites objet opère une fonction particulière déterminé par le premier mot marqué à l'intérieur. Par exemple écrire "print" à l'intérieur d'une boite objet créra un objet ayant pour fonction d'écrire quelquechose dans la console. Attention pour que la boite objet soit activé le mot doit être bien orthographié. Un mot inconnu par le logiciel se remarque très rapidement car le cadre de la boite reste en pointillé. Si le mot est bien écrit vous devrier obtenir un cadre de boite rectangulaire comme celui-ci. Ici il y a un seul inlet et aucun outlet car la fonction "print" ne fait que recevoir des information pour les écrire. Le nombre de inlet et d'outlet dépend du mot fonction marqué dans la boite objet.
- Boite message : raccourci clavier ctrl+2. Les boite message peuvent contenir toute sorte de données (voire partie suivante) et envoie cette donnée vers leur unique outlet. Lorsque l'on est en mode action(voire patch partie précédente) ces boites sont cliquables. Lorsque l'on clique elles envoient l'information qu'elles contiennent. Contrairement aux boites précédentes leur cadre n'est pas rectangulaire mais de cette forme là->
- Boite nombre (number) : raccourci clavier ctrl+3. Ces boite stock et affiche temporairement les INTEGER et FLOAT qui les traverse (voir type de données partie suivante). En mode action on peut faire varier leur valeur en glissant le long de la boite avec la souris. Leur cadre n'a pas de coin en haut à droite.
- Boite symbole : raccourci clavier ctrl+4 . Cette boite a une fonction identique à la boite précédente mais utilise des chaines de caractère à la place des nombres.
- boite commentaire(comment): raccourci clavier ctrl+5. Pas réellement des boite. Elle n'ont aucun cadre et ne servent qu'à commenter nos programmes graphiques. Les commentaires aident l'utilisateur à utiliser l'interface ou bien sont une aide mémoire précieuse pour le développeur.
Les éléments graphiques
Ces éléments servent à manipuler ou à visualiser quelquechose. Leur utilité se fait ressentir surtout lorsque l'on passe en mode action. La capture d'écran ci-dessous montrent les différentes possibilités qu'offre Pure Data Vanilla.Les éléments graphiques vont du simple rectangle de couleur, au tableau graphique, en passant par les interrupteurs et les sliders.
Les données
Ce sont les informations que nous sommes ammenés à minipuler avec Pure Data. Elle peuvent être mis dans une boite message, ou stocker dans un objet. Dans Pd elles sont de différents types :
- Bang : Information de déclenchement. On allume, on provoque, on démare quelque chose. On la stock dans l'objet -->
- Integer: Un nombre entier. On le stock dans l'objet -->
- Float: Un nombre à virgule. On le stock dans l'objet -->
- Liste: Plusieurs donnés différentes On les stock dans l'objet -->
- Symbol Une chaine de caractères. On la stock dans l'objet -->
Liens et règles d'utilisation
Les liens entre les différents éléments de Pure Data suivent 3 règles. Les connaitres permet de comprendre pourquoi certaine fois nos applications ne fonctionnent pas comme nous l'espérions.
- Tout message circule de haut en bas dans les boîtes. Ainsi il n'est pas possible de sortir un message par une entrée ou bien de recevoir un message par une sortie.
- Dans Pure Data, l'entrée la plus à GAUCHE sert toujours a DECLENCHER la fonction de l'objet ("entrée chaude"). Les entrées suivantes ("entrées foides") stockeront uniquement les arguments mais ne déclencheront pas de résultat vers l'outlet de l'objet.
- Les connexions crées en PREMIER propageront les messages avant les autres. Il faut donc parfois réfléchir à l'ordre de création des éléments.
Il est aussi nécessaire de comprendre le "langage graphique" du logiciel notamment :
- Les liens transportant du son sont en gras, les autres liens sont plus fin.
- Les nom d'objet ayant pour fonction de créer ou manipuler du son sont suivie d'un "~". Ex : "osc~", "noise~" tandis que "print" s'écrit sans "~"
- La forme des boites correspondant à leur type voir partie
Quelques objets utiles
Les nom qui suivent doivent être inscrit dans des boites objets seulement. Les écrire tel quel sans espace ni majuscule. La liste ci-dessous est très restreinte mais associér à des boites "message" et "number" et quelques éléments graphiques tel que des interrupteur et des sliders elle permet la réalisation de petits patchs simple.
- Pour une liste bien plus exhaustive mais difficilement compréhensible pour un débutant voir ici(anglais).
Les objets de stockage
Ces objets servent à stocker un type de donnée, les différents objets de stockage sont spécifiés dans la partie précédente "type de données"
Objets opérateur
+~ -~ *~ /~ : Quatre opérations arythmétique sur les sortie audio. Ces opérateurs sont utilisés pour mixer des sons entre eux. L'opérateur *~ est très utile pour diminuer un niveaux sonore (multiplier par un nombre inférieur à 1).
max~ min~ : Prend le maximum ou minimum de 2 entrée audio
entrée et sortie sonore
dac~ : audio output
adc~ : audio input
"Dans Pure Data, l'objet permettant d'obtenir des signaux audio entrants s'appelle [adc~] qui se développe en anglais par analog-digital converter. Ce nom désigne la conversion du signal audio analogique, en provenance d'un micro par exemple, en signal numérique par l'interface audio utilisable dans Pure Data. De la même manière, l'objet qui envoie du son vers la sortie de l'interface audio s'appelle [dac~] soit digital-analog converter."Foss manual foundation.
Metronome et sons
metro : Il envoie un "bang" chaque x millième(s) de seconde. Nous spécifions sa longueur d'onde (= 1/fréquence) en argument. "metro 50" envoie une impulsion toutes les 50 millisecondes soit 20 impulsions par seconde.
osc~ : envoie une onde sonore synthétisée d'amplitude maximal entre 1 et-1 (souvent le maximum vabritoire des enceinte) il est souvent nécéssaire de réduire l'amplitude. On peut ajouter la fréquence de l'onde sinusoidale que l'on souhaite obtenir afin d'obtenir un son pure audible par l'oreille humaine. Par exemple "osc~ 440". Un lien avec l'objet dac~ permet d'entendre son.
noise~ : Contrairement à l'objet précédent, aucune onde sinusoidal. "noise~" produit un son d'une hauteur non déterminée, Son onde fait des sauts dans un désordre total. /!\ Lorsque l'on réalise des tests et que l'on ne sait pas trop ce que l'on va obtenir, il est conseillé de baisser le volume de ces enceintes.
Un peu d'écriture
print : Cet objet imprime les messages qui lui sont envoyés dans la fenêtre de la console et vous permet ainsi de voir l'ordre et le contenu des messages qui lui parviennent : ceci est très utile pour contrôler le bon déroulement des opérations.
tabwrite~ : permet d'écrire du son dans un tableau. Il suffit pour cela d'ajouter un élément graphique Array de lui donner un nom et d'inscrire ce nom dans l'objet tabwrite~. Par exemple "tabwrite~ mongraphique"
Premier patches
Ressources
Pure Data est un environnement de développement très puissant dont les possibilités ne seraient être résumées dans cette article. Les liens ci-dessous vous permettront d'aller plus loin.
Documentation française :
- La documentation créée par la Floss Manuals Foundation :site internet>http://fr.flossmanuals.net/puredata/ch045_le-midi version pdf> http://wiki.t-o-f.info/index.php?n=Msg.Msg
- Tutoriel dont est tiré la prise en main de cette article http://raphael.isdant.free.fr/pure_data/Tutoriels_pure_data.zip
- Article wikipédia(peu utile si ce n'est pour l'historique) : http://fr.wikipedia.org/wiki/Pure_Data
- Liste importante de tutoriels et liens de forum d'aide
- Slides du cours de Marcos Aristides : http://tecfa.unige.ch/guides/pure-data/cours-stic4_PD.pdf
Documentation anglaise :
- Sur le site de Pure Data : http://puredata.info/docs
- Version anglophone du Floss manual : http://en.flossmanuals.net/PureData/
- différents patches téléchargeable avec vidéo : http://barangulesen.com/puredata/patches.html
- Liste importante des objets disponibles dans Pure Data avec descriptions très succintes-quelques mots- pratique mais difficile pour un débutant : http://umatic.nl/workshop/objects.txt