--- title: Erste Töne layout: ../../../layouts/MainLayout.astro --- import { MiniRepl } from '@src/docs/MiniRepl'; import { midi2note } from '@strudel/core/'; import Box from '@components/Box.astro'; import QA from '@components/QA'; # Erste Töne Jetzt schauen wir uns an wie man mit Tönen mit der `note` Funktion spielt. ## Zahlen und Noten **Töne mit Zahlen** [midi2note(i + 36), i + 36]), )} /> Probiere verschiedene Zahlen aus! Versuch auch mal Kommazahlen, z.B. 55.5 (beachte die englische Schreibweise von Kommazahlen mit "." anstatt ",") **Töne mit Buchstaben** [n, n.split('')[0]]))} /> Versuch verschiedene Buchstaben aus (a - g). Findest du Melodien die auch gleichzeitig ein Wort sind? Tipp: ☕ 🙈 🧚 **Vorzeichen** [n, n.split('').slice(0, 2).join('')]), )} /> [n, n.split('').slice(0, 2).join('')]), )} /> **Andere Oktaven** [n, n]))} claviatureLabels={Object.fromEntries( Array(49) .fill() .map((_, i) => [midi2note(i + 36), midi2note(i + 36)]), )} /> Probiere verschiedene Oktaven aus (1-8) Normalerweise kommen Leute die keine Noten besser mit Zahlen anstatt mit Buchstaben zurecht. Daher benutzen die folgenden Beispiele meistens Zahlen. Später sehen wir auch noch ein paar Tricks die es uns erleichtern Töne zu spielen die zueinander passen. ## Den Sound verändern Genau wie bei geräuschhaften Sounds können wir den Klang unserer Töne mit `sound` verändern: Probier ein paar sounds aus: - gm_electric_guitar_muted - E-Gitarre - gm_acoustic_bass - Kontrabass - gm_voice_oohs - Chords - gm_blown_bottle - Flasche - sawtooth - Sägezahn-Welle - square - Rechteck-Welle - triangle - Dreieck-Welle - Was ist mit bd, sd oder hh? - Entferne `.sound('...')` komplett **Zwischen Sounds hin und her wechseln** **Gleichzeitige Sounds** Die patterns in `note` und `sound` werden kombiniert! Wir schauen uns später noch mehr Möglichkeiten an wie man patterns kombiniert. ## Längere Sequenzen **Sequenzen verlangsamen mit `/`** Das `/4` spielt die Sequenz 4 mal so langsam, also insgesamt 4 cycles = 8s. Jede Note ist nun also 2s lang. Schreib noch mehr Töne in die Klammern und achte darauf dass es schneller wird. Wenn eine Sequenz unabhängig von ihrem Inhalt immer gleich schnell bleiben soll, gibt es noch eine andere Art Klammern: **Eins pro Cycle per \< \>** Im letzten Kapitel haben wir schon gelernt dass `< ... >` (angle brackets) nur ein Element pro Cycle spielt. Das ist für Melodien auch sehr nützlich: ").sound("gm_acoustic_bass")`} punchcard /> Füg noch mehr Töne hinzu und achte darauf wie das Tempo gleich bleibt! Tatsächlich sind diese Klammern nur eine Abkürzung: `` = `[a b c]/3` `` = `[a b c d]/4` usw.. **Eine Sequenz pro Cycle** ") .sound("gm_acoustic_bass")`} punchcard /> oder auch... /2") .sound("gm_acoustic_bass")`} punchcard /> **Alternativen** Ähnlich wie Unter-Sequenzen, kann auch `<...>` innerhalb einer Sequenz verwendet werden: ") .sound("gm_xylophone")`} punchcard /> Das ist auch praktisch für atonale Sounds: , [~ hh]*2") .bank("RolandTR909")`} punchcard /> ## Skalen Es kann mühsam sein die richtigen Noten zu finden wenn man alle zur Verfügung hat. Mit Skalen ist das einfacher: ") .scale("C:minor").sound("piano")`} punchcard /> Probier verschiedene Zahlen aus. Jede klingt gut! Probier verschiedene Skalen: - C:major - A2:minor - D:dorian - G:mixolydian - A2:minor:pentatonic - F:major:pentatonic **Automatisierte Skalen** Wie alle Funktionen können auch Skalen mit einem Pattern automatisiert werden: , 2 4 <[6,8] [7,9]>") .scale("/4") .sound("piano")`} punchcard /> Wenn du keine Ahnung hast was die Skalen bedeuten, keine Sorge. Es sind einfach nur Namen für verschiedene Gruppen von Tönen die gut zusammenpassen. Nimm dir Zeit um herauszufinden welche Skalen du magst. ## Wiederholen und Verlängern **Verlängern mit @** Ein Element ohne `@` ist gleichbedeutend mit `@1`. Im Beispiel ist `c` drei Einheiten lang, `eb` nur eine. Spiel mit der Länge! **Unter-Sequenzen verlängern** *2") .scale("/4") .sound("gm_acoustic_bass")`} punchcard /> Dieser Groove wird auch `shuffle` genannt. Jeder Schlag enthält 2 Töne, wobei der erste doppelt so lang wie der zweite ist. Das nennt man auch manchmal `triolen swing`. Es ist ein typischer Rhythmus im Blues und Jazz. **Wiederholen** ]").sound("piano")`} punchcard /> Wechsel zwischen `!`, `*` und `@` hin und her. Was ist der Unterschied? ## Rückblick Das haben wir in diesem Kapitel gelernt: | Concept | Syntax | Example | | ------------ | ------ | -------------------------------------------------------- | | Verlangsamen | \/ | | | Alternativen | \<\> | ")`} /> | | Verlängern | @ | | | Wiederholen | ! | | Neue Funktionen: | Name | Description | Example | | ----- | --------------------------------------- | --------------------------------------------------------------------------------- | | note | Tonhöhe als Buchstabe oder Zahl | | | scale | Interpretiert `n` als Skalenstufe | | | stack | Spiele mehrere Patterns parallel (s.u.) | | ## Beispiele **Bassline** /2") .sound("gm_synth_bass_1") .lpf(800) // <-- we'll learn about this soon`} /> **Melodie** *2\`).scale("C4:minor") .sound("gm_synth_strings_1")`} /> **Drums** , [~ hh]*2") .bank("RolandTR909")`} /> **Wenn es doch nur einen Weg gäbe das alles gleichzeitig zu spielen.......** Das geht mit `stack` 😙 /2") .sound("gm_synth_bass_1").lpf(800), n(\`< [~ 0] 2 [0 2] [~ 2] [~ 0] 1 [0 1] [~ 1] [~ 0] 3 [0 3] [~ 3] [~ 0] 2 [0 2] [~ 2] >*2\`).scale("C4:minor") .sound("gm_synth_strings_1"), sound("bd*2, ~ , [~ hh]*2") .bank("RolandTR909") )`} /> Das hört sich doch langsam nach echter Musik an! Wir haben Sounds, wir haben Töne.. noch ein Puzzleteil fehlt: [Effekte](/de/workshop/first-effects)