Fix: update docs about snd

This commit is contained in:
2026-03-06 08:40:41 +01:00
parent f273470eaf
commit d055d2bfc6
23 changed files with 228 additions and 200 deletions

View File

@@ -7,19 +7,19 @@ Every step has a duration. By default, sounds emit at the very start of that dur
`at` drains the entire stack and stores the values as timing offsets. Each value is a fraction of the step duration: 0 = start, 0.5 = halfway, 1.0 = next step boundary.
```forth
0.5 at kick s . ;; kick at the midpoint
0.5 at kick snd . ;; kick at the midpoint
```
Push multiple values before calling `at` to get multiple emits from a single `.`:
```forth
0 0.5 at kick s .
0 0.5 at kick snd .
```
Two kicks: one at start, one at midpoint.
```forth
0 0.25 0.5 0.75 at hat s .
0 0.25 0.5 0.75 at hat snd .
```
Four hats, evenly spaced.
@@ -28,10 +28,10 @@ The deltas persist across multiple `.` calls until `clear` or a new `at`:
```forth
0 0.5 at
kick s . ;; 2 kicks
hat s . ;; 2 hats (same timing)
kick snd . ;; 2 kicks
hat snd . ;; 2 hats (same timing)
clear
snare s . ;; 1 snare (deltas cleared)
snare snd . ;; 1 snare (deltas cleared)
```
## Cross-product: at Without arp
@@ -40,7 +40,7 @@ Without `arp`, deltas multiply with polyphonic voices. If you have 3 notes and 2
```forth
0 0.5 at
c4 e4 g4 note 1.5 decay sine s .
c4 e4 g4 note 1.5 decay sine snd .
```
6 emits: 3 notes x 2 deltas. A chord played twice per step.
@@ -51,7 +51,7 @@ c4 e4 g4 note 1.5 decay sine s .
```forth
0 0.33 0.66 at
c4 e4 g4 arp note 0.5 decay sine s .
c4 e4 g4 arp note 0.5 decay sine snd .
```
C4 at 0, E4 at 0.33, G4 at 0.66.
@@ -60,7 +60,7 @@ If the lists differ in length, the shorter one wraps around:
```forth
0 0.25 0.5 0.75 at
c4 e4 arp note 0.3 decay sine s .
c4 e4 arp note 0.3 decay sine snd .
```
C4, E4, C4, E4 — the shorter list wraps to fill 4 time points.
@@ -74,25 +74,25 @@ You rarely type deltas by hand. Use generators:
Evenly spaced via `.,`:
```forth
0 1 0.25 ., at hat s . ;; 0 0.25 0.5 0.75 1.0
0 1 0.25 ., at hat snd . ;; 0 0.25 0.5 0.75 1.0
```
Euclidean distribution via `euclid`:
```forth
3 8 euclid at hat s . ;; 3 hats at positions 0, 3, 5
3 8 euclid at hat snd . ;; 3 hats at positions 0, 3, 5
```
Random timing via `gen`:
```forth
( 0.0 1.0 rand ) 4 gen at hat s . ;; 4 hats at random positions
( 0.0 1.0 rand ) 4 gen at hat snd . ;; 4 hats at random positions
```
Geometric spacing via `geom..`:
```forth
0.0 2.0 4 geom.. at hat s . ;; exponentially spaced
0.0 2.0 4 geom.. at hat snd . ;; exponentially spaced
```
## Gating at
@@ -101,14 +101,14 @@ Wrap `at` expressions in quotations for conditional timing:
```forth
( 0 0.25 0.5 0.75 at ) 2 every
hat s .
hat snd .
```
16th-note hats every other bar.
```forth
( 0 0.5 at ) 0.5 chance
kick s .
kick snd .
```
50% chance of double-hit.