finish notes chapter
This commit is contained in:
parent
ed792fc0d4
commit
1ba5d2e1ca
4 changed files with 191 additions and 26 deletions
|
|
@ -190,6 +190,7 @@ Try adding more notes inside the brackets and notice how it does **not** get fas
|
|||
client:visible
|
||||
tune={`note("<[36 48]*4 [34 46]*4 [41 53]*4 [39 51]*4>/2")
|
||||
.sound("gm_acoustic_bass")`}
|
||||
punchcard
|
||||
/>
|
||||
|
||||
**Alternate between multiple things**
|
||||
|
|
@ -199,6 +200,7 @@ Try adding more notes inside the brackets and notice how it does **not** get fas
|
|||
client:visible
|
||||
tune={`note("60 <63 62 65 63>")
|
||||
.sound("gm_xylophone")`}
|
||||
punchcard
|
||||
/>
|
||||
|
||||
This is also useful for unpitched sounds:
|
||||
|
|
@ -208,6 +210,7 @@ This is also useful for unpitched sounds:
|
|||
client:visible
|
||||
tune={`sound("bd*2, ~ <sd cp>, [~ hh]*2")
|
||||
.bank("RolandTR909")`}
|
||||
punchcard
|
||||
/>
|
||||
|
||||
## Scales
|
||||
|
|
@ -219,6 +222,7 @@ Finding the right notes can be difficult.. Scales are here to help:
|
|||
client:visible
|
||||
tune={`n("0 2 4 <[6,8] [7,9]>")
|
||||
.scale("C:minor").sound("piano")`}
|
||||
punchcard
|
||||
/>
|
||||
|
||||
<Box>
|
||||
|
|
@ -243,23 +247,136 @@ Just like anything, we can automate the scale with a pattern:
|
|||
<MiniRepl
|
||||
hideHeader
|
||||
client:visible
|
||||
tune={`n("0, 2 4 <[6,8] [7,9]>")
|
||||
.scale("<C:major F:lydian>/2")
|
||||
tune={`n("<0 -3>, 2 4 <[6,8] [7,9]>")
|
||||
.scale("<C:major D:mixolydian>/4")
|
||||
.sound("piano")`}
|
||||
punchcard
|
||||
/>
|
||||
|
||||
<Box>
|
||||
|
||||
If you have no idea what these scale mean, don't worry.
|
||||
These are just labels for different sets of notes that go well together.
|
||||
|
||||
Take your time and you'll find scales you like!
|
||||
|
||||
</Box>
|
||||
|
||||
## Repeat & Elongate
|
||||
|
||||
**Elongate with @**
|
||||
|
||||
<MiniRepl hideHeader client:visible tune={`note("c@3 eb").sound("gm_acoustic_bass")`} punchcard />
|
||||
|
||||
<Box>
|
||||
|
||||
Not using `@` is like using `@1`. In the above example, c is 3 units long and eb is 1 unit long.
|
||||
|
||||
Try changing that number!
|
||||
|
||||
</Box>
|
||||
|
||||
**Elongate within sub-sequences**
|
||||
|
||||
<MiniRepl
|
||||
hideHeader
|
||||
client:visible
|
||||
tune={`n("<[4@2 4] [5@2 5] [6@2 6] [5@2 5]>*2")
|
||||
.scale("<C2:mixolydian F2:mixolydian>/4")
|
||||
.sound("gm_acoustic_bass")`}
|
||||
punchcard
|
||||
/>
|
||||
|
||||
<Box>
|
||||
|
||||
This groove is called a `shuffle`.
|
||||
Each beat has two notes, where the first is twice as long as the second.
|
||||
This is also sometimes called triplet swing. You'll often find it in blues and jazz.
|
||||
|
||||
</Box>
|
||||
|
||||
**Replicate**
|
||||
|
||||
<MiniRepl hideHeader client:visible tune={`note("c!2 [eb,<g a bb a>]").sound("piano")`} punchcard />
|
||||
|
||||
<Box>
|
||||
|
||||
Try switching between `!`, `*` and `@`
|
||||
|
||||
What's the difference?
|
||||
|
||||
</Box>
|
||||
|
||||
## Recap
|
||||
|
||||
Let's recap what we've learned in this chapter:
|
||||
|
||||
| Concept | Syntax | Example |
|
||||
| --------- | ------ | ------------------------------------------------------------------- |
|
||||
| Slow down | \/ | <MiniRepl hideHeader client:visible tune={`note("[c a f e]/2")`} /> |
|
||||
| Alternate | \<\> | <MiniRepl hideHeader client:visible tune={`note("c <e g>")`} /> |
|
||||
| Elongate | @ | <MiniRepl hideHeader client:visible tune={`note("c@3 e")`} /> |
|
||||
| Replicate | ! | <MiniRepl hideHeader client:visible tune={`note("c!3 e")`} /> |
|
||||
|
||||
## Examples
|
||||
|
||||
**Classy Bassline**
|
||||
|
||||
<MiniRepl
|
||||
hideHeader
|
||||
client:visible
|
||||
tune={`note("<[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>/2")
|
||||
.sound("gm_synth_bass_1")`}
|
||||
.sound("gm_synth_bass_1")
|
||||
.lpf(800) // <-- we'll learn about this soon`}
|
||||
/>
|
||||
|
||||
**Classy Melody**
|
||||
|
||||
<MiniRepl
|
||||
hideHeader
|
||||
client:visible
|
||||
tune={`note("[0 12]*2".add("<36 34 41 39>/2"))
|
||||
.sound("gm_synth_bass_1")`}
|
||||
tune={`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")`}
|
||||
/>
|
||||
|
||||
**Classy Drums**
|
||||
|
||||
<MiniRepl
|
||||
hideHeader
|
||||
client:visible
|
||||
tune={`sound("bd*2, ~ <sd cp>, [~ hh]*2")
|
||||
.bank("RolandTR909")`}
|
||||
/>
|
||||
|
||||
**If there just was a way to play all the above at the same time.......**
|
||||
|
||||
<Box>
|
||||
|
||||
It's called `stack` 😙
|
||||
|
||||
</Box>
|
||||
|
||||
<MiniRepl
|
||||
hideHeader
|
||||
client:visible
|
||||
tune={`stack(
|
||||
note("<[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>/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, ~ <sd cp>, [~ hh]*2")
|
||||
.bank("RolandTR909")
|
||||
)`}
|
||||
/>
|
||||
|
||||
This is starting to sound like actual music! We have sounds, we have notes, now the last piece of the puzzle is missing: [effects](/workshop/first-effects)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue