# range

(Redirected from rangex)

Type: `range :: Num a => Pattern a -> Pattern a -> Pattern a -> Pattern a`

range will take a pattern which goes from 0 to 1 (such as sine), and scale it to a different range - between the first and second arguments. In the below example, `range 1 1.5` shifts the range of sine from 0 - 1 to 1 - 1.5.

```d1 \$ jux (iter 4) \$ sound "arpy arpy:2*2"
|+| speed (slow 4 \$ range 1 1.5 sine)
```

The above is equivalent to the following:

```d1 \$ jux (iter 4) \$ sound "arpy arpy:2*2"
|+| speed (slow 4 \$ sine * 0.5 + 1)
```

# rangex

Type: `rangex :: (Floating b, Functor f) => b -> b -> f b -> f b`

rangex is an exponential version of range described above, good to use for frequencies. For example, `range 20 2000 "0.5"` will give `1010` - halfway between 20 and 2000. But `rangex 20 2000 0.5` will give `200` - halfway between on a logarithmic scale. This usually sounds better if you’re using the numbers as pitch frequencies. Since rangex uses logarithms, don’t try to scale things to zero or less!