Chargement...
 
[Voir/Cacher menus de gauche]
[Voir/Cacher menus de droite]


PureData est un environnement de programmation visuel pour la synthèse & traitement audio/vidéo.





Information

Site web officiel : http://puredata.info/ (communauté), http://crca.ucsd.edu/~msp/ (Miller Puckette)
Version actuelle : 0.48.0 du 2017 08 25.
Licence : proche BSD
Plateforme : Linux, Windows, MAC OS X
Support : Alsa, JACK.
Développeur(s) :

Description

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

Utilisation


Il existe une multitude de tutoriels et de manuels.
Le plus simple est de commencer avec ceux livrés avec Pd et ses bibliothèques : dans le menu 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 on fouille 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-es, 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
  • GuitarExtended, un blog détaillant comment utiliser Pd pour créer un multi-effets pour guitare. Beaucoup de questions sont traitées, de l'installation de Linux à la fabrication d'une pédale pour contrôler Pd. De nombreux exemples d'effets sont expliqués et téléchargeables. Le site est en anglais mais l'auteur est français, donc questions et commentaires en français bienvenus. http://guitarextended.wordpress.com


Installation

Il existe deux versions officielles de Pure Data :
  • Pd-Vanilla : version originale de Miller Puckette "nue", intégrant le cœur et les principales fonctionnalités.
  • Pd-Extended : 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.

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

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 Installer un logiciel.

  • Pour Gentoo, il faudra récupérer l'overlay via layman ou subversion, de la même manière que le pro-audio overlay.
Gentoo MAO- Installation via Layman
Gentoo MAO - Installation via SVN


  • Le site de Hans-Christoph Steiner qui a beaucoup contribué au projet propose 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

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

Intéressons-nous à celle-ci un instant. Pour voir les options de démarrage :
pd --help

exclaim 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" :
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 :
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:
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:
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:
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:
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.
#!/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 rolleyes en choisissant Test Audio and Midi dans le menu Media
Used in puredata
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:
Used in puredata
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...

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) smile, 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
Used in puredata
  • Et voila notre premier générateur sonore smile

  • Voici d'ailleurs le code au format .txt (doit être renommé en .pd pour être chargé dans Pure Data)
    #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;

arrow 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 idea, que l'on peut aussi modifier (pour traduire par exemple), impressionnant, non !
Used in puredata


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
Used in puredata
  • Code :
    #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;

arrow Avec CTRL E, on passe du mode Edit au mode Jeu ce qui permet de varier le volume avec la souris.
arrow Seule les premières valeurs sont actives (de 0 à 10 environ / progression linéaire) alors que nos oreilles sont sensibles a des valeurs logarithmiques eek


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.
Used in puredata
  • Code :
    #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;

arrow Le signe ~ est accessible avec la touche ALT Gr + ~
arrow Les liaisons grasses représentent le trajet audio
arrow 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)
Used in puredata
  • 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 wink
  • Code :
    [+]

  • Tout doucement nous verrons l'élaboration d'un synthétiseur monophonique simple à synthèse soustractive ou additive smile

à suivre... wink



Liens et commentaires


Voir également netpd



[+]

Documentation [Afficher / Cacher]

Connexion
[Afficher / Cacher]



Mégaphone [Afficher / Cacher]

sub26nico, 23:49, lun. 25 Sep 2017: Salut et bienvenue à djiel, Louis Cossement et labatrijador :-)
Willty, 21:08, lun. 25 Sep 2017: Salut, y-a-t-il parmis vous quelqu'un qui aurait déjà utilisé un correcteur de pièce (genre DRC)?
eazymaogeek, 17:02, lun. 25 Sep 2017: a voté sympa les sons
tenryu, 13:38, lun. 25 Sep 2017: A voté !
sub26nico, 08:43, lun. 25 Sep 2017: Salut et bienvenue à Ubuntu_Studio_User et Mary Haugen :-)
olinuxx, 14:15, dim. 24 Sep 2017: N'oubliez pas de voter pour la joute [Lien] :-)
ardoisebleue, 10:52, dim. 24 Sep 2017: A voté
sub26nico, 02:01, dim. 24 Sep 2017: Salut et bienvenue à MdMax :-)
olinuxx, 16:58, sam. 23 Sep 2017: OK sub26nico, merci. Allez @jz, t'es attendu dans les forums pour nous en parler maintenant :-)
sub26nico, 14:11, sam. 23 Sep 2017: @olinuxx, c'était juste pour répondre au coté 'libre', mais j'attends aussi le retour de @jz ;-)
olinuxx, 13:50, sam. 23 Sep 2017: @sub26nico : exact @sub26nico ! Mais on avait qu'une seule ligne, peut être que jz peut nous en dire un peu plusse ? :-)
sub26nico, 23:28, ven. 22 Sep 2017: olinuxx ,on en avait parlé dans l'édito de mars 2017, son code est open-source :S