scale~ Reference

Map an input range of signal values to an output range

scale~

Description

Use the scale~ object to map an input range of signal values to an output range. The ranges can be specified with hi and lo reversed for inverted mapping. If specified, the mapping can also be exponential.

Arguments

minimum-in-value [number]

The first argument is the minimum input value used in the scaling operation.

maximum-in-value [number]

The second argument is the maximum input value used in the scaling operation.

minimum-out-value [number]

The third argument is the minimum output value used in the scaling operation.

maximum-out-value [number]

The fourth argument is the maximum output value used in the scaling operation.

scaling-curve [float]

Optional

This optional fifth argument specifies the nature of the scaling curve. This argument must be a floating-point number greater than 1., with larger values leading to steeper exponential curves.

In classic mode a typical value for this argument is 1.06 and the number is converted according to the following expression:
(out_high-out_low >= 0) ? (out_low + (out_high-out_low) * ( (out_high - out_low) * exp(-1*(in_high-in_low)*log(power)) * exp(x*log(power)) )) : (-1) * ( out_low + (out_high-out_low) * ( (out_high - out_low) * exp(-1*(in_high-in_low)*log(power)) * exp(x*log(power)) ) )

In non- classic (modern) mode the value for the scaling curve must be higher than 0. and is converted according to the following expression:

((x-in_low)/(in_high-in_low) == 0) ? out_low : (((x-in_low)/(in_high-in_low)) > 0) ? (out_low + (out_high-out_low) * ((x-in_low)/(in_high-in_low))^exp) : ( out_low + (out_high-out_low) * -((((-x+in_low)/(in_high-in_low)))^(exp)))

Note that prior to Max 6.0.4 the exponent was inverted. Thus, if you gave it an exponent of 2 the object behaved like it had an exponent of 0.5, and if you gave it an exponent of 0.5 it behaved like it had an exponent of 2. Patches from versions prior to 6.0.4 may require updating to work properly.

Attributes

classic [int]

Classic mode uses exponential function that is backward compatible with old IRCAM patchers.

Common Box Attributes

Messages

int7.0.0

Arguments

input [int]
In second inlet: Sets the low input value.
In third inlet: Sets the high input value.
In fourth inlet: Sets the low output value.
In fifth inlet: Sets the high output value.
In sixth inlet: Sets the scaling curve value as described in the object arguments section.

float

Arguments

input [float]
In second inlet: Sets the low input value.
In third inlet: Sets the high input value.
In fourth inlet: Sets the low output value.
In fifth inlet: Sets the high output value.
In sixth inlet: Sets the scaling curve value as described in the object arguments section.

signal

In left inlet: The incoming signal values are scaled according to the mapping provided by the arguments or values received in the other inlets.

See Also

Name Description
scale