import { AnyEvent } from "midifile-ts" import { DistributiveOmit } from "../types" import { AnySignalEvent } from "./signalEvents" export interface TickProvider { tick: number } export interface DeltaTimeProvider { deltaTime: number } export type TrackEventRequired = TickProvider & { id: number // Mark as recording in progress // Do not playback in Player isRecording?: boolean } export type TrackEventOf = DistributiveOmit & TrackEventRequired type NoteEventContent = { type: "channel" subtype: "note" duration: number noteNumber: number velocity: number } export type NoteEvent = TrackEventOf export type TrackEvent = TrackEventOf< AnyEvent | NoteEventContent | AnySignalEvent > export type FeatureOf = DistributiveOmit export type AnyEventFeature = FeatureOf