Accueil Floss Manuals francophone

Puredata

L'audio dans Pure Data

Pure Data possède toute une gamme d'objets audio natifs (version de base de Pure Data) ou externes (librairies) qui permettent de créer des algorithmes sonores complexes. Avant d'aller plus loin, il faut comprendre comment l'audio est traité dans Pure Data.

Les objets audio

Les objets audio dans Pure Data se distinguent des autres objets par trois informations visuelles :

  1. Le signe "tilde" - "~" est placé à la fin d'un objet.
  2. Les rectangles représentant les entrées et sorties de l'objet sont noirs ou foncés.
  3. Les ficelles de connexion portant du signal audio sont en gras.
Pd_objetsAudio_Controle.png

Rappel : Pour faire le ~ sur un clavier français, sur PC : altGr + "2" + espace,  sur MAC : alt + "ç".

Cadence des objets audio~ et contrôle

Les objets audio et les objets de contrôle ne fonctionnent pas à la même cadence. Les objets audio fonctionnent en continu (stream) à la cadence spécifiée dans les configurations audio (Audio Settings) ; quant aux objets de contrôle, ils fonctionnent beaucoup plus lentement. Ces différences de cadence peuvent générer des artefacts audio, des « clics », qu'il est préférable d'éviter. On peut donc contrôler les objets audio comme [*~] avec des signaux audio générés avec [line~] plutôt qu'avec des boîtes de message.

[adc~] et [dac~] : entrées et sorties sonores

Dans Pure Data, l'objet permettant d'obtenir des signaux audio entrants (un microphone, par exemple) s'appelle [adc~] qui en anglais signifie 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.

Attention : Dans Pure Data, il n'y a pas de limites au traitement du signal, qui peut alors dépasser les normes numériques du son comprises entre -1 et 1. Par conséquent, le volume sonore généré par Pure Data peut être plus puissant que la capacité de la carte son ou des haut-parleurs : il convient donc d'être prudent ! Vous pouvez intercaler d'autres objets pour contrôler ce signal, comme par exemple un filtre qui ne laissera passer que les fréquences supérieures à 20 Hz : [hip~ 20]. L'objet [clip~ -0.8 0.8], quant à lui, forcera le signal à rester dans des limites comprises entre -0,8 et 0,8, valeurs communément admises par la carte son.

audio_bases_entrees_sorties

Les deux objets, [adc~] et [dac~], acceptent une liste de numéros de canaux audio. La succession des chiffres indique l'ordre par lequel on souhaite accéder aux canaux de l'interface audio. Si aucun argument n'est fourni, les deux objets sont par défaut les deux premiers canaux : ceci donnera du son en stéréo que l'on pourra recevoir et envoyer. Si l'interface audio possède plusieurs canaux, on peut spécifier le numéro d'un canal en particulier. Par exemple, si l'on donne le chiffre 10 comme seul argument, notre objet [dac~] possède une seule entrée qui enverra du son à la sortie numéro 10 de notre interface audio.

[*~] : Modifier le volume sonore

Une onde synthétisée avec [osc~] a l'amplitude maximale pour la sortie audio de votre ordinateur. Elle a comme sommets les nombres -1 et 1. Si l'on souhaite mixer ensemble plusieurs sons, il faudra atténuer un peu chacun d'entre eux afin que l'ensemble ait un volume sonore moins élevé.

Pour augmenter ou baisser le volume d'un son, il suffit de le multiplier par un nombre avec l'objet [*~]. S'il est multiplié par 1, [*~ 1], son volume demeure inchangé, par 0, [*~ 0], il est réduit au silence. On peut ainsi changer l'amplitude de l'onde sonore en multipliant les échantillons par un coefficient.

audio_niveaux_saut

Rappel : ne jamais dépasser 1, cela pourrait endommager vos enceintes !

[line~] : Enveloppe sonore

Sauter directement d'un niveau sonore à un autre est un peu brusque. On entend ainsi un « clic » lorsque le son change subitement. Il est donc préférable d'utiliser un signal audio branché dans la seconde entrée de l'objet [*~] pour obtenir des transitions plus fluides comme dans l'exemple ci-dessous, afin de moduler le volume à la vitesse du son.

audio_niveau_line

Pour faire des transitions audio, on augmente ou réduit graduellement le volume d'un son. L'enveloppe d'un son correspond à la forme de la courbe de variation de son volume dans le temps. Les parties qui nous intéressent le plus sont surtout le début et la fin de cette courbe. Si son volume sonore est soudainement très fort, on dit que son attaque est franche. Si son volume commence par le silence pour augmenter graduellement, son attaque est plus douce. On peut provoquer des interpolations linéaires de cette courbe au moyen de l'objet [line~]. Le signal qui en résulte peut être utilisé pour contrôler le volume d'un signal sonore.

audio_line_

L'objet [line~] permet de créer des rampes, c'est-à-dire l'interpolation linéaire d'un signal audio. On peut passer de n'importe quelle valeur à n'importe quelle autre dans un temps donné. Cet objet comporte deux nombres : une cible et une durée en millisecondes. Lorsque l'objet reçoit un message, le signal qui en sort part de sa valeur actuelle et se déplace progressivement vers sa cible en prenant la durée qui lui a été impartie. Pour le faire sauter directement à une valeur, sans transition, on lui envoie un seul nombre. La durée de l'interpolation est alors nulle. Une fois arrivé à destination, le signal y est maintenu jusqu'à ce que l'objet reçoive un nouveau message. Si le signal reçoit un message alors qu'il est en cours de route, il part de l'endroit qu'il a atteint pour suivre sa nouvelle trajectoire. Le signal qui résulte de cet objet peut être utilisé pour créer des enveloppes, mais aussi pour varier avec finesse la hauteur d'une note de musique, ou la position de lecture d'un fichier vidéo par exemple.

[+~] : Mixer plusieurs sons ensemble

Pour mélanger plusieurs signaux audio ensemble, il suffit de les additionner : c'est l'objet [+~] qui le permet. [+~] a deux entrées pour les valeurs à additionner, et sa sortie donne le résultat de cette addition.

audio_add

Une autre manière d'additionner deux sons consiste à brancher plusieurs signaux sonores dans la même entrée d'un objet. Le résultat est le même que celui opéré par [+~].

Si l'on additionne deux signaux audio, il se peut que le volume sonore du résultat soit trop fort. Pour cette raison, il vaut mieux se garder une marge de manœuvre et les atténuer avant leur addition. Par exemple, vous pouvez brancher un [*~ 0.25] avant de les additionner. Placer [+~] après l'addition est tout aussi valable.

audio_add_meme_inlet

Lorsqu'un échantillon dépasse la valeur de -1 ou celle de 1, il est tronqué à la valeur maximale (-1 ou 1) et il en résulte un son distordu à cause de la perte d'informations et de l'apparition de fréquences parasites. Le son est dit « saturé ».

Taille des Blocs audio

Pure Data travaille avec le son par paquets ou blocs. Un bloc représente le nombre d'échantillons audio qui sont traités en une fois avant d'être envoyés à la sortie audio ou au traitement numérique suivant. La taille des blocs par défaut est de 64 échantillons : ce qui signifie que chaque fois que sont lus les 64 échantillons, Pure Data fait le calcul nécessaire sur le son. Lorsque ce calcul est terminé, le patch produit le son en sortie. On peut modifier la taille des blocs avec l'objet [block~]. Cette opération est parfois nécessaire pour traiter le son et la vidéo en synchro.