@huffduff/midi-writer-ts 3.2.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.
- package/.editorconfig +24 -0
- package/.eslintignore +3 -0
- package/.eslintrc.js +18 -0
- package/.nvmrc +1 -0
- package/.travis.yml +3 -0
- package/LICENSE +21 -0
- package/README.md +200 -0
- package/browser/midiwriter.js +1367 -0
- package/build/index.cjs +1219 -0
- package/build/index.mjs +1217 -0
- package/build/types/abstract-event.d.ts +7 -0
- package/build/types/chunks/chunk.d.ts +5 -0
- package/build/types/chunks/header.d.ts +13 -0
- package/build/types/chunks/track.d.ts +139 -0
- package/build/types/constants.d.ts +16 -0
- package/build/types/main.d.ts +56 -0
- package/build/types/meta-events/copyright-event.d.ts +18 -0
- package/build/types/meta-events/cue-point-event.d.ts +18 -0
- package/build/types/meta-events/end-track-event.d.ts +16 -0
- package/build/types/meta-events/instrument-name-event.d.ts +18 -0
- package/build/types/meta-events/key-signature-event.d.ts +13 -0
- package/build/types/meta-events/lyric-event.d.ts +18 -0
- package/build/types/meta-events/marker-event.d.ts +18 -0
- package/build/types/meta-events/meta-event.d.ts +5 -0
- package/build/types/meta-events/tempo-event.d.ts +20 -0
- package/build/types/meta-events/text-event.d.ts +18 -0
- package/build/types/meta-events/time-signature-event.d.ts +13 -0
- package/build/types/meta-events/track-name-event.d.ts +18 -0
- package/build/types/midi-events/controller-change-event.d.ts +22 -0
- package/build/types/midi-events/midi-event.d.ts +7 -0
- package/build/types/midi-events/note-event.d.ts +31 -0
- package/build/types/midi-events/note-off-event.d.ts +36 -0
- package/build/types/midi-events/note-on-event.d.ts +36 -0
- package/build/types/midi-events/pitch-bend-event.d.ts +17 -0
- package/build/types/midi-events/program-change-event.d.ts +20 -0
- package/build/types/utils.d.ts +105 -0
- package/build/types/vexflow.d.ts +30 -0
- package/build/types/writer.d.ts +45 -0
- package/examples/chopin-prelude-e-minor.js +143 -0
- package/examples/hot-cross-buns.js +24 -0
- package/examples/mauro.giuliani-op.47-main-theme.js +136 -0
- package/examples/notes-by-start-tick.js +45 -0
- package/examples/zelda-main-theme.js +435 -0
- package/jsdoc.json +5 -0
- package/package.json +79 -0
- package/postinstall.js +1 -0
- package/rollup.config.js +22 -0
- package/runkit.js +18 -0
- package/test/main.js +339 -0
- package/test/vexflow.js +165 -0
- package/test/writer.js +59 -0
- package/tsconfig.json +13 -0
- package/typedoc.json +5 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Chunk } from './chunk';
|
|
2
|
+
/**
|
|
3
|
+
* Object representation of a header chunk section of a MIDI file.
|
|
4
|
+
* @param {number} numberOfTracks - Number of tracks
|
|
5
|
+
* @return {Header}
|
|
6
|
+
*/
|
|
7
|
+
declare class Header implements Chunk {
|
|
8
|
+
data: number[];
|
|
9
|
+
type: number[];
|
|
10
|
+
size: number[];
|
|
11
|
+
constructor(numberOfTracks: any);
|
|
12
|
+
}
|
|
13
|
+
export { Header };
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { AbstractEvent } from '../abstract-event';
|
|
2
|
+
import { Chunk } from './chunk';
|
|
3
|
+
import { NoteEvent } from '../midi-events/note-event';
|
|
4
|
+
/**
|
|
5
|
+
* Holds all data for a track.
|
|
6
|
+
* @param {object} fields {type: number, data: array, size: array, events: array}
|
|
7
|
+
* @return {Track}
|
|
8
|
+
*/
|
|
9
|
+
declare class Track implements Chunk {
|
|
10
|
+
data: number[];
|
|
11
|
+
events: AbstractEvent[];
|
|
12
|
+
explicitTickEvents: NoteEvent[];
|
|
13
|
+
size: number[];
|
|
14
|
+
type: number[];
|
|
15
|
+
tickPointer: number;
|
|
16
|
+
constructor();
|
|
17
|
+
/**
|
|
18
|
+
* Adds any event type to the track.
|
|
19
|
+
* Events without a specific startTick property are assumed to be added in order of how they should output.
|
|
20
|
+
* Events with a specific startTick property are set aside for now will be merged in during build process.
|
|
21
|
+
*
|
|
22
|
+
* TODO: Don't put startTick events in their own array. Just lump everything together and sort it out during buildData();
|
|
23
|
+
* @param {(NoteEvent|ProgramChangeEvent)} events - Event object or array of Event objects.
|
|
24
|
+
* @param {Function} mapFunction - Callback which can be used to apply specific properties to all events.
|
|
25
|
+
* @return {Track}
|
|
26
|
+
*/
|
|
27
|
+
addEvent(events: (AbstractEvent | AbstractEvent[]), mapFunction?: (i: number, event: AbstractEvent) => object): Track;
|
|
28
|
+
/**
|
|
29
|
+
* Builds int array of all events.
|
|
30
|
+
* @param {object} options
|
|
31
|
+
* @return {Track}
|
|
32
|
+
*/
|
|
33
|
+
buildData(options?: {}): this;
|
|
34
|
+
mergeExplicitTickEvents(): void;
|
|
35
|
+
/**
|
|
36
|
+
* Merges another track's events with this track.
|
|
37
|
+
* @param {Track} track
|
|
38
|
+
* @return {Track}
|
|
39
|
+
*/
|
|
40
|
+
mergeTrack(track: Track): Track;
|
|
41
|
+
/**
|
|
42
|
+
* Merges a single event into this track's list of events based on event.tick property.
|
|
43
|
+
* @param {AbstractEvent} - event
|
|
44
|
+
* @return {Track}
|
|
45
|
+
*/
|
|
46
|
+
mergeSingleEvent(event: AbstractEvent): Track;
|
|
47
|
+
/**
|
|
48
|
+
* Removes all events matching specified type.
|
|
49
|
+
* @param {string} eventName - Event type
|
|
50
|
+
* @return {Track}
|
|
51
|
+
*/
|
|
52
|
+
removeEventsByName(eventName: string): Track;
|
|
53
|
+
/**
|
|
54
|
+
* Sets tempo of the MIDI file.
|
|
55
|
+
* @param {number} bpm - Tempo in beats per minute.
|
|
56
|
+
* @param {number} tick - Start tick.
|
|
57
|
+
* @return {Track}
|
|
58
|
+
*/
|
|
59
|
+
setTempo(bpm: number, tick?: number): Track;
|
|
60
|
+
/**
|
|
61
|
+
* Sets time signature.
|
|
62
|
+
* @param {number} numerator - Top number of the time signature.
|
|
63
|
+
* @param {number} denominator - Bottom number of the time signature.
|
|
64
|
+
* @param {number} midiclockspertick - Defaults to 24.
|
|
65
|
+
* @param {number} notespermidiclock - Defaults to 8.
|
|
66
|
+
* @return {Track}
|
|
67
|
+
*/
|
|
68
|
+
setTimeSignature(numerator: number, denominator: number, midiclockspertick: number, notespermidiclock: number): Track;
|
|
69
|
+
/**
|
|
70
|
+
* Sets key signature.
|
|
71
|
+
* @param {*} sf -
|
|
72
|
+
* @param {*} mi -
|
|
73
|
+
* @return {Track}
|
|
74
|
+
*/
|
|
75
|
+
setKeySignature(sf: any, mi: any): Track;
|
|
76
|
+
/**
|
|
77
|
+
* Adds text to MIDI file.
|
|
78
|
+
* @param {string} text - Text to add.
|
|
79
|
+
* @return {Track}
|
|
80
|
+
*/
|
|
81
|
+
addText(text: string): Track;
|
|
82
|
+
/**
|
|
83
|
+
* Adds copyright to MIDI file.
|
|
84
|
+
* @param {string} text - Text of copyright line.
|
|
85
|
+
* @return {Track}
|
|
86
|
+
*/
|
|
87
|
+
addCopyright(text: string): Track;
|
|
88
|
+
/**
|
|
89
|
+
* Adds Sequence/Track Name.
|
|
90
|
+
* @param {string} text - Text of track name.
|
|
91
|
+
* @return {Track}
|
|
92
|
+
*/
|
|
93
|
+
addTrackName(text: string): Track;
|
|
94
|
+
/**
|
|
95
|
+
* Sets instrument name of track.
|
|
96
|
+
* @param {string} text - Name of instrument.
|
|
97
|
+
* @return {Track}
|
|
98
|
+
*/
|
|
99
|
+
addInstrumentName(text: string): Track;
|
|
100
|
+
/**
|
|
101
|
+
* Adds marker to MIDI file.
|
|
102
|
+
* @param {string} text - Marker text.
|
|
103
|
+
* @return {Track}
|
|
104
|
+
*/
|
|
105
|
+
addMarker(text: string): Track;
|
|
106
|
+
/**
|
|
107
|
+
* Adds cue point to MIDI file.
|
|
108
|
+
* @param {string} text - Text of cue point.
|
|
109
|
+
* @return {Track}
|
|
110
|
+
*/
|
|
111
|
+
addCuePoint(text: string): Track;
|
|
112
|
+
/**
|
|
113
|
+
* Adds lyric to MIDI file.
|
|
114
|
+
* @param {string} text - Lyric text to add.
|
|
115
|
+
* @return {Track}
|
|
116
|
+
*/
|
|
117
|
+
addLyric(text: string): Track;
|
|
118
|
+
/**
|
|
119
|
+
* Channel mode messages
|
|
120
|
+
* @return {Track}
|
|
121
|
+
*/
|
|
122
|
+
polyModeOn(): Track;
|
|
123
|
+
/**
|
|
124
|
+
* Sets a pitch bend.
|
|
125
|
+
* @param {float} bend - Bend value ranging [-1,1], zero meaning no bend.
|
|
126
|
+
* @return {Track}
|
|
127
|
+
*/
|
|
128
|
+
setPitchBend(bend: number): Track;
|
|
129
|
+
/**
|
|
130
|
+
* Adds a controller change event
|
|
131
|
+
* @param {number} number - Control number.
|
|
132
|
+
* @param {number} value - Control value.
|
|
133
|
+
* @param {number} channel - Channel to send controller change event on (1-based).
|
|
134
|
+
* @param {number} delta - Track tick offset for cc event.
|
|
135
|
+
* @return {Track}
|
|
136
|
+
*/
|
|
137
|
+
controllerChange(number: number, value: number, channel?: number, delta?: number): Track;
|
|
138
|
+
}
|
|
139
|
+
export { Track };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MIDI file format constants.
|
|
3
|
+
* @return {Constants}
|
|
4
|
+
*/
|
|
5
|
+
declare const Constants: {
|
|
6
|
+
VERSION: string;
|
|
7
|
+
HEADER_CHUNK_TYPE: number[];
|
|
8
|
+
HEADER_CHUNK_LENGTH: number[];
|
|
9
|
+
HEADER_CHUNK_FORMAT0: number[];
|
|
10
|
+
HEADER_CHUNK_FORMAT1: number[];
|
|
11
|
+
HEADER_CHUNK_DIVISION: number[];
|
|
12
|
+
TRACK_CHUNK_TYPE: number[];
|
|
13
|
+
META_EVENT_ID: number;
|
|
14
|
+
META_SMTPE_OFFSET: number;
|
|
15
|
+
};
|
|
16
|
+
export { Constants };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ControllerChangeEvent } from './midi-events/controller-change-event';
|
|
2
|
+
import { CopyrightEvent } from './meta-events/copyright-event';
|
|
3
|
+
import { CuePointEvent } from './meta-events/cue-point-event';
|
|
4
|
+
import { EndTrackEvent } from './meta-events/end-track-event';
|
|
5
|
+
import { InstrumentNameEvent } from './meta-events/instrument-name-event';
|
|
6
|
+
import { KeySignatureEvent } from './meta-events/key-signature-event';
|
|
7
|
+
import { LyricEvent } from './meta-events/lyric-event';
|
|
8
|
+
import { MarkerEvent } from './meta-events/marker-event';
|
|
9
|
+
import { NoteOnEvent } from './midi-events/note-on-event';
|
|
10
|
+
import { NoteOffEvent } from './midi-events/note-off-event';
|
|
11
|
+
import { NoteEvent } from './midi-events/note-event';
|
|
12
|
+
import { PitchBendEvent } from './midi-events/pitch-bend-event';
|
|
13
|
+
import { ProgramChangeEvent } from './midi-events/program-change-event';
|
|
14
|
+
import { TempoEvent } from './meta-events/tempo-event';
|
|
15
|
+
import { TextEvent } from './meta-events/text-event';
|
|
16
|
+
import { TimeSignatureEvent } from './meta-events/time-signature-event';
|
|
17
|
+
import { Track } from './chunks/track';
|
|
18
|
+
import { TrackNameEvent } from './meta-events/track-name-event';
|
|
19
|
+
import { Utils } from './utils';
|
|
20
|
+
import { VexFlow } from './vexflow';
|
|
21
|
+
import { Writer } from './writer';
|
|
22
|
+
declare const _default: {
|
|
23
|
+
Constants: {
|
|
24
|
+
VERSION: string;
|
|
25
|
+
HEADER_CHUNK_TYPE: number[];
|
|
26
|
+
HEADER_CHUNK_LENGTH: number[];
|
|
27
|
+
HEADER_CHUNK_FORMAT0: number[];
|
|
28
|
+
HEADER_CHUNK_FORMAT1: number[];
|
|
29
|
+
HEADER_CHUNK_DIVISION: number[];
|
|
30
|
+
TRACK_CHUNK_TYPE: number[];
|
|
31
|
+
META_EVENT_ID: number;
|
|
32
|
+
META_SMTPE_OFFSET: number;
|
|
33
|
+
};
|
|
34
|
+
ControllerChangeEvent: typeof ControllerChangeEvent;
|
|
35
|
+
CopyrightEvent: typeof CopyrightEvent;
|
|
36
|
+
CuePointEvent: typeof CuePointEvent;
|
|
37
|
+
EndTrackEvent: typeof EndTrackEvent;
|
|
38
|
+
InstrumentNameEvent: typeof InstrumentNameEvent;
|
|
39
|
+
KeySignatureEvent: typeof KeySignatureEvent;
|
|
40
|
+
LyricEvent: typeof LyricEvent;
|
|
41
|
+
MarkerEvent: typeof MarkerEvent;
|
|
42
|
+
NoteOnEvent: typeof NoteOnEvent;
|
|
43
|
+
NoteOffEvent: typeof NoteOffEvent;
|
|
44
|
+
NoteEvent: typeof NoteEvent;
|
|
45
|
+
PitchBendEvent: typeof PitchBendEvent;
|
|
46
|
+
ProgramChangeEvent: typeof ProgramChangeEvent;
|
|
47
|
+
TempoEvent: typeof TempoEvent;
|
|
48
|
+
TextEvent: typeof TextEvent;
|
|
49
|
+
TimeSignatureEvent: typeof TimeSignatureEvent;
|
|
50
|
+
Track: typeof Track;
|
|
51
|
+
TrackNameEvent: typeof TrackNameEvent;
|
|
52
|
+
Utils: typeof Utils;
|
|
53
|
+
VexFlow: typeof VexFlow;
|
|
54
|
+
Writer: typeof Writer;
|
|
55
|
+
};
|
|
56
|
+
export default _default;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { MetaEvent } from './meta-event';
|
|
2
|
+
/**
|
|
3
|
+
* Object representation of a tempo meta event.
|
|
4
|
+
* @param {object} fields {text: string, delta: integer}
|
|
5
|
+
* @return {CopyrightEvent}
|
|
6
|
+
*/
|
|
7
|
+
declare class CopyrightEvent implements MetaEvent {
|
|
8
|
+
data: number[];
|
|
9
|
+
delta: number;
|
|
10
|
+
name: string;
|
|
11
|
+
text: string;
|
|
12
|
+
type: 0x02;
|
|
13
|
+
constructor(fields: {
|
|
14
|
+
text: string;
|
|
15
|
+
delta?: number;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export { CopyrightEvent };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { MetaEvent } from './meta-event';
|
|
2
|
+
/**
|
|
3
|
+
* Object representation of a cue point meta event.
|
|
4
|
+
* @param {object} fields {text: string, delta: integer}
|
|
5
|
+
* @return {CuePointEvent}
|
|
6
|
+
*/
|
|
7
|
+
declare class CuePointEvent implements MetaEvent {
|
|
8
|
+
data: number[];
|
|
9
|
+
delta: number;
|
|
10
|
+
name: string;
|
|
11
|
+
text: string;
|
|
12
|
+
type: 0x07;
|
|
13
|
+
constructor(fields: {
|
|
14
|
+
text: string;
|
|
15
|
+
delta?: number;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export { CuePointEvent };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { MetaEvent } from './meta-event';
|
|
2
|
+
/**
|
|
3
|
+
* Object representation of a end track meta event.
|
|
4
|
+
* @param {object} fields {delta: integer}
|
|
5
|
+
* @return {EndTrackEvent}
|
|
6
|
+
*/
|
|
7
|
+
declare class EndTrackEvent implements MetaEvent {
|
|
8
|
+
data: number[];
|
|
9
|
+
delta: number;
|
|
10
|
+
name: string;
|
|
11
|
+
type: [0x2F, 0x00];
|
|
12
|
+
constructor(fields?: {
|
|
13
|
+
delta: number;
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
export { EndTrackEvent };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { MetaEvent } from './meta-event';
|
|
2
|
+
/**
|
|
3
|
+
* Object representation of an instrument name meta event.
|
|
4
|
+
* @param {object} fields {text: string, delta: integer}
|
|
5
|
+
* @return {InstrumentNameEvent}
|
|
6
|
+
*/
|
|
7
|
+
declare class InstrumentNameEvent implements MetaEvent {
|
|
8
|
+
data: number[];
|
|
9
|
+
delta: number;
|
|
10
|
+
name: string;
|
|
11
|
+
text: string;
|
|
12
|
+
type: 0x04;
|
|
13
|
+
constructor(fields: {
|
|
14
|
+
text: string;
|
|
15
|
+
delta?: number;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export { InstrumentNameEvent };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { MetaEvent } from './meta-event';
|
|
2
|
+
/**
|
|
3
|
+
* Object representation of a key signature meta event.
|
|
4
|
+
* @return {KeySignatureEvent}
|
|
5
|
+
*/
|
|
6
|
+
declare class KeySignatureEvent implements MetaEvent {
|
|
7
|
+
data: number[];
|
|
8
|
+
delta: number;
|
|
9
|
+
name: string;
|
|
10
|
+
type: 0x59;
|
|
11
|
+
constructor(sf: any, mi: any);
|
|
12
|
+
}
|
|
13
|
+
export { KeySignatureEvent };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { MetaEvent } from './meta-event';
|
|
2
|
+
/**
|
|
3
|
+
* Object representation of a lyric meta event.
|
|
4
|
+
* @param {object} fields {text: string, delta: integer}
|
|
5
|
+
* @return {LyricEvent}
|
|
6
|
+
*/
|
|
7
|
+
declare class LyricEvent implements MetaEvent {
|
|
8
|
+
data: number[];
|
|
9
|
+
delta: number;
|
|
10
|
+
name: string;
|
|
11
|
+
text: string;
|
|
12
|
+
type: 0x05;
|
|
13
|
+
constructor(fields: {
|
|
14
|
+
text: string;
|
|
15
|
+
delta?: number;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export { LyricEvent };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { MetaEvent } from './meta-event';
|
|
2
|
+
/**
|
|
3
|
+
* Object representation of a marker meta event.
|
|
4
|
+
* @param {object} fields {text: string, delta: integer}
|
|
5
|
+
* @return {MarkerEvent}
|
|
6
|
+
*/
|
|
7
|
+
declare class MarkerEvent implements MetaEvent {
|
|
8
|
+
data: number[];
|
|
9
|
+
delta: number;
|
|
10
|
+
name: string;
|
|
11
|
+
text: string;
|
|
12
|
+
type: 0x06;
|
|
13
|
+
constructor(fields: {
|
|
14
|
+
text: string;
|
|
15
|
+
delta?: number;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export { MarkerEvent };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { MetaEvent } from './meta-event';
|
|
2
|
+
/**
|
|
3
|
+
* Object representation of a tempo meta event.
|
|
4
|
+
* @param {object} fields {bpm: integer, delta: integer}
|
|
5
|
+
* @return {TempoEvent}
|
|
6
|
+
*/
|
|
7
|
+
declare class TempoEvent implements MetaEvent {
|
|
8
|
+
bpm: number;
|
|
9
|
+
data: number[];
|
|
10
|
+
delta: number;
|
|
11
|
+
name: string;
|
|
12
|
+
tick: number;
|
|
13
|
+
type: 0x51;
|
|
14
|
+
constructor(fields: {
|
|
15
|
+
bpm: number;
|
|
16
|
+
tick?: number;
|
|
17
|
+
delta?: number;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
export { TempoEvent };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { MetaEvent } from './meta-event';
|
|
2
|
+
/**
|
|
3
|
+
* Object representation of a tempo meta event.
|
|
4
|
+
* @param {object} fields {text: string, delta: integer}
|
|
5
|
+
* @return {TextEvent}
|
|
6
|
+
*/
|
|
7
|
+
declare class TextEvent implements MetaEvent {
|
|
8
|
+
data: number[];
|
|
9
|
+
delta: number;
|
|
10
|
+
name: string;
|
|
11
|
+
text: string;
|
|
12
|
+
type: 0x01;
|
|
13
|
+
constructor(fields: {
|
|
14
|
+
text: string;
|
|
15
|
+
delta?: number;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export { TextEvent };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { MetaEvent } from './meta-event';
|
|
2
|
+
/**
|
|
3
|
+
* Object representation of a time signature meta event.
|
|
4
|
+
* @return {TimeSignatureEvent}
|
|
5
|
+
*/
|
|
6
|
+
declare class TimeSignatureEvent implements MetaEvent {
|
|
7
|
+
data: number[];
|
|
8
|
+
delta: number;
|
|
9
|
+
name: string;
|
|
10
|
+
type: 0x58;
|
|
11
|
+
constructor(numerator: any, denominator: any, midiclockspertick: any, notespermidiclock: any);
|
|
12
|
+
}
|
|
13
|
+
export { TimeSignatureEvent };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { MetaEvent } from './meta-event';
|
|
2
|
+
/**
|
|
3
|
+
* Object representation of a tempo meta event.
|
|
4
|
+
* @param {object} fields {text: string, delta: integer}
|
|
5
|
+
* @return {TrackNameEvent}
|
|
6
|
+
*/
|
|
7
|
+
declare class TrackNameEvent implements MetaEvent {
|
|
8
|
+
data: number[];
|
|
9
|
+
delta: number;
|
|
10
|
+
name: string;
|
|
11
|
+
text: string;
|
|
12
|
+
type: 0x03;
|
|
13
|
+
constructor(fields: {
|
|
14
|
+
text: string;
|
|
15
|
+
delta?: number;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export { TrackNameEvent };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { MidiEvent } from './midi-event';
|
|
2
|
+
/**
|
|
3
|
+
* Holds all data for a "controller change" MIDI event
|
|
4
|
+
* @param {object} fields {controllerNumber: integer, controllerValue: integer, delta: integer}
|
|
5
|
+
* @return {ControllerChangeEvent}
|
|
6
|
+
*/
|
|
7
|
+
declare class ControllerChangeEvent implements MidiEvent {
|
|
8
|
+
channel: number;
|
|
9
|
+
controllerNumber: number;
|
|
10
|
+
controllerValue: number;
|
|
11
|
+
data: number[];
|
|
12
|
+
delta: number;
|
|
13
|
+
name: string;
|
|
14
|
+
status: 0xB0;
|
|
15
|
+
constructor(fields: {
|
|
16
|
+
controllerNumber: number;
|
|
17
|
+
controllerValue: number;
|
|
18
|
+
channel?: number;
|
|
19
|
+
delta?: number;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
export { ControllerChangeEvent };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { AbstractEvent } from '../abstract-event';
|
|
2
|
+
import { MidiEvent } from './midi-event';
|
|
3
|
+
/**
|
|
4
|
+
* Wrapper for noteOnEvent/noteOffEvent objects that builds both events.
|
|
5
|
+
* @param {object} fields - {pitch: '[C4]', duration: '4', wait: '4', velocity: 1-100}
|
|
6
|
+
* @return {NoteEvent}
|
|
7
|
+
*/
|
|
8
|
+
declare class NoteEvent implements AbstractEvent {
|
|
9
|
+
data: number[];
|
|
10
|
+
delta: number;
|
|
11
|
+
events: MidiEvent[];
|
|
12
|
+
name: string;
|
|
13
|
+
pitch: string[];
|
|
14
|
+
grace: string | string[];
|
|
15
|
+
channel: number;
|
|
16
|
+
repeat: number;
|
|
17
|
+
tick: number;
|
|
18
|
+
duration: string;
|
|
19
|
+
sequential: boolean;
|
|
20
|
+
wait: string;
|
|
21
|
+
velocity: number;
|
|
22
|
+
tickDuration: number;
|
|
23
|
+
restDuration: number;
|
|
24
|
+
constructor(fields: any);
|
|
25
|
+
/**
|
|
26
|
+
* Builds int array for this event.
|
|
27
|
+
* @return {NoteEvent}
|
|
28
|
+
*/
|
|
29
|
+
buildData(): NoteEvent;
|
|
30
|
+
}
|
|
31
|
+
export { NoteEvent };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { MidiEvent } from './midi-event';
|
|
2
|
+
/**
|
|
3
|
+
* Holds all data for a "note off" MIDI event
|
|
4
|
+
* @param {object} fields {data: []}
|
|
5
|
+
* @return {NoteOffEvent}
|
|
6
|
+
*/
|
|
7
|
+
declare class NoteOffEvent implements MidiEvent {
|
|
8
|
+
channel: number;
|
|
9
|
+
data: number[];
|
|
10
|
+
delta: number;
|
|
11
|
+
deltaWithPrecisionCorrection: number;
|
|
12
|
+
status: 0x80;
|
|
13
|
+
name: string;
|
|
14
|
+
velocity: number;
|
|
15
|
+
pitch: string | number;
|
|
16
|
+
duration: string | number;
|
|
17
|
+
tick: number;
|
|
18
|
+
constructor(fields: {
|
|
19
|
+
channel: number;
|
|
20
|
+
duration: string | number;
|
|
21
|
+
velocity: number;
|
|
22
|
+
pitch: string | number;
|
|
23
|
+
tick?: number;
|
|
24
|
+
data?: number[];
|
|
25
|
+
delta?: number;
|
|
26
|
+
});
|
|
27
|
+
/**
|
|
28
|
+
* Builds int array for this event.
|
|
29
|
+
* @param {Track} track - parent track
|
|
30
|
+
* @return {NoteOffEvent}
|
|
31
|
+
*/
|
|
32
|
+
buildData(track: any, precisionDelta: number, options?: {
|
|
33
|
+
middleC?: string;
|
|
34
|
+
}): this;
|
|
35
|
+
}
|
|
36
|
+
export { NoteOffEvent };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { MidiEvent } from './midi-event';
|
|
2
|
+
/**
|
|
3
|
+
* Holds all data for a "note on" MIDI event
|
|
4
|
+
* @param {object} fields {data: []}
|
|
5
|
+
* @return {NoteOnEvent}
|
|
6
|
+
*/
|
|
7
|
+
declare class NoteOnEvent implements MidiEvent {
|
|
8
|
+
channel: number;
|
|
9
|
+
data: number[];
|
|
10
|
+
delta: number;
|
|
11
|
+
status: 0x90;
|
|
12
|
+
name: string;
|
|
13
|
+
pitch: string | number;
|
|
14
|
+
velocity: number;
|
|
15
|
+
wait: string | number;
|
|
16
|
+
tick: number;
|
|
17
|
+
deltaWithPrecisionCorrection: number;
|
|
18
|
+
constructor(fields: {
|
|
19
|
+
channel?: number;
|
|
20
|
+
wait?: string | number;
|
|
21
|
+
velocity?: number;
|
|
22
|
+
pitch?: string | number;
|
|
23
|
+
tick?: number;
|
|
24
|
+
data?: number[];
|
|
25
|
+
delta?: number;
|
|
26
|
+
});
|
|
27
|
+
/**
|
|
28
|
+
* Builds int array for this event.
|
|
29
|
+
* @param {Track} track - parent track
|
|
30
|
+
* @return {NoteOnEvent}
|
|
31
|
+
*/
|
|
32
|
+
buildData(track: any, precisionDelta: any, options?: {
|
|
33
|
+
middleC?: string;
|
|
34
|
+
}): this;
|
|
35
|
+
}
|
|
36
|
+
export { NoteOnEvent };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { MidiEvent } from './midi-event';
|
|
2
|
+
/**
|
|
3
|
+
* Holds all data for a "Pitch Bend" MIDI event
|
|
4
|
+
* [ -1.0, 0, 1.0 ] -> [ 0, 8192, 16383]
|
|
5
|
+
* @param {object} fields { bend : float, channel : int, delta: int }
|
|
6
|
+
* @return {PitchBendEvent}
|
|
7
|
+
*/
|
|
8
|
+
declare class PitchBendEvent implements MidiEvent {
|
|
9
|
+
channel: number;
|
|
10
|
+
data: number[];
|
|
11
|
+
delta: number;
|
|
12
|
+
name: string;
|
|
13
|
+
status: 0xE0;
|
|
14
|
+
constructor(fields: any);
|
|
15
|
+
scale14bits(zeroOne: any): number;
|
|
16
|
+
}
|
|
17
|
+
export { PitchBendEvent };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { MidiEvent } from './midi-event';
|
|
2
|
+
/**
|
|
3
|
+
* Holds all data for a "program change" MIDI event
|
|
4
|
+
* @param {object} fields {instrument: integer, delta: integer}
|
|
5
|
+
* @return {ProgramChangeEvent}
|
|
6
|
+
*/
|
|
7
|
+
declare class ProgramChangeEvent implements MidiEvent {
|
|
8
|
+
channel: number;
|
|
9
|
+
data: number[];
|
|
10
|
+
delta: number;
|
|
11
|
+
status: 0xC0;
|
|
12
|
+
name: string;
|
|
13
|
+
instrument: number;
|
|
14
|
+
constructor(fields: {
|
|
15
|
+
channel?: number;
|
|
16
|
+
delta?: number;
|
|
17
|
+
instrument: number;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
export { ProgramChangeEvent };
|