Implement structured parsing and typing for pattern events (Note, Fader, MIDI, Unknown)
This commit is contained in:
@@ -74,9 +74,67 @@ export type Pattern = {
|
||||
bars: number;
|
||||
};
|
||||
|
||||
export enum PatternEventKind {
|
||||
Note = 0,
|
||||
Fader = 1,
|
||||
Midi = 2,
|
||||
}
|
||||
|
||||
export type PatternEventBase = {
|
||||
position: number;
|
||||
source: number;
|
||||
flags: number;
|
||||
rawData: Uint8Array;
|
||||
};
|
||||
|
||||
export type NotePatternEvent = PatternEventBase & {
|
||||
type: 'note';
|
||||
kind: PatternEventKind.Note;
|
||||
pad: number;
|
||||
note: number;
|
||||
velocity: number;
|
||||
duration: number;
|
||||
};
|
||||
|
||||
export type FaderAutomationEvent = PatternEventBase & {
|
||||
type: 'fader';
|
||||
kind: PatternEventKind.Fader;
|
||||
parameter: number;
|
||||
reserved: number;
|
||||
rawValue: number;
|
||||
value: number;
|
||||
};
|
||||
|
||||
export type MidiPatternEvent = PatternEventBase & {
|
||||
type: 'midi';
|
||||
kind: PatternEventKind.Midi;
|
||||
data: Uint8Array;
|
||||
};
|
||||
|
||||
export type UnknownPatternEvent = PatternEventBase & {
|
||||
type: 'unknown';
|
||||
kind: number;
|
||||
data: Uint8Array;
|
||||
};
|
||||
|
||||
export type PatternEvent =
|
||||
| NotePatternEvent
|
||||
| FaderAutomationEvent
|
||||
| MidiPatternEvent
|
||||
| UnknownPatternEvent;
|
||||
|
||||
export type SceneGroupPatternData = {
|
||||
group: Group;
|
||||
patternNumber: number;
|
||||
bars: number;
|
||||
recordCount: number;
|
||||
events: PatternEvent[];
|
||||
};
|
||||
|
||||
export type Scene = {
|
||||
name: string;
|
||||
patterns: Pattern[];
|
||||
patternEvents: Partial<Record<Group, SceneGroupPatternData>>;
|
||||
};
|
||||
|
||||
export type Note = {
|
||||
|
||||
Reference in New Issue
Block a user