smoosic 1.0.25 → 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 (187) hide show
  1. package/build/smoosic.js +1 -1
  2. package/package.json +1 -1
  3. package/release/smoosic.js +1 -1
  4. package/src/application/exports.ts +1 -0
  5. package/types/src/application/application.d.ts +102 -102
  6. package/types/src/application/common.d.ts +74 -74
  7. package/types/src/application/configuration.d.ts +74 -74
  8. package/types/src/application/dom.d.ts +8 -8
  9. package/types/src/application/dynamicInit.d.ts +1 -1
  10. package/types/src/application/eventHandler.d.ts +78 -78
  11. package/types/src/application/exports.d.ts +494 -493
  12. package/types/src/application/generateVexTests.d.ts +10 -10
  13. package/types/src/application/keyCommands.d.ts +90 -90
  14. package/types/src/common/bootstrap.bundle.d.ts +1138 -1138
  15. package/types/src/common/htmlHelpers.d.ts +105 -105
  16. package/types/src/common/jszip.d.ts +2 -2
  17. package/types/src/common/midi-parser.d.ts +38 -38
  18. package/types/src/common/promiseHelpers.d.ts +30 -30
  19. package/types/src/common/serializationHelpers.d.ts +29 -29
  20. package/types/src/common/textformatter.d.ts +140 -140
  21. package/types/src/common/vex.d.ts +222 -222
  22. package/types/src/render/audio/musicCursor.d.ts +25 -25
  23. package/types/src/render/audio/oscillator.d.ts +98 -98
  24. package/types/src/render/audio/player.d.ts +141 -141
  25. package/types/src/render/audio/samples.d.ts +56 -56
  26. package/types/src/render/sui/configuration.d.ts +12 -12
  27. package/types/src/render/sui/formatter.d.ts +151 -151
  28. package/types/src/render/sui/layoutDebug.d.ts +43 -43
  29. package/types/src/render/sui/mapper.d.ts +116 -116
  30. package/types/src/render/sui/piano.d.ts +46 -46
  31. package/types/src/render/sui/renderState.d.ts +88 -88
  32. package/types/src/render/sui/scoreRender.d.ts +93 -93
  33. package/types/src/render/sui/scoreView.d.ts +267 -267
  34. package/types/src/render/sui/scoreViewOperations.d.ts +594 -594
  35. package/types/src/render/sui/scroller.d.ts +34 -34
  36. package/types/src/render/sui/svgHelpers.d.ts +85 -85
  37. package/types/src/render/sui/svgPageMap.d.ts +318 -318
  38. package/types/src/render/sui/textEdit.d.ts +310 -310
  39. package/types/src/render/sui/textRender.d.ts +189 -189
  40. package/types/src/render/sui/tracker.d.ts +90 -90
  41. package/types/src/render/vex/glyphDimensions.d.ts +23 -23
  42. package/types/src/render/vex/smoAdapter.d.ts +46 -46
  43. package/types/src/render/vex/toVex.d.ts +13 -13
  44. package/types/src/render/vex/vxMeasure.d.ts +95 -95
  45. package/types/src/render/vex/vxNote.d.ts +55 -55
  46. package/types/src/render/vex/vxSystem.d.ts +64 -64
  47. package/types/src/smo/data/common.d.ts +220 -220
  48. package/types/src/smo/data/measure.d.ts +510 -510
  49. package/types/src/smo/data/measureModifiers.d.ts +506 -506
  50. package/types/src/smo/data/music.d.ts +438 -438
  51. package/types/src/smo/data/note.d.ts +485 -485
  52. package/types/src/smo/data/noteModifiers.d.ts +590 -590
  53. package/types/src/smo/data/partInfo.d.ts +162 -162
  54. package/types/src/smo/data/score.d.ts +395 -395
  55. package/types/src/smo/data/scoreModifiers.d.ts +433 -433
  56. package/types/src/smo/data/scoreText.d.ts +277 -277
  57. package/types/src/smo/data/staffModifiers.d.ts +767 -767
  58. package/types/src/smo/data/systemStaff.d.ts +238 -238
  59. package/types/src/smo/data/tuplet.d.ts +146 -146
  60. package/types/src/smo/midi/midiToSmo.d.ts +198 -198
  61. package/types/src/smo/midi/smoToMidi.d.ts +23 -23
  62. package/types/src/smo/mxml/smoToXml.d.ts +165 -165
  63. package/types/src/smo/mxml/xmlHelpers.d.ts +140 -140
  64. package/types/src/smo/mxml/xmlState.d.ts +257 -257
  65. package/types/src/smo/mxml/xmlToSmo.d.ts +92 -92
  66. package/types/src/smo/xform/beamers.d.ts +46 -46
  67. package/types/src/smo/xform/copypaste.d.ts +99 -99
  68. package/types/src/smo/xform/operations.d.ts +127 -127
  69. package/types/src/smo/xform/roadmap.d.ts +70 -70
  70. package/types/src/smo/xform/selections.d.ts +153 -153
  71. package/types/src/smo/xform/tickDuration.d.ts +155 -155
  72. package/types/src/smo/xform/tickMap.d.ts +34 -34
  73. package/types/src/smo/xform/undo.d.ts +142 -142
  74. package/types/src/smo/xform/updateAudio.d.ts +9 -9
  75. package/types/src/styles/font_metrics/Commissioner-Medium-Metrics.d.ts +871 -871
  76. package/types/src/styles/font_metrics/ConcertOne-Regular.d.ts +871 -871
  77. package/types/src/styles/font_metrics/Merriweather-Regular.d.ts +871 -871
  78. package/types/src/styles/font_metrics/arial_metrics.d.ts +870 -870
  79. package/types/src/styles/font_metrics/ssp-sans-metrics.d.ts +871 -871
  80. package/types/src/styles/font_metrics/ssp-serif-metrics.d.ts +871 -871
  81. package/types/src/styles/font_metrics/times_metrics.d.ts +870 -870
  82. package/types/src/ui/buttons/button.d.ts +95 -95
  83. package/types/src/ui/buttons/collapsable.d.ts +42 -42
  84. package/types/src/ui/buttons/display.d.ts +23 -23
  85. package/types/src/ui/buttons/ribbon.d.ts +76 -76
  86. package/types/src/ui/common.d.ts +45 -45
  87. package/types/src/ui/composable/draggable.d.ts +12 -12
  88. package/types/src/ui/configuration.d.ts +31 -31
  89. package/types/src/ui/dialogs/adapter.d.ts +107 -107
  90. package/types/src/ui/dialogs/addMeasure.d.ts +20 -20
  91. package/types/src/ui/dialogs/arpeggio.d.ts +2 -2
  92. package/types/src/ui/dialogs/articulation.d.ts +2 -2
  93. package/types/src/ui/dialogs/audioSettings.d.ts +32 -32
  94. package/types/src/ui/dialogs/chordChange.d.ts +35 -35
  95. package/types/src/ui/dialogs/clefChange.d.ts +2 -2
  96. package/types/src/ui/dialogs/components/baseComponent.d.ts +158 -158
  97. package/types/src/ui/dialogs/components/button.d.ts +54 -54
  98. package/types/src/ui/dialogs/components/buttonArray.d.ts +101 -101
  99. package/types/src/ui/dialogs/components/checkdrop.d.ts +27 -27
  100. package/types/src/ui/dialogs/components/dragText.d.ts +27 -27
  101. package/types/src/ui/dialogs/components/dropdown.d.ts +78 -78
  102. package/types/src/ui/dialogs/components/fileDownload.d.ts +28 -28
  103. package/types/src/ui/dialogs/components/fontComponent.d.ts +32 -32
  104. package/types/src/ui/dialogs/components/noteText.d.ts +98 -98
  105. package/types/src/ui/dialogs/components/pitch.d.ts +95 -95
  106. package/types/src/ui/dialogs/components/rocker.d.ts +66 -66
  107. package/types/src/ui/dialogs/components/staffComponents.d.ts +77 -77
  108. package/types/src/ui/dialogs/components/textCheck.d.ts +38 -38
  109. package/types/src/ui/dialogs/components/textInPlace.d.ts +90 -90
  110. package/types/src/ui/dialogs/components/textInput.d.ts +58 -58
  111. package/types/src/ui/dialogs/components/tie.d.ts +41 -41
  112. package/types/src/ui/dialogs/components/toggle.d.ts +53 -53
  113. package/types/src/ui/dialogs/components/tree.d.ts +46 -46
  114. package/types/src/ui/dialogs/customTuplets.d.ts +25 -25
  115. package/types/src/ui/dialogs/dialog.d.ts +201 -201
  116. package/types/src/ui/dialogs/durations.d.ts +2 -2
  117. package/types/src/ui/dialogs/dynamics.d.ts +37 -37
  118. package/types/src/ui/dialogs/endings.d.ts +61 -61
  119. package/types/src/ui/dialogs/factory.d.ts +15 -15
  120. package/types/src/ui/dialogs/fileDialogs.d.ts +4 -4
  121. package/types/src/ui/dialogs/fonts.d.ts +2 -2
  122. package/types/src/ui/dialogs/globalLayout.d.ts +2 -2
  123. package/types/src/ui/dialogs/gracenote.d.ts +2 -2
  124. package/types/src/ui/dialogs/hairpin.d.ts +35 -35
  125. package/types/src/ui/dialogs/instrument.d.ts +3 -3
  126. package/types/src/ui/dialogs/keySignature.d.ts +33 -33
  127. package/types/src/ui/dialogs/library.d.ts +70 -70
  128. package/types/src/ui/dialogs/lyric.d.ts +39 -39
  129. package/types/src/ui/dialogs/measureFormat.d.ts +52 -52
  130. package/types/src/ui/dialogs/microtones.d.ts +2 -2
  131. package/types/src/ui/dialogs/noteHead.d.ts +2 -2
  132. package/types/src/ui/dialogs/ornament.d.ts +2 -2
  133. package/types/src/ui/dialogs/pageLayout.d.ts +2 -2
  134. package/types/src/ui/dialogs/partInfo.d.ts +2 -2
  135. package/types/src/ui/dialogs/pedalMarking.d.ts +35 -35
  136. package/types/src/ui/dialogs/pitch.d.ts +2 -2
  137. package/types/src/ui/dialogs/preferences.d.ts +2 -2
  138. package/types/src/ui/dialogs/scoreId.d.ts +2 -2
  139. package/types/src/ui/dialogs/scoreView.d.ts +2 -2
  140. package/types/src/ui/dialogs/slur.d.ts +57 -57
  141. package/types/src/ui/dialogs/staffGroup.d.ts +2 -2
  142. package/types/src/ui/dialogs/tabNote.d.ts +32 -32
  143. package/types/src/ui/dialogs/tabStave.d.ts +43 -43
  144. package/types/src/ui/dialogs/tempo.d.ts +50 -50
  145. package/types/src/ui/dialogs/textBlock.d.ts +61 -61
  146. package/types/src/ui/dialogs/textBracket.d.ts +35 -35
  147. package/types/src/ui/dialogs/tie.d.ts +41 -41
  148. package/types/src/ui/dialogs/timeSignature.d.ts +34 -34
  149. package/types/src/ui/dialogs/transposeScore.d.ts +2 -2
  150. package/types/src/ui/dialogs/volta.d.ts +40 -40
  151. package/types/src/ui/eventSource.d.ts +63 -63
  152. package/types/src/ui/exceptions.d.ts +12 -12
  153. package/types/src/ui/fileio/fileInput.d.ts +12 -12
  154. package/types/src/ui/fileio/library.d.ts +40 -40
  155. package/types/src/ui/fileio/xhrLoader.d.ts +18 -18
  156. package/types/src/ui/help.d.ts +22 -22
  157. package/types/src/ui/i18n/language.d.ts +37 -37
  158. package/types/src/ui/i18n/language_ar.d.ts +5 -5
  159. package/types/src/ui/i18n/language_de.d.ts +1 -1
  160. package/types/src/ui/i18n/language_en.d.ts +18 -18
  161. package/types/src/ui/i18n/translationEditor.d.ts +14 -14
  162. package/types/src/ui/keyBindings/default/editorKeys.d.ts +7 -7
  163. package/types/src/ui/keyBindings/default/trackerKeys.d.ts +7 -7
  164. package/types/src/ui/menus/beams.d.ts +13 -13
  165. package/types/src/ui/menus/edit.d.ts +8 -8
  166. package/types/src/ui/menus/file.d.ts +26 -26
  167. package/types/src/ui/menus/help.d.ts +8 -8
  168. package/types/src/ui/menus/keySignature.d.ts +13 -13
  169. package/types/src/ui/menus/language.d.ts +12 -12
  170. package/types/src/ui/menus/manager.d.ts +57 -57
  171. package/types/src/ui/menus/measure.d.ts +8 -8
  172. package/types/src/ui/menus/menu.d.ts +136 -136
  173. package/types/src/ui/menus/note.d.ts +8 -8
  174. package/types/src/ui/menus/partSelection.d.ts +19 -19
  175. package/types/src/ui/menus/parts.d.ts +50 -50
  176. package/types/src/ui/menus/score.d.ts +20 -20
  177. package/types/src/ui/menus/staffModifier.d.ts +21 -21
  178. package/types/src/ui/menus/text.d.ts +8 -8
  179. package/types/src/ui/menus/timeSignature.d.ts +12 -12
  180. package/types/src/ui/menus/tuplets.d.ts +13 -13
  181. package/types/src/ui/menus/voices.d.ts +8 -8
  182. package/types/src/ui/modalDialogs.d.ts +1 -1
  183. package/types/src/ui/navigation.d.ts +15 -15
  184. package/types/src/ui/qwerty.d.ts +41 -41
  185. package/types/src/ui/ribbonLayout/default/defaultRibbon.d.ts +15 -15
  186. package/types/src/ui/ribbonLayout/default/tabletRibbon.d.ts +22 -22
  187. package/types/typedoc.d.ts +158 -158
@@ -1,98 +1,98 @@
1
- import { SmoMeasure } from '../../smo/data/measure';
2
- import { SmoNote } from '../../smo/data/note';
3
- import { SmoSelection } from '../../smo/xform/selections';
4
- import { SmoScore } from '../../smo/data/score';
5
- import { SmoInstrument } from '../../smo/data/staffModifiers';
6
- import { Soundfont } from 'smplr';
7
- /**
8
- * Create audio reverb node.
9
- * @category SuiAudio
10
- */
11
- export declare class SuiReverb {
12
- static get defaults(): {
13
- length: number;
14
- decay: number;
15
- };
16
- static impulse: AudioBuffer | null;
17
- connect(destination: AudioNode): void;
18
- disconnect(): void;
19
- _buildImpulse(): void;
20
- output: ConvolverNode;
21
- input: ConvolverNode;
22
- length: number;
23
- decay: number;
24
- damp: number;
25
- reverse: boolean;
26
- _context: AudioContext;
27
- constructor(context: AudioContext);
28
- }
29
- /**
30
- * Audio custom osc node. Not used much.
31
- */
32
- export interface WaveTable {
33
- real: number[];
34
- imaginary: number[];
35
- }
36
- /**
37
- * Parameters to create an oscillator for a single note of music
38
- * @category SuiAudio
39
- */
40
- export interface SuiOscillatorParams {
41
- duration: number;
42
- delayTime: number;
43
- frequency: number;
44
- detune?: number;
45
- attackEnv: number;
46
- decayEnv: number;
47
- sustainEnv: number;
48
- releaseEnv: number;
49
- sustainLevel: number;
50
- releaseLevel: number;
51
- waveform: OscillatorType;
52
- gain: number;
53
- wavetable?: WaveTable;
54
- useReverb: boolean;
55
- instrument: string;
56
- }
57
- export declare const SynthWavetable: WaveTable;
58
- /**
59
- * Simple waveform synthesizer thing that plays notes. Oscillator works in either
60
- * analog synthisizer or sampler mode.
61
- * @category SuiAudio
62
- */
63
- export declare abstract class SuiOscillator {
64
- abstract play(): void;
65
- static get defaults(): SuiOscillatorParams;
66
- static audio: AudioContext;
67
- duration: number;
68
- constructor(params: SuiOscillatorParams);
69
- /**
70
- * Generate a tone from a note selected or added
71
- * @param measure
72
- * @param note
73
- * @param score
74
- * @param instrument
75
- * @param gain
76
- * @returns
77
- */
78
- static fromNote(measure: SmoMeasure, note: SmoNote, score: SmoScore, instrument: SmoInstrument, gain: number): SuiOscillator[];
79
- static playSelectionNow(selection: SmoSelection, score: SmoScore, gain: number): void;
80
- }
81
- export declare class SuiOscillatorSoundfont extends SuiOscillator {
82
- instrument: string;
83
- samples: Soundfont;
84
- midinumber: number;
85
- offset: number;
86
- velocity: number;
87
- delayTime: number;
88
- detune: number;
89
- constructor(params: SuiOscillatorParams);
90
- play(): void;
91
- }
92
- /**
93
- * An audio output primitive that uses frequency-adjusted sampled sounds
94
- * @category SuiAudio
95
- */
96
- export declare class SuiSampler extends SuiOscillatorSoundfont {
97
- constructor(params: SuiOscillatorParams);
98
- }
1
+ import { SmoMeasure } from '../../smo/data/measure';
2
+ import { SmoNote } from '../../smo/data/note';
3
+ import { SmoSelection } from '../../smo/xform/selections';
4
+ import { SmoScore } from '../../smo/data/score';
5
+ import { SmoInstrument } from '../../smo/data/staffModifiers';
6
+ import { Soundfont } from 'smplr';
7
+ /**
8
+ * Create audio reverb node.
9
+ * @category SuiAudio
10
+ */
11
+ export declare class SuiReverb {
12
+ static get defaults(): {
13
+ length: number;
14
+ decay: number;
15
+ };
16
+ static impulse: AudioBuffer | null;
17
+ connect(destination: AudioNode): void;
18
+ disconnect(): void;
19
+ _buildImpulse(): void;
20
+ output: ConvolverNode;
21
+ input: ConvolverNode;
22
+ length: number;
23
+ decay: number;
24
+ damp: number;
25
+ reverse: boolean;
26
+ _context: AudioContext;
27
+ constructor(context: AudioContext);
28
+ }
29
+ /**
30
+ * Audio custom osc node. Not used much.
31
+ */
32
+ export interface WaveTable {
33
+ real: number[];
34
+ imaginary: number[];
35
+ }
36
+ /**
37
+ * Parameters to create an oscillator for a single note of music
38
+ * @category SuiAudio
39
+ */
40
+ export interface SuiOscillatorParams {
41
+ duration: number;
42
+ delayTime: number;
43
+ frequency: number;
44
+ detune?: number;
45
+ attackEnv: number;
46
+ decayEnv: number;
47
+ sustainEnv: number;
48
+ releaseEnv: number;
49
+ sustainLevel: number;
50
+ releaseLevel: number;
51
+ waveform: OscillatorType;
52
+ gain: number;
53
+ wavetable?: WaveTable;
54
+ useReverb: boolean;
55
+ instrument: string;
56
+ }
57
+ export declare const SynthWavetable: WaveTable;
58
+ /**
59
+ * Simple waveform synthesizer thing that plays notes. Oscillator works in either
60
+ * analog synthisizer or sampler mode.
61
+ * @category SuiAudio
62
+ */
63
+ export declare abstract class SuiOscillator {
64
+ abstract play(): void;
65
+ static get defaults(): SuiOscillatorParams;
66
+ static audio: AudioContext;
67
+ duration: number;
68
+ constructor(params: SuiOscillatorParams);
69
+ /**
70
+ * Generate a tone from a note selected or added
71
+ * @param measure
72
+ * @param note
73
+ * @param score
74
+ * @param instrument
75
+ * @param gain
76
+ * @returns
77
+ */
78
+ static fromNote(measure: SmoMeasure, note: SmoNote, score: SmoScore, instrument: SmoInstrument, gain: number): SuiOscillator[];
79
+ static playSelectionNow(selection: SmoSelection, score: SmoScore, gain: number): void;
80
+ }
81
+ export declare class SuiOscillatorSoundfont extends SuiOscillator {
82
+ instrument: string;
83
+ samples: Soundfont;
84
+ midinumber: number;
85
+ offset: number;
86
+ velocity: number;
87
+ delayTime: number;
88
+ detune: number;
89
+ constructor(params: SuiOscillatorParams);
90
+ play(): void;
91
+ }
92
+ /**
93
+ * An audio output primitive that uses frequency-adjusted sampled sounds
94
+ * @category SuiAudio
95
+ */
96
+ export declare class SuiSampler extends SuiOscillatorSoundfont {
97
+ constructor(params: SuiOscillatorParams);
98
+ }
@@ -1,141 +1,141 @@
1
- import { SuiOscillator } from './oscillator';
2
- import { SuiScoreView } from '../sui/scoreView';
3
- import { SmoScore } from '../../smo/data/score';
4
- import { SmoSelector } from '../../smo/xform/selections';
5
- import { SuiAudioAnimationParams } from './musicCursor';
6
- /**
7
- * Create audio player for the score from the start point
8
- * @category SuiAudio
9
- */
10
- export interface SuiAudioPlayerParams {
11
- startIndex: number;
12
- view: SuiScoreView;
13
- score: SmoScore;
14
- audioAnimation: SuiAudioAnimationParams;
15
- }
16
- export interface midiFrequency {
17
- midinumber: number;
18
- detune: number;
19
- }
20
- export interface OscAudioData {
21
- pitches: midiFrequency[];
22
- duration: number;
23
- durationPct: number;
24
- delay: number;
25
- }
26
- /**
27
- * Parameters used to create just-in-time oscillators
28
- * @category SuiAudio
29
- */
30
- export interface SoundParams {
31
- frequencies: OscAudioData[];
32
- overallDuration: number;
33
- volume: number;
34
- noteType: string;
35
- instrument: string;
36
- selector: SmoSelector;
37
- }
38
- /**
39
- * A list of sound parameters for just-in-time oscillator creation
40
- * @category SuiAudio
41
- */
42
- export interface SoundParamMeasureLink {
43
- soundParams: Record<number, SoundParams[]>;
44
- endTicks: number;
45
- measureIndex: number;
46
- next: SoundParamMeasureLink | null;
47
- }
48
- /**
49
- * A set of oscillators to be played at a certain time.
50
- * @category SuiAudio
51
- */
52
- export interface CuedAudioContext {
53
- oscs: SuiOscillator[];
54
- playMeasureIndex: number;
55
- playTickIndex: number;
56
- waitTime: number;
57
- offsetPct: number;
58
- durationPct: number;
59
- selector: SmoSelector;
60
- }
61
- /**
62
- * A list of oscillators. We keep them in a list until played so we
63
- * can GC them if playing is cancelled
64
- * @category SuiAudio
65
- */
66
- export interface CuedAudioLink {
67
- sound: CuedAudioContext;
68
- next: CuedAudioLink | null;
69
- }
70
- /**
71
- * Maintain a list of buffers ready to play, since this is a
72
- * system resource.
73
- * @category SuiAudio
74
- */
75
- export declare class CuedAudioContexts {
76
- soundHead: CuedAudioLink | null;
77
- soundTail: CuedAudioLink | null;
78
- paramLinkHead: SoundParamMeasureLink | null;
79
- paramLinkTail: SoundParamMeasureLink | null;
80
- soundListLength: number;
81
- playWaitTimer: number;
82
- complete: boolean;
83
- addToTail(cuedSound: CuedAudioContext): void;
84
- advanceHead(): CuedAudioContext | null;
85
- get soundCount(): number;
86
- reset(): void;
87
- }
88
- /**
89
- * Play the music, ja!
90
- * @category SuiAudio
91
- */
92
- export declare class SuiAudioPlayer {
93
- static _playing: boolean;
94
- static instanceId: number;
95
- static duplicatePitchThresh: number;
96
- static voiceThresh: number;
97
- static _playingInstance: SuiAudioPlayer | null;
98
- static set playing(val: boolean);
99
- static get audioBufferSize(): number;
100
- static incrementInstanceId(): number;
101
- static get playing(): boolean;
102
- static pausePlayer(): void;
103
- instanceId: number;
104
- paused: boolean;
105
- view: SuiScoreView;
106
- score: SmoScore;
107
- cuedSounds: CuedAudioContexts;
108
- audioDefaults: import("./oscillator").SuiOscillatorParams;
109
- volumeMap: Record<string, number>;
110
- audioAnimation: SuiAudioAnimationParams;
111
- constructor(parameters: SuiAudioPlayerParams);
112
- /**
113
- * Popuate the SoundData structures used to create the oscillators
114
- * from the notes in this measure.
115
- * @param measureIndex
116
- * @returns
117
- */
118
- private getNoteSoundData;
119
- /**
120
- * Create the audio resources to be played.
121
- * @param measureIndex
122
- * @returns
123
- */
124
- createCuedSound(measureIndex: number): void;
125
- private delaySilence;
126
- /**
127
- * Get the next sound from the oscillator cue and play it. Stop if either the
128
- * player was stopped, or if we run out of sounds.
129
- */
130
- playSounds(): Promise<void>;
131
- waitForDoneOrFull(): Promise<void>;
132
- /**
133
- * Create all the audio samples and start the player until done.
134
- * @param measureIndex
135
- */
136
- startPlayer(measureIndex: number): Promise<void>;
137
- static stopPlayer(): void;
138
- static get playingInstance(): SuiAudioPlayer | null;
139
- static _playChord(oscAr: SuiOscillator[]): void;
140
- play(): Promise<void>;
141
- }
1
+ import { SuiOscillator } from './oscillator';
2
+ import { SuiScoreView } from '../sui/scoreView';
3
+ import { SmoScore } from '../../smo/data/score';
4
+ import { SmoSelector } from '../../smo/xform/selections';
5
+ import { SuiAudioAnimationParams } from './musicCursor';
6
+ /**
7
+ * Create audio player for the score from the start point
8
+ * @category SuiAudio
9
+ */
10
+ export interface SuiAudioPlayerParams {
11
+ startIndex: number;
12
+ view: SuiScoreView;
13
+ score: SmoScore;
14
+ audioAnimation: SuiAudioAnimationParams;
15
+ }
16
+ export interface midiFrequency {
17
+ midinumber: number;
18
+ detune: number;
19
+ }
20
+ export interface OscAudioData {
21
+ pitches: midiFrequency[];
22
+ duration: number;
23
+ durationPct: number;
24
+ delay: number;
25
+ }
26
+ /**
27
+ * Parameters used to create just-in-time oscillators
28
+ * @category SuiAudio
29
+ */
30
+ export interface SoundParams {
31
+ frequencies: OscAudioData[];
32
+ overallDuration: number;
33
+ volume: number;
34
+ noteType: string;
35
+ instrument: string;
36
+ selector: SmoSelector;
37
+ }
38
+ /**
39
+ * A list of sound parameters for just-in-time oscillator creation
40
+ * @category SuiAudio
41
+ */
42
+ export interface SoundParamMeasureLink {
43
+ soundParams: Record<number, SoundParams[]>;
44
+ endTicks: number;
45
+ measureIndex: number;
46
+ next: SoundParamMeasureLink | null;
47
+ }
48
+ /**
49
+ * A set of oscillators to be played at a certain time.
50
+ * @category SuiAudio
51
+ */
52
+ export interface CuedAudioContext {
53
+ oscs: SuiOscillator[];
54
+ playMeasureIndex: number;
55
+ playTickIndex: number;
56
+ waitTime: number;
57
+ offsetPct: number;
58
+ durationPct: number;
59
+ selector: SmoSelector;
60
+ }
61
+ /**
62
+ * A list of oscillators. We keep them in a list until played so we
63
+ * can GC them if playing is cancelled
64
+ * @category SuiAudio
65
+ */
66
+ export interface CuedAudioLink {
67
+ sound: CuedAudioContext;
68
+ next: CuedAudioLink | null;
69
+ }
70
+ /**
71
+ * Maintain a list of buffers ready to play, since this is a
72
+ * system resource.
73
+ * @category SuiAudio
74
+ */
75
+ export declare class CuedAudioContexts {
76
+ soundHead: CuedAudioLink | null;
77
+ soundTail: CuedAudioLink | null;
78
+ paramLinkHead: SoundParamMeasureLink | null;
79
+ paramLinkTail: SoundParamMeasureLink | null;
80
+ soundListLength: number;
81
+ playWaitTimer: number;
82
+ complete: boolean;
83
+ addToTail(cuedSound: CuedAudioContext): void;
84
+ advanceHead(): CuedAudioContext | null;
85
+ get soundCount(): number;
86
+ reset(): void;
87
+ }
88
+ /**
89
+ * Play the music, ja!
90
+ * @category SuiAudio
91
+ */
92
+ export declare class SuiAudioPlayer {
93
+ static _playing: boolean;
94
+ static instanceId: number;
95
+ static duplicatePitchThresh: number;
96
+ static voiceThresh: number;
97
+ static _playingInstance: SuiAudioPlayer | null;
98
+ static set playing(val: boolean);
99
+ static get audioBufferSize(): number;
100
+ static incrementInstanceId(): number;
101
+ static get playing(): boolean;
102
+ static pausePlayer(): void;
103
+ instanceId: number;
104
+ paused: boolean;
105
+ view: SuiScoreView;
106
+ score: SmoScore;
107
+ cuedSounds: CuedAudioContexts;
108
+ audioDefaults: import("./oscillator").SuiOscillatorParams;
109
+ volumeMap: Record<string, number>;
110
+ audioAnimation: SuiAudioAnimationParams;
111
+ constructor(parameters: SuiAudioPlayerParams);
112
+ /**
113
+ * Popuate the SoundData structures used to create the oscillators
114
+ * from the notes in this measure.
115
+ * @param measureIndex
116
+ * @returns
117
+ */
118
+ private getNoteSoundData;
119
+ /**
120
+ * Create the audio resources to be played.
121
+ * @param measureIndex
122
+ * @returns
123
+ */
124
+ createCuedSound(measureIndex: number): void;
125
+ private delaySilence;
126
+ /**
127
+ * Get the next sound from the oscillator cue and play it. Stop if either the
128
+ * player was stopped, or if we run out of sounds.
129
+ */
130
+ playSounds(): Promise<void>;
131
+ waitForDoneOrFull(): Promise<void>;
132
+ /**
133
+ * Create all the audio samples and start the player until done.
134
+ * @param measureIndex
135
+ */
136
+ startPlayer(measureIndex: number): Promise<void>;
137
+ static stopPlayer(): void;
138
+ static get playingInstance(): SuiAudioPlayer | null;
139
+ static _playChord(oscAr: SuiOscillator[]): void;
140
+ play(): Promise<void>;
141
+ }
@@ -1,56 +1,56 @@
1
- import { SmoOscillatorInfo } from '../../smo/data/staffModifiers';
2
- import { Soundfont } from 'smplr';
3
- export declare const instrumentSampleMap: Record<string, string>;
4
- export declare const loadedSoundfonts: Record<string, Soundfont>;
5
- /**
6
- * A set of parameters from the instrument interface used to create audio from samples.
7
- * @category SuiAudio
8
- */
9
- export interface SampleChooserParams {
10
- family?: string;
11
- instrument: string;
12
- frequency: number;
13
- duration: number;
14
- gain: number;
15
- articulation?: string;
16
- }
17
- /**
18
- * A function prototype that chooses from among samples to return the correct one for that note
19
- */
20
- export type SampleChooser = (params: SampleChooserParams, samples: SmoOscillatorInfo[]) => AudioSample | null;
21
- /**
22
- * A specific audio sample that can be converted into an audio node
23
- * @category SuiAudio
24
- */
25
- export interface AudioSample {
26
- sample: AudioBuffer;
27
- frequency: number;
28
- patch: string;
29
- gain: number;
30
- }
31
- /**
32
- * Interface for a chooser function and a set of samples
33
- * @category SuiAudio
34
- */
35
- export interface InstrumentSampleChooser {
36
- instrument: string;
37
- sampleChooser: SampleChooser;
38
- samples: SmoOscillatorInfo[];
39
- }
40
- /**
41
- * Logic to create audio nodes out of HTML5 media elements
42
- * @category SuiAudio
43
- */
44
- export declare class SuiSampleMedia {
45
- static sampleFiles: SmoOscillatorInfo[];
46
- static sampleBufferMap: Record<string, AudioBuffer>;
47
- static sampleOscMap: Record<string, SmoOscillatorInfo[]>;
48
- static instrumentChooser: Record<string, InstrumentSampleChooser>;
49
- static receivedBuffer: boolean;
50
- static getFamilyForInstrument(instKey: string): string;
51
- /**
52
- * Load samples so we can play the music
53
- * @returns - promise, resolved when loaded
54
- */
55
- static samplePromise(audio: AudioContext): Promise<any>;
56
- }
1
+ import { SmoOscillatorInfo } from '../../smo/data/staffModifiers';
2
+ import { Soundfont } from 'smplr';
3
+ export declare const instrumentSampleMap: Record<string, string>;
4
+ export declare const loadedSoundfonts: Record<string, Soundfont>;
5
+ /**
6
+ * A set of parameters from the instrument interface used to create audio from samples.
7
+ * @category SuiAudio
8
+ */
9
+ export interface SampleChooserParams {
10
+ family?: string;
11
+ instrument: string;
12
+ frequency: number;
13
+ duration: number;
14
+ gain: number;
15
+ articulation?: string;
16
+ }
17
+ /**
18
+ * A function prototype that chooses from among samples to return the correct one for that note
19
+ */
20
+ export type SampleChooser = (params: SampleChooserParams, samples: SmoOscillatorInfo[]) => AudioSample | null;
21
+ /**
22
+ * A specific audio sample that can be converted into an audio node
23
+ * @category SuiAudio
24
+ */
25
+ export interface AudioSample {
26
+ sample: AudioBuffer;
27
+ frequency: number;
28
+ patch: string;
29
+ gain: number;
30
+ }
31
+ /**
32
+ * Interface for a chooser function and a set of samples
33
+ * @category SuiAudio
34
+ */
35
+ export interface InstrumentSampleChooser {
36
+ instrument: string;
37
+ sampleChooser: SampleChooser;
38
+ samples: SmoOscillatorInfo[];
39
+ }
40
+ /**
41
+ * Logic to create audio nodes out of HTML5 media elements
42
+ * @category SuiAudio
43
+ */
44
+ export declare class SuiSampleMedia {
45
+ static sampleFiles: SmoOscillatorInfo[];
46
+ static sampleBufferMap: Record<string, AudioBuffer>;
47
+ static sampleOscMap: Record<string, SmoOscillatorInfo[]>;
48
+ static instrumentChooser: Record<string, InstrumentSampleChooser>;
49
+ static receivedBuffer: boolean;
50
+ static getFamilyForInstrument(instKey: string): string;
51
+ /**
52
+ * Load samples so we can play the music
53
+ * @returns - promise, resolved when loaded
54
+ */
55
+ static samplePromise(audio: AudioContext): Promise<any>;
56
+ }
@@ -1,12 +1,12 @@
1
- import { SuiAudioAnimationParams } from '../audio/musicCursor';
2
- /**
3
- * Define configurable rendering options
4
- * @category SuiRender
5
- * @module /render/sui/configuration
6
- */
7
- export interface SmoRenderConfiguration {
8
- demonPollTime: number;
9
- idleRedrawTime: number;
10
- scoreDomContainer: string | HTMLElement;
11
- audioAnimation: SuiAudioAnimationParams;
12
- }
1
+ import { SuiAudioAnimationParams } from '../audio/musicCursor';
2
+ /**
3
+ * Define configurable rendering options
4
+ * @category SuiRender
5
+ * @module /render/sui/configuration
6
+ */
7
+ export interface SmoRenderConfiguration {
8
+ demonPollTime: number;
9
+ idleRedrawTime: number;
10
+ scoreDomContainer: string | HTMLElement;
11
+ audioAnimation: SuiAudioAnimationParams;
12
+ }