# inside

(Redirected from outside)

Type: `inside :: Pattern Time -> (Pattern a -> Pattern b) -> Pattern a -> Pattern b`

inside carries out an operation 'inside' a cycle.

For example, while `rev "0 1 2 3 4 5 6 7"` is the same as `"7 6 5 4 3 2 1 0"`, `inside 2 rev "0 1 2 3 4 5 6 7"` gives `"3 2 1 0 7 6 5 4"`.

What this function is really doing is 'slowing down' the pattern by a given factor, applying the given function to it, and then 'speeding it up' by the same factor. In other words, this:

`inside 2 rev "0 1 2 3 4 5 6 7"`

Is doing this:

`fast 2 \$ rev \$ slow 2 "0 1 2 3 4 5 6 7"`

.. so rather than whole cycles, each half of a cycle is reversed.

# outside

Type: `outside :: Pattern Time -> (Pattern a -> Pattern b) -> Pattern a -> Pattern b`

outside is the inverse of the inside function. outside applies its function outside the cycle.

Say you have a pattern that takes 4 cycles to repeat and apply the `rev` function.

`d1 \$ rev \$ cat [s "bd bd sn",s "sn sn bd", s"lt lt sd", s "sd sd bd"]`

The above generates: `d1 \$ rev \$ cat [s "sn bd bd",s "bd sn sn", s "sd lt lt", s "bd sd sd"]`

However if you apply `outside`: `d1 \$ outside 4 (rev) \$ cat [s "bd bd sn",s "sn sn bd", s"lt lt sd", s "sd sd bd"]`

The result is : `d1 \$ rev \$ cat [s "bd sd sd", s "sd lt lt", s "sn sn bd", s "bd bd sn"]`

Notice the whole idea has been reversed.

What this function is really doing is 'speeding up' the pattern by a given factor, applying the given function to it, and then 'slowing it down' by the same factor. In other words, this:

````d1 \$ slow 4 \$ rev \$ fast 4 \$ cat [s "bd bd sn",s "sn sn bd", s"lt lt sd", s "sd sd bd"]`
```

This compresses the idea into a single cycle before `rev` operates and then slows it back to the original speed.