@marmooo/midy 0.4.8 → 0.5.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marmooo/midy",
3
- "version": "0.4.8",
3
+ "version": "0.5.0",
4
4
  "description": "A MIDI player/synthesizer written in JavaScript that supports GM-Lite/GM1 and SF2/SF3.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -11,7 +11,7 @@ export class MidyGM1 extends EventTarget {
11
11
  fineTuning: number;
12
12
  coarseTuning: number;
13
13
  };
14
- constructor(audioContext: any);
14
+ constructor(audioContext: any, options?: {});
15
15
  perceptualSmoothingTime: number;
16
16
  mode: string;
17
17
  numChannels: number;
@@ -28,7 +28,6 @@ export class MidyGM1 extends EventTarget {
28
28
  voiceCache: Map<any, any>;
29
29
  realtimeVoiceCache: Map<any, any>;
30
30
  decodeMethod: string;
31
- decoderQueue: Promise<void>;
32
31
  isPlaying: boolean;
33
32
  isPausing: boolean;
34
33
  isPaused: boolean;
@@ -42,7 +41,15 @@ export class MidyGM1 extends EventTarget {
42
41
  notePromises: any[];
43
42
  instruments: Set<any>;
44
43
  exclusiveClassNotes: any[];
44
+ adsrVoiceCache: Map<any, any>;
45
+ noteOnDurations: Map<any, any>;
46
+ noteOnEvents: Map<any, any>;
47
+ fullVoiceCache: Map<any, any>;
48
+ renderedAudioBuffer: null;
49
+ isRendering: boolean;
50
+ audioModeBufferSource: null;
45
51
  audioContext: any;
52
+ cacheMode: any;
46
53
  masterVolume: any;
47
54
  scheduler: any;
48
55
  schedulerBuffer: any;
@@ -54,33 +61,35 @@ export class MidyGM1 extends EventTarget {
54
61
  modLfoToVolume: (channel: any, note: any, scheduleTime: any) => void;
55
62
  chorusEffectsSend: (_channel: any, _note: any, _scheduleTime: any) => void;
56
63
  reverbEffectsSend: (_channel: any, _note: any, _scheduleTime: any) => void;
57
- delayModLFO: (_channel: any, note: any, scheduleTime: any) => void;
64
+ delayModLFO: (channel: any, note: any, scheduleTime: any) => void;
58
65
  freqModLFO: (_channel: any, note: any, scheduleTime: any) => void;
59
66
  delayVibLFO: (_channel: any, _note: any, _scheduleTime: any) => void;
60
67
  freqVibLFO: (_channel: any, _note: any, _scheduleTime: any) => void;
61
68
  detune: (channel: any, note: any, scheduleTime: any) => void;
62
69
  };
63
70
  controlChangeHandlers: any[];
64
- channels: any[];
71
+ channels: Channel[];
65
72
  addSoundFont(soundFont: any): void;
66
73
  toUint8Array(input: any): Promise<Uint8Array<ArrayBuffer>>;
67
74
  loadSoundFont(input: any): Promise<void>;
68
75
  loadMIDI(input: any): Promise<void>;
76
+ buildNoteOnDurations(): void;
69
77
  cacheVoiceIds(): void;
70
- getVoiceId(channel: any, noteNumber: any, velocity: any): any;
78
+ getVoiceId(channel: any, noteNumber: any, velocity: any): number | undefined;
71
79
  createChannelAudioNodes(audioContext: any): {
72
80
  gainL: any;
73
81
  gainR: any;
74
82
  merger: any;
75
83
  };
76
- createChannels(audioContext: any): any[];
84
+ createChannels(audioContext: any): Channel[];
77
85
  decodeOggVorbis(sample: any): Promise<any>;
78
86
  createAudioBuffer(voiceParams: any): Promise<any>;
79
- createBufferSource(voiceParams: any, audioBuffer: any): any;
87
+ createBufferSource(voiceParams: any, renderedOrRaw: any): any;
80
88
  scheduleTimelineEvents(scheduleTime: any, queueIndex: any): any;
81
89
  getQueueIndex(second: any): number;
82
90
  resetAllStates(): void;
83
91
  updateStates(queueIndex: any, nextQueueIndex: any): void;
92
+ playAudioBuffer(): Promise<void>;
84
93
  playNotes(): Promise<void>;
85
94
  ticksToSecond(ticks: any, secondsPerBeat: any): number;
86
95
  secondToTicks(second: any, secondsPerBeat: any): number;
@@ -92,6 +101,7 @@ export class MidyGM1 extends EventTarget {
92
101
  stopActiveNotes(channelNumber: any, velocity: any, force: any, scheduleTime: any): Promise<any[]>;
93
102
  stopChannelNotes(channelNumber: any, velocity: any, force: any, scheduleTime: any): Promise<any[]>;
94
103
  stopNotes(velocity: any, force: any, scheduleTime: any): Promise<any[]>;
104
+ render(): Promise<null | undefined>;
95
105
  start(): Promise<void>;
96
106
  stop(): Promise<void>;
97
107
  pause(): Promise<void>;
@@ -114,12 +124,21 @@ export class MidyGM1 extends EventTarget {
114
124
  clampCutoffFrequency(frequency: any): number;
115
125
  setFilterEnvelope(note: any, scheduleTime: any): void;
116
126
  startModulation(channel: any, note: any, scheduleTime: any): void;
117
- getAudioBuffer(channel: any, noteNumber: any, velocity: any, voiceParams: any, realtime: any): Promise<any>;
127
+ createAdsRenderedBuffer(note: any, voiceParams: any, audioBuffer: any, isDrum?: boolean): Promise<RenderedBuffer>;
128
+ createAdsrRenderedBuffer(note: any, voiceParams: any, audioBuffer: any, noteDuration: any): Promise<RenderedBuffer>;
129
+ createFullRenderedBuffer(channel: any, note: any, voiceParams: any, noteDuration: any, noteEvent?: {}): Promise<RenderedBuffer>;
130
+ getAudioBuffer(channel: any, note: any, realtime: any): Promise<any>;
131
+ getAdsCachedBuffer(channel: any, note: any, audioBufferId: any, realtime: any): Promise<any>;
132
+ getAdsrCachedBuffer(note: any, audioBufferId: any): Promise<any>;
133
+ getFullCachedBuffer(note: any, audioBufferId: any): Promise<any>;
118
134
  setNoteAudioNode(channel: any, note: any, realtime: any): Promise<any>;
119
135
  handleExclusiveClass(note: any, channelNumber: any, startTime: any): void;
120
136
  setNoteRouting(channelNumber: any, note: any, startTime: any): void;
121
- noteOn(channelNumber: any, noteNumber: any, velocity: any, startTime: any): Promise<void>;
137
+ noteOn(channelNumber: any, noteNumber: any, velocity: any, startTime: any): Promise<any>;
138
+ createNote(channelNumber: any, noteNumber: any, velocity: any, startTime: any): Note;
139
+ setupNote(channelNumber: any, note: any, startTime: any): Promise<any>;
122
140
  disconnectNote(note: any): void;
141
+ releaseFullCache(note: any): void;
123
142
  releaseNote(channel: any, note: any, endTime: any): Promise<any>;
124
143
  noteOff(channelNumber: any, noteNumber: any, _velocity: any, endTime: any, force: any): any;
125
144
  setNoteIndex(channel: any, index: any): void;
@@ -143,7 +162,7 @@ export class MidyGM1 extends EventTarget {
143
162
  modLfoToVolume: (channel: any, note: any, scheduleTime: any) => void;
144
163
  chorusEffectsSend: (_channel: any, _note: any, _scheduleTime: any) => void;
145
164
  reverbEffectsSend: (_channel: any, _note: any, _scheduleTime: any) => void;
146
- delayModLFO: (_channel: any, note: any, scheduleTime: any) => void;
165
+ delayModLFO: (channel: any, note: any, scheduleTime: any) => void;
147
166
  freqModLFO: (_channel: any, note: any, scheduleTime: any) => void;
148
167
  delayVibLFO: (_channel: any, _note: any, _scheduleTime: any) => void;
149
168
  freqVibLFO: (_channel: any, _note: any, _scheduleTime: any) => void;
@@ -189,4 +208,61 @@ export class MidyGM1 extends EventTarget {
189
208
  handleSysEx(data: any, scheduleTime: any): void;
190
209
  scheduleTask(callback: any, scheduleTime: any): Promise<any>;
191
210
  }
211
+ declare class Channel {
212
+ constructor(audioNodes: any, settings: any);
213
+ isDrum: boolean;
214
+ programNumber: number;
215
+ scheduleIndex: number;
216
+ detune: number;
217
+ dataMSB: number;
218
+ dataLSB: number;
219
+ rpnMSB: number;
220
+ rpnLSB: number;
221
+ modulationDepthRange: number;
222
+ fineTuning: number;
223
+ coarseTuning: number;
224
+ scheduledNotes: any[];
225
+ sustainNotes: any[];
226
+ currentBufferSource: null;
227
+ state: ControllerState;
228
+ resetSettings(settings: any): void;
229
+ }
230
+ declare class RenderedBuffer {
231
+ constructor(buffer: any, meta?: {});
232
+ buffer: any;
233
+ isLoop: any;
234
+ isFull: any;
235
+ adsDuration: any;
236
+ loopStart: any;
237
+ loopDuration: any;
238
+ noteDuration: any;
239
+ releaseDuration: any;
240
+ }
241
+ declare class Note {
242
+ constructor(noteNumber: any, velocity: any, startTime: any);
243
+ voice: any;
244
+ voiceParams: any;
245
+ adjustedBaseFreq: number;
246
+ index: number;
247
+ ending: boolean;
248
+ bufferSource: any;
249
+ timelineIndex: null;
250
+ renderedBuffer: null;
251
+ fullCacheVoiceId: null;
252
+ filterEnvelopeNode: any;
253
+ volumeEnvelopeNode: any;
254
+ modLfo: any;
255
+ modLfoToPitch: any;
256
+ modLfoToFilterFc: any;
257
+ modLfoToVolume: any;
258
+ noteNumber: any;
259
+ velocity: any;
260
+ startTime: any;
261
+ ready: Promise<any>;
262
+ resolveReady: (value: any) => void;
263
+ }
264
+ declare class ControllerState {
265
+ array: Float32Array<ArrayBuffer>;
266
+ }
267
+ export {};
192
268
  //# sourceMappingURL=midy-GM1.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AAmHA;IAsCE;;;;;;;;;;;MAWE;IAEF,+BAgBC;IA9DD,gCAAgC;IAChC,aAAa;IACb,oBAAiB;IACjB,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,0BAAuD;IACvD,4BAAyB;IACzB,0BAAuB;IACvB,kCAA+B;IAC/B,qBAAqC;IACrC,4BAAiC;IACjC,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,iCAEG;IACH,cAAU;IACV,cAAa;IACb,iBAAY;IACZ,gBAAc;IACd,oBAAkB;IAClB,sBAAwB;IACxB,2BAAqC;IAiBnC,kBAAgC;IAChC,kBAA8C;IAC9C,eAAwD;IACxD,qBAGE;IACF,uBAAmD;IACnD;;;;;;;;;;;;MAA2D;IAC3D,6BAA+D;IAC/D,gBAAiD;IAMnD,mCASC;IAED,2DAYC;IAED,yCAmBC;IAED,oCASC;IAED,sBA6BC;IAED,8DAeC;IAED;;;;MAeC;IAED,yCAaC;IAED,2CAsBC;IAED,kDA6BC;IAED,4DASC;IAED,gEAsDC;IAED,mCASC;IAED,uBAUC;IAED,yDAqCC;IAED,2BA0EC;IAED,uDAEC;IAED,wDAEC;IAED,qCAKC;IAED;;;MAwDC;IAED,kGAeC;IAED,mGAeC;IAED,wEAQC;IAED,uBAMC;IAED,sBAIC;IAED,uBAMC;IAED,wBAIC;IAED,0BAKC;IAED,8BAMC;IAED,wBAYC;IAED,sBAIC;IAED,kEAWC;IAED,kFAYC;IAED,8BAEC;IAED,8BAEC;IAED,4BAEC;IAED,qCAMC;IAED,2DAIC;IAED,6CAEC;IAED,sDAeC;IAED,4DASC;IAED,qDAkBC;IAED,6CAIC;IAED,sDA6BC;IAED,kEAqBC;IAED,4GAkCC;IAED,uEAyCC;IAED,0EAiBC;IAED,oEASC;IAED,0FAwBC;IAED,gCASC;IAED,iEAwBC;IAED,4FAmBC;IAED,6CAUC;IAED,qDAUC;IAED,qFAeC;IAED,+BAmBC;IAED,kDAOC;IAED,sFA2BC;IAED,mFAGC;IAED,wFAGC;IAED,sEAUC;IAED,mEAYC;IAED,wDAKC;IAED,sDAOC;IAED,mDAMC;IAED,kDAKC;IAED;;;;;;;;;;;;MAoCC;IAED,oFAMC;IAED,6EA2BC;IAED,qCAeC;IAED,+FAYC;IAED,wDAUC;IAED,4EAKC;IAED,mEAKC;IAED;;;MAMC;IAED,gEAKC;IAED,uEAKC;IAED,sEAGC;IAED,2DAUC;IAED,yEAWC;IAED,kFAeC;IAED,2DAMC;IAED,uDAoBC;IAED,gDAEC;IAED,gDAEC;IAED,sEAGC;IAED,qEAKC;IAED,2EAUC;IAED,iEAMC;IAED,uEAQC;IAED,mEAKC;IAED,yEAQC;IAED,gFAGC;IAED,6CAqBC;IAGD,8EAgCC;IAED,gFAGC;IAED,+EAgBC;IAED,qCAUC;IAED,4EAaC;IAED,4DAGC;IAED,qDAKC;IAED,gDAYC;IAGD,6DAgBC;CACF"}
1
+ {"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"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"}