# Cheatsheet für Strudel.cc
## 1. Grundlegende Syntax und Muster
| Zeichen | Funktion | Beispiel | Beschreibung |
|:---:|---|---|---|
| `< >` | Sequenz | `` | Spielt `a`, dann `b`, dann `c` |
| `[ ]` | Stack | `[bd hh]` | Spielt `bd` und `hh` gleichzeitig |
| `/` | Division | `bd/2` | Spielt `bd` mit halber Geschwindigkeit (halbe Frequenz) |
| `*` | Multiplikation | `sd*4` | Spielt `sd` viermal so schnell |
| `!` | Zufällige Auswahl | `sd!3` | Wählt 3 Ereignisse aus dem Pattern zufällig aus |
| `~` | Pause / Stille | `` | Spielt `a`, dann Pause, dann `b` |
| `&` | Parallel | `a&b` | Spielt a und b gleichzeitig (wie Stack, aber flexibler) |
| `,` | Zufällige Wahl | `` | Wählt zufällig eins von `a`, `b` oder `c` |
| `@` | Zeit-Offset | `bd@2` | Verschiebt das Pattern um 2 Einheiten nach vorn |
| `s()` | Sample abspielen | `s("bd")` | Spielt das Bassdrum-Sample |
| `n()` | Noten abspielen | `n("c4")` | Spielt die Note C4 |
---
## 2. Samples und Instrumente
Strudel hat eine Reihe von integrierten Samples und kann auch externe Pakete laden.
| Shortcut | Sample | Beschreibung |
|:---:|:---|:---|
| `bd` | `kick` | Bassdrum |
| `sd` | `snare` | Snare-Drum |
| `cp` | `clap` | Händeklatschen |
| `hh` | `hi-hat` | Hi-Hat (geschlossen) |
| `oh` | `open hi-hat` | Hi-Hat (offen) |
| `cr` | `crash cymbal` | Crash-Becken |
| `ride` | `ride cymbal` | Ride-Becken |
| `lt` | `low tom` | Low Tom |
| `mt` | `mid tom` | Mid Tom |
| `ht` | `high tom` | High Tom |
**Allgemeine Instrumente:**
* `s("synth")`: Ein klassischer analoger Synthesizer.
* `s("fm")`: Ein FM-Synthesizer.
* `s("superfm")`: Ein FM-Synthesizer mit SuperSaw-ähnlicher Oszillator.
* `s("string")`: Eine Streicher-ähnliche Klangerzeugung.
* `s("am")`: Ein AM-Synthesizer.
* `s("sine")`: Ein einfacher Sinuswellen-Oszillator.
**General MIDI (GM) Sounds:**
* `s("gm_acoustic_grand_piano")`: Akustisches Klavier
* `s("gm_acoustic_guitar_steel")`: Akustische Stahlgitarre
* `s("gm_electric_bass_finger")`: E-Bass
* `s("gm_violin")`: Violine
* ... und viele mehr, erreichbar über `gm_[instrumentname]`.
---
## 3. Effekte und Parameter-Modifikatoren
Effekte werden mit der Punkt-Syntax an ein Pattern angehängt.
| Funktion | Parameter | Beispiel | Beschreibung |
|:---|:---|:---|:---|
| `gain()` | `0.0` - `1.0` | `.gain(0.5)` | Stellt die Lautstärke ein |
| `room()` | `0.0` - `1.0` | `.room(.7)` | Fügt Hall hinzu |
| `delay()` | Zeit in Zyklen | `.delay(.25)` | Fügt ein Echo hinzu |
| `pan()` | `-1.0` - `1.0` | `.pan(-1)` | Position im Stereo-Panorama |
| `lpf()` | Frequenz (Hz) | `.lpf(1000)` | Tiefpassfilter |
| `hpf()` | Frequenz (Hz) | `.hpf(8000)` | Hochpassfilter |
| `shape()` | `0.0` - `1.0` | `.shape(.3)` | Verzerrungs-Effekt |
| `crush()` | `1` - `16` | `.crush(8)` | Bit-Crusher |
| `phaser()`| Frequenz | `.phaser(4)` | Phaser-Effekt |
| `speed()` | Wert | `.speed(.5)` | Ändert die Abspielgeschwindigkeit von Samples |
| `note()` | Skala | `.note().scale("c:minor")` | Spielt die Noten als Melodie aus der Skala |
| `chord()`| Akkordname | `.chord("Cmaj7")` | Spielt einen Akkord |
---
## 4. Zeit, Skalen und Generative Funktionen
| Funktion | Beispiel | Beschreibung |
|:---|:---|:---|
| `setcps()`| `setcps(0.75)` | Setzt die Geschwindigkeit in **Cycles per Second** (Zyklen pro Sekunde) |
| `setbpm()`| `setbpm(120)` | Setzt die Geschwindigkeit in **Beats per Minute** (Schläge pro Minute) |
| `rand()` | `rand.range(0,1)` | Erzeugt eine zufällige Zahl |
| `perlin()`| `perlin.range(.6, .9)` | Erzeugt sanft fließende Zufallswerte (Perlin-Noise) |
| `sine()` | `sine.range(1, 10)` | Erzeugt eine Sinuswelle |
| `scale()`| `scale("c:minor")` | Wandelt Noten in eine bestimmte Tonleiter um |
| `pick()` | `pick([a,b,c])` | Wählt ein Pattern aus einer Liste aus |
| `pickRestart()`| `pickRestart([a,b])` | Wählt ein Pattern und startet von vorn, wenn es beendet ist |