Erste Sounds

Dies ist das erste Kapitel im Strudel Workshop, schön dich an Bord zu haben!

Textfelder

Der Workshop ist voller interaktiver Textfelder. Lass uns lernen wie sie funktionieren. Hier ist eins:

sound("casio")
  1. ⬆️ Klicke in das obige Textfeld ⬆️
  2. Drücke Strg+Enter zum Abspielen
  3. Ändere casio in metal
  4. Drücke Strg+Enter zum Aktualisieren
  5. Drücke Strg+Punkt zum Stoppen

Mac: Strg = control oder auch option

Glückwunsch, du kannst jetzt live coden!

Sounds

Gerade haben wir schon den ersten sound mit sound abgespielt:

sound("casio")

casio ist einer von vielen Standard Sounds.

Probier ein paar andere Sounds aus:

insect wind jazz metal east crow casio space numbers

Es kann sein, dass du kurz nichts hörst während ein neuer Sound lädt.

Sample Nummer ändern mit :

Ein Sound kann mehrere Samples (Audio Dateien) enthalten.

Du kannst ein anderes Sample wählen, indem du : und eine Zahl an den Sound-Namen anhängst:

sound("casio:1")

Probiere verschiedene Sound / Zahlen Kombinationen.

Ohne Zahl ist gleichbedeutend mit :0

Jetzt weißt du wie man Sounds abspielt und ihre Sample Nummer einstellt. Vorerst bleiben wir bei den voreingestellten Sounds, später erfahren wir noch wie man eigene benutzt.

Drum Sounds

Strudel kommt von Haus aus mit einer breiten Auswahl an Drum Sounds:

sound("bd hh sd oh")

Diese Kombinationen von Buchstaben stehen für verschiedene Teile eines Schlagzeugs:

original von Pbroks13

  • bd = bass drum - Basstrommel
  • sd = snare drum - Schnarrtrommel
  • rim = rimshot - Rahmenschlag
  • hh = hihat - Hallo Hut
  • oh = open hihat - Offener Hallo Hut
  • lt = low tom
  • mt = middle tom
  • ht = high tom
  • rd = ride cymbal
  • rd = crash cymbal

Probier verschiedene Sounds aus!

Wir können den Charakter des Drum Sounds verändern, indem wir mit bank die Drum Machine auswählen:

sound("bd hh sd oh").bank("RolandTR909")

In diesem Beispiel ist RolandTR909 der Name der Drum Machine, die eine prägende Rolle für House und Techno Musik spielte.

Ändere RolandTR909 in

  • AkaiLinn
  • RhythmAce
  • RolandTR808
  • RolandTR707
  • ViscoSpaceDrum

Es gibt noch viel mehr, aber das sollte fürs Erste reichen..

🦥 Tipp für faule: Mach Doppel-Klick auf einen Namen um ihn zu markieren. Dann kannst du ihn mit Strg+C kopieren und mit Strg+V einfügen.

Sequenzen / Sequences

Im letzten Beispiel haben wir schon gesehen dass man mehrere Sounds hintereinander abspielen kann wenn man sie durch Leerzeichen trennt:

sound("bd hh sd hh")

Beachte wie der aktuell gespielte Sound im Code markiert und auch darunter visualisiert wird.

Versuch noch mehr Sounds hinzuzfügen!

Je länger die Sequence, desto schneller

sound("bd bd hh bd rim bd hh bd")

Der Inhalt einer Sequence wird in einen sogenannten Cycle (=Zyklus) zusammengequetscht. Ein Cycle ist standardmäßig 2 Sekunden lang.

Eins pro Cycle mit < .. >

Hier ist die gleiche Sequence, aber dieses mal umgeben von < .. > (angle brackets):

sound("<bd bd hh bd rim bd hh bd>")

Jetzt spielt nur ein Sound pro Cycle. Mit diesen Klammern bleibt das Tempo immer gleich, ganz egal wieviele Elemente enhalten sind!

Das ist jetzt aber etwas langsam, machen wir es schneller mit *:

sound("<bd bd hh bd rim bd hh bd>*8")

Die *8 macht die ganze Sequenz 8 mal so schnell.

Warte mal, ist das jetzt nicht das gleiche Ergebnis wie ohne < ... >*8? Wofür ist das dann gut?

Korrekt, der echte Vorteil dieser Schreibweise zeigt sich wenn du Elemente entfernst oder hinzufügst. Versuch es mal!

Ändere auch mal die Zahl am Ende um das Tempo zu verändern.

Tempo ändern mit cpm

sound("<bd hh rim hh>*8").cpm(90/4)

cpm = cycles per minute = Cycles pro Minute

Das Tempo is standardmäßig is 30 Cycles pro Minute = 120/4 = 1 Cycle alle 2 Sekunden

In taditioneller Musik-Terminologie könnte man sagen, das Pattern oben besteht aus 8tel Noten auf 90bpm im 4/4 Takt.

Kein Sorge wenn dir diese Begriffe nichts sagen, das ist nicht notwendig um mit Strudel Musik zu machen.

Wir werden später noch mehr Möglichkeiten kennen lernen das Tempo zu verändern.

Pausen mit ’-’ oder ’~‘

sound("bd hh - rim")

Du siehst wahrscheinlich auch Patterns von anderen Leuten mit ’~’ als Pausensymbol. Besonders für deutsche Tastaturen ist - eine Alternative zum schwer tippbaren ~.

Unter-Sequenzen mit [Klammern]

sound("bd [hh hh] rim [hh hh]")

Der Inhalt der Klammer wird ebenfalls zusammengequetscht!

Füge noch mehr Sounds in die Klammern ein!

Genau wie bei der ganzen Sequence wird eine Unter-Sequence schneller je mehr drin ist.

Multiplikation: Dinge schneller machen

sound("bd hh*2 sd hh*3")

Multiplikation: Vieeeeeeel schneller

sound("bd hh*16 sd hh*8")

Tonhöhe = sehr schneller Rhythmus

Multiplikation: Ganze Unter-Sequences schneller machen

sound("bd [sd hh]*2")

Bolero:

sound("sd sd*3 sd sd*3 sd sd sd sd*3 sd sd*3 sd*3 sd*3")
.cpm(10)

Unter-Unter-Sequenzen mit [[Klammern]]

sound("bd [[rim rim] hh]")

Du kannst so tief verschachteln wie du willst!

Parallele Sequenzen mit Komma

sound("hh hh hh, bd casio")

Du kannst so viele Kommas benutzen wie du möchtest:

sound("hh hh hh, bd bd, - casio")

Kommas können auch in Unter-Sequenzen verwendet werden:

sound("hh hh hh, bd [bd,casio]")

Ist dir aufgefallen dass sich die letzten beiden Beispiele gleich anhören?

Es kommt öfter vor, dass man die gleiche Idee auf verschiedene Arten ausdrücken kann.

Mehrere Zeilen schreiben mit ` (backtick)

sound(`bd*2, - cp, 
- - - oh, hh*4,
[- casio]*2`)

Ob man ” oder ` benutzt ist nur eine Frage der Übersichtlichkeit.

Sample Nummer separat auswählen

Benutzt man nur einen Sound mit unterschiedlichen Sample Nummer sieht das so aus:

sound("jazz:0 jazz:1 [jazz:4 jazz:2] jazz:3*2")

Das gleiche kann man auch so schreiben:

n("0 1 [4 2] 3*2").sound("jazz")

Rückblick

Wir haben jetzt die Grundlagen der sogenannten Mini-Notation gelernt, der Rhythmus-Sprache von Tidal.

Das haben wir bisher gelernt:

ConceptSyntaxExample
SequenzLeerzeichen
sound("bd bd sd hh")
Sound Nummer:x
sound("hh:0 hh:1 hh:2 hh:3")
Pausen-
sound("metal - jazz jazz:1")
Unter-Sequenzen[]
sound("bd wind [metal jazz] hh")
Unter-Unter-Sequenzen[[]]
sound("bd [metal [jazz sd]]")
Schneller*
sound("bd sd*2 cp*3")
Parallel,
sound("bd*2, hh*2 [hh oh]")

Die mit Apostrophen umgebene Mini-Notation benutzt man normalerweise in einer sogenannten Funktion. Die folgenden Funktionen haben wir bereits gesehen:

NameDescriptionExample
soundSpielt den Sound mit dem Namen
sound("bd sd")
bankWählt die Soundbank / Drum Machine
sound("bd sd").bank("RolandTR909")
cpmTempo in Cycles pro Minute
sound("bd sd").cpm(90)
nSample Nummer
n("0 1 4 2").sound("jazz")

Beispiele

Einfacher Rock Beat

sound("bd sd, hh*4").bank("RolandTR505").cpm(100/2)

Klassischer House

sound("bd*2, - cp, [- hh]*2").bank("RolandTR909")

Ist die aufgefallen dass die letzten 2 Patterns extrem ähnlich sind? Bestimmte Drum Patterns werden oft genreübergreifend wiederverwendet.

We Will Rock you

sound("bd*2 cp").bank("RolandTR707").cpm(81/2)

Yellow Magic Orchestra - Firecracker

sound("bd sd, - - - hh - hh - -, - perc - perc:1*2")
.bank("RolandCompurhythm1000")

Nachahmung eines 16 step sequencers

sound(`
[-  -  oh - ] [-  -  -  - ] [-  -  -  - ] [-  -  -  - ],
[hh hh -  - ] [hh -  hh - ] [hh -  hh - ] [hh -  hh - ],
[-  -  -  - ] [cp -  -  - ] [-  -  -  - ] [cp -  -  - ],
[bd -  -  - ] [-  -  -  bd] [-  -  bd - ] [-  -  -  bd]
`).cpm(90/4)

Noch eins

sound(`
[-  -  -  - ] [-  -  -  - ] [-  -  -  - ] [-  -  oh:1 - ],
[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh -  - ],
[-  -  -  - ] [cp -  -  - ] [-  -  -  - ] [-  cp -  - ],
[bd bd -  - ] [-  -  bd - ] [bd bd - bd ] [-  -  -  - ]
`).bank("RolandTR808").cpm(88/4)

Nicht so typische Drums

s(`jazz*2, 
insect [crow metal] - -, 
- space:4 - space:1,
- wind`)
.cpm(100/2)

Jetzt haben wir eine grundlegende Ahnung davon wie man mit Strudel Beats baut! Im nächsten Kapitel werden wir ein paar Töne spielen.