@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/README.md CHANGED
@@ -53,7 +53,7 @@ functions.
53
53
  ```js
54
54
  midy.handleMIDIMessage(statusByte, data1, data2, scheduleTime);
55
55
  midy.noteOn(channelNumber, noteNumber, velocity);
56
- midy.handleProgramChange(channelNumber, program);
56
+ midy.setProgramChange(channelNumber, program);
57
57
  ```
58
58
 
59
59
  ### Control Change
@@ -62,7 +62,7 @@ There are functions that handle control changes as they are, as well as
62
62
  simplified functions.
63
63
 
64
64
  ```js
65
- midy.handleControlChange(
65
+ midy.setControlChange(
66
66
  channelNumber,
67
67
  controller,
68
68
  value,
@@ -91,17 +91,25 @@ optimized for playback on the web. The following example loads only the minimum
91
91
  presets required for playback.
92
92
 
93
93
  ```js
94
- const baseUrl = "https://soundfonts.pages.dev/GeneralUser_GS_v1.471";
95
- for (const instrument of midy.instruments) {
96
- const [bankNumber, programNumber] = instrument.split(":").map(Number);
97
- if (midy.soundFontTable[programNumber].has(bankNumber)) continue;
98
- const program = programNumber.toString().padStart(3, "0");
99
- if (bankNumber === 128) {
100
- await midy.loadSoundFont(`${baseUrl}/128.sf3`);
101
- } else {
102
- await midy.loadSoundFont(`${baseUrl}/${program}.sf3`);
94
+ const soundFontURL = "https://soundfonts.pages.dev/GeneralUser_GS_v1.471";
95
+
96
+ function getSoundFontPaths() {
97
+ const paths = [];
98
+ for (const instrument of midy.instruments) {
99
+ const [bankNumber, programNumber] = instrument.split(":").map(Number);
100
+ const table = midy.soundFontTable[programNumber];
101
+ if (table.has(bankNumber)) continue;
102
+ const program = programNumber.toString().padStart(3, "0");
103
+ const path = bankNumber === 128
104
+ ? `${soundFontURL}/128.sf3`
105
+ : `${soundFontURL}/${program}.sf3`;
106
+ paths.push(path);
103
107
  }
108
+ return paths;
104
109
  }
110
+
111
+ const paths = this.getSoundFontPaths();
112
+ await midy.loadSoundFont(paths);
105
113
  ```
106
114
 
107
115
  ## Build
package/esm/midy-GM1.d.ts CHANGED
@@ -23,8 +23,8 @@ export class MidyGM1 {
23
23
  resumeTime: number;
24
24
  soundFonts: any[];
25
25
  soundFontTable: any[];
26
- audioBufferCounter: Map<any, any>;
27
- audioBufferCache: Map<any, any>;
26
+ voiceCounter: Map<any, any>;
27
+ voiceCache: Map<any, any>;
28
28
  isPlaying: boolean;
29
29
  isPausing: boolean;
30
30
  isPaused: boolean;
@@ -54,22 +54,24 @@ export class MidyGM1 {
54
54
  channels: any[];
55
55
  initSoundFontTable(): any[];
56
56
  addSoundFont(soundFont: any): void;
57
+ toUint8Array(input: any): Promise<Uint8Array<ArrayBuffer>>;
57
58
  loadSoundFont(input: any): Promise<void>;
58
59
  loadMIDI(input: any): Promise<void>;
59
- setChannelAudioNodes(audioContext: any): {
60
+ cacheVoiceIds(): void;
61
+ getVoiceId(channel: any, noteNumber: any, velocity: any): string | undefined;
62
+ createChannelAudioNodes(audioContext: any): {
60
63
  gainL: any;
61
64
  gainR: any;
62
65
  merger: any;
63
66
  };
64
67
  createChannels(audioContext: any): any[];
65
- createNoteBuffer(voiceParams: any, isSF3: any): Promise<any>;
68
+ createAudioBuffer(voiceParams: any): Promise<any>;
66
69
  createBufferSource(voiceParams: any, audioBuffer: any): any;
67
70
  scheduleTimelineEvents(t: any, resumeTime: any, queueIndex: any): Promise<any>;
68
71
  getQueueIndex(second: any): number;
69
72
  playNotes(): Promise<any>;
70
73
  ticksToSecond(ticks: any, secondsPerBeat: any): number;
71
74
  secondToTicks(second: any, secondsPerBeat: any): number;
72
- getAudioBufferId(programNumber: any, noteNumber: any, velocity: any): string;
73
75
  extractMidiData(midi: any): {
74
76
  instruments: Set<any>;
75
77
  timeline: any[];
@@ -98,19 +100,20 @@ export class MidyGM1 {
98
100
  clampCutoffFrequency(frequency: any): number;
99
101
  setFilterEnvelope(note: any, scheduleTime: any): void;
100
102
  startModulation(channel: any, note: any, scheduleTime: any): void;
101
- getAudioBuffer(programNumber: any, noteNumber: any, velocity: any, voiceParams: any, isSF3: any): Promise<any>;
102
- createNote(channel: any, voice: any, noteNumber: any, velocity: any, startTime: any, isSF3: any): Promise<Note>;
103
+ getAudioBuffer(channel: any, noteNumber: any, velocity: any, voiceParams: any): Promise<any>;
104
+ createNote(channel: any, voice: any, noteNumber: any, velocity: any, startTime: any): Promise<Note>;
103
105
  handleExclusiveClass(note: any, channelNumber: any, startTime: any): void;
104
- scheduleNoteOn(channelNumber: any, noteNumber: any, velocity: any, startTime: any, noteOffEvent: any): Promise<void>;
106
+ scheduleNoteOn(channelNumber: any, noteNumber: any, velocity: any, startTime: any): Promise<void>;
105
107
  noteOn(channelNumber: any, noteNumber: any, velocity: any, scheduleTime: any): Promise<void>;
106
108
  disconnectNote(note: any): void;
107
109
  releaseNote(channel: any, note: any, endTime: any): Promise<any>;
108
110
  scheduleNoteOff(channelNumber: any, noteNumber: any, _velocity: any, endTime: any, force: any): void;
109
- findNoteOffTarget(channel: any, noteNumber: any): any;
111
+ setNoteIndex(channel: any, index: any): void;
112
+ findNoteOffIndex(channel: any, noteNumber: any): any;
110
113
  noteOff(channelNumber: any, noteNumber: any, velocity: any, scheduleTime: any): void;
111
114
  releaseSustainPedal(channelNumber: any, halfVelocity: any, scheduleTime: any): void[];
112
115
  handleMIDIMessage(statusByte: any, data1: any, data2: any, scheduleTime: any): void | Promise<void>;
113
- handleProgramChange(channelNumber: any, programNumber: any, _scheduleTime: any): void;
116
+ setProgramChange(channelNumber: any, programNumber: any, _scheduleTime: any): void;
114
117
  handlePitchBendMessage(channelNumber: any, lsb: any, msb: any, scheduleTime: any): void;
115
118
  setPitchBend(channelNumber: any, value: any, scheduleTime: any): void;
116
119
  setModLfoToPitch(channel: any, note: any, scheduleTime: any): void;
@@ -133,7 +136,7 @@ export class MidyGM1 {
133
136
  getControllerState(channel: any, noteNumber: any, velocity: any): Float32Array<any>;
134
137
  applyVoiceParams(channel: any, controllerType: any, scheduleTime: any): void;
135
138
  createControlChangeHandlers(): any[];
136
- handleControlChange(channelNumber: any, controllerType: any, value: any, scheduleTime: any): void;
139
+ setControlChange(channelNumber: any, controllerType: any, value: any, scheduleTime: any): void;
137
140
  updateModulation(channel: any, scheduleTime: any): void;
138
141
  setModulationDepth(channelNumber: any, modulation: any, scheduleTime: any): void;
139
142
  setVolume(channelNumber: any, volume: any, scheduleTime: any): void;
@@ -1 +1 @@
1
- {"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AAsFA;IAwBE;;;;;;;;;;;MAWE;IAEF,+BAcC;IAlDD,aAAa;IACb,oBAAiB;IACjB,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,sBAA2C;IAC3C,kCAA+B;IAC/B,gCAA6B;IAC7B,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,gBAAc;IACd,mBAAiB;IACjB,oBAAkB;IAClB,2BAAqC;IAgBnC,kBAAgC;IAChC,kBAA8C;IAC9C,eAAwD;IACxD,qBAGE;IACF;;;;;;;;;;;MAA2D;IAC3D,6BAA+D;IAC/D,gBAAiD;IAMnD,4BAMC;IAED,mCAWC;IAED,yCAcC;IAED,oCAiBC;IAED;;;;MAeC;IAED,yCAaC;IAED,6DA2BC;IAED,4DASC;IAED,+EAkDC;IAED,mCAOC;IAED,0BA8DC;IAED,uDAEC;IAED,wDAEC;IAED,6EAEC;IAED;;;MA6EC;IAED,kGAeC;IAED,mGAgBC;IAED,wEAMC;IAED,uBAKC;IAED,aAGC;IAED,cAKC;IAED,wBAIC;IAED,0BAKC;IAED,wBAOC;IAED,sBAGC;IAED,yDAQC;IAED,yEASC;IAED,2BAEC;IAED,8BAEC;IAED,8BAEC;IAED,4BAEC;IAED,qCAMC;IAED,2DAIC;IAED,+DAIC;IAED,sDAeC;IAED,qDAoBC;IAED,6CAIC;IAED,sDAsBC;IAED,kEAoBC;IAED,+GA0BC;IAED,gHAyCC;IAED,0EAiBC;IAED,qHAwCC;IAED,6FASC;IAED,gCASC;IAED,iEAoBC;IAED,qGAaC;IAED,sDASC;IAED,qFASC;IAED,sFAeC;IAED,oGA2BC;IAED,sFAGC;IAED,wFAGC;IAED,sEAUC;IAED,mEAQC;IAED,wDAKC;IAED,sDAOC;IAED,mDAMC;IAED,kDAKC;IAED;;;;;;;;;;;MA2BC;IAED,oFAMC;IAED,6EA2CC;IAED,qCAcC;IAED,kGAWC;IAED,wDAUC;IAED,iFAKC;IAED,oEAKC;IAED;;;MAMC;IAED,8DAKC;IAED,4EAKC;IAED,sEAGC;IAED,2DAUC;IAED,yEAWC;IAED,kFAeC;IAED,2DAMC;IAED,uDAkBC;IAED,gDAEC;IAED,gDAEC;IAED,sEAGC;IAED,qEAKC;IAED,2EAUC;IAED,iEAKC;IAED,uEAQC;IAED,mEAKC;IAED,yEAQC;IAED,gFAGC;IAED,yCAqBC;IAGD,8EAgCC;IAED,gFAGC;IAED,+EAgBC;IAED,qCAWC;IAED,4EAaC;IAED,4DAGC;IAED,sDASC;IAED,gDAYC;IAGD,6DAgBC;CACF;AA79CD;IAWE,0FAMC;IAhBD,cAAW;IACX,gBAAe;IACf,kBAAa;IACb,gBAAW;IACX,iBAAY;IACZ,wBAAmB;IACnB,iBAAY;IACZ,mBAAc;IACd,qBAAgB;IAGd,gBAA4B;IAC5B,cAAwB;IACxB,eAA0B;IAC1B,WAAkB;IAClB,iBAA8B;CAEjC"}
1
+ {"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AA4FA;IAwBE;;;;;;;;;;;MAWE;IAEF,+BAcC;IAlDD,aAAa;IACb,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;IAgBnC,kBAAgC;IAChC,kBAA8C;IAC9C,eAAwD;IACxD,qBAGE;IACF;;;;;;;;;;;MAA2D;IAC3D,6BAA+D;IAC/D,gBAAiD;IAMnD,4BAMC;IAED,mCASC;IAED,2DAYC;IAED,yCAmBC;IAED,oCASC;IAED,sBAoCC;IAED,6EAcC;IAED;;;;MAeC;IAED,yCAaC;IAED,kDAUC;IAED,4DASC;IAED,+EAkDC;IAED,mCAOC;IAED,0BAgEC;IAED,uDAEC;IAED,wDAEC;IAED;;;MAgEC;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,2BAEC;IAED,8BAEC;IAED,8BAEC;IAED,4BAEC;IAED,qCAMC;IAED,2DAIC;IAED,+DAIC;IAED,sDAeC;IAED,qDAoBC;IAED,6CAIC;IAED,sDAsBC;IAED,kEAoBC;IAED,6FAyBC;IAED,oGAuCC;IAED,0EAiBC;IAED,kGAmCC;IAED,6FASC;IAED,gCASC;IAED,iEAoBC;IAED,qGAeC;IAED,6CAUC;IAED,qDAUC;IAED,qFASC;IAED,sFAeC;IAED,oGA2BC;IAED,mFAGC;IAED,wFAGC;IAED,sEAUC;IAED,mEAQC;IAED,wDAKC;IAED,sDAOC;IAED,mDAMC;IAED,kDAKC;IAED;;;;;;;;;;;MA2BC;IAED,oFAMC;IAED,6EAgCC;IAED,qCAeC;IAED,+FAWC;IAED,wDAUC;IAED,iFAKC;IAED,oEAKC;IAED;;;MAMC;IAED,8DAKC;IAED,4EAKC;IAED,sEAGC;IAED,2DAUC;IAED,yEAWC;IAED,kFAeC;IAED,2DAMC;IAED,uDAkBC;IAED,gDAEC;IAED,gDAEC;IAED,sEAGC;IAED,qEAKC;IAED,2EAUC;IAED,iEAKC;IAED,uEAQC;IAED,mEAKC;IAED,yEAQC;IAED,gFAGC;IAED,yCAqBC;IAGD,8EAgCC;IAED,gFAGC;IAED,+EAgBC;IAED,qCAWC;IAED,4EAaC;IAED,4DAGC;IAED,sDASC;IAED,gDAYC;IAGD,6DAgBC;CACF;AA//CD;IAWE,0FAMC;IAhBD,cAAW;IACX,gBAAe;IACf,kBAAa;IACb,gBAAW;IACX,iBAAY;IACZ,wBAAmB;IACnB,iBAAY;IACZ,mBAAc;IACd,qBAAgB;IAGd,gBAA4B;IAC5B,cAAwB;IACxB,eAA0B;IAC1B,WAAkB;IAClB,iBAA8B;CAEjC"}