mirror of
https://github.com/eliasstepanik/strudel.git
synced 2026-01-11 21:58:37 +00:00
41 lines
1.6 KiB
Plaintext
41 lines
1.6 KiB
Plaintext
---
|
|
title: Sounds
|
|
layout: ../../layouts/MainLayout.astro
|
|
---
|
|
|
|
import { MiniRepl } from '../../docs/MiniRepl';
|
|
import { JsDoc } from '../../docs/JsDoc';
|
|
|
|
# Sounds
|
|
|
|
We can play sounds with `s`, in two different ways:
|
|
|
|
- `s` can trigger audio samples, where a sound file is loaded in the background and played back:
|
|
<MiniRepl client:idle tune={`s("bd hh sd hh")`} />
|
|
- `s` can trigger audio synthesisers, which are synthesised in real-time using code also running in the background:
|
|
<MiniRepl client:idle tune={`s("sawtooth square triangle sine")`} />
|
|
|
|
You can learn more about both of these approaches in the pages [Synths](/learn/synths) and [Samples](/learn/samples).
|
|
|
|
# Combining notes and sounds
|
|
|
|
In both of the above cases, we are no longer directly controlling the `note`/`freq` of the sound heard via `s`, as we were in the [Notes](/strudel/notes) page.
|
|
|
|
So how can we both control the sound and the pitch? We can _combine_ `note`/`freq` with `s` to change the sound of our pitches:
|
|
|
|
<MiniRepl client:idle tune={`note("a3 c#4 e4 a4").s("sawtooth")`} />
|
|
|
|
<MiniRepl client:idle tune={`note("57 61 64 69").s("sine")`} />
|
|
|
|
<MiniRepl client:idle tune={`freq("220 275 330 440").s("triangle")`} />
|
|
|
|
The last example will actually sound the same with or without `s`, because `triangle` is the default value for `s`.
|
|
|
|
What about combining different notes with different sounds at the same time?
|
|
|
|
<MiniRepl client:idle tune={`freq("220 275 330 440 550").s("triangle sawtooth sine")`} />
|
|
|
|
Hmm, something interesting is going on there, related to there being five notes and three sounds.
|
|
|
|
Let's now take a step back and think about the Strudel [Code](/learn/code) we've been hearing so far.
|