• *
  • Isadora
  • Max
  • Processing
  • Pure Data
  • Mise à l'échelle

    Processing

    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.