# 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]

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

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

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

## See Also

Name | Description |
---|---|

scale |