Pure data

De EduTech Wiki
Aller à : navigation, rechercher

1 INTRODUCTION

icone Pd Vanilla

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.

réalisation Dacostj7


1.1 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

1.2 Pd Vanilla et Pd Extended

  • icone Pd Vanilla
    Le noyau de Pure Data est Pd Vanilla. Elle est maintenu par son créateur, Miller Puckette.
  • icone Pd Extended
    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

1.3 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

2 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.

2.1 Pour tester si le son fonctionne :

  • Media>Test Audio and Midi

Test pd.jpg
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.

2.2 Pour configurer si cela ne fonctionne pas:

  • Media>Preferences>Audio setting

Test pd2.jpg
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.

2.3 Pour choisir le pilote Midi :

  • Media>choix du pilote

Test pd4.jpg
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.

2.4 Pour tester si le Midi fonctionne :

  • Media>Test Audio and Midi

Test pd3.jpg
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 ".

2.5 Pour configure le MIDI

  • Media>Preferences>MIDI setting

Test pd5.jpg
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.

3 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.

3.1 Quelques Illustrations

Pure data Pduino et circuit électrique http://wiki.dataflow.ws/AtelierArduino/PlanDuCours
Tetris totalement implémenté en patch Pd http://wiki.dataflow.ws/AtelierArduino/PlanDuCours

4 Prise en main

4.1 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.

4.2 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é.


4.3 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-ciPd obj.jpg. 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à->Pd mess.jpg
  • 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.Pd numb.jpg
  • 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. Pd symbox.jpg
  • 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.


4.4 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.

Pd Egraphiques.jpg

4.5 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 -->Pd b.jpg
  • Integer: Un nombre entier. On le stock dans l'objet -->Pd i.jpg
  • Float: Un nombre à virgule. On le stock dans l'objet -->Pd f.jpg
  • Liste: Plusieurs donnés différentes On les stock dans l'objet -->Pd symb.jpg
  • Symbol Une chaine de caractères. On la stock dans l'objet --> Pd lister.jpg

4.6 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 à leurs type (voir partie 4.3)

Ci-après un exemple de lecture d'un patch : Pd regles.jpg

5 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).

5.1 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"

5.2 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

5.3 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.

5.4 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.

5.5 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"


6 Premier patch

6.1 Hello world avec Pure Data

Voilà comment réaliser le fameux hello world avec Pure Data.


Dans la console de Pure Data créer un nouveau patch

File->new

Puis selectionner une boite message (voir caractéristiques de ce type de boite point 4.3)

Put->Message ou ctrl+2

Placer la boite message n'importe où dans l'espace de travail puis inscrire "hello world !" à l'intérieur.

Créer une boite objet

put>Object ou ctrl+1

La boite est en pointillé elle est inactive et ne possède aucun outlet ni inlet. Inscrire "print" à l'intérieur. La boite devient une boite objet avec une fonction. Relier la boite message à la boite objet. Et vous devirez obtenir ceci:

Pd hello.jpg

Passez en mode édition avec ctrl+e et cliquez sur la boite message. La phrase "hello world !" s'inscrit dans la fenètre console (log). (si rien ne se passe pensez à vérifier le mode d'affichage de la fenètre log, le mode 0 et 1 n'affiche que les messages d'erreur.)

6.2 Premier son avec Pure Data

Voici un patch permettant d'emettre une fréquence de 440HZ (la note LA) et d'en faire varier le volume.

Pd patch1.jpg

Ce patch est composé d'une boite objet contenant un oscillateur sonore "osc~" associé à l'argument "440" pour spécifier sa fréquence. Cette première boite est ensuite relier à un objet "*~0.2". Cette opérateur mathématique multiplie par 0.2 pour réduire le volume sonore. Le tout est relié à l'objet "dac~" convertisseur analogique transmettant le son aux enceintes de l'ordinateur. Enfin une boite number permet de controler le volume (multiplier par 0 éteint le son, multiplier par une valeur plus grande augmente le son).

Pour tester l'application passez en mode action ctrl+e et faite glisser la souris le long de la boite number.

7 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.

7.1 Documentation française :

7.2 Documentation anglaise :