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;
}
}