@@ -49,7 +49,7 @@ export interface PortPrefixEvent extends MetaEvent<"portPrefix"> {
4949 port : number
5050}
5151
52- export interface EndOfTrackEvent extends MetaEvent < "endOfTrack" > { }
52+ export interface EndOfTrackEvent extends MetaEvent < "endOfTrack" > { }
5353
5454export interface SetTempoEvent extends MetaEvent < "setTempo" > {
5555 microsecondsPerBeat : number
@@ -139,64 +139,47 @@ export interface SysExEvent extends Event<"sysEx"> {
139139export interface DividedSysExEvent extends Event < "dividedSysEx" > {
140140 data : number [ ]
141141}
142- // System Common Events
143- export interface TimeCodeQuarterFrameEvent {
144- deltaTime : number ;
145- type : "system" ;
146- subtype : "timeCodeQuarterFrame" ;
147- data : number ;
148- }
149142
150- export interface SongPositionPointerEvent {
151- deltaTime : number ;
152- type : "system" ;
153- subtype : "songPositionPointer" ;
154- value : number ; // 14-bit value
155- }
143+ /* System Common Events */
156144
157- export interface SongSelectEvent {
158- deltaTime : number ;
159- type : "system" ;
160- subtype : "songSelect" ;
161- songNumber : number ;
145+ export interface SystemEvent < T extends string > extends Event < "system" > {
146+ subtype : T
162147}
163148
164- export interface TuneRequestEvent {
165- deltaTime : number ;
166- type : "system" ;
167- subtype : "tuneRequest" ;
149+ export interface TimeCodeQuarterFrameEvent
150+ extends SystemEvent < "timeCodeQuarterFrame" > {
151+ data : number
168152}
169153
170- // Real-Time Events
171- export interface TimingClockEvent {
172- deltaTime : number ;
173- type : "system" ;
174- subtype : "timingClock" ;
154+ export interface SongPositionPointerEvent
155+ extends SystemEvent < "songPositionPointer" > {
156+ value : number // 14-bit value
175157}
176158
177- export interface StartEvent {
178- deltaTime : number ;
179- type : "system" ;
180- subtype : "start" ;
159+ export interface SongPositionPointerEvent
160+ extends SystemEvent < "songPositionPointer" > {
161+ value : number // 14-bit value
181162}
182163
183- export interface ContinueEvent {
184- deltaTime : number ;
185- type : "system" ;
186- subtype : "continue" ;
164+ export interface SongSelectEvent extends SystemEvent < "songSelect" > {
165+ songNumber : number
187166}
188167
189- export interface StopEvent {
190- deltaTime : number ;
191- type : "system" ;
192- subtype : "stop" ;
168+ export interface TuneRequestEvent extends SystemEvent < "tuneRequest" > {
169+ data : number [ ]
193170}
194171
195- export interface ActiveSensingEvent {
196- deltaTime : number ;
197- type : "system" ;
198- subtype : "activeSensing" ;
199- }
172+ /* Real-Time Events */
173+
174+ export interface TimingClockEvent extends SystemEvent < "timingClock" > { }
175+
176+ export interface StartEvent extends SystemEvent < "start" > { }
177+
178+ export interface ContinueEvent extends SystemEvent < "continue" > { }
179+
180+ export interface StopEvent extends SystemEvent < "stop" > { }
181+
182+ export interface ActiveSensingEvent extends SystemEvent < "activeSensing" > { }
200183
201184export type AnyMetaEvent =
202185 | SequenceNumberEvent
@@ -227,6 +210,17 @@ export type AnyChannelEvent =
227210 | UnknownChannelEvent
228211 | ControllerEvent
229212
230- export type AnySysExEvent = SysExEvent | DividedSysExEvent | TimeCodeQuarterFrameEvent | SongPositionPointerEvent | SongSelectEvent | TuneRequestEvent | TimingClockEvent | StartEvent | ContinueEvent | StopEvent | ActiveSensingEvent
213+ export type AnySysExEvent =
214+ | SysExEvent
215+ | DividedSysExEvent
216+ | TimeCodeQuarterFrameEvent
217+ | SongPositionPointerEvent
218+ | SongSelectEvent
219+ | TuneRequestEvent
220+ | TimingClockEvent
221+ | StartEvent
222+ | ContinueEvent
223+ | StopEvent
224+ | ActiveSensingEvent
231225
232226export type AnyEvent = AnyMetaEvent | AnySysExEvent | AnyChannelEvent
0 commit comments