--- title: Erste Effekte layout: ../../../layouts/MainLayout.astro --- import { MiniRepl } from '../../../docs/MiniRepl'; import QA from '@components/QA'; # Erste Effekte import Box from '@components/Box.astro'; ## Ein paar grundlegende Effekte **low-pass filter** /2") .sound("sawtooth").lpf(800)`} /> lpf = **l**ow **p**ass **f**ilter - Ändere `lpf` in 200. Hörst du, wie der Bass dumpfer klingt? Es klingt so, als würde die Musik hinter einer geschlossenen Tür spielen 🚪 - Lass uns nun die Tür öffnen: Ändere `lpf` in 5000. Der Klang wird dadurch viel heller und schärfer ✨🪩 **filter automatisieren** /2") .sound("sawtooth").lpf("200 1000")`} /> - Füg noch mehr `lpf` Werte hinzu - Das Pattern in `lpf` ändert nicht den Rhythmus der Basslinie Später sehen wir, wie man mit Wellenformen Dinge automatisieren kann. **vowel = Vokal** /2") .sound("sawtooth").vowel("/2")`} /> **gain = Verstärkung** Bei Rhythmen ist die Dynamik (= Veränderungen der Lautstärke) sehr wichtig. - Entferne `.gain(...)` und achte darauf, wie es viel flacher klingt. - Mach es rückgängig (strg+z dann strg+enter) **stacks in stacks** Lass uns die obigen Beispiele kombinieren: /2") .sound("sawtooth").lpf("200 1000"), note("<[c3,g3,e4] [bb2,f3,d4] [a2,f3,c4] [bb2,g3,eb4]>/2") .sound("sawtooth").vowel("/2") ) `} /> Versuche die einzelnen Teile innerhalb von `stack` zu erkennen. Schau dir an wie die Kommas gesetzt sind. Die 3 Teile (Drums, Bass, Akkorde) sind genau wie vorher, nur in einem `stack`, getrennt durch Kommas. **Den Sound formen mit ADSR-Hüllkurve** ") .sound("sawtooth").lpf(600) .attack(.1) .decay(.1) .sustain(.25) .release(.2)`} /> Versuche herauszufinden, was die Zahlen machen. Probier folgendes: - attack: `.5` vs `0` - decay: `.5` vs `0` - sustain: `1` vs `.25` vs `0` - release: `0` vs `.5` vs `1` Kannst du erraten, was die einzelnen Werte machen? - attack (anschlagen): Zeit des Aufbaus - decay (zerfallen): Zeit des Abfalls - sustain (erhalten): Lautstärke nach Abfall - release (loslassen): Zeit des Abfalls nach dem Ende ![ADSR](https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/ADSR_parameter.svg/1920px-ADSR_parameter.svg.png) **adsr-Kurznotation** ") .sound("sawtooth").lpf(600) .adsr(".1:.1:.5:.2") `} /> **delay = Verzögerung** ~]") .sound("gm_electric_guitar_muted"), sound("").bank("RolandTR707") ).delay(".5")`} /> Probier verschiedene `delay` Werte zwischen 0 und 1. Übrigens: `.5` ist kurz für `0.5`. Was passiert, wenn du `.delay(".8:.125")` schreibst? Kannst du erraten, was die zweite Zahl macht? Was passiert, wenn du `.delay(".8:.06:.8")` schreibst? Kannst du erraten, was die dritte Zahl macht? `delay("a:b:c")`: - a: Lautstärke des Delays - b: Verzögerungszeit - c: Feedback (je kleiner, desto schneller verschwindet das Delay) **room aka reverb = Hall** ~@16] ~>/2") .scale("D4:minor").sound("gm_accordion:2") .room(2)`} /> Spiel mit verschiedenen Werten. Füg auch ein Delay hinzu! **kleiner 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) )`} /> Für echten Dub fehlt noch der Bass: ~]") .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) )`} /> Füg `.hush()` ans Ende eines Patterns im stack... **pan = Panorama** **speed = Geschwindigkeit** ").room(.2)`} /> **fast and slow = schnell und langsam** Mit `fast` und `slow` kann man das Tempo eines Patterns außerhalb der Mini-Notation ändern: Ändere den `slow`-Wert. Ersetze `slow` durch `fast`. Was passiert, wenn du den Wert automatisierst? z.b. `.fast("<1 [2 4]>")` ? Übrigens, innerhalb der Mini-Notation: `fast` ist `*` und `slow` ist `/`. ")`} /> ## Automation mit Signalen Anstatt Werte schrittweise zu automatisieren, können wir auch sogenannte Signale benutzen: Die grundlegenden Wellenformen sind `sine`, `saw`, `square`, `tri` 🌊 Probiere auch die zufälligen Signale `rand` und `perlin`! Der `gain`-Wert (Verstärkung) wird in der Visualisierung als Transparenz dargestellt. **Bereich ändern mit `range`** Signale bewegen sich standardmäßig zwischen 0 und 1. Wir können das mit `range` ändern: `range` ist nützlich wenn wir Funktionen mit einem anderen Wertebereich als 0 und 1 automatisieren wollen (z.b. `lpf`) Was passiert wenn du die beiden Werte vertauschst? Wir können die Geschwindigkeit der Automation mit slow / fast ändern: /2") .sound("sawtooth") .lpf(sine.range(100, 2000).slow(8))`} /> Die ganze Automation braucht nun 8 cycle bis sie sich wiederholt. ## Rückblick | Name | Beispiel | | ----- | -------------------------------------------------------------------------------------------------- | | lpf | ")`} /> | | vowel | ")`} /> | | gain | | | delay | | | room | | | pan | | | speed | ")`} /> | | range | | Lass uns nun die für Tidal typischen [Pattern-Effekte anschauen](/de/workshop/pattern-effects).