blob: 4fe5d7c31ca3b6d9e86ab8ba9d8077dfe10bd946 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
import Op, Const from require 'base'
class lfo extends Op
tau = math.pi * 2
new: (...) =>
super ...
@phase = 0
default_wave = Const 'str', 'sin'
setup: (@freq, @wave=default_wave) =>
update: (dt) =>
@phase += dt * @freq\get!
@value = switch @wave\get!
when 'sin' then .5 + .5 * math.cos @phase * tau
when 'saw' then @phase % 1
when 'tri' then math.abs (2*@phase % 2) - 1
else error "unknown wave type"
class tick extends Op
new: (...) =>
super ...
@phase = 0
setup: (@freq) =>
update: (dt) =>
@phase += dt / @freq\get!
@value = math.floor @phase
{
:lfo
:tick
}
|