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

    Max

    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.

    L’objet scale est dédié à la mise à l’échelle proportionnelle des valeurs.

    echelle

    Les données que l’on souhaite transformer se branchent sur la première entrée de l’objet scale. Les bornes de départ et d’arrivée se mettent soit en argument soit sur les entrées suivantes.
    Il est aussi possible d’obtenir le même résultat en détaillant les opérations de la règle de 3. C’est le même principe que pour Pure Data qui peut être utilisé en Max, avec la succession d’opérations mathématiques.

    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.