Historique: puredata
Aperçu de cette version: 87
Table des matières
Information
Version actuelle : 0.51-4.1. Présentation
Historique
En 1988, un certain Miller Puckette crée un environnement de programmation en mode graphique, destiné au son et à l'image, qu'il nomme Patcher. Il est ensuite cédé à l'entreprise Opcode, où il sera réécrit par David Zicarelli, et renommé Max/MSP. Miller Puckette décide ensuite de reprendre les améliorations de ce dernier et de poursuivre ainsi le développement de Patcher, afin d'en faire un logiciel libre: Pure Data.Fonctionnement
Donc Pd est un environnement de programmation orienté objet. Que les non-développeur-euse et les allergiques aux code et à la ligne de commande ne fuient pas à ces mots, on peut tout à fait utiliser Pd, même de manière avancée, ne sachant pas ce qu'est une classe ou une instance: Pd est en mode graphique, austère certes, mais très visuel. Vous n'aurez pas à apprendre et à taper toute une syntaxe complexe et contraignante, puisque tout est fait par des liens graphiques entre les objets et les messages.Mais alors que peut on faire avec Pd?
Tout, ou presque tout... De la synthèse au traitement sonore, de la diffusion à l'analyse: on peut en fait créer son propre logiciel selon ses besoin. Inutile de réinventer la roue, Ardour fait très bien l'enregistrement multipiste, mais si le coeur vous en dit, Pure data le pourrait également. De même que Max/MSP a Jitter, Pure Data à GEM pour travailler de la même manière avec l'image: animation, effets vidéos en temps réel etc...Pd gère le midi, ce qui vous permettra, outre de jouer des note, d'interagir avec lui à partir d'une surface de contrôle par exemple, ou une tablette. Certains objets vous permettent d'accéder au réseau, et donc à Internet.
Cette page vise à expliquer les points essentiels du logiciel, et en particulier les spécificités de son utilisation sur Linux, mais en aucun cas à vous apprendre à l'utiliser. C'est pourquoi le chapitre qui suit vous fournira un extrait des ressources foisonnantes sur le sujet.
Apprentissage, ressources et liens
Voici un échantillon de tout ce que l'on peut trouver de bon sur le sujetTéléchargement et sites officiels
- Site officiel de Miller Puckette, développeur de Pure Data
http://crca.ucsd.edu/~msp/
- Site officiel de la communauté Pure Data
http://puredata.info/
- Le site de Hans-Christoph Steiner, qui a beaucoup contribué au projet: on y trouve également des paquets pour certaines distributions
http://at.or.at/hans/pd/
- La page ftp d'auto-build: les dernières versions en développement compilées régulièrement et automatiquement, avec des paquets pour Debian et Ubuntu, ainsi que pour des OS propriétaires
http://autobuild.puredata.info/auto-build
Tutoriels et apprentissage
Il existe une multitude de tutoriels et de manuels de grande qualité. Le plus simple est de commencer avec ceux livrés avec Pd et ses bibliothèques: dans Help, choisissez Browser.... Dans 1.Manual/, vous trouverez le manuel officiel en html, qui explique très bien le principe, en anglais. Il se trouve également sur cette page du site de la communauté. Il existe cette documentation francophone écrite par Jérôme Abel, qui malgré son age (de la documentation, pas de M. Abel) reste tout à fait actuelle, puisque la base de Pd n'a pas tant changé.Si l'on fouille d'avantage dans cette précieuse aide, on trouvera plein de ressources, qui présentent l'avantage d'être sous forme de patchs, donc interactives. Vous remarquerez que beaucoup de tuto sur Internet sont conçus de la même façon. Chaque bibliothèque propose des patchs-exemples de leurs objets. Notez également qu'il est toujours possible d'accéder au patch d'aide d'un objet en cliquant-droit sur celui-ci et en sélectionnant Help.
Sinon:
- Les listes de discussion officielles, très réactives et qui comptent de nombreux-ses participant-e-s, dont les développeurs du logiciel
http://puredata.info/community/lists
- L'Association Impala Utopia: d'excellents tutoriels, ainsi que des supports de cours (ceux-ci sont parfois inutiles hors contexte), tout en français
http://impala.utopia.free.fr/pd/
- Tutos et manuels en anglais de Floss Manuals
http://en.flossmanuals.net/puredata
- Manuels en français de Floss Manuals (moins complet que la version anglais, mais tout de même une bonne introduction au logiciel).
http://fr.flossmanuals.net/Puredata/
- Programming Electronic Music in Pd une très bonne introduction à la synthèse sonore et au traitement du signal dans Pure Data. Disponible en version anglaise, allemande et espagnole. On peut également acheter le livre en version papier.
http://www.pd-tutorial.com/
- pd ring est un anneau de sites proposant de nombreuses ressources en anglais.
http://pd.klingt.org/pd_ring/
- Une série de ressources en français chez Labomedia
http://archive.labomedia.net/formpdaud092005.htm
- Pdpedia, le manuel wiki de Pd en français... malheureusement pas très fourni, pour ne pas dire totalement creux... Mais il ne tiens qu'aux Pidistes que vous êtes ou que vous deviendrez de le rendre intéressant et attractif! Pdpedia existe en différentes langues, dont certaines sont plus abouties que d'autres.
http://wiki.puredata.info/fr/Accueil
Forums
- Forum en français
http://codelab.fr/
- Forum en anglais
http://puredata.hurleur.com/index.php
2. Installation
Il existe principalement deux versions officielles du logiciel: Pd-Vanilla et Pd-Extended. Le première est la version originale de Miller Puckette "nue", intégrant le cœur et les principales fonctionnalités. La deuxième, comme son nom l'indique, est une version étendue, comprenant un certain nombre de bibliothèques, amenant une multitude d'objets supplémentaires.A vous de choisir, en fonction de vos besoins: l'utilisation d'externals (objets de librairies additionnelles) posent parfois un souci de portabilité, si votre patch devra être utilisé sur plusieurs plateformes/ordinateurs différents, alors que si vous en faite une utilisation poussée, la version de base pourra vous sembler limitée. En tous les cas, on trouve sur le site de la communauté des paquets pour plusieurs distributions courantes. Les dépôts de votre distribution proposeront sans doute au moins Pd-Vanilla, peut-être dans une version antérieure. Il vous est évidemment possible de le compiler vous-même à partir des sources, bien que cela peut s'avérer fastidieux si vous décidez d'accompagner Pd de nombreuses bibliothèques.
❗Depuis la version 0.42.5 de Pd-Extended, il est possible de compiler pour les architectures 64bits. Des paquets pour quelques distributions sont d'ailleurs disponibles sur le site de la communauté.
- Pour Ubuntu, Ubuntustudio et Debian, Pd-Vanilla est présent dans les dépôts (si il n'est pas déjà installé). Le paquet Pd-Extended est téléchargeable sur le site de la communauté, ou à partir du dépôt:
Copy to clipboard
deb http://apt.puredata.info/releases [ma version] main #vous remplacez par le nom de version: lenny, etch, lucid, etc...
Pour configurer le dépôt, reportez-vous à la page concernant la gestion de paquets logiciels.
- Pour Ubuntu 9.10, Pd-Extended n'existe pas, du à des changements de paquets sur cette version dont Pd dépend. On peut installer les auto-build: il s'agit de paquets ou binaires des dernières versions en développement, compilés automatiquement et régulièrement. Il est possible de remonter dans les archives et choisir une version connue pour être stable. Mais dans la mesure du possible, il vaut toutefois mieux utiliser un paquet officiel pour sa distribution.
- On trouve également sur le ftp des auto-build des paquets pour Debian, les dernières versions de développement de Pd-Vanilla, et des binaires pour d'autres OS propriétaires.
- Sur Musix 2.0 la version installée est la 0.41.4 (Vanilla).
Mandriva
| version | distribution | media | date |
| 0.41.4 | Mandriva 2010.1 | contrib/release | 23/06/2010 |
- Pour Gentoo, il faudra récupérer l'overlay via layman ou subversion, de la même manière que le pro-audio overlay.
http://linuxmao.org/tikiwiki/tiki-index.php?page=gentoo_mao#2_5_Installation_via_svn
3. Lancement et réglages
Démarrage
On peut lancer Pd soit avec le lanceur si le paquet de votre distribution le prévoit, soit en ligne de commande :Copy to clipboard
pd
Intéressons-nous à celle-ci un instant. Pour voir les options de démarrage :
Copy to clipboard
pd --help
❗ Le point important si on travaille en temps réel, c'est d'ajouter l'option -rt, faute de quoi on risque fort de subir une pluie de "DIO errors" :
Copy to clipboard
pd -rt
Il est également bien pratique de choisir le serveur son, afin de ne pas avoir à le configurer dans Pd à chaque démarrage. On peut par exemple le lancer avec jack, un échantillonage à 48 000 Hz, le temps réel, et enfin alsa comme serveur MIDI :
Copy to clipboard
pd -rt -jack -r 48000 -alsamidi
Bien, à présent, si on veut mettre tout ça en dur : on édite le lanceur (clic droit => propriétés => lanceur) et on ajoute les options, ou on en crée un nouveau (clic droit sur le bureau, par exemple => Créer un lanceur).
Depuis les dernières versions, il est possible de mettre tout ce petit monde directement dans le fichier de configuration .pdsettings ou .pdextended, sous l'option flags. Ajoutez à la fin du fichier:
Copy to clipboard
flags: -rt -jack etc...
ou graphiquement dans la fenêtre Startup... du menu File, on ajoute les options sur la ligne startup flags.
Temps Réel et DIO Errors
Pd ne gère pas encore parfaitement sa relation avec jack, et donc avec le temps réel. Vous risquez de voir beaucoup de DIO Errors (le bouton dans la fenêtre principale qui s'allume en rouge) si vous travaillez à faible latence, ce qui pourrait être le cas sachant que Pd en ajoute pas mal.La méthode qui suit donne explicitement une priorité au processus Pd.
L'explication en ligne de commande:
Commencez par trouver l'ID du processus:
Copy to clipboard
ps -e|grep pd 5528 ? 00:00:00 pdextended 5530 ? 00:00:00 pd-gui
Nous voyons donc qu'il y a deux processus: le coeur (ici pdextended), et le GUI. Nous ne nous intéresseront évidemment qu'au coeur. Voyons maintenant le niveau de priorité actuel. En root:
Copy to clipboard
chrt -p 5528 stratégie de planification d'exécution pour pid 5528 actuel : SCHED_OTHER priorité de planification d'exécution pour le pid 5528 actuel : 0
Et donnons lui une priorité à 70, qui devrait être suffisant pour être au-delà de la carte graphique et des autres processus, mais au-dessous de jack. Toujours en root:
Copy to clipboard
chrt -f -p 70 5528 puis pour vérification, à nouveau: chrt -p 5528 stratégie de planification d'exécution pour pid 5528 actuel : SCHED_FIFO priorité de planification d'exécution pour le pid 5528 actuel : 70
Pour automatiser tout ça, je vous propose ce script. Copiez le dans un fichier, et renommez-le du nom que vous voudrez, avec l'extension .sh.
Copy to clipboard
#!/bin/sh chrt -v -p 70 `pidof "pdextended"` |grep "prio" #exit 0
Lancez-le après Pd. Vous pouvez toujours vérifier avec chrt -p.
Vous devriez voir à présent les 'DIO Errors' diminuer drastiquement. Si ce n'est pas le cas, c'est que le problème est ailleurs.
Réglages
Au lancement, il faut s'assurer que le son fonctionne 🙄 en choisissant Test Audio and Midi dans le menu Media
Si jamais ça ne devait pas être le cas, on peut jouer avec les réglages du même menu. C'est là également qu'on va choisir le nombre d'entrées et de sorties, la latence, les connexions Midi, etc...
Si vous avez installé Pd-Vanilla, les réglages devraient être terminés pour vous. Si vous avez la version Extended, il faut encore vérifier ce qui suit:
Chargement des bibliothèques
Si le paquetage pour votre distribution a été bien réalisé, tout devrait être en place. Sinon, ou si vous ajoutez des bibliothèques à la main, il faudra indiquer les chemins d'accès.- Dans la fenêtre Pd binaries to load (File => Startup...), il s'agit de lister, comme son nom l'indique en anglais, les binaires à charger au démarrage. Il vous faut pour cela évidemment connaitre son petit nom, et l'ajouter à la liste. Pour que Pd la trouve, on indiquera dans la fenêtre Pd search path... (File => Path...), les chemins vers les bibliothèques installées. Un petit exemple en image:
Dans cet exemple, on peut voir que la très appréciée librairie Zexy est demandée au démarrage, qu'elle se trouve dans le répertoire /usr/lib/pd/extra/zexy, et qu'elle a bien été chargée.
C'est également dans Path... que vous allez renseigner Pd sur les dossier contenant vos abstraction (un concept bien pratique que vous apprendrez bientôt).
Notons encore que la plupart des externals se trouvent généralement dans /usr/lib/pd/extra et la doc (les patchs d'aide ou les tuto) dans /usr/lib/pd/doc. C'est le concept un peu spécial de Pure Data...
4. Découverte
- Pour faciliter l'approche de ce programme, l'exemple d'un générateur sonore sera abordé et développé.
Générateur sonore simple
- Pour commencer, sur une page vierge, 2 boites vont être placés (Menu Put / Object)
- Les boites sont des modules de type générateur, convertisseur, enveloppe...
- La 1ere boite est un oscillateur (osc) générant une sinusoïde à 440hz (le fameux LA du diapason) 😊, le signe (~) signifie qu'il s'agit d'un flux audio.
- La 2eme boite est le convertisseur (DAC - Digital-to-Analog Converter) qui transforme le signal numérique en signal analogique
- Les 2 fils en gras (audio) relient l'Osc au DAC en stéréo
- Et voila notre premier générateur sonore 😊
- Voici d'ailleurs le code au format .txt (doit être renommé en .pd pour être chargé dans Pure Data) Copy to clipboard#N canvas 582 516 307 82 10; #X obj 50 7 osc~ 440; #X obj 125 58 dac~; #X connect 0 0 1 0; #X connect 0 0 1 1;
➡️ N'oubliez pas d'activer le son dans le menu Media / Audio On
- En cliquant (bouton droit) sur la boite osc nous avons accès à une page d'aide 💡, que l'on peut aussi modifier (pour traduire par exemple), impressionnant, non !
Générateur sonore avec contrôle de volume
- Une boite multiplicateur est rajoutée
- Une boite argument relié par un fil de commande permet de changer la valeur
- Code :Copy to clipboard#N canvas 199 177 243 117 12; #X obj 14 -111 osc~ 440; #X obj 133 -21 dac~; #X obj 147 -67 *~; #X floatatom 172 -108 5 0 100 0 - - -; #X connect 0 0 2 0; #X connect 2 0 1 0; #X connect 2 0 1 1; #X connect 3 0 2 1;
➡️ Avec CTRL E, on passe du mode Edit au mode Jeu ce qui permet de varier le volume avec la souris.
➡️ Seule les premières valeurs sont actives (de 0 à 10 environ / progression linéaire) alors que nos oreilles sont sensibles a des valeurs logarithmiques 😬
Générateur sonore variable
- En rajoutant une boite à coin biseauté, nous pouvons varier la fréquence de l'oscillateur (qui est rappelons le, sinusoïdal).
- Nous pouvons aussi rajouter un curseur horizontal qui fera office de potentiomètre pour régler le gain.
- Code :Copy to clipboard#N canvas 352 375 331 141 12; #X obj 93 0 dac~; #X obj 104 -45 *~; #X floatatom 189 -74 5 0 100 0 - - -; #X obj 192 -108 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -261681 -1 -1 5200 1; #X floatatom 7 -111 5 0 0 0 - - -; #X obj 7 -81 osc~; #X connect 1 0 0 0; #X connect 1 0 0 1; #X connect 2 0 1 1; #X connect 3 0 2 0; #X connect 4 0 5 0; #X connect 5 0 1 0;
➡️ Le signe ~ est accessible avec la touche ALT Gr + ~
➡️ Les liaisons grasses représentent le trajet audio
➡️ Les liaisons fines représentent les commandes
Clavier virtuel
- L'insertion de plusieurs boites permet de jouer avec des notes biens précises correspondant à des hauteurs en fréquence définies par des codes Midi (de 1 extrême grave à 128 extrême aigu)
- mtof permet donc de convertir des notes Midi en fréquences
- Do 60 correspond à C3 (situé sur l'octave moyenne d'un clavier portable)
- Pour le volume, on peut aussi changer pour un curseur vertical et changer la couleur 😉
- Code :
[+]
- Tout doucement nous verrons l'élaboration d'un synthétiseur monophonique simple à synthèse soustractive ou additive 😊
à suivre... 😉
5. Exemples / Patchs en téléchargement
http://impala.utopia.free.fr/pd/patchs/selection/http://www.puredata.info/community/patches
http://nullpointer.co.uk/-/pd.htm
JKP-Concerto surréaliste pour clavier azerty
[+]