--- title: First Effects layout: ../../layouts/MainLayout.astro --- import { MiniRepl } from '../../docs/MiniRepl'; import QA from '@components/QA'; # First Effects import Box from '@components/Box.astro'; We have sounds, we have notes, now let's look at effects! ## Some basic effects **low-pass filter** /2") .sound("sawtooth").lpf(800)`} /> lpf = **l**ow **p**ass **f**ilter - Change lpf to 200. Notice how it gets muffled. Think of it as standing in front of the club with the door closed 🚪. - Now let's open the door... change it to 5000. Notice how it gets brighter ✨🪩 **pattern the filter** /2") .sound("sawtooth").lpf("200 1000")`} /> - Try adding more values - Notice how the pattern in lpf does not change the overall rhythm We will learn how to automate with waves later... **vowel** /2") .sound("sawtooth").vowel("/2")`} /> **gain** Rhythm is all about dynamics! - Remove `.gain(...)` and notice how flat it sounds. - Bring it back by undoing (ctrl+z) **stacks within stacks** Let's combine all of the above into a little tune: /2") .sound("sawtooth").lpf("200 1000"), note("<[c3,g3,e4] [bb2,f3,d4] [a2,f3,c4] [bb2,g3,eb4]>/2") .sound("sawtooth").vowel("/2") ) `} /> Try to identify the individual parts of the stacks, pay attention to where the commas are. The 3 parts (drums, bassline, chords) are exactly as earlier, just stacked together, separated by comma. **shape the sound with an adsr envelope** ") .sound("sawtooth").lpf(600) .attack(.1) .decay(.1) .sustain(.25) .release(.2)`} /> Try to find out what the numbers do.. Compare the following - attack: `.5` vs `0` - decay: `.5` vs `0` - sustain: `1` vs `.25` vs `0` - release: `0` vs `.5` vs `1` Can you guess what they do? - attack: time it takes to fade in - decay: time it takes to fade to sustain - sustain: level after decay - release: time it takes to fade out after note is finished ![ADSR](https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/ADSR_parameter.svg/1920px-ADSR_parameter.svg.png) **adsr short notation** ") .sound("sawtooth").lpf(600) .adsr(".1:.1:.5:.2") `} /> **delay** ~]") .sound("gm_electric_guitar_muted"), sound("").bank("RolandTR707") ).delay(".5")`} /> Try some `delay` values between 0 and 1. Btw, `.5` is short for `0.5` What happens if you use `.delay(".8:.125")` ? Can you guess what the second number does? What happens if you use `.delay(".8:.06:.8")` ? Can you guess what the third number does? `delay("a:b:c")`: - a: delay volume - b: delay time - c: feedback (smaller number = quicker fade) **room aka reverb** ~@16] ~>/2") .scale("D4:minor").sound("gm_accordion:2") .room(2)`} /> Try different values! Add a delay too! **little dub tune** ~]") .sound("gm_electric_guitar_muted").delay(.5), sound("").bank("RolandTR707").delay(.5), n("<4 [3@3 4] [<2 0> ~@16] ~>/2") .scale("D4:minor").sound("gm_accordion:2") .room(2).gain(.5) )`} /> Let's add a bass to make this complete: ~]") .sound("gm_electric_guitar_muted").delay(.5), sound("").bank("RolandTR707").delay(.5), n("<4 [3@3 4] [<2 0> ~@16] ~>/2") .scale("D4:minor").sound("gm_accordion:2") .room(2).gain(.4), n("<0 [~ 0] 4 [3 2] [0 ~] [0 ~] <0 2> ~>*2") .scale("D2:minor") .sound("sawtooth,triangle").lpf(800) )`} /> Try adding `.hush()` at the end of one of the patterns in the stack... **pan** **speed** ").room(.2)`} /> **fast and slow** We can use `fast` and `slow` to change the tempo of a pattern outside of Mini-Notation: Change the `slow` value. Try replacing it with `fast`. What happens if you use a pattern like `.fast("<1 [2 4]>")`? By the way, inside Mini-Notation, `fast` is `*` and `slow` is `/`. ")`} /> ## automation with signals Instead of changing values stepwise, we can also control them with signals: The basic waveforms for signals are `sine`, `saw`, `square`, `tri` 🌊 Try also random signals `rand` and `perlin`! The gain is visualized as transparency in the pianoroll. **setting a range** By default, waves oscillate between 0 to 1. We can change that with `range`: What happens if you flip the range values? We can change the automation speed with slow / fast: /2") .sound("sawtooth") .lpf(sine.range(100, 2000).slow(8))`} /> The whole automation will now take 8 cycles to repeat. ## Recap | name | example | | ----- | -------------------------------------------------------------------------------------------------- | | lpf | ")`} /> | | vowel | ")`} /> | | gain | | | delay | | | room | | | pan | | | speed | ")`} /> | | range | | Let us now take a look at some of Tidal's typical [pattern effects](/de/workshop/pattern-effects).