75 lines
1.3 KiB
Markdown
75 lines
1.3 KiB
Markdown
# LFO & Ramps
|
|
|
|
Generate time-varying values synchronized to the beat for modulation.
|
|
|
|
## Ramp
|
|
|
|
The `ramp` word creates a sawtooth wave from 0 to 1:
|
|
|
|
```forth
|
|
0.25 1.0 ramp ( one cycle per 4 beats, linear )
|
|
1.0 2.0 ramp ( one cycle per beat, exponential curve )
|
|
```
|
|
|
|
Stack: `(freq curve -- val)`
|
|
|
|
## Shortcut Ramps
|
|
|
|
```forth
|
|
0.5 linramp ( linear ramp, curve=1 )
|
|
0.25 expramp ( exponential ramp, curve=3 )
|
|
2.0 logramp ( logarithmic ramp, curve=0.3 )
|
|
```
|
|
|
|
## Triangle Wave
|
|
|
|
```forth
|
|
0.5 tri ( triangle wave 0→1→0 )
|
|
```
|
|
|
|
## Perlin Noise
|
|
|
|
Smooth random modulation:
|
|
|
|
```forth
|
|
0.25 perlin ( smooth noise at 0.25x beat rate )
|
|
```
|
|
|
|
## Range Scaling
|
|
|
|
Scale a 0-1 value to any range:
|
|
|
|
```forth
|
|
0.5 200 800 range ( 0.5 becomes 500 )
|
|
```
|
|
|
|
## Examples
|
|
|
|
Modulate filter cutoff:
|
|
|
|
```forth
|
|
"saw" s
|
|
0.25 1.0 ramp 500 2000 range lpf
|
|
.
|
|
```
|
|
|
|
Random panning:
|
|
|
|
```forth
|
|
"hat" s
|
|
0.5 perlin -1 1 range pan
|
|
.
|
|
```
|
|
|
|
## Words
|
|
|
|
| Word | Stack | Description |
|
|
|------|-------|-------------|
|
|
| `ramp` | (freq curve -- val) | Ramp 0-1: fract(freq*beat)^curve |
|
|
| `linramp` | (freq -- val) | Linear ramp (curve=1) |
|
|
| `expramp` | (freq -- val) | Exponential ramp (curve=3) |
|
|
| `logramp` | (freq -- val) | Logarithmic ramp (curve=0.3) |
|
|
| `tri` | (freq -- val) | Triangle wave 0→1→0 |
|
|
| `perlin` | (freq -- val) | Perlin noise 0-1 |
|
|
| `range` | (val min max -- scaled) | Scale 0-1 to min-max |
|