translate rest of workshop to german
This commit is contained in:
parent
a88759ba94
commit
06950a6bd8
11 changed files with 277 additions and 179 deletions
|
|
@ -176,6 +176,16 @@ What happens if you use `.delay(".8:.06:.8")` ? Can you guess what the third num
|
|||
|
||||
</Box>
|
||||
|
||||
<QA q="Lösung anzeigen" client:visible>
|
||||
|
||||
`delay("a:b:c")`:
|
||||
|
||||
- a: delay volume
|
||||
- b: delay time
|
||||
- c: feedback (smaller number = quicker fade)
|
||||
|
||||
</QA>
|
||||
|
||||
**room aka reverb**
|
||||
|
||||
<MiniRepl
|
||||
|
|
@ -261,7 +271,7 @@ What happens if you use a pattern like `.fast("<1 [2 4]>")`?
|
|||
|
||||
</Box>
|
||||
|
||||
By the way, inside Mini-Notation, `fast` is `*` and slow is `/`.
|
||||
By the way, inside Mini-Notation, `fast` is `*` and `slow` is `/`.
|
||||
|
||||
<MiniRepl hideHeader client:visible tune={`sound("[bd*2,~ rim]*<1 [2 4]>")`} />
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import QA from '@components/QA';
|
|||
|
||||
Let's start by making some noise:
|
||||
|
||||
<MiniRepl hideHeader client:visible tune={`sound("house")`} />
|
||||
<MiniRepl hideHeader client:visible tune={`sound("house")`} dirt />
|
||||
|
||||
<Box>
|
||||
|
||||
|
|
@ -61,7 +61,7 @@ These letter combinations stand for different parts of a drum set:
|
|||
|
||||
- `bd` = **b**ass **d**rum
|
||||
- `sd` = **s**nare **d**rum
|
||||
- `sn` = **sn**are
|
||||
- `sd` = **sd**are
|
||||
- `rim` = **rim**shot
|
||||
- `hh` = **h**i**h**at
|
||||
- `oh` = **o**pen **h**ihat
|
||||
|
|
@ -103,13 +103,13 @@ Try adding more sounds to the sequence!
|
|||
|
||||
**The longer the sequence, the faster it runs**
|
||||
|
||||
<MiniRepl hideHeader client:visible tune={`sound("bd bd hh bd sn bd hh bd")`} punchcard />
|
||||
<MiniRepl hideHeader client:visible tune={`sound("bd bd hh bd sd bd hh bd")`} punchcard />
|
||||
|
||||
The content of a sequence will be squished into what's called a cycle.
|
||||
|
||||
**One way to change the tempo is using `cpm`**
|
||||
|
||||
<MiniRepl hideHeader client:visible tune={`sound("bd bd hh bd sn bd hh bd").cpm(40)`} punchcard />
|
||||
<MiniRepl hideHeader client:visible tune={`sound("bd bd hh bd sd bd hh bd").cpm(40)`} punchcard />
|
||||
|
||||
<Box>
|
||||
|
||||
|
|
@ -127,7 +127,7 @@ We will look at other ways to change the tempo later!
|
|||
|
||||
**Sub-Sequences with [brackets]**
|
||||
|
||||
<MiniRepl hideHeader client:visible tune={`sound("bd [hh hh] sn [hh bd]")`} punchcard />
|
||||
<MiniRepl hideHeader client:visible tune={`sound("bd [hh hh] sd [hh bd]")`} punchcard />
|
||||
|
||||
<Box>
|
||||
|
||||
|
|
@ -139,15 +139,15 @@ Similar to the whole sequence, the content of a sub-sequence will be squished to
|
|||
|
||||
**Multiplication: Speed things up**
|
||||
|
||||
<MiniRepl hideHeader client:visible tune={`sound("bd hh*2 sn hh*3")`} punchcard />
|
||||
<MiniRepl hideHeader client:visible tune={`sound("bd hh*2 sd hh*3")`} punchcard />
|
||||
|
||||
**Multiplication: Speed up sequences**
|
||||
|
||||
<MiniRepl hideHeader client:visible tune={`sound("bd [hh sn]*2")`} punchcard />
|
||||
<MiniRepl hideHeader client:visible tune={`sound("bd [hh sd]*2")`} punchcard />
|
||||
|
||||
**Multiplication: Speeeeeeeeed things up**
|
||||
|
||||
<MiniRepl hideHeader client:visible tune={`sound("bd hh*16 sn hh*8")`} punchcard />
|
||||
<MiniRepl hideHeader client:visible tune={`sound("bd hh*16 sd hh*8")`} punchcard />
|
||||
|
||||
<Box>
|
||||
|
||||
|
|
@ -157,7 +157,7 @@ Pitch = really fast rhythm
|
|||
|
||||
**Sub-Sub-Sequences with [[brackets]]**
|
||||
|
||||
<MiniRepl hideHeader client:visible tune={`sound("bd [[sn sn] hh]")`} punchcard />
|
||||
<MiniRepl hideHeader client:visible tune={`sound("bd [[sd sd] hh]")`} punchcard />
|
||||
|
||||
<Box>
|
||||
|
||||
|
|
@ -214,12 +214,12 @@ This is what we've leared so far:
|
|||
|
||||
| Concept | Syntax | Example |
|
||||
| ----------------- | -------- | -------------------------------------------------------------------------------- |
|
||||
| Sequence | space | <MiniRepl hideHeader client:visible tune={`sound("bd bd sn hh")`} /> |
|
||||
| Sequence | space | <MiniRepl hideHeader client:visible tune={`sound("bd bd sd hh")`} /> |
|
||||
| Sample Number | :x | <MiniRepl hideHeader client:visible tune={`sound("hh:0 hh:1 hh:2 hh:3")`} /> |
|
||||
| Rests | ~ | <MiniRepl hideHeader client:visible tune={`sound("metal ~ jazz jazz:1")`} /> |
|
||||
| Sub-Sequences | \[\] | <MiniRepl hideHeader client:visible tune={`sound("bd wind [metal jazz] hh")`} /> |
|
||||
| Sub-Sub-Sequences | \[\[\]\] | <MiniRepl hideHeader client:visible tune={`sound("bd [metal [jazz sn]]")`} /> |
|
||||
| Speed up | \* | <MiniRepl hideHeader client:visible tune={`sound("bd sn*2 cp*3")`} /> |
|
||||
| Sub-Sub-Sequences | \[\[\]\] | <MiniRepl hideHeader client:visible tune={`sound("bd [metal [jazz sd]]")`} /> |
|
||||
| Speed up | \* | <MiniRepl hideHeader client:visible tune={`sound("bd sd*2 cp*3")`} /> |
|
||||
| Parallel | , | <MiniRepl hideHeader client:visible tune={`sound("bd*2, hh*2 [hh oh]")`} /> |
|
||||
|
||||
The Mini-Notation is usually used inside some function. These are the functions we've seen so far:
|
||||
|
|
|
|||
|
|
@ -3,20 +3,59 @@ title: Introduction
|
|||
layout: ../../layouts/MainLayout.astro
|
||||
---
|
||||
|
||||
# Introduction
|
||||
import { MiniRepl } from '../../docs/MiniRepl';
|
||||
|
||||
## goals
|
||||
# Welcome
|
||||
|
||||
- be beginner friendly
|
||||
- teach a representative subset of strudel / tidal
|
||||
- introduce one new thing at a time
|
||||
- give practical / musical examples
|
||||
- encourage self-experimentation
|
||||
- hands on learning > walls of text
|
||||
- maintain flow state
|
||||
- no setup required
|
||||
Welcome to the Strudel documentation pages!
|
||||
You've come to the right place if you want to learn how to make music with code.
|
||||
|
||||
## inspired by
|
||||
## What is Strudel?
|
||||
|
||||
- https://github.com/tidalcycles/tidal-workshop/blob/master/workshop.tidal
|
||||
- https://learningmusic.ableton.com
|
||||
With Strudel, you can expressively write dynamic music pieces.<br/>
|
||||
It is an official port of the [Tidal Cycles](https://tidalcycles.org/) pattern language to JavaScript.
|
||||
You don't need to know JavaScript or Tidal Cycles to make music with Strudel.
|
||||
This interactive tutorial will guide you through the basics of Strudel.<br/>
|
||||
The best place to actually make music with Strudel is the [Strudel REPL](https://strudel.tidalcycles.org/)
|
||||
|
||||
## What can you do with Strudel?
|
||||
|
||||
- live code music: make music with code in real time
|
||||
- algorithmic composition: compose music using tidal's unique approach to pattern manipulation
|
||||
- teaching: focussing on a low barrier of entry, Strudel is a good fit for teaching music and code at the same time.
|
||||
- integrate into your existing music setup: either via MIDI or OSC, you can use Strudel as a really flexible sequencer
|
||||
|
||||
## Example
|
||||
|
||||
Here is an example of how strudel can sound:
|
||||
|
||||
<MiniRepl
|
||||
client:idle
|
||||
tune={`stack(
|
||||
// drums
|
||||
s("bd,[~ <sd!3 sd(3,4,2)>],hh*8")
|
||||
.speed(perlin.range(.8,.9)), // random sample speed variation
|
||||
// bassline
|
||||
"<a1 b1\*2 a1(3,8) e2>"
|
||||
.off(1/8,x=>x.add(12).degradeBy(.5)) // random octave jumps
|
||||
.add(perlin.range(0,.5)) // random pitch variation
|
||||
.superimpose(add(.05)) // add second, slightly detuned voice
|
||||
.note() // wrap in "note"
|
||||
.decay(.15).sustain(0) // make each note of equal length
|
||||
.s('sawtooth') // waveform
|
||||
.gain(.4) // turn down
|
||||
.cutoff(sine.slow(7).range(300,5000)), // automate cutoff
|
||||
// chords
|
||||
"<Am7!3 <Em7 E7b13 Em7 Ebm7b5>>".voicings('lefthand')
|
||||
.superimpose(x=>x.add(.04)) // add second, slightly detuned voice
|
||||
.add(perlin.range(0,.5)) // random pitch variation
|
||||
.note() // wrap in "note"
|
||||
.s('sawtooth') // waveform
|
||||
.gain(.16) // turn down
|
||||
.cutoff(500) // fixed cutoff
|
||||
.attack(1) // slowly fade in
|
||||
)
|
||||
.slow(3/2)`}
|
||||
/>
|
||||
|
||||
To hear more, go to the [Strudel REPL](https://strudel.tidalcycles.org/) and press shuffle to hear a random example pattern.
|
||||
|
|
|
|||
|
|
@ -35,11 +35,11 @@ This page is just a listing of all functions covered in the workshop!
|
|||
|
||||
## Notes
|
||||
|
||||
| Name | Description | Example |
|
||||
| --------- | ----------------------------------- | -------------------------------------------------------------------------------------------- |
|
||||
| note | set pitch as number or letter | <MiniRepl hideHeader client:visible tune={`note("b g e c").sound("piano")`} /> |
|
||||
| n + scale | set note in scale | <MiniRepl hideHeader client:visible tune={`n("6 4 2 0").scale("C:minor").sound("piano")`} /> |
|
||||
| stack | play patterns in parallel (read on) | <MiniRepl hideHeader client:visible tune={`stack(s("bd sd"),note("c eb g"))`} /> |
|
||||
| Name | Description | Example |
|
||||
| --------- | ----------------------------- | -------------------------------------------------------------------------------------------- |
|
||||
| note | set pitch as number or letter | <MiniRepl hideHeader client:visible tune={`note("b g e c").sound("piano")`} /> |
|
||||
| n + scale | set note in scale | <MiniRepl hideHeader client:visible tune={`n("6 4 2 0").scale("C:minor").sound("piano")`} /> |
|
||||
| stack | play patterns in parallel | <MiniRepl hideHeader client:visible tune={`stack(s("bd sd"),note("c eb g"))`} /> |
|
||||
|
||||
## Audio Effects
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue