@marmooo/midy 0.3.3 → 0.3.5

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/script/midy.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export class Midy {
2
2
  static channelSettings: {
3
+ scheduleIndex: number;
3
4
  detune: number;
4
5
  programNumber: number;
5
6
  bank: number;
@@ -14,16 +15,12 @@ export class Midy {
14
15
  fineTuning: number;
15
16
  coarseTuning: number;
16
17
  };
17
- constructor(audioContext: any, options?: {
18
- reverbAlgorithm: (audioContext: any) => {
19
- input: any;
20
- output: any;
21
- };
22
- });
18
+ constructor(audioContext: any);
23
19
  mode: string;
24
20
  masterFineTuning: number;
25
21
  masterCoarseTuning: number;
26
22
  reverb: {
23
+ algorithm: string;
27
24
  time: number;
28
25
  feedback: number;
29
26
  };
@@ -44,8 +41,8 @@ export class Midy {
44
41
  resumeTime: number;
45
42
  soundFonts: any[];
46
43
  soundFontTable: any[];
47
- audioBufferCounter: Map<any, any>;
48
- audioBufferCache: Map<any, any>;
44
+ voiceCounter: Map<any, any>;
45
+ voiceCache: Map<any, any>;
49
46
  isPlaying: boolean;
50
47
  isPausing: boolean;
51
48
  isPaused: boolean;
@@ -56,19 +53,7 @@ export class Midy {
56
53
  notePromises: any[];
57
54
  exclusiveClassNotes: any[];
58
55
  drumExclusiveClassNotes: any[];
59
- defaultOptions: {
60
- reverbAlgorithm: (audioContext: any) => {
61
- input: any;
62
- output: any;
63
- };
64
- };
65
56
  audioContext: any;
66
- options: {
67
- reverbAlgorithm: (audioContext: any) => {
68
- input: any;
69
- output: any;
70
- };
71
- };
72
57
  masterVolume: any;
73
58
  scheduler: any;
74
59
  schedulerBuffer: any;
@@ -89,7 +74,7 @@ export class Midy {
89
74
  reverbEffect: {
90
75
  input: any;
91
76
  output: any;
92
- };
77
+ } | undefined;
93
78
  chorusEffect: {
94
79
  input: any;
95
80
  output: any;
@@ -101,16 +86,19 @@ export class Midy {
101
86
  };
102
87
  initSoundFontTable(): any[];
103
88
  addSoundFont(soundFont: any): void;
89
+ toUint8Array(input: any): Promise<Uint8Array<ArrayBuffer>>;
104
90
  loadSoundFont(input: any): Promise<void>;
105
91
  loadMIDI(input: any): Promise<void>;
106
- setChannelAudioNodes(audioContext: any): {
92
+ cacheVoiceIds(): void;
93
+ getVoiceId(channel: any, noteNumber: any, velocity: any): string | undefined;
94
+ createChannelAudioNodes(audioContext: any): {
107
95
  gainL: any;
108
96
  gainR: any;
109
97
  merger: any;
110
98
  };
111
99
  resetChannelTable(channel: any): void;
112
100
  createChannels(audioContext: any): any[];
113
- createNoteBuffer(voiceParams: any, isSF3: any): Promise<any>;
101
+ createAudioBuffer(voiceParams: any): Promise<any>;
114
102
  isLoopDrum(channel: any, noteNumber: any): boolean;
115
103
  createBufferSource(channel: any, noteNumber: any, voiceParams: any, audioBuffer: any): any;
116
104
  scheduleTimelineEvents(t: any, resumeTime: any, queueIndex: any): Promise<any>;
@@ -118,7 +106,6 @@ export class Midy {
118
106
  playNotes(): Promise<any>;
119
107
  ticksToSecond(ticks: any, secondsPerBeat: any): number;
120
108
  secondToTicks(second: any, secondsPerBeat: any): number;
121
- getAudioBufferId(programNumber: any, noteNumber: any, velocity: any): string;
122
109
  extractMidiData(midi: any): {
123
110
  instruments: Set<any>;
124
111
  timeline: any[];
@@ -148,6 +135,10 @@ export class Midy {
148
135
  input: any;
149
136
  output: any;
150
137
  };
138
+ createReverbEffect(audioContext: any): {
139
+ input: any;
140
+ output: any;
141
+ } | undefined;
151
142
  createChorusEffect(audioContext: any): {
152
143
  input: any;
153
144
  output: any;
@@ -176,24 +167,25 @@ export class Midy {
176
167
  setFilterEnvelope(channel: any, note: any, scheduleTime: any): void;
177
168
  startModulation(channel: any, note: any, scheduleTime: any): void;
178
169
  startVibrato(channel: any, note: any, scheduleTime: any): void;
179
- getAudioBuffer(programNumber: any, noteNumber: any, velocity: any, voiceParams: any, isSF3: any): Promise<any>;
180
- createNote(channel: any, voice: any, noteNumber: any, velocity: any, startTime: any, isSF3: any): Promise<Note>;
170
+ getAudioBuffer(channel: any, noteNumber: any, velocity: any, voiceParams: any): Promise<any>;
171
+ createNote(channel: any, voice: any, noteNumber: any, velocity: any, startTime: any): Promise<Note>;
181
172
  calcBank(channel: any): any;
182
173
  handleExclusiveClass(note: any, channelNumber: any, startTime: any): void;
183
174
  handleDrumExclusiveClass(note: any, channelNumber: any, startTime: any): void;
184
- scheduleNoteOn(channelNumber: any, noteNumber: any, velocity: any, startTime: any, noteOffEvent: any): Promise<void>;
175
+ scheduleNoteOn(channelNumber: any, noteNumber: any, velocity: any, startTime: any): Promise<void>;
185
176
  noteOn(channelNumber: any, noteNumber: any, velocity: any, scheduleTime: any): Promise<void>;
186
177
  disconnectNote(note: any): void;
187
178
  releaseNote(channel: any, note: any, endTime: any): Promise<any>;
188
179
  scheduleNoteOff(channelNumber: any, noteNumber: any, _velocity: any, endTime: any, force: any): void;
189
- findNoteOffTarget(channel: any, noteNumber: any): any;
180
+ setNoteIndex(channel: any, index: any): void;
181
+ findNoteOffIndex(channel: any, noteNumber: any): any;
190
182
  noteOff(channelNumber: any, noteNumber: any, velocity: any, scheduleTime: any): void;
191
183
  releaseSustainPedal(channelNumber: any, halfVelocity: any, scheduleTime: any): void[];
192
184
  releaseSostenutoPedal(channelNumber: any, halfVelocity: any, scheduleTime: any): void[];
193
185
  handleMIDIMessage(statusByte: any, data1: any, data2: any, scheduleTime: any): void | Promise<void>;
194
- handlePolyphonicKeyPressure(channelNumber: any, noteNumber: any, pressure: any, scheduleTime: any): void;
195
- handleProgramChange(channelNumber: any, programNumber: any, _scheduleTime: any): void;
196
- handleChannelPressure(channelNumber: any, value: any, scheduleTime: any): void;
186
+ setPolyphonicKeyPressure(channelNumber: any, noteNumber: any, pressure: any, scheduleTime: any): void;
187
+ setProgramChange(channelNumber: any, programNumber: any, _scheduleTime: any): void;
188
+ setChannelPressure(channelNumber: any, value: any, scheduleTime: any): void;
197
189
  handlePitchBendMessage(channelNumber: any, lsb: any, msb: any, scheduleTime: any): void;
198
190
  setPitchBend(channelNumber: any, value: any, scheduleTime: any): void;
199
191
  setModLfoToPitch(channel: any, note: any, scheduleTime: any): void;
@@ -217,27 +209,26 @@ export class Midy {
217
209
  delayVibLFO: (channel: any, note: any, prevValue: any, scheduleTime: any) => void;
218
210
  freqVibLFO: (channel: any, note: any, _prevValue: any, scheduleTime: any) => void;
219
211
  };
220
- getControllerState(channel: any, noteNumber: any, velocity: any): Float32Array<any>;
212
+ getControllerState(channel: any, noteNumber: any, velocity: any, polyphonicKeyPressure: any): Float32Array<any>;
221
213
  applyVoiceParams(channel: any, controllerType: any, scheduleTime: any): void;
222
214
  createControlChangeHandlers(): any[];
223
- handleControlChange(channelNumber: any, controllerType: any, value: any, scheduleTime: any): void;
215
+ setControlChange(channelNumber: any, controllerType: any, value: any, scheduleTime: any): void;
224
216
  setBankMSB(channelNumber: any, msb: any): void;
225
217
  updateModulation(channel: any, scheduleTime: any): void;
226
218
  setModulationDepth(channelNumber: any, modulation: any, scheduleTime: any): void;
227
219
  updatePortamento(channel: any, scheduleTime: any): void;
228
220
  setPortamentoTime(channelNumber: any, portamentoTime: any, scheduleTime: any): void;
229
- setKeyBasedVolume(channel: any, scheduleTime: any): void;
230
221
  setVolume(channelNumber: any, volume: any, scheduleTime: any): void;
231
222
  panToGain(pan: any): {
232
223
  gainLeft: number;
233
224
  gainRight: number;
234
225
  };
235
- setKeyBasedPan(channel: any, scheduleTime: any): void;
236
226
  setPan(channelNumber: any, pan: any, scheduleTime: any): void;
237
227
  setExpression(channelNumber: any, expression: any, scheduleTime: any): void;
238
228
  setBankLSB(channelNumber: any, lsb: any): void;
239
229
  dataEntryLSB(channelNumber: any, value: any, scheduleTime: any): void;
240
230
  updateChannelVolume(channel: any, scheduleTime: any): void;
231
+ updateKeyBasedVolume(channel: any, scheduleTime: any): void;
241
232
  setSustainPedal(channelNumber: any, value: any, scheduleTime: any): void;
242
233
  setPortamento(channelNumber: any, value: any, scheduleTime: any): void;
243
234
  setSostenutoPedal(channelNumber: any, value: any, scheduleTime: any): void;
@@ -314,13 +305,12 @@ export class Midy {
314
305
  getLFOPitchDepth(channel: any, note: any): number;
315
306
  getLFOFilterDepth(channel: any, note: any): number;
316
307
  getLFOAmplitudeDepth(channel: any, note: any): number;
317
- setControllerParameters(channel: any, note: any, table: any): void;
308
+ setControllerParameters(channel: any, note: any, table: any, scheduleTime: any): void;
318
309
  handlePressureSysEx(data: any, tableName: any): void;
319
- initControlTable(): any;
320
- resetControlTable(table: any): any;
321
- applyControlTable(channel: any, controllerType: any): void;
310
+ initControlTable(): Int8Array<ArrayBuffer>;
311
+ applyControlTable(channel: any, controllerType: any, scheduleTime: any): void;
322
312
  handleControlChangeSysEx(data: any): void;
323
- getKeyBasedInstrumentControlValue(channel: any, keyNumber: any, controllerType: any): any;
313
+ getKeyBasedValue(channel: any, keyNumber: any, controllerType: any): any;
324
314
  handleKeyBasedInstrumentControlSysEx(data: any, scheduleTime: any): void;
325
315
  handleSysEx(data: any, scheduleTime: any): void;
326
316
  scheduleTask(callback: any, scheduleTime: any): Promise<any>;
@@ -334,9 +324,6 @@ declare class Note {
334
324
  filterDepth: any;
335
325
  volumeEnvelopeNode: any;
336
326
  volumeDepth: any;
337
- volumeNode: any;
338
- gainL: any;
339
- gainR: any;
340
327
  modulationLFO: any;
341
328
  modulationDepth: any;
342
329
  vibratoLFO: any;
@@ -1 +1 @@
1
- {"version":3,"file":"midy.d.ts","sourceRoot":"","sources":["../src/midy.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"midy.d.ts","sourceRoot":"","sources":["../src/midy.js"],"names":[],"mappings":"AA4JA;IAyCE;;;;;;;;;;;;;;;MAeE;IAEF,+BAkBC;IA3ED,aAAa;IACb,yBAAqB;IACrB,2BAAuB;IACvB;;;;MAIE;IACF;;;;;;MAME;IACF,oBAAiB;IACjB,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,sBAA2C;IAC3C,4BAAyB;IACzB,0BAAuB;IACvB,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,gBAAc;IACd,mBAAiB;IACjB,oBAAkB;IAClB,2BAAqC;IACrC,+BAEE;IAoBA,kBAAgC;IAChC,kBAA8C;IAC9C,eAAwD;IACxD,qBAGE;IACF;;;;;;;;;;;MAA2D;IAC3D,6BAA+D;IAC/D,gBAAiD;IACjD;;;kBAAyD;IACzD;;;;;;;;MAAyD;IAQ3D,4BAMC;IAED,mCASC;IAED,2DAYC;IAED,yCAmBC;IAED,oCASC;IAED,sBAoCC;IAED,6EAcC;IAED;;;;MAeC;IAED,sCAMC;IAED,yCAqBC;IAED,kDAUC;IAED,mDAIC;IAED,2FAWC;IAED,+EA6DC;IAED,mCAOC;IAED,0BAmEC;IAED,uDAEC;IAED,wDAEC;IAED;;;MAoGC;IAED,kGAeC;IAED,mGAeC;IAED,wEAMC;IAED,uBAMC;IAED,aAGC;IAED,cAKC;IAED,wBAIC;IAED,0BAKC;IAED,wBAOC;IAED,sBAGC;IAED,yDAQC;IAED,yEASC;IAED,kFAuBC;IAED;;;;MAWC;IAED,gFAUC;IAED,mFAYC;IAED,sGAcC;IAID;;;MA8BC;IAED;;;kBA6BC;IAED;;;;;;;;MA0CC;IAED,2BAEC;IAED,8BAEC;IAED,8BAEC;IAED,4BAEC;IAED,qCAkBC;IAED,6CAEC;IAED,2DAIC;IAED,+DAiBC;IAED,mDAIC;IAED,2CAoDC;IAED,8EAYC;IAED,oEAiBC;IAED,+DAKC;IAED,qDAoBC;IAED,6CAIC;IAED,8EAsBC;IAED,oEA0BC;IAED,kEAoBC;IAED,+DAaC;IAED,6FAyBC;IAED,oGAsEC;IAED,4BAYC;IAED,0EAiBC;IAED,8EAoBC;IAED,kGA6CC;IAED,6FASC;IAED,gCAmBC;IAED,iEAqBC;IAED,qGAuBC;IAED,6CAUC;IAED,qDAUC;IAED,qFASC;IAED,sFAeC;IAED,wFAkBC;IAED,oGAoCC;IAED,sGAeC;IAED,mFAcC;IAED,4EAgBC;IAED,wFAGC;IAED,sEAWC;IAED,mEAQC;IAED,mEAQC;IAED,sEAMC;IAED,oEAQC;IAED,uFA2BC;IAED,uFA2BC;IAED,mDAMC;IAED,kDAKC;IAED,gEAKC;IAED;;;;;;;;;;;MAiDC;IAED,gHAQC;IAED,6EAqCC;IAED,qCAqCC;IAED,+FAYC;IAED,+CAEC;IAED,wDAUC;IAED,iFAMC;IAED,wDAkBC;IAED,oFAMC;IAED,oEAMC;IAED;;;MAMC;IAED,8DAMC;IAED,4EAKC;IAED,+CAEC;IAED,sEAGC;IAED,2DAUC;IAED,4DAwBC;IAED,yEAYC;IAED,uEAMC;IAED,2EAcC;IAED,oDAEC;IAED,0EAeC;IAED,sFAUC;IAED,8EAKC;IAED,4EASC;IAED,4EAaC;IAED,0EAQC;IAED,8EASC;IAED,gFAeC;IAED,gFAUC;IAED,sFA4BC;IAED,sFA4BC;IAED,kFAeC;IAED,2DAMC;IAED,mEAyBC;IAGD,2DAGC;IAGD,2DAGC;IAED,gDAEC;IAED,gDAEC;IAED,sEAGC;IAED,qEAKC;IAED,2EAWC;IAED,iEAKC;IAED,uEASC;IAED,mEAKC;IAED,yEASC;IAED,2EASC;IAED,gGAMC;IAED,gFAGC;IAED,yCAwBC;IAGD,8EAqCC;IAED,gFAGC;IAED,iEAEC;IAED,gEAEC;IAED,gEAIC;IAED,gEAIC;IAED,+EAuCC;IAED,qCAcC;IAED,qCAcC;IAED,4EA6DC;IAED,4DAGC;IAED,sDASC;IAED,gEAGC;IAED,yDAWC;IAED,kEAGC;IAED,2DAWC;IAED,sEAeC;IAED,4CAOC;IAED,+BAIC;IAED,qDAiBC;IAED,gCAGC;IAED,kCAEC;IA6BD,4CAEC;IAED,+DAaC;IAED,kDAiBC;IAED,2GAKC;IAED,sDAIC;IAED,qCAEC;IAED,uDAMC;IAED,sCAEC;IAED,uDASC;IAED,sCAEC;IAED,2DAqBC;IAED,0CAEC;IAED,mCAeC;IAED,2FAgBC;IAED,2FAoBC;IAED,iDAMC;IAED,wDAUC;IAED,qDAUC;IAED,kDAUC;IAED,mDAUC;IAED,sDAUC;IAED,sFAgBC;IAED,qDAUC;IAED,2CAIC;IAED,8EAOC;IAED,0CAWC;IAED,yEAIC;IAED,yEAiBC;IAED,gDAYC;IAGD,6DAgBC;CACF;AAxoGD;IAiBE,0FAMC;IAtBD,cAAW;IACX,gBAAe;IACf,kBAAa;IACb,gBAAW;IACX,iBAAY;IACZ,wBAAmB;IACnB,iBAAY;IACZ,mBAAc;IACd,qBAAgB;IAChB,gBAAW;IACX,kBAAa;IACb,uBAAkB;IAClB,uBAAkB;IAClB,6BAA0B;IAC1B,iBAAa;IAGX,gBAA4B;IAC5B,cAAwB;IACxB,eAA0B;IAC1B,WAAkB;IAClB,iBAA8B;CAEjC"}