@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 +19 -11
- package/esm/midy-GM1.d.ts +14 -11
- package/esm/midy-GM1.d.ts.map +1 -1
- package/esm/midy-GM1.js +159 -131
- package/esm/midy-GM2.d.ts +28 -42
- package/esm/midy-GM2.d.ts.map +1 -1
- package/esm/midy-GM2.js +309 -297
- package/esm/midy-GMLite.d.ts +15 -11
- package/esm/midy-GMLite.d.ts.map +1 -1
- package/esm/midy-GMLite.js +158 -132
- package/esm/midy.d.ts +30 -43
- package/esm/midy.d.ts.map +1 -1
- package/esm/midy.js +348 -315
- package/package.json +2 -2
- package/script/midy-GM1.d.ts +14 -11
- package/script/midy-GM1.d.ts.map +1 -1
- package/script/midy-GM1.js +159 -131
- package/script/midy-GM2.d.ts +28 -42
- package/script/midy-GM2.d.ts.map +1 -1
- package/script/midy-GM2.js +309 -297
- package/script/midy-GMLite.d.ts +15 -11
- package/script/midy-GMLite.d.ts.map +1 -1
- package/script/midy-GMLite.js +158 -132
- package/script/midy.d.ts +30 -43
- package/script/midy.d.ts.map +1 -1
- package/script/midy.js +348 -315
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.
|
|
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.
|
|
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
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
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
|
-
|
|
27
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
102
|
-
createNote(channel: any, voice: any, noteNumber: any, velocity: any, startTime: any
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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;
|
package/esm/midy-GM1.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"
|
|
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"}
|