---
title: Pattern Effects
layout: ../../layouts/MainLayout.astro
---
import { MiniRepl } from '@src/docs/MiniRepl';
import Box from '@components/Box.astro';
import QA from '@components/QA';
# Pattern Effects
Up until now, most of the functions we've seen are what other music programs are typically capable of: sequencing sounds, playing notes, controlling effects.
In this chapter, we are going to look at functions that are more unique to tidal.
**reverse patterns with rev**
**play pattern left and modify it right with jux**
This is the same as:
Let's visualize what happens here:
Try commenting out one of the two by adding `//` before a line
**multiple tempos**
This is like doing
Try commenting out one or more by adding `//` before a line
**add**
>"))
.color(">").adsr("[.1 0]:.2:[1 0]")
.sound("gm_acoustic_bass").room(.5).cpm(60)`}
punchcard
/>
If you add a number to a note, the note will be treated as if it was a number
We can add as often as we like:
>").add("0,7"))
.color(">").adsr("[.1 0]:.2:[1 0]")
.sound("gm_acoustic_bass").room(.5).cpm(60)`}
punchcard
/>
**add with scale**
[~ <4 1>]".add("<0 [0,2,4]>"))
.scale("C5:minor").release(.5)
.sound("gm_xylophone").room(.5)`}
punchcard
/>
**time to stack**
[~ <4 1>]".add("<0 [0,2,4]>"))
.scale("C5:minor")
.sound("gm_xylophone")
.room(.4).delay(.125)
$: note("c2 [eb3,g3]".add("<0 <1 -1>>"))
.adsr("[.1 0]:.2:[1 0]")
.sound("gm_acoustic_bass")
.room(.5)
$: n("0 1 [2 3] 2").sound("jazz").jux(rev)`}
/>
**ply**
this is like writing:
Try patterning the `ply` function, for example using `"<1 2 1 3>"`
**off**
] <2 3> [~ 1]"
.off(1/16, x=>x.add(4))
//.off(1/8, x=>x.add(7))
).scale("/2")
.s("triangle").room(.5).dec(.1)`}
punchcard
/>
In the notation `.off(1/16, x=>x.add(4))`, says:
- take the original pattern named as `x`
- modify `x` with `.add(4)`, and
- play it offset to the original pattern by `1/16` of a cycle.
off is also useful for modifying other sounds, and can even be nested:
x.speed(1.5).gain(.25)
.off(3/16, y=>y.vowel("*8")))`}
/>
| name | description | example |
| ---- | ------------------------------ | ------------------------------------------------------------------------------------------- |
| rev | reverse | |
| jux | split left/right, modify right | |
| add | add numbers / notes | ")).scale("C:minor")`} /> |
| ply | speed up each event n times | ")`} /> |
| off | copy, shift time & modify | x.speed(2))`} /> |