smoosic 1.0.24 → 1.0.26

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.
Files changed (189) hide show
  1. package/build/smoosic.js +1 -1
  2. package/package.json +1 -1
  3. package/release/smoosic.js +1 -1
  4. package/release/styles/ribbon.css +5 -10
  5. package/src/application/exports.ts +1 -0
  6. package/src/styles/ribbon.css +5 -10
  7. package/types/src/application/application.d.ts +102 -102
  8. package/types/src/application/common.d.ts +74 -74
  9. package/types/src/application/configuration.d.ts +74 -74
  10. package/types/src/application/dom.d.ts +8 -8
  11. package/types/src/application/dynamicInit.d.ts +1 -1
  12. package/types/src/application/eventHandler.d.ts +78 -78
  13. package/types/src/application/exports.d.ts +494 -493
  14. package/types/src/application/generateVexTests.d.ts +10 -10
  15. package/types/src/application/keyCommands.d.ts +90 -90
  16. package/types/src/common/bootstrap.bundle.d.ts +1138 -1138
  17. package/types/src/common/htmlHelpers.d.ts +105 -105
  18. package/types/src/common/jszip.d.ts +2 -2
  19. package/types/src/common/midi-parser.d.ts +38 -38
  20. package/types/src/common/promiseHelpers.d.ts +30 -30
  21. package/types/src/common/serializationHelpers.d.ts +29 -29
  22. package/types/src/common/textformatter.d.ts +140 -140
  23. package/types/src/common/vex.d.ts +222 -222
  24. package/types/src/render/audio/musicCursor.d.ts +25 -25
  25. package/types/src/render/audio/oscillator.d.ts +98 -98
  26. package/types/src/render/audio/player.d.ts +141 -141
  27. package/types/src/render/audio/samples.d.ts +56 -56
  28. package/types/src/render/sui/configuration.d.ts +12 -12
  29. package/types/src/render/sui/formatter.d.ts +151 -151
  30. package/types/src/render/sui/layoutDebug.d.ts +43 -43
  31. package/types/src/render/sui/mapper.d.ts +116 -116
  32. package/types/src/render/sui/piano.d.ts +46 -46
  33. package/types/src/render/sui/renderState.d.ts +88 -88
  34. package/types/src/render/sui/scoreRender.d.ts +93 -93
  35. package/types/src/render/sui/scoreView.d.ts +267 -267
  36. package/types/src/render/sui/scoreViewOperations.d.ts +594 -594
  37. package/types/src/render/sui/scroller.d.ts +34 -34
  38. package/types/src/render/sui/svgHelpers.d.ts +85 -85
  39. package/types/src/render/sui/svgPageMap.d.ts +318 -318
  40. package/types/src/render/sui/textEdit.d.ts +310 -310
  41. package/types/src/render/sui/textRender.d.ts +189 -189
  42. package/types/src/render/sui/tracker.d.ts +90 -90
  43. package/types/src/render/vex/glyphDimensions.d.ts +23 -23
  44. package/types/src/render/vex/smoAdapter.d.ts +46 -46
  45. package/types/src/render/vex/toVex.d.ts +13 -13
  46. package/types/src/render/vex/vxMeasure.d.ts +95 -95
  47. package/types/src/render/vex/vxNote.d.ts +55 -55
  48. package/types/src/render/vex/vxSystem.d.ts +64 -64
  49. package/types/src/smo/data/common.d.ts +220 -220
  50. package/types/src/smo/data/measure.d.ts +510 -510
  51. package/types/src/smo/data/measureModifiers.d.ts +506 -506
  52. package/types/src/smo/data/music.d.ts +438 -438
  53. package/types/src/smo/data/note.d.ts +485 -485
  54. package/types/src/smo/data/noteModifiers.d.ts +590 -590
  55. package/types/src/smo/data/partInfo.d.ts +162 -162
  56. package/types/src/smo/data/score.d.ts +395 -395
  57. package/types/src/smo/data/scoreModifiers.d.ts +433 -433
  58. package/types/src/smo/data/scoreText.d.ts +277 -277
  59. package/types/src/smo/data/staffModifiers.d.ts +767 -767
  60. package/types/src/smo/data/systemStaff.d.ts +238 -238
  61. package/types/src/smo/data/tuplet.d.ts +146 -146
  62. package/types/src/smo/midi/midiToSmo.d.ts +198 -198
  63. package/types/src/smo/midi/smoToMidi.d.ts +23 -23
  64. package/types/src/smo/mxml/smoToXml.d.ts +165 -165
  65. package/types/src/smo/mxml/xmlHelpers.d.ts +140 -140
  66. package/types/src/smo/mxml/xmlState.d.ts +257 -257
  67. package/types/src/smo/mxml/xmlToSmo.d.ts +92 -92
  68. package/types/src/smo/xform/beamers.d.ts +46 -46
  69. package/types/src/smo/xform/copypaste.d.ts +99 -99
  70. package/types/src/smo/xform/operations.d.ts +127 -127
  71. package/types/src/smo/xform/roadmap.d.ts +70 -70
  72. package/types/src/smo/xform/selections.d.ts +153 -153
  73. package/types/src/smo/xform/tickDuration.d.ts +155 -155
  74. package/types/src/smo/xform/tickMap.d.ts +34 -34
  75. package/types/src/smo/xform/undo.d.ts +142 -142
  76. package/types/src/smo/xform/updateAudio.d.ts +9 -9
  77. package/types/src/styles/font_metrics/Commissioner-Medium-Metrics.d.ts +871 -871
  78. package/types/src/styles/font_metrics/ConcertOne-Regular.d.ts +871 -871
  79. package/types/src/styles/font_metrics/Merriweather-Regular.d.ts +871 -871
  80. package/types/src/styles/font_metrics/arial_metrics.d.ts +870 -870
  81. package/types/src/styles/font_metrics/ssp-sans-metrics.d.ts +871 -871
  82. package/types/src/styles/font_metrics/ssp-serif-metrics.d.ts +871 -871
  83. package/types/src/styles/font_metrics/times_metrics.d.ts +870 -870
  84. package/types/src/ui/buttons/button.d.ts +95 -95
  85. package/types/src/ui/buttons/collapsable.d.ts +42 -42
  86. package/types/src/ui/buttons/display.d.ts +23 -23
  87. package/types/src/ui/buttons/ribbon.d.ts +76 -76
  88. package/types/src/ui/common.d.ts +45 -45
  89. package/types/src/ui/composable/draggable.d.ts +12 -12
  90. package/types/src/ui/configuration.d.ts +31 -31
  91. package/types/src/ui/dialogs/adapter.d.ts +107 -107
  92. package/types/src/ui/dialogs/addMeasure.d.ts +20 -20
  93. package/types/src/ui/dialogs/arpeggio.d.ts +2 -2
  94. package/types/src/ui/dialogs/articulation.d.ts +2 -2
  95. package/types/src/ui/dialogs/audioSettings.d.ts +32 -32
  96. package/types/src/ui/dialogs/chordChange.d.ts +35 -35
  97. package/types/src/ui/dialogs/clefChange.d.ts +2 -2
  98. package/types/src/ui/dialogs/components/baseComponent.d.ts +158 -158
  99. package/types/src/ui/dialogs/components/button.d.ts +54 -54
  100. package/types/src/ui/dialogs/components/buttonArray.d.ts +101 -101
  101. package/types/src/ui/dialogs/components/checkdrop.d.ts +27 -27
  102. package/types/src/ui/dialogs/components/dragText.d.ts +27 -27
  103. package/types/src/ui/dialogs/components/dropdown.d.ts +78 -78
  104. package/types/src/ui/dialogs/components/fileDownload.d.ts +28 -28
  105. package/types/src/ui/dialogs/components/fontComponent.d.ts +32 -32
  106. package/types/src/ui/dialogs/components/noteText.d.ts +98 -98
  107. package/types/src/ui/dialogs/components/pitch.d.ts +95 -95
  108. package/types/src/ui/dialogs/components/rocker.d.ts +66 -66
  109. package/types/src/ui/dialogs/components/staffComponents.d.ts +77 -77
  110. package/types/src/ui/dialogs/components/textCheck.d.ts +38 -38
  111. package/types/src/ui/dialogs/components/textInPlace.d.ts +90 -90
  112. package/types/src/ui/dialogs/components/textInput.d.ts +58 -58
  113. package/types/src/ui/dialogs/components/tie.d.ts +41 -41
  114. package/types/src/ui/dialogs/components/toggle.d.ts +53 -53
  115. package/types/src/ui/dialogs/components/tree.d.ts +46 -46
  116. package/types/src/ui/dialogs/customTuplets.d.ts +25 -25
  117. package/types/src/ui/dialogs/dialog.d.ts +201 -201
  118. package/types/src/ui/dialogs/durations.d.ts +2 -2
  119. package/types/src/ui/dialogs/dynamics.d.ts +37 -37
  120. package/types/src/ui/dialogs/endings.d.ts +61 -61
  121. package/types/src/ui/dialogs/factory.d.ts +15 -15
  122. package/types/src/ui/dialogs/fileDialogs.d.ts +4 -4
  123. package/types/src/ui/dialogs/fonts.d.ts +2 -2
  124. package/types/src/ui/dialogs/globalLayout.d.ts +2 -2
  125. package/types/src/ui/dialogs/gracenote.d.ts +2 -2
  126. package/types/src/ui/dialogs/hairpin.d.ts +35 -35
  127. package/types/src/ui/dialogs/instrument.d.ts +3 -3
  128. package/types/src/ui/dialogs/keySignature.d.ts +33 -33
  129. package/types/src/ui/dialogs/library.d.ts +70 -70
  130. package/types/src/ui/dialogs/lyric.d.ts +39 -39
  131. package/types/src/ui/dialogs/measureFormat.d.ts +52 -52
  132. package/types/src/ui/dialogs/microtones.d.ts +2 -2
  133. package/types/src/ui/dialogs/noteHead.d.ts +2 -2
  134. package/types/src/ui/dialogs/ornament.d.ts +2 -2
  135. package/types/src/ui/dialogs/pageLayout.d.ts +2 -2
  136. package/types/src/ui/dialogs/partInfo.d.ts +2 -2
  137. package/types/src/ui/dialogs/pedalMarking.d.ts +35 -35
  138. package/types/src/ui/dialogs/pitch.d.ts +2 -2
  139. package/types/src/ui/dialogs/preferences.d.ts +2 -2
  140. package/types/src/ui/dialogs/scoreId.d.ts +2 -2
  141. package/types/src/ui/dialogs/scoreView.d.ts +2 -2
  142. package/types/src/ui/dialogs/slur.d.ts +57 -57
  143. package/types/src/ui/dialogs/staffGroup.d.ts +2 -2
  144. package/types/src/ui/dialogs/tabNote.d.ts +32 -32
  145. package/types/src/ui/dialogs/tabStave.d.ts +43 -43
  146. package/types/src/ui/dialogs/tempo.d.ts +50 -50
  147. package/types/src/ui/dialogs/textBlock.d.ts +61 -61
  148. package/types/src/ui/dialogs/textBracket.d.ts +35 -35
  149. package/types/src/ui/dialogs/tie.d.ts +41 -41
  150. package/types/src/ui/dialogs/timeSignature.d.ts +34 -34
  151. package/types/src/ui/dialogs/transposeScore.d.ts +2 -2
  152. package/types/src/ui/dialogs/volta.d.ts +40 -40
  153. package/types/src/ui/eventSource.d.ts +63 -63
  154. package/types/src/ui/exceptions.d.ts +12 -12
  155. package/types/src/ui/fileio/fileInput.d.ts +12 -12
  156. package/types/src/ui/fileio/library.d.ts +40 -40
  157. package/types/src/ui/fileio/xhrLoader.d.ts +18 -18
  158. package/types/src/ui/help.d.ts +22 -22
  159. package/types/src/ui/i18n/language.d.ts +37 -37
  160. package/types/src/ui/i18n/language_ar.d.ts +5 -5
  161. package/types/src/ui/i18n/language_de.d.ts +1 -1
  162. package/types/src/ui/i18n/language_en.d.ts +18 -18
  163. package/types/src/ui/i18n/translationEditor.d.ts +14 -14
  164. package/types/src/ui/keyBindings/default/editorKeys.d.ts +7 -7
  165. package/types/src/ui/keyBindings/default/trackerKeys.d.ts +7 -7
  166. package/types/src/ui/menus/beams.d.ts +13 -13
  167. package/types/src/ui/menus/edit.d.ts +8 -8
  168. package/types/src/ui/menus/file.d.ts +26 -26
  169. package/types/src/ui/menus/help.d.ts +8 -8
  170. package/types/src/ui/menus/keySignature.d.ts +13 -13
  171. package/types/src/ui/menus/language.d.ts +12 -12
  172. package/types/src/ui/menus/manager.d.ts +57 -57
  173. package/types/src/ui/menus/measure.d.ts +8 -8
  174. package/types/src/ui/menus/menu.d.ts +136 -136
  175. package/types/src/ui/menus/note.d.ts +8 -8
  176. package/types/src/ui/menus/partSelection.d.ts +19 -19
  177. package/types/src/ui/menus/parts.d.ts +50 -50
  178. package/types/src/ui/menus/score.d.ts +20 -20
  179. package/types/src/ui/menus/staffModifier.d.ts +21 -21
  180. package/types/src/ui/menus/text.d.ts +8 -8
  181. package/types/src/ui/menus/timeSignature.d.ts +12 -12
  182. package/types/src/ui/menus/tuplets.d.ts +13 -13
  183. package/types/src/ui/menus/voices.d.ts +8 -8
  184. package/types/src/ui/modalDialogs.d.ts +1 -1
  185. package/types/src/ui/navigation.d.ts +15 -15
  186. package/types/src/ui/qwerty.d.ts +41 -41
  187. package/types/src/ui/ribbonLayout/default/defaultRibbon.d.ts +15 -15
  188. package/types/src/ui/ribbonLayout/default/tabletRibbon.d.ts +22 -22
  189. package/types/typedoc.d.ts +158 -158
@@ -1,198 +1,198 @@
1
- import { Clef, Pitch } from "../data/common";
2
- import { SmoMeasure } from "../data/measure";
3
- import { SmoTempoText, TimeSignature } from "../data/measureModifiers";
4
- import { SmoNote } from "../data/note";
5
- import { SmoScore } from "../data/score";
6
- import { SmoTuplet } from "../data/tuplet";
7
- export type MidiEventType = 'text' | 'copyrightNotice' | 'trackName' | 'instrumentName' | 'lyrics' | 'marker' | 'cuePoint' | 'channelPrefix' | 'portPrefix' | 'endOfTrack' | 'setTempo' | 'smpteOffset' | 'timeSignature' | 'keySignature' | 'sequencerSpecific' | 'unknownMeta' | 'noteOff' | 'noteOn' | 'noteAftertouch' | 'controller' | 'programChange' | 'channelAftertouch' | 'pitchBend';
8
- /**
9
- * These are the midi events as defined by the parser.
10
- * @category serialization
11
- */
12
- export interface MidiTrackEvent {
13
- deltaTime: number;
14
- meta?: boolean;
15
- numerator?: number;
16
- denominator?: number;
17
- microsecondsPerBeat?: number;
18
- scale?: number;
19
- key?: number;
20
- metronome?: number;
21
- thirtyseconds?: number;
22
- type: MidiEventType;
23
- channel?: number;
24
- noteNumber?: number;
25
- velocity?: number;
26
- }
27
- /**
28
- * @category serialization
29
- */
30
- export interface RunningMetadata {
31
- keySignature: string;
32
- timeSignature: TimeSignature;
33
- tempo: SmoTempoText;
34
- }
35
- /**
36
- * @category serialization
37
- */
38
- export interface MidiNoteOn {
39
- channel: number;
40
- note: number;
41
- smoIndex: number;
42
- }
43
- /**
44
- * @category serialization
45
- */
46
- export interface MidiTupletInfo {
47
- numNotes: number;
48
- stemTicks: number;
49
- totalTicks: number;
50
- isLast: boolean;
51
- }
52
- /**
53
- * @category serialization
54
- */
55
- export interface EventSmoData {
56
- pitches: Pitch[];
57
- durationTicks: number;
58
- tupletInfo: MidiTupletInfo | null;
59
- isRest: boolean;
60
- isTied: boolean;
61
- timeSignature: TimeSignature;
62
- tempo: SmoTempoText;
63
- keySignature: string;
64
- measure: number;
65
- tick: number;
66
- }
67
- export declare function getValueForTick<T>(arg: Record<number, T>, tick: number): T;
68
- /**
69
- * Converts a JSON midi file to a {@link SmoScore}
70
- * @category serialization
71
- */
72
- export declare class MidiToSmo {
73
- timeSignatureMap: Record<number, TimeSignature>;
74
- tempoMap: Record<number, SmoTempoText>;
75
- keySignatureMap: Record<number, string>;
76
- tieMap: Record<number, number[]>;
77
- timeDivision: number;
78
- trackIndex: number;
79
- eventIndex: number;
80
- maxMeasure: number;
81
- quantizeTicks: number;
82
- eot: boolean;
83
- midiOnNotes: Record<number, MidiNoteOn[]>;
84
- midi: any;
85
- static get quantizeTicksDefault(): number;
86
- /**
87
- * Since midi has very little metadata, we don't know the original clef.
88
- * so just use the one (treble or bass) that uses the fewest ledger lines
89
- * @internal
90
- * @param notes notes in measure
91
- * @returns
92
- */
93
- static guessClefForNotes(measure: SmoMeasure): Clef;
94
- /**
95
- * Create an object to convert MIDI to a {@link SmoScore}
96
- * @param midi the output of midi parser
97
- * @param quantizeDuration ticks to quantize (1024 == 16th note)
98
- */
99
- constructor(midi: any, quantizeDuration: number);
100
- /**
101
- * @internal
102
- * @param ticks
103
- * @returns
104
- */
105
- getTempo(ticks: number): SmoTempoText;
106
- /**
107
- * @internal
108
- * @param ticks
109
- * @returns
110
- */
111
- getTimeSignature(ticks: number): TimeSignature;
112
- /**
113
- * @internal
114
- * @param ticks
115
- * @returns
116
- */
117
- getKeySignature(ticks: number): string;
118
- /**
119
- * Get metadata from the map for this point in the score
120
- * @param ticks current point in track
121
- * @returns
122
- */
123
- getMetadata(ticks: number): {
124
- tempo: SmoTempoText;
125
- timeSignature: TimeSignature;
126
- keySignature: string;
127
- };
128
- /**
129
- * We process 3 types of metadata at present: time signature, tempo and keysignature.
130
- * @param trackEvent
131
- * @param ticks
132
- */
133
- handleMetadata(trackEvent: MidiTrackEvent, ticks: number): void;
134
- /**
135
- * Convert from Midi PPQ to Smoosic (and vex) ticks
136
- * @internal
137
- */
138
- getSmoTicks(midiTicks: number): number;
139
- /**
140
- * @internal
141
- */
142
- createNewEvent(metadata: RunningMetadata): EventSmoData;
143
- /**
144
- * @internal
145
- */
146
- static copyEvent(o: EventSmoData): EventSmoData;
147
- /**
148
- * @internal
149
- */
150
- addToTieMap(measureIndex: number): void;
151
- /**
152
- * Step 3 in the 3-step process. Quantize the note durations and convert the midi
153
- * event into SmoNotes.
154
- * @param events
155
- * @returns
156
- */
157
- createNotesFromEvents(events: EventSmoData[]): SmoMeasure[];
158
- adjustTupletNotes(notes: SmoNote[], tuplet: SmoTuplet): void;
159
- /**
160
- * @param ticks
161
- * @returns the length in ticks of a triplet, if this looks like a triplet. Otherwise 0
162
- */
163
- tripletType(ticks: number): number;
164
- /**
165
- * step 2 in the 3 step process. Divide the music up into measures based on
166
- * tick duration. If there are events overlapping measures, create extra events in the
167
- * new measure (hence the expand) and shorten the original event
168
- * @param events
169
- * @returns
170
- */
171
- expandMidiEvents(events: EventSmoData[]): EventSmoData[];
172
- /**
173
- * Store midi on events. If the midi on or off matches an existing
174
- * stored event based on channel and note, return it so it can be processed
175
- * @param ev raw event
176
- * @param evIndex index of processed events
177
- * @returns
178
- */
179
- pushPopMidiEvent(ev: MidiTrackEvent, evIndex: number): MidiNoteOn | null;
180
- /**
181
- * Step 1 in the 3-step process. Collapse midi events into
182
- * a single EventSmoData for each distinct tick that contains
183
- * the metadata state, a duration, and note information.
184
- * @param trackEvents
185
- * @returns
186
- */
187
- collapseMidiEvents(trackEvents: MidiTrackEvent[]): EventSmoData[];
188
- getTrackData(midi: any): any;
189
- /**
190
- * Convert the midi to a score as best we can. The conversion is made via a 3-step
191
- * process.
192
- * 1. consolidate all the MIDI events into individual note on/off events with a duration
193
- * 2. adjust the durations so the fit in with Smoosic measure lengths.
194
- * 3. Create the {@link SmoNote} objects from the events.
195
- * @returns
196
- */
197
- convert(): SmoScore;
198
- }
1
+ import { Clef, Pitch } from "../data/common";
2
+ import { SmoMeasure } from "../data/measure";
3
+ import { SmoTempoText, TimeSignature } from "../data/measureModifiers";
4
+ import { SmoNote } from "../data/note";
5
+ import { SmoScore } from "../data/score";
6
+ import { SmoTuplet } from "../data/tuplet";
7
+ export type MidiEventType = 'text' | 'copyrightNotice' | 'trackName' | 'instrumentName' | 'lyrics' | 'marker' | 'cuePoint' | 'channelPrefix' | 'portPrefix' | 'endOfTrack' | 'setTempo' | 'smpteOffset' | 'timeSignature' | 'keySignature' | 'sequencerSpecific' | 'unknownMeta' | 'noteOff' | 'noteOn' | 'noteAftertouch' | 'controller' | 'programChange' | 'channelAftertouch' | 'pitchBend';
8
+ /**
9
+ * These are the midi events as defined by the parser.
10
+ * @category serialization
11
+ */
12
+ export interface MidiTrackEvent {
13
+ deltaTime: number;
14
+ meta?: boolean;
15
+ numerator?: number;
16
+ denominator?: number;
17
+ microsecondsPerBeat?: number;
18
+ scale?: number;
19
+ key?: number;
20
+ metronome?: number;
21
+ thirtyseconds?: number;
22
+ type: MidiEventType;
23
+ channel?: number;
24
+ noteNumber?: number;
25
+ velocity?: number;
26
+ }
27
+ /**
28
+ * @category serialization
29
+ */
30
+ export interface RunningMetadata {
31
+ keySignature: string;
32
+ timeSignature: TimeSignature;
33
+ tempo: SmoTempoText;
34
+ }
35
+ /**
36
+ * @category serialization
37
+ */
38
+ export interface MidiNoteOn {
39
+ channel: number;
40
+ note: number;
41
+ smoIndex: number;
42
+ }
43
+ /**
44
+ * @category serialization
45
+ */
46
+ export interface MidiTupletInfo {
47
+ numNotes: number;
48
+ stemTicks: number;
49
+ totalTicks: number;
50
+ isLast: boolean;
51
+ }
52
+ /**
53
+ * @category serialization
54
+ */
55
+ export interface EventSmoData {
56
+ pitches: Pitch[];
57
+ durationTicks: number;
58
+ tupletInfo: MidiTupletInfo | null;
59
+ isRest: boolean;
60
+ isTied: boolean;
61
+ timeSignature: TimeSignature;
62
+ tempo: SmoTempoText;
63
+ keySignature: string;
64
+ measure: number;
65
+ tick: number;
66
+ }
67
+ export declare function getValueForTick<T>(arg: Record<number, T>, tick: number): T;
68
+ /**
69
+ * Converts a JSON midi file to a {@link SmoScore}
70
+ * @category serialization
71
+ */
72
+ export declare class MidiToSmo {
73
+ timeSignatureMap: Record<number, TimeSignature>;
74
+ tempoMap: Record<number, SmoTempoText>;
75
+ keySignatureMap: Record<number, string>;
76
+ tieMap: Record<number, number[]>;
77
+ timeDivision: number;
78
+ trackIndex: number;
79
+ eventIndex: number;
80
+ maxMeasure: number;
81
+ quantizeTicks: number;
82
+ eot: boolean;
83
+ midiOnNotes: Record<number, MidiNoteOn[]>;
84
+ midi: any;
85
+ static get quantizeTicksDefault(): number;
86
+ /**
87
+ * Since midi has very little metadata, we don't know the original clef.
88
+ * so just use the one (treble or bass) that uses the fewest ledger lines
89
+ * @internal
90
+ * @param notes notes in measure
91
+ * @returns
92
+ */
93
+ static guessClefForNotes(measure: SmoMeasure): Clef;
94
+ /**
95
+ * Create an object to convert MIDI to a {@link SmoScore}
96
+ * @param midi the output of midi parser
97
+ * @param quantizeDuration ticks to quantize (1024 == 16th note)
98
+ */
99
+ constructor(midi: any, quantizeDuration: number);
100
+ /**
101
+ * @internal
102
+ * @param ticks
103
+ * @returns
104
+ */
105
+ getTempo(ticks: number): SmoTempoText;
106
+ /**
107
+ * @internal
108
+ * @param ticks
109
+ * @returns
110
+ */
111
+ getTimeSignature(ticks: number): TimeSignature;
112
+ /**
113
+ * @internal
114
+ * @param ticks
115
+ * @returns
116
+ */
117
+ getKeySignature(ticks: number): string;
118
+ /**
119
+ * Get metadata from the map for this point in the score
120
+ * @param ticks current point in track
121
+ * @returns
122
+ */
123
+ getMetadata(ticks: number): {
124
+ tempo: SmoTempoText;
125
+ timeSignature: TimeSignature;
126
+ keySignature: string;
127
+ };
128
+ /**
129
+ * We process 3 types of metadata at present: time signature, tempo and keysignature.
130
+ * @param trackEvent
131
+ * @param ticks
132
+ */
133
+ handleMetadata(trackEvent: MidiTrackEvent, ticks: number): void;
134
+ /**
135
+ * Convert from Midi PPQ to Smoosic (and vex) ticks
136
+ * @internal
137
+ */
138
+ getSmoTicks(midiTicks: number): number;
139
+ /**
140
+ * @internal
141
+ */
142
+ createNewEvent(metadata: RunningMetadata): EventSmoData;
143
+ /**
144
+ * @internal
145
+ */
146
+ static copyEvent(o: EventSmoData): EventSmoData;
147
+ /**
148
+ * @internal
149
+ */
150
+ addToTieMap(measureIndex: number): void;
151
+ /**
152
+ * Step 3 in the 3-step process. Quantize the note durations and convert the midi
153
+ * event into SmoNotes.
154
+ * @param events
155
+ * @returns
156
+ */
157
+ createNotesFromEvents(events: EventSmoData[]): SmoMeasure[];
158
+ adjustTupletNotes(notes: SmoNote[], tuplet: SmoTuplet): void;
159
+ /**
160
+ * @param ticks
161
+ * @returns the length in ticks of a triplet, if this looks like a triplet. Otherwise 0
162
+ */
163
+ tripletType(ticks: number): number;
164
+ /**
165
+ * step 2 in the 3 step process. Divide the music up into measures based on
166
+ * tick duration. If there are events overlapping measures, create extra events in the
167
+ * new measure (hence the expand) and shorten the original event
168
+ * @param events
169
+ * @returns
170
+ */
171
+ expandMidiEvents(events: EventSmoData[]): EventSmoData[];
172
+ /**
173
+ * Store midi on events. If the midi on or off matches an existing
174
+ * stored event based on channel and note, return it so it can be processed
175
+ * @param ev raw event
176
+ * @param evIndex index of processed events
177
+ * @returns
178
+ */
179
+ pushPopMidiEvent(ev: MidiTrackEvent, evIndex: number): MidiNoteOn | null;
180
+ /**
181
+ * Step 1 in the 3-step process. Collapse midi events into
182
+ * a single EventSmoData for each distinct tick that contains
183
+ * the metadata state, a duration, and note information.
184
+ * @param trackEvents
185
+ * @returns
186
+ */
187
+ collapseMidiEvents(trackEvents: MidiTrackEvent[]): EventSmoData[];
188
+ getTrackData(midi: any): any;
189
+ /**
190
+ * Convert the midi to a score as best we can. The conversion is made via a 3-step
191
+ * process.
192
+ * 1. consolidate all the MIDI events into individual note on/off events with a duration
193
+ * 2. adjust the durations so the fit in with Smoosic measure lengths.
194
+ * 3. Create the {@link SmoNote} objects from the events.
195
+ * @returns
196
+ */
197
+ convert(): SmoScore;
198
+ }
@@ -1,23 +1,23 @@
1
- import { TimeSignature, SmoTempoText } from '../data/measureModifiers';
2
- import { SmoScore } from '../data/score';
3
- /**
4
- * @category serialization
5
- */
6
- export interface MidiTrackHash {
7
- track: any;
8
- lastMeasure: number;
9
- timeSignature?: TimeSignature;
10
- tempo?: SmoTempoText;
11
- keySignature?: string;
12
- }
13
- /**
14
- * Convert a {@link SmoScore} object to MIDI
15
- * @category serialization
16
- */
17
- export declare class SmoToMidi {
18
- /**
19
- * @param score
20
- * @returns Midi byte array that can be sent to a file upload widget
21
- */
22
- static convert(score: SmoScore): Uint8Array<ArrayBufferLike>;
23
- }
1
+ import { TimeSignature, SmoTempoText } from '../data/measureModifiers';
2
+ import { SmoScore } from '../data/score';
3
+ /**
4
+ * @category serialization
5
+ */
6
+ export interface MidiTrackHash {
7
+ track: any;
8
+ lastMeasure: number;
9
+ timeSignature?: TimeSignature;
10
+ tempo?: SmoTempoText;
11
+ keySignature?: string;
12
+ }
13
+ /**
14
+ * Convert a {@link SmoScore} object to MIDI
15
+ * @category serialization
16
+ */
17
+ export declare class SmoToMidi {
18
+ /**
19
+ * @param score
20
+ * @returns Midi byte array that can be sent to a file upload widget
21
+ */
22
+ static convert(score: SmoScore): Uint8Array<ArrayBufferLike>;
23
+ }