Skip to main content

Historique: puredata

Aperçu de cette version: 87


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 sujet

Téléchargement et sites officiels



  • 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:

  • 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/



  • 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/



  • 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





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

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
versiondistribution mediadate
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_4_Installation_via_Layman
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
Image
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:
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
Image
  • 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 !
Image


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
Image
  • 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.
Image
  • 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)
Image
  • 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



[+]

Historique

Information Version
Sun 15 Dec 2024 13:40 olinuxx + alias deken 118
Afficher
Fri 15 Dec 2023 12:48 Geis007 Ajout de Mageia 117
Afficher
Wed 21 Dec 2022 13:45 octopus 116
Afficher
Wed 21 Dec 2022 13:39 octopus Utile à savoir pour les amateurs de synthèse modulaire. 115
Afficher
Sat 14 mai 2022 19:47 olinuxx + LZK-4 114
Afficher
Sun 24 mai 2020 23:46 olinuxx + LZK3 113
Afficher
Thu 02 Jan 2020 10:11 farvardin suppression liens morts 112
Afficher
Thu 02 Jan 2020 09:55 farvardin mise à jour des infos : suppression de https://at.or.at/hans/pd/ qui ne propose plus de paquets, suppression de http://apt.puredata.info/ qui n'est plus à jour depuis des années, précisions sur pd-ext 111
Afficher
Fri 27 Dec 2019 17:43 farvardin 110
Afficher
Fri 27 Dec 2019 17:36 farvardin correction url flossmanual 109
Afficher
Fri 08 Sep 2017 21:47 olinuxx + lien netpd et lien forum plus court 108
Afficher
Fri 06 Nov 2015 14:42 olinuxx Recherche et remplacement en masse 107
Afficher
Mon 28 Sep 2015 07:24 olinuxx + dossier 106
Afficher
Sat 20 Sep 2014 18:31 olinuxx amelioration des liens 105
Afficher
Fri 05 Sep 2014 16:15 olinuxx Recherche et remplacement en masse 104
Afficher
Thu 04 Sep 2014 14:20 olinuxx Recherche et remplacement en masse 103
Afficher
Thu 04 Sep 2014 14:05 olinuxx Recherche et remplacement en masse 102
Afficher
Wed 19 Mar 2014 20:13 romain_bar Démo 101
Afficher
Tue 18 Mar 2014 21:47 romain_bar Présentation 100
Afficher
Tue 18 Mar 2014 21:25 romain_bar Déplacement des liens de téléchargement dans Installation 99
Afficher
Tue 18 Mar 2014 21:11 romain_bar Complément d'information 98
Afficher
Fri 24 Jan 2014 18:19 utilisateur_anonyme2 De{box}ification (ancien fil d'arianne) 97
Afficher
Fri 08 Nov 2013 23:03 romain_bar séparation des variables date et version 96
Afficher
Mon 04 Nov 2013 17:11 anonymous wiki_up conversion 95
Afficher
Thu 18 Oct 2012 19:49 pianolivier auto-correction 94
Afficher
Mon 16 Apr 2012 21:28 pianolivier +support alsa, jack 93
Afficher
Sun 01 Apr 2012 15:15 pianolivier +fil d'ariane 92
Afficher
Mon 23 Jan 2012 09:39 GuitarExtended 91
Afficher
Mon 23 Jan 2012 09:39 GuitarExtended 90
Afficher
Mon 23 Jan 2012 09:38 GuitarExtended 89
Afficher
Mon 23 Jan 2012 09:36 GuitarExtended 88
Afficher
Wed 04 Jan 2012 16:24 olinuxx + 1 alias + consistance alias 87
Afficher
Tue 25 Oct 2011 15:20 barbux 86
Afficher
Tue 13 Sep 2011 07:43 olinuxx alias 85
Afficher
Tue 12 Jul 2011 22:04 BlindeKinder 84
Afficher
Tue 12 Jul 2011 22:03 BlindeKinder 83
Afficher
Tue 12 Jul 2011 22:02 BlindeKinder 82
Afficher
Tue 12 Jul 2011 22:01 BlindeKinder ajout RT et DIO errors 81
Afficher
Tue 15 Feb 2011 21:56 pianolivier + lien concerto pour clavier azerty 80
Afficher
Sat 25 Sep 2010 00:23 BlindeKinder Modifications diverses par rapport à la sortie de la 0.42.5 de pd-ext... 79
Afficher
Sat 25 Sep 2010 00:14 BlindeKinder Modifications diverses par rapport à la sortie de la 0.42.5 de pd-ext... 78
Afficher
Fri 10 Sep 2010 14:14 olinuxx 77
Afficher
Fri 10 Sep 2010 14:14 olinuxx passage aux variables de version 76
Afficher
Mon 30 Aug 2010 15:12 piep mise à jour mandriva 2010.1 75
Afficher
Wed 18 Aug 2010 18:00 Willy_WOLFF ajout installation pour gentoo 74
Afficher
Tue 23 Feb 2010 10:43 yanshee 73
Afficher
Tue 23 Feb 2010 10:43 yanshee 72
Afficher
Tue 23 Feb 2010 10:42 yanshee 71
Afficher
Tue 23 Feb 2010 10:41 yanshee 70
Afficher
Tue 23 Feb 2010 10:40 yanshee 69
Afficher