Programmation

Les codes et programmes d’Interface-Z

Accueil > Outils > Traitement des données > Analyse > Mise à l’échelle en Processing

Mise à l’échelle en Processing

Mis à jour le mercredi 31 mai 2017, par zandrine

Outil : Mise à l’échelle

La mise à l’échelle d’une valeur est utilisée très fréquemment dans les patches pour transformer une donnée (une commande, un signal, une valeur de capteur, une valeur aléatoire, ...) en paramètre utilisable par un objet (volume sonore, luminosité, vitesse de lecture de video, taille d’image, etc...).

Le principe est simple, c’est une règle de trois.

  • La valeur d’origine peut s’étendre d’un minimum à un maximum qui sont connus (0 et 127 pour des données en Midi standard, 0 et 1 pour une enveloppe, 0 et 100 pour un Wave d’Isadora, ...).
  • L’effet à l’arrivée n’accepte que des valeurs dont les bornes sont différentes, plus petites ou plus grandes (0 à 3 pour le son en PD, -3 à 3 pour une vitesse de lecture, 0 à 1 ou 0 à 255 pour des couleurs...).
  • Le passage de l’une à l’autre se fait proportionnellement (dans les exemples de cette page).

Dans tous les exemples qui suivent, la règle de trois transforme une valeur de 5 à 127 en une valeur de 10 à 50.

En Pg, la fonction map() est dédiée à la mise à l’échelle des données.

float machin ;
int truc = 5 ;
machin = map(truc, 5,127, 10,50) ;

Syntaxe :

map(valeur, start1, stop1, start2, stop2)

Paramètre Type Description
valeur float ou int valeur d’origine à convertir
start1 float ou int minimum d’origine de la valeur à convertir
stop1 float ou int maximum d’origine de la valeur à convertir
start2 float ou int minimum en sortie
stop2 float ou int maximum en sortie

Résultat : float. Utiliser int() autour du map() si le résultat souhaité doit être un nombre entier.

La sortie de map() n’est pas limitée aux min et max paramétrés : si la valeur d’entrée déborde de ses bornes, la valeur de sortie aussi.