Pure data & Interactivité

Cours 02

  • 30/01/2012
    - Résumé
    - Branchement des capteurs
    - Mise en réseau et partage de données
    - Applications pratiques, traitements de données : seuils, mise à léchelle, détection de pic, comparateur à hystéresis.

I - Résumé

1 - Pure Data

Resume

Notions fondamentales : entrée chaude / entrée froide, profondeur d'abord.

2 - Proximètre infra-rouge

Midi, interface, capteur.
Réception et affichage des données.

II - Partage des données en réseau

1 - Envoi

Interface connectée en Midi sur un ordinateur.
Réception des données en Midi.
Envoi en UDP à une autre machine ou à un autre logiciel dans la même machine (localhost).

Envoi

Adresse réseau :

  • Adresse IP de l'ordinateur cible, qui peut être représentée par son nom ou par localhost dans le cas d'une communication interne.
  • Port UDP arbitrairement choisi.
  • Adresse du message, pouvant être du type capteur2, ou /isadora, avec éventuellement un complément d'adresse type /1 (/isadora/2 par exemple).
  • Valeur à envoyer.

Ces notions de communication par réseau seront utilisées pour communiquer avec Processing et Isadora dans les cours suivants.

2 - Réception

Reception

Les informations réseau à utiliser sont le port d'envoi et les adresses.
L'argument 1 signifie qu'on utilise un protocole UDP et non TCP.

III - Notions abordées dans les patchs du jour

1 - Objets PD

a - Temporalité

line
metro
delay

b - Contrôle

$1
loadbang
send/receive

c - Traitement du signal

comparaisons
change
select
moses
onebang

2 - Son

Message dsp
Génération de son

3 - Hiérarchie des patchs

abstraction

Sous-patch : part interne du patch ;
Abstraction : fichier externe au patch.

Intérêts des sous-patchs et abstractions :

  • Gain de place
  • Création d'ensembles logiques
  • Facilité de duplication

Intérêt des abstractions :

  • Création d'outils spécifiques utilisables dans différents patchs
  • La modification de l'abstraction modifie tous les patchs qui l'utilisent.

4 - GEM

gemhead
gemwin
pix_image

************************

/|\(;,;)/|\

****************

 

IV - Exemples de traitement du signal

1 - Présence / Absence

a - But du patch

Lorsque qu'il n'y a personne devant le capteur, on entend un son continu (un la).
Lorsque quelqu'un passe devant le capteur, ce son s'atténue et un sample est diffusé.

L'effet se termine automatiquement, que le spectateur soit là ou pas.

Son gamelle ici.

b - Etape 1 : détecter la présence

La détection d'une présence est visualisée par un Bang.

Patch seuil

Objet de comparaison : inférieur ou égal, ou bien égalité.

change : ne laisse passer que la première de plusieurs valeurs identiques.
Par exemple si on envoie en entrée du change un flot de valeurs 001110001111,
on obtient en sortie du change : 0101.

Cela évite de répéter inutilement un résultat.

sel : sélection du résultat qui nous intéresse.
Ici le résultat intéressant est "faux" = 0 = il y a quelqu'un.

c - Etape 2 : Lecture de son, génération de son, message dsp.

Captation et action sont séparées.

seuil

Le message dsp 1 permet d'activer le son dans Pure Data.

Il y a plusieurs façons d'activer le son :

  • Cliquer sur Compute audio dans la fenêtre principale de PD
  • Menu Media / Audio On
  • Message pd dsp 1, qui peut être activé automatiquement (vu plus loin).

Volume : *~
Haut-parleurs : dac~, par défaut en stereo avec 2 entrées.

readsf~: lecture de samples wav ou aif
Attention à toujours ouvrir le son (message open) avant de lancer la lecture (message 1).

Exemple de génération de son : osc~, oscillateur type cosinus à qui on indique une fréquence (440 = note la).

Le volume dans PD s'utilise entre 0 et 2.

d - Etape 3 : Connexion entre événement capté et effet

Le Bang orange (indiquant la détection) lance la lecture du sample et diminue le volume du la.

La fin de l'effet est automatique : quand le son s'achève, le volume du la remonte.

seuil

e - Etape 4 : lisibilité du patch

Objets send/receive : ils remplacent une ficelle.

Cela permet de rendre le patch plus clair, les ficelles ne pouvant être courbées autour des objets...
send / receive s'abrègent en s / r, suivis d'un mot qui ne doit pas être un mot cled de PD.

Seuil.

 

2 - Seuil

a - But du patch

Lorsque le spectateur est loin, on entend un oscillateur à fréquence variable.
Lorsqu'il s'approche, le son est remplacé par un sample en boucle.

L'effet dure tant que le spectateur est près du capteur.

b - Etape 1 : Comparaison des données à un seuil.

Affichage des états loin / près sur deux Bangs différents.

Seuil

Les objets sont les mêmes que dans le premier patch, mais cette fois-ci les deux réponses, vrai et faux, sont utilisées en sortie de deux sel.

c - Etape 2 : Son et loadbang

Activation automatique avec loadbang à l'ouverture du patch.
L'objet loadbang permet de rendre un patch autonome, c'est-à-dire fonctionnel sans qu'il soit nécessaire de cliquer sur quoi que ce soit.

Il peut initialiser des paramètres ou bien activer des fonctions de PD comme la gestion du son.

Lecture de son en boucle, génération de son, message dsp.

Objets temporels : metro, delay, line.
metro = metronome, envoie des bangs à un rythme donné en millisecondes ;
delay = attente, sort un bang au bout du temps imparti ;
line = rampe de valeurs, rejoint un objectif (110) en un temps donné (1000 ms).

Le line prend en entrée (entrée de gauche) un message à deux paramètres : objectif, durée.

Ces objets temporels permettent de modifier la fréquence du son produit par osc~, donnant une oscillation périodique régulière.

Captation et action sont encore séparées dans cette étape. Chaque morceau du patch doit fonctionner indépendemment avant qu'ils soient raccorder entre eux. Cela permet de corriger les erreurs plus facilement avant de passer à la suite.

seuil

d - Etape 3 : Connexion entre captation et action

Deux états, deux effets.

seuil

Spectateur lointain = bas, volume de l'oscillateur à 1, son de galle arrêté.
Spectateur proche = haut, volume de l'oscillateur à 0, boucle son en continu.

Le loadbang sert à la fois à autoriser le son par dsp 1 et à lancer la variation de fréquence de l'oscillateur.

3 - Comparateur à Hystéresis

a - But du patch

Lorsque le spectateur s'approche, il dépasse un seuil et active un son. S'il hésite autour de cette distance, cela ne modifie pas le son activé. S'il repart en arrière, il doit atteindre un seuil inférieur pour déclencher un autre son, il doit reculer plus loin que lorsqu'il a déclenché le son proche.

Les sons peuvent être mis en boucle pour accentuer l'effet.

Intérêts d'un comparateur à hystérésis :

  • Evite les béguaiements, les oscillations autour du seuil ;
  • Comportement têtu, moins prévisible qu'un seuil simple.

Sons gamelle et blabla ici.

b - Etape 1 : Abstraction hysto.pd

hysteresis

Ne pas utiliser le mot "hysteresis".

Cette abstraction reçoit sur l'entrée de gauche le flux de valeurs à comparer. L'entrée du milieu correspond au seuil moyen que l'on veut fixer. L'entrée de droite donne une largeur autour de ce seuil, permettant de créer un seuil haut et un seuil bas.

Choix d'un seuil central, réglage de l'écartement des deux seuils. Ce choix dépend du capteur, de sa portée et de l'effet que l'on veut obtenir.

Plusieurs comparateurs peuvent se succéder avec un capteur à longue portée.

Hysteresis

Dans cet exemple le seuil moyen est fixé à 88. La largeur est de 16, ce qui signifie que le seuil inférieur est de 88 - 8 = 80 et le seuil supérieur de 88 + 8 = 96.

La réponse d'hysto est vrai ou faux, 1 ou 0 :
- 0 Quand le spectateur s'approche jusqu'au seuil haut 96 ;
- 1 quand le spectateur continue à s'approcher après le seuil haut ;
- toujours 1 s'il s'éloigne un peu mais n'atteint pas le seul bas ;
- 1 si le spectateur commence à s'éloigner, des valeurs les plus hautes jusqu'au seuil inférieur 80 ;
- 0 lorsqu'il continue à s'éloigner en dessous de 80 jusqu'aux valeurs basses ;
- toujours 0 s'il est passé sous 80, s'approche à nouveau mais n'atteint pas encore le seuil haut 96.

Des objets sel 0 et sel 1, précédés d'un change, conviendraient très bien pour matérialiser ces résultats sur des bang.

Faisons donc autre chose... moses sépare un flux de données en deux, inférieur ou supérieur ou égal à un seuil, ici fixé à 1.

c - Etape 2 : déclenchement de sons

Utiliser 2 lecteurs de samples distincts, l'un déclenché par l'approche et l'autre par l'éloignement.
Le déclenchement de l'un désactive l'autre.

Donc : le bang "haut" active le son gamelle et désactive le son blabla, le bang "bas" active le son blabla et désactive le son gamelle.

Constats : déclenchements multiples désagréables.

hysto

d - Etape 3 : onebang

Objet onebang : évite les déclenchements multiples.

Onebang laisse passer un bang sur l'entrée de gauche puis se ferme, jusqu'à ce qu'il soit réouvert par un bang sur l'entrée de droite (reset).

Ici, la première valeur passant d'un côté du moses active un onebang, donc lance un son.
Ce onebang joue ce son soit jusqu'au bout (gamelle) soit pendant au moins 3 secondes (blabla).
Le onebang est ensuite disponible pour relancer un son.

hysteresis

4 - Mise à l'échelle de valeurs graduelles

a - But du patch

Contrôler le mouvement et la couleur d'une image par un capteur.

Image camomille.jpg ici.

b - Etape 1 : affichage GEM

Ouvrir une image.

Chaîne GEM : gemhead en haut, objet final en bas (pix_draw, square, etc).

Objets intéremédiaires : couleurs, texture, transformations.

gemwin crée la fenêtre graphique.

valeurs

c - Etape 2

Utilisation des valeurs du capteur avec 2 échelles différentes

  Capteur Rotation Couleur
Minimum 0 0.2
Maximum 127 381° 1

Appliquer l'image sur une forme carrée pour la faire tourner.

echelle

gem

5 - Détection de maxima

a - But du patch

Transformer le capteur de distance en corde virtuelle.

Des aller-retours avec la main créent des pics dans les données. Ils sont utilisés pour lancer un son, changer son volume et changer la couleur d'une image.

b - Etape 1 : détection du pic

- Maximum = sommet d'un pic
- Sens d'évolution des données : courante - précédente
- Si le résultat est négatif (<= 0), c'est qu'on vient de dépasser le pic
- L'instant du pic est donc atteint,
- La valeur max est la valeur qui précède le début de la descente après le pic, mise en mémoire dans la case f à partir du Bucket.

Pic

c - Etape 2 : rassembler les éléments

pic

d - Etape 3 : connexion analyse / effets

L'instant est utilisé pour déclencher le son, par le t b f.

La valeur est utilisée pour le volume, avec une mise à l'échelle (division par 100).

t b f : trigger bang float

pic

d - Etape 4 : changement de couleur à chaque pic

Mise à l'échelle de la couleur bleue par division par 127.

pic

 

 

************************

/|\(;,;)/|\

****************

 

Cours 01 << ~(oO) ~ >> Cours 03