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

    Pure Data

    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.

    Il existe un objet dédié à la mise à l’échelle, mais il vaut mieux parfois détailler les opérations de la règle de 3.

    rescale
    Les données de départ vont de 0 à 127, que ce soient les données du slider ou celles du capteur.
    L’objet clip sert à limiter l’étendue des données, puisque nous avons abitrairement choisi de n’utiliser que les valeurs de 0 à 127. Clip donne des nouveaux minimum et maximum mais n’affecte pas la résolution des données, il enlève juste les extrémités en trop de la gamme de valeurs.

    Les étapes suivantes font la mise à l’échelle :

    Soustraction du minimum des données entrantes, pour se ramener à un minimum de 0 ;
    Division par le maximum des données entrantes, pour avoir une étendue de données entre 0 et 1 ;
    Multiplication par le maximum de l’étendue souhaitée en sortie, pour passer à une gamme de 0 à ce maximum. Attention, ce maximum n’est pas forcément le maximum final souhaité, il doit prendre en compte aussi le minimum souhaité en sortie s’il est différent de 0.
    Max(étendue) = Max(souhaité) - Min(souhaité)
    Addition du minimum souhaité pour les valeurs sortantes.