@jeffy-g/live-midi-types 0.9.1 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,119 @@
1
+ /*!
2
+ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
3
+ // Copyright (C) 2026 jeffy-g <hirotom1107@gmail.com>
4
+ // Released under the MIT license
5
+ // https://opensource.org/licenses/mit-license.php
6
+ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
7
+ */
8
+ /**
9
+ * @file live-midi-types/ESMFEventType.d.ts
10
+ */
11
+
12
+ declare const enum ESMFEventType {
13
+ // Miscellaneous meta events
14
+ /**
15
+ * ```
16
+ * 0x00
17
+ * ```
18
+ */
19
+ sequenceNumber = 0,
20
+
21
+ // Text meta events
22
+ text, // 1
23
+ copyrightNotice, // 2
24
+ trackName, // 3
25
+ instrumentName, // 4
26
+ lyrics, // 5
27
+ marker, // 6
28
+ cuePoint, // 7
29
+
30
+ // Channel voice events
31
+ noteOff = 0x08, // 8
32
+ noteOn, // velocity === 0 ? 'noteOff' : 'noteOn'
33
+ noteAftertouch, // 10
34
+ /**
35
+ * means control change event type.
36
+ * ```
37
+ * [0xb0 | event.channel][controllerType:0..127][value:0..127]
38
+ * ```
39
+ */
40
+ controller, // 11
41
+ /**
42
+ * ```
43
+ * [0xc0 | event.channel][programNumber:0..127]
44
+ * ```
45
+ * @see {@linkcode https://midiprog.com/program-numbers/ Program Change Numbers}
46
+ */
47
+ programChange, // 12
48
+ /**
49
+ * ```
50
+ * [0xd0 | event.channel][0..127]
51
+ * ```
52
+ */
53
+ channelAftertouch,// 13
54
+ /**
55
+ * ```
56
+ * [0xe0 | event.channel][LSB:0..127][MSB:0..127]
57
+ * ```
58
+ */
59
+ pitchBend, // 14
60
+
61
+ // Tempo and channel prefix meta events
62
+ /**
63
+ * ```
64
+ * 0x20
65
+ * ```
66
+ */
67
+ channelPrefix = 0x20, //
68
+ portPrefix, // 33
69
+ /**
70
+ * ```
71
+ * 0x2F
72
+ * ```
73
+ */
74
+ endOfTrack = 0x2F, // 47
75
+ /**
76
+ * ```
77
+ * 0x51
78
+ * ```
79
+ */
80
+ setTempo = 0x51, // 81
81
+
82
+ // Meta utility events
83
+ /**
84
+ * ```
85
+ * 0x54
86
+ * ```
87
+ */
88
+ smpteOffset = 0x54, // 84
89
+ /**
90
+ * ```
91
+ * 0x58
92
+ * ```
93
+ */
94
+ timeSignature = 0x58, // 88
95
+ keySignature, //
96
+
97
+ // System-exclusive events
98
+ /**
99
+ * ```
100
+ * 0x7F
101
+ * ```
102
+ */
103
+ sequencerSpecific = 0x7F,//127
104
+ /**
105
+ * ```
106
+ * 0xF0
107
+ * ```
108
+ */
109
+ sysEx = 0xF0, // 240 eventTypeByte
110
+ /**
111
+ * ```
112
+ * 0xF7
113
+ * ```
114
+ */
115
+ endSysEx = 0xF7,// 247 eventTypeByte
116
+
117
+ // Miscellaneous meta events
118
+ unknownMeta = -1,
119
+ }
package/dist/index.d.ts CHANGED
@@ -12,4 +12,4 @@ export * from "./midi-event.js";
12
12
  export * from "./midi-clip.js";
13
13
  export * from "./project.js";
14
14
  export * from "./ableton-colors.js";
15
- export declare const version = "v0.9.1";
15
+ export declare const version = "v0.10.0";
package/dist/index.js CHANGED
@@ -12,4 +12,4 @@ export * from "./midi-event.js";
12
12
  export * from "./midi-clip.js";
13
13
  export * from "./project.js";
14
14
  export * from "./ableton-colors.js";
15
- export const version = "v0.9.1";
15
+ export const version = "v0.10.0";
@@ -9,7 +9,7 @@
9
9
  * @file src/midi-clip.ts
10
10
  * @summary Common MIDI clip data type for Ableton Live and related tools.
11
11
  */
12
- import type { NoteEvent, ControlChangeEvent } from "./midi-event.ts";
12
+ import type { NoteEvent, MetaTextEvent, PitchBendEvent, ControlChangeEvent, ChannelPressureEvent } from "./midi-event.ts";
13
13
  /**
14
14
  * MIDI clip data extracted from Ableton Live's MidiClip object.
15
15
  *
@@ -68,6 +68,18 @@ export type TMidiClipData = {
68
68
  * @see {@link flattenCCEventMap}
69
69
  */
70
70
  cc?(): ControlChangeEvent[];
71
+ /**
72
+ * @since v0.10.0
73
+ */
74
+ pitchBends?: PitchBendEvent[];
75
+ /**
76
+ * @since v0.10.0
77
+ */
78
+ channelPressures?: ChannelPressureEvent[];
79
+ /**
80
+ * @since v0.10.0
81
+ */
82
+ meta?: MetaTextEvent[];
71
83
  };
72
84
  /**
73
85
  * @param {Record<string, ControlChangeEvent[]>} ccEventMap
@@ -9,6 +9,7 @@
9
9
  * @file src/midi-event.ts
10
10
  * @summary Common MIDI event types for Ableton Live and related tools.
11
11
  */
12
+ import type { TextEventTypesUnion } from "./midi10-smf-types.ts";
12
13
  export type BaseEvent = {
13
14
  /**
14
15
  * Time relative to the start of the clip.
@@ -100,6 +101,69 @@ export type TempoEvent = BaseEvent & {
100
101
  */
101
102
  bpm: number;
102
103
  };
104
+ /**
105
+ * Shared processing shape for Control Change, Channel Pressure, and Pitch Bend
106
+ * envelope events extracted from an Ableton Live MIDI clip.
107
+ *
108
+ * + This is an intermediate event type, not an SMF wire event.
109
+ * + It retains beat-based time, fractional Live values, and optional interpolation diagnostics until the target-specific MIDI encoding step.
110
+ * + A Control Change carries `controller`, Pitch Bend and Channel Pressure do not.
111
+ *
112
+ * @see {@linkcode ControlChangeEvent}
113
+ * @see {@linkcode ChannelPressureEvent}
114
+ * @see {@linkcode PitchBendEvent}
115
+ *
116
+ * @since v0.10.0
117
+ */
118
+ export type TEnvelopeEvent = BaseEvent & {
119
+ /**
120
+ * Floating-point envelope value in the target's native Live range.
121
+ *
122
+ * - Control Change / Channel Pressure: `0..127`
123
+ * - Pitch Bend: signed `-8192..8191` with center `0`
124
+ *
125
+ * Preserve fractional values while processing the envelope. At the SMF encode
126
+ * boundary, values are quantized with `Math.floor()`; Pitch Bend remains signed
127
+ * until the MIDI writer applies the single `+0x2000` conversion.
128
+ */
129
+ value: number;
130
+ /**
131
+ * MIDI controller number (`0..127`) for a Control Change event.
132
+ *
133
+ * Omitted for Pitch Bend and Channel Pressure. Their internal target numbers
134
+ * (`-2` and `-1`) identify envelope-map buckets and must not be stored here.
135
+ */
136
+ controller?: number;
137
+ };
138
+ /**
139
+ * @since v0.10.0
140
+ */
141
+ export type MetaTextEvent = {
142
+ /** Time in quarter-note beats. */
143
+ time: number;
144
+ text: string;
145
+ type: TextEventTypesUnion;
146
+ };
147
+ /**
148
+ * @since v0.10.0
149
+ */
150
+ export type TimeSignatureEvent = {
151
+ /** Time in quarter-note beats. */
152
+ time: number;
153
+ numerator: number;
154
+ denominator: number;
155
+ metronome?: number;
156
+ thirtyseconds?: number;
157
+ };
158
+ /**
159
+ * @since v0.10.0
160
+ */
161
+ export type KeySignatureEvent = {
162
+ /** Time in quarter-note beats. */
163
+ time: number;
164
+ key: string;
165
+ scale: "major" | "minor";
166
+ };
103
167
  /**
104
168
  * Type alias for MIDI event types.
105
169
  *
@@ -0,0 +1,184 @@
1
+ /*!
2
+ * Original Source: midi-file (https://github.com/carter-thaxton/midi-file/blob/master/index.d.ts)
3
+ * Original License: MIT License
4
+ *
5
+ * + Adapted the original string-based `type` discriminants to use numeric SMF event type codes.
6
+ *
7
+ * Copyright (c) 2025 jeffy-g
8
+ * Released under the MIT license.
9
+ */
10
+ /**
11
+ * @file src/midi10-smf-types.ts
12
+ */
13
+ /// <reference path="../ESMFEventType.d.ts" preserve="true" />
14
+ export interface MidiHeader {
15
+ format: 0 | 1 | 2;
16
+ numTracks: number;
17
+ timeDivision?: number;
18
+ framesPerSecond?: number;
19
+ ticksPerFrame?: number;
20
+ ticksPerBeat?: number;
21
+ }
22
+ export type TextEventTypesUnion = ESMFEventType.text | ESMFEventType.copyrightNotice | ESMFEventType.trackName | ESMFEventType.instrumentName | ESMFEventType.lyrics | ESMFEventType.marker | ESMFEventType.cuePoint;
23
+ export interface MidiBaseEvent<T> {
24
+ /**
25
+ * serialize/deserialize by `writeVarInt/readVarInt`
26
+ * + byte range are __`1 to 4`__ (unsigned integer)
27
+ */
28
+ deltaTime: number;
29
+ /**
30
+ * MUST be `ESMFEventType`
31
+ * @see {@link ESMFEventType}
32
+ */
33
+ type: T;
34
+ }
35
+ export interface MidiMetaEvent<T> extends MidiBaseEvent<T> {
36
+ meta?: true;
37
+ }
38
+ export type MidiEndOfTrackEvent = MidiMetaEvent<ESMFEventType.endOfTrack>;
39
+ export type FrameRate = 24 | 25 | 29.97 | 30;
40
+ export interface MidiSmpteOffsetMixins {
41
+ frameRate: FrameRate;
42
+ hour: number;
43
+ min: number;
44
+ sec: number;
45
+ frame: number;
46
+ subFrame: number;
47
+ }
48
+ export type MidiSmpteOffsetEvent = MidiMetaEvent<ESMFEventType.smpteOffset> & MidiSmpteOffsetMixins;
49
+ export interface MidiTimeSignatureMixins {
50
+ numerator: number;
51
+ denominator: number;
52
+ /** @todo whats this? */
53
+ metronome: number;
54
+ /** @todo whats this? */
55
+ thirtyseconds: number;
56
+ }
57
+ export type MidiTimeSignatureEvent = MidiMetaEvent<ESMFEventType.timeSignature> & MidiTimeSignatureMixins;
58
+ export interface MidiKeySignatureMixins {
59
+ key: number;
60
+ scale: number;
61
+ }
62
+ export type MidiKeySignatureEvent = MidiMetaEvent<ESMFEventType.keySignature> & MidiKeySignatureMixins;
63
+ export interface MidiDataMixins {
64
+ data: ArrayLike<number>;
65
+ }
66
+ export type MidiSysExEvent = MidiBaseEvent<ESMFEventType.sysEx> & MidiDataMixins;
67
+ export type MidiEndSysExEvent = MidiBaseEvent<ESMFEventType.endSysEx> & MidiDataMixins;
68
+ export type MidiSequencerSpecificEvent = MidiMetaEvent<ESMFEventType.sequencerSpecific> & MidiDataMixins;
69
+ export interface MidiUnknownMixins {
70
+ data: ArrayLike<number>;
71
+ metatypeByte: number;
72
+ }
73
+ export type MidiUnknownEvent = MidiMetaEvent<ESMFEventType.unknownMeta> & MidiUnknownMixins;
74
+ export interface MidiNumberMixins {
75
+ number: number;
76
+ }
77
+ export type MidiSequenceNumberEvent = MidiMetaEvent<ESMFEventType.sequenceNumber> & MidiNumberMixins;
78
+ export interface MidiTextMixins {
79
+ text: string;
80
+ }
81
+ export type MidiTextEvent = MidiMetaEvent<ESMFEventType.text> & MidiTextMixins;
82
+ export type MidiLyricsEvent = MidiMetaEvent<ESMFEventType.lyrics> & MidiTextMixins;
83
+ export type MidiMarkerEvent = MidiMetaEvent<ESMFEventType.marker> & MidiTextMixins;
84
+ export type MidiCuePointEvent = MidiMetaEvent<ESMFEventType.cuePoint> & MidiTextMixins;
85
+ export type MidiTrackNameEvent = MidiMetaEvent<ESMFEventType.trackName> & MidiTextMixins;
86
+ export type MidiInstrumentNameEvent = MidiMetaEvent<ESMFEventType.instrumentName> & MidiTextMixins;
87
+ export type MidiCopyrightNoticeEvent = MidiMetaEvent<ESMFEventType.copyrightNotice> & MidiTextMixins;
88
+ export type MidiSetTempoEvent = MidiMetaEvent<ESMFEventType.setTempo> & {
89
+ /**
90
+ * __`unsigned 24-bit integer`__
91
+ */
92
+ microsecondsPerBeat: number;
93
+ };
94
+ export type MidiPortPrefixEvent = MidiMetaEvent<ESMFEventType.portPrefix> & {
95
+ port: number;
96
+ };
97
+ export type MidiChannelPrefixEvent = MidiMetaEvent<ESMFEventType.channelPrefix> & {
98
+ channel: number;
99
+ };
100
+ export interface MidiNoteMixins {
101
+ noteNumber: number;
102
+ /**
103
+ * __`unsigned 7-bit integer`__
104
+ * + `0 to 127(0x7f)`
105
+ */
106
+ velocity: number;
107
+ byte9?: true;
108
+ }
109
+ export type MidiNoteOnEvent = MidiChannelEvent<ESMFEventType.noteOn> & MidiNoteMixins;
110
+ export type MidiNoteOffEvent = MidiChannelEvent<ESMFEventType.noteOff> & MidiNoteMixins;
111
+ export interface MidiNoteAftertouchMixins {
112
+ noteNumber: number;
113
+ amount: number;
114
+ }
115
+ export type MidiNoteAftertouchEvent = MidiChannelEvent<ESMFEventType.noteAftertouch> & MidiNoteAftertouchMixins;
116
+ export interface MidiControllerMixins {
117
+ controllerType: number;
118
+ /**
119
+ * __`unsigned 7-bit integer`__
120
+ * + `0 to 127(0x7f)`
121
+ */
122
+ value: number;
123
+ }
124
+ export interface MidiChannelEvent<T> extends MidiBaseEvent<T> {
125
+ running?: true;
126
+ channel: number;
127
+ }
128
+ export type MidiPitchBendEvent = MidiChannelEvent<ESMFEventType.pitchBend> & {
129
+ /**
130
+ * __`SPEC`__: 14bit `-8192 to 8191` (integer)
131
+ */
132
+ value: number;
133
+ };
134
+ /**
135
+ * @see {@link https://anotherproducer.com/online-tools-for-musicians/midi-cc-list/ MIDI CC List for Continuous Controllers}
136
+ */
137
+ export type MidiControllerEvent = MidiChannelEvent<ESMFEventType.controller> & MidiControllerMixins;
138
+ export type MidiProgramChangeEvent = MidiChannelEvent<ESMFEventType.programChange> & {
139
+ programNumber: number;
140
+ };
141
+ export type MidiChannelAftertouchEvent = MidiChannelEvent<ESMFEventType.channelAftertouch> & {
142
+ amount: number;
143
+ };
144
+ export type MidiEvent =
145
+ | MidiTextEvent
146
+ | MidiSysExEvent
147
+ | MidiLyricsEvent
148
+ | MidiMarkerEvent
149
+ | MidiNoteOnEvent
150
+ | MidiNoteOffEvent
151
+ | MidiUnknownEvent
152
+ | MidiCuePointEvent
153
+ | MidiEndSysExEvent
154
+ | MidiSetTempoEvent
155
+ | MidiPitchBendEvent
156
+ | MidiTrackNameEvent
157
+ | MidiControllerEvent
158
+ | MidiEndOfTrackEvent
159
+ | MidiPortPrefixEvent
160
+ | MidiSmpteOffsetEvent
161
+ | MidiKeySignatureEvent
162
+ | MidiChannelPrefixEvent
163
+ | MidiProgramChangeEvent
164
+ | MidiTimeSignatureEvent
165
+ | MidiInstrumentNameEvent
166
+ | MidiNoteAftertouchEvent
167
+ | MidiSequenceNumberEvent
168
+ | MidiCopyrightNoticeEvent
169
+ | MidiChannelAftertouchEvent
170
+ | MidiSequencerSpecificEvent;
171
+ export interface MidiData {
172
+ header: MidiHeader;
173
+ tracks: MidiEvent[][];
174
+ }
175
+ export interface MidiWriteOption {
176
+ /**
177
+ * reuse previous eventTypeByte when possible, to compress file
178
+ */
179
+ running?: boolean;
180
+ /**
181
+ * use 0x09 for noteOff when velocity is zero
182
+ */
183
+ useByte9ForNoteOff?: boolean;
184
+ }
@@ -0,0 +1,14 @@
1
+ /*!
2
+ * Original Source: midi-file (https://github.com/carter-thaxton/midi-file/blob/master/index.d.ts)
3
+ * Original License: MIT License
4
+ *
5
+ * + Adapted the original string-based `type` discriminants to use numeric SMF event type codes.
6
+ *
7
+ * Copyright (c) 2025 jeffy-g
8
+ * Released under the MIT license.
9
+ */
10
+ /// <reference path="../ESMFEventType.d.ts" preserve="true"/>
11
+ /**
12
+ * @file src/midi10-smf-types.ts
13
+ */
14
+ export {};
package/dist/project.d.ts CHANGED
@@ -8,7 +8,7 @@
8
8
  /**
9
9
  * @file src/project.ts
10
10
  */
11
- import type { TempoEvent } from "./midi-event.ts";
11
+ import type { TempoEvent, MetaTextEvent, TimeSignatureEvent, KeySignatureEvent } from "./midi-event.ts";
12
12
  /**
13
13
  * Summary information for an Ableton Live MIDI clip.
14
14
  */
@@ -137,6 +137,10 @@ export type TTrackInfo<T extends Record<string, any>> = {
137
137
  * MIDI clips indexed by {@linkcode TClipSummary.id TClipSummary.id}
138
138
  */
139
139
  clips: Record<string, TClipSummary<T>>;
140
+ /**
141
+ * @since v0.10.0
142
+ */
143
+ meta?: MetaTextEvent[];
140
144
  };
141
145
  /**
142
146
  * Parsed data required by the Ableton Live project UI.
@@ -170,4 +174,12 @@ export type TParsedAbletonLiveSet<T extends Record<string, any>> = {
170
174
  * ```
171
175
  */
172
176
  tempoAutomation: TempoEvent[];
177
+ /**
178
+ * @since v0.10.0
179
+ */
180
+ timeSignatures?: TimeSignatureEvent[];
181
+ /**
182
+ * @since v0.10.0
183
+ */
184
+ keySignatures?: KeySignatureEvent[];
173
185
  };
@@ -0,0 +1,105 @@
1
+ /*!
2
+ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
3
+ // Copyright (C) 2025 jeffy-g <hirotom1107@gmail.com>
4
+ // Released under the MIT license
5
+ // https://opensource.org/licenses/mit-license.php
6
+ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
7
+ */
8
+ /**
9
+ * @file live-midi-types/src/smf-event-type.ts
10
+ */
11
+ export declare const ESMFEventType: {
12
+ /**
13
+ * ```
14
+ * 0x00
15
+ * ```
16
+ */
17
+ readonly sequenceNumber: 0;
18
+ readonly text: 1;
19
+ readonly copyrightNotice: 2;
20
+ readonly trackName: 3;
21
+ readonly instrumentName: 4;
22
+ readonly lyrics: 5;
23
+ readonly marker: 6;
24
+ readonly cuePoint: 7;
25
+ readonly noteOff: 8;
26
+ readonly noteOn: 9;
27
+ readonly noteAftertouch: 10;
28
+ /**
29
+ * means control change event type.
30
+ * ```
31
+ * [0xb0 | event.channel][controllerType:0..127][value:0..127]
32
+ * ```
33
+ */
34
+ readonly controller: 11;
35
+ /**
36
+ * ```
37
+ * [0xc0 | event.channel][programNumber:0..127]
38
+ * ```
39
+ * @see {@linkcode https://midiprog.com/program-numbers/ Program Change Numbers}
40
+ */
41
+ readonly programChange: 12;
42
+ /**
43
+ * ```
44
+ * [0xd0 | event.channel][0..127]
45
+ * ```
46
+ */
47
+ readonly channelAftertouch: 13;
48
+ /**
49
+ * ```
50
+ * [0xe0 | event.channel][LSB:0..127][MSB:0..127]
51
+ * ```
52
+ */
53
+ readonly pitchBend: 14;
54
+ /**
55
+ * ```
56
+ * 0x20
57
+ * ```
58
+ */
59
+ readonly channelPrefix: 32;
60
+ readonly portPrefix: 33;
61
+ /**
62
+ * ```
63
+ * 0x2F
64
+ * ```
65
+ */
66
+ readonly endOfTrack: 47;
67
+ /**
68
+ * ```
69
+ * 0x51
70
+ * ```
71
+ */
72
+ readonly setTempo: 81;
73
+ /**
74
+ * ```
75
+ * 0x54
76
+ * ```
77
+ */
78
+ readonly smpteOffset: 84;
79
+ /**
80
+ * ```
81
+ * 0x58
82
+ * ```
83
+ */
84
+ readonly timeSignature: 88;
85
+ readonly keySignature: 89;
86
+ /**
87
+ * ```
88
+ * 0x7F
89
+ * ```
90
+ */
91
+ readonly sequencerSpecific: 127;
92
+ /**
93
+ * ```
94
+ * 0xF0
95
+ * ```
96
+ */
97
+ readonly sysEx: 240;
98
+ /**
99
+ * ```
100
+ * 0xF7
101
+ * ```
102
+ */
103
+ readonly endSysEx: 247;
104
+ readonly unknownMeta: -1;
105
+ };
@@ -0,0 +1,105 @@
1
+ /*!
2
+ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
3
+ // Copyright (C) 2025 jeffy-g <hirotom1107@gmail.com>
4
+ // Released under the MIT license
5
+ // https://opensource.org/licenses/mit-license.php
6
+ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
7
+ */
8
+ /**
9
+ * @file live-midi-types/src/smf-event-type.ts
10
+ */
11
+ export const ESMFEventType = {
12
+ /**
13
+ * ```
14
+ * 0x00
15
+ * ```
16
+ */
17
+ sequenceNumber: 0,
18
+ text: 1,
19
+ copyrightNotice: 2,
20
+ trackName: 3,
21
+ instrumentName: 4,
22
+ lyrics: 5,
23
+ marker: 6,
24
+ cuePoint: 7,
25
+ noteOff: 8,
26
+ noteOn: 9,
27
+ noteAftertouch: 10,
28
+ /**
29
+ * means control change event type.
30
+ * ```
31
+ * [0xb0 | event.channel][controllerType:0..127][value:0..127]
32
+ * ```
33
+ */
34
+ controller: 11,
35
+ /**
36
+ * ```
37
+ * [0xc0 | event.channel][programNumber:0..127]
38
+ * ```
39
+ * @see {@linkcode https://midiprog.com/program-numbers/ Program Change Numbers}
40
+ */
41
+ programChange: 12,
42
+ /**
43
+ * ```
44
+ * [0xd0 | event.channel][0..127]
45
+ * ```
46
+ */
47
+ channelAftertouch: 13,
48
+ /**
49
+ * ```
50
+ * [0xe0 | event.channel][LSB:0..127][MSB:0..127]
51
+ * ```
52
+ */
53
+ pitchBend: 14,
54
+ /**
55
+ * ```
56
+ * 0x20
57
+ * ```
58
+ */
59
+ channelPrefix: 0x20,
60
+ portPrefix: 0x21,
61
+ /**
62
+ * ```
63
+ * 0x2F
64
+ * ```
65
+ */
66
+ endOfTrack: 0x2f,
67
+ /**
68
+ * ```
69
+ * 0x51
70
+ * ```
71
+ */
72
+ setTempo: 0x51,
73
+ /**
74
+ * ```
75
+ * 0x54
76
+ * ```
77
+ */
78
+ smpteOffset: 0x54,
79
+ /**
80
+ * ```
81
+ * 0x58
82
+ * ```
83
+ */
84
+ timeSignature: 0x58,
85
+ keySignature: 0x59,
86
+ /**
87
+ * ```
88
+ * 0x7F
89
+ * ```
90
+ */
91
+ sequencerSpecific: 0x7f,
92
+ /**
93
+ * ```
94
+ * 0xF0
95
+ * ```
96
+ */
97
+ sysEx: 0xf0,
98
+ /**
99
+ * ```
100
+ * 0xF7
101
+ * ```
102
+ */
103
+ endSysEx: 0xf7,
104
+ unknownMeta: -1,
105
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jeffy-g/live-midi-types",
3
- "version": "0.9.1",
3
+ "version": "0.10.0",
4
4
  "description": "Common TypeScript types for Ableton Live MIDI clip and event data.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -10,10 +10,24 @@
10
10
  "import": "./dist/index.js",
11
11
  "require": "./dist/index.js",
12
12
  "types": "./dist/index.d.ts"
13
+ },
14
+ "./midi10-smf-types": {
15
+ "import": "./dist/midi10-smf-types.js",
16
+ "require": "./dist/midi10-smf-types.js",
17
+ "types": "./dist/midi10-smf-types.d.ts"
18
+ },
19
+ "./smf-event-type": {
20
+ "import": "./dist/smf-event-type.js",
21
+ "require": "./dist/smf-event-type.js",
22
+ "types": "./dist/smf-event-type.d.ts"
23
+ },
24
+ "./ESMFEventType": {
25
+ "types": "./ESMFEventType.d.ts"
13
26
  }
14
27
  },
15
28
  "files": [
16
- "dist"
29
+ "dist",
30
+ "ESMFEventType.d.ts"
17
31
  ],
18
32
  "author": "jeffy-g <hirotom1107@gmail.com>",
19
33
  "license": "MIT",