19 lines
417 B
JavaScript
19 lines
417 B
JavaScript
export default function* sampler(wave) {
|
|
let t1, v0, v1;
|
|
[t1, v1] = wave[0]; // initial state
|
|
let t = 0;
|
|
for (let i = 1; i < wave.length; i++) {
|
|
v0 = v1;
|
|
[t1, v1] = wave[i]; // next change
|
|
while (true) {
|
|
if (t >= t1) {
|
|
break;
|
|
}
|
|
t = yield v0;
|
|
}
|
|
}
|
|
while (true) { // to the end of time
|
|
yield v1;
|
|
}
|
|
}
|