simplify scheduler
This commit is contained in:
parent
b64ccb4522
commit
3c614e6e16
1 changed files with 4 additions and 9 deletions
|
|
@ -21,15 +21,10 @@ function useCycle(props: UseCycleProps) {
|
||||||
// pull events with onQuery + count up to next cycle
|
// pull events with onQuery + count up to next cycle
|
||||||
const query = (cycle = activeCycle()) => {
|
const query = (cycle = activeCycle()) => {
|
||||||
const timespan = new TimeSpan(cycle, cycle + 1);
|
const timespan = new TimeSpan(cycle, cycle + 1);
|
||||||
const _events = onQuery?.(timespan) || [];
|
const events = onQuery?.(timespan) || [];
|
||||||
onSchedule?.(_events, cycle);
|
onSchedule?.(events, cycle);
|
||||||
schedule(_events, cycle);
|
|
||||||
};
|
|
||||||
|
|
||||||
const schedule = (events: any[], cycle = activeCycle()) => {
|
|
||||||
// cancel events after current query. makes sure no old events are player for rescheduled cycles
|
// cancel events after current query. makes sure no old events are player for rescheduled cycles
|
||||||
// console.log('schedule', cycle);
|
// console.log('schedule', cycle);
|
||||||
const timespan = new TimeSpan(cycle, cycle + 1);
|
|
||||||
// query next cycle in the middle of the current
|
// query next cycle in the middle of the current
|
||||||
const cancelFrom = timespan.begin.valueOf();
|
const cancelFrom = timespan.begin.valueOf();
|
||||||
Tone.Transport.cancel(cancelFrom);
|
Tone.Transport.cancel(cancelFrom);
|
||||||
|
|
@ -53,7 +48,7 @@ function useCycle(props: UseCycleProps) {
|
||||||
Tone.Transport.schedule((time) => {
|
Tone.Transport.schedule((time) => {
|
||||||
const toneEvent = {
|
const toneEvent = {
|
||||||
time: event.part.begin.valueOf(),
|
time: event.part.begin.valueOf(),
|
||||||
duration: event.whole.end.valueOf() - event.whole.begin.valueOf(),
|
duration: event.whole.end.sub(event.whole.begin).valueOf(),
|
||||||
value: event.value,
|
value: event.value,
|
||||||
};
|
};
|
||||||
onEvent(time, toneEvent);
|
onEvent(time, toneEvent);
|
||||||
|
|
@ -77,7 +72,7 @@ function useCycle(props: UseCycleProps) {
|
||||||
Tone.Transport.pause();
|
Tone.Transport.pause();
|
||||||
};
|
};
|
||||||
const toggle = () => (started ? stop() : start());
|
const toggle = () => (started ? stop() : start());
|
||||||
return { start, stop, onEvent, started, toggle, schedule, query, activeCycle };
|
return { start, stop, onEvent, started, toggle, query, activeCycle };
|
||||||
}
|
}
|
||||||
|
|
||||||
export default useCycle;
|
export default useCycle;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue