@marmooo/midy 0.1.7 → 0.2.1

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.1.7",
3
+ "version": "0.2.1",
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",
@@ -22,7 +22,7 @@
22
22
  "test": "node test_runner.js"
23
23
  },
24
24
  "dependencies": {
25
- "@marmooo/soundfont-parser": "^0.0.7",
25
+ "@marmooo/soundfont-parser": "^0.1.1",
26
26
  "midi-file": "^1.2.4"
27
27
  },
28
28
  "devDependencies": {
@@ -1,24 +1,17 @@
1
1
  export class MidyGM1 {
2
2
  static channelSettings: {
3
- volume: number;
4
- pan: number;
3
+ currentBufferSource: null;
4
+ detune: number;
5
+ program: number;
5
6
  bank: number;
6
7
  dataMSB: number;
7
8
  dataLSB: number;
8
- program: number;
9
- pitchBend: number;
9
+ rpnMSB: number;
10
+ rpnLSB: number;
10
11
  fineTuning: number;
11
12
  coarseTuning: number;
12
13
  modulationDepthRange: number;
13
14
  };
14
- static effectSettings: {
15
- expression: number;
16
- modulationDepth: number;
17
- sustainPedal: boolean;
18
- rpnMSB: number;
19
- rpnLSB: number;
20
- pitchBendRange: number;
21
- };
22
15
  constructor(audioContext: any);
23
16
  ticksPerBeat: number;
24
17
  totalTime: number;
@@ -40,6 +33,18 @@ export class MidyGM1 {
40
33
  exclusiveClassMap: Map<any, any>;
41
34
  audioContext: any;
42
35
  masterGain: any;
36
+ voiceParamsHandlers: {
37
+ modLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
38
+ vibLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
39
+ modLfoToFilterFc: (channel: any, note: any, _prevValue: any) => void;
40
+ modLfoToVolume: (channel: any, note: any) => void;
41
+ chorusEffectsSend: (_channel: any, _note: any, _prevValue: any) => void;
42
+ reverbEffectsSend: (_channel: any, _note: any, _prevValue: any) => void;
43
+ delayModLFO: (_channel: any, note: any, _prevValue: any) => void;
44
+ freqModLFO: (_channel: any, note: any, _prevValue: any) => void;
45
+ delayVibLFO: (channel: any, note: any, prevValue: any) => void;
46
+ freqVibLFO: (channel: any, note: any, _prevValue: any) => void;
47
+ };
43
48
  controlChangeHandlers: {
44
49
  1: (channelNumber: any, modulation: any) => void;
45
50
  6: (channelNumber: any, value: any) => void;
@@ -65,8 +70,8 @@ export class MidyGM1 {
65
70
  merger: any;
66
71
  };
67
72
  createChannels(audioContext: any): any[];
68
- createNoteBuffer(instrumentKey: any, isSF3: any): Promise<any>;
69
- createNoteBufferNode(instrumentKey: any, isSF3: any): Promise<any>;
73
+ createNoteBuffer(voiceParams: any, isSF3: any): Promise<any>;
74
+ createNoteBufferNode(voiceParams: any, isSF3: any): Promise<any>;
70
75
  scheduleTimelineEvents(t: any, offset: any, queueIndex: any): Promise<any>;
71
76
  getQueueIndex(second: any): number;
72
77
  playNotes(): Promise<any>;
@@ -88,15 +93,17 @@ export class MidyGM1 {
88
93
  getActiveNotes(channel: any, time: any): Map<any, any>;
89
94
  getActiveNote(noteList: any, time: any): any;
90
95
  cbToRatio(cb: any): number;
96
+ rateToCent(rate: any): number;
97
+ centToRate(cent: any): number;
91
98
  centToHz(cent: any): number;
92
- calcSemitoneOffset(channel: any): any;
93
- calcPlaybackRate(instrumentKey: any, noteNumber: any, semitoneOffset: any): number;
99
+ calcChannelDetune(channel: any): any;
100
+ updateDetune(channel: any): void;
94
101
  setVolumeEnvelope(note: any): void;
95
- setPitch(note: any, semitoneOffset: any): void;
102
+ setPitchEnvelope(note: any): void;
96
103
  clampCutoffFrequency(frequency: any): number;
97
104
  setFilterEnvelope(note: any): void;
98
105
  startModulation(channel: any, note: any, startTime: any): void;
99
- createNote(channel: any, instrumentKey: any, noteNumber: any, velocity: any, startTime: any, isSF3: any): Promise<Note>;
106
+ createNote(channel: any, voice: any, noteNumber: any, velocity: any, startTime: any, isSF3: any): Promise<Note>;
100
107
  scheduleNoteOn(channelNumber: any, noteNumber: any, velocity: any, startTime: any): Promise<void>;
101
108
  noteOn(channelNumber: any, noteNumber: any, velocity: any): Promise<void>;
102
109
  stopNote(endTime: any, stopTime: any, scheduledNotes: any, index: any): Promise<any>;
@@ -106,7 +113,27 @@ export class MidyGM1 {
106
113
  handleMIDIMessage(statusByte: any, data1: any, data2: any): void | Promise<any>;
107
114
  handleProgramChange(channelNumber: any, program: any): void;
108
115
  handlePitchBendMessage(channelNumber: any, lsb: any, msb: any): void;
109
- setPitchBend(channelNumber: any, pitchBend: any): void;
116
+ setPitchBend(channelNumber: any, value: any): void;
117
+ setModLfoToPitch(channel: any, note: any): void;
118
+ setVibLfoToPitch(channel: any, note: any): void;
119
+ setModLfoToFilterFc(note: any): void;
120
+ setModLfoToVolume(note: any): void;
121
+ setDelayModLFO(note: any): void;
122
+ setFreqModLFO(note: any): void;
123
+ createVoiceParamsHandlers(): {
124
+ modLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
125
+ vibLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
126
+ modLfoToFilterFc: (channel: any, note: any, _prevValue: any) => void;
127
+ modLfoToVolume: (channel: any, note: any) => void;
128
+ chorusEffectsSend: (_channel: any, _note: any, _prevValue: any) => void;
129
+ reverbEffectsSend: (_channel: any, _note: any, _prevValue: any) => void;
130
+ delayModLFO: (_channel: any, note: any, _prevValue: any) => void;
131
+ freqModLFO: (_channel: any, note: any, _prevValue: any) => void;
132
+ delayVibLFO: (channel: any, note: any, prevValue: any) => void;
133
+ freqVibLFO: (channel: any, note: any, _prevValue: any) => void;
134
+ };
135
+ getControllerState(channel: any, noteNumber: any, velocity: any): Float32Array;
136
+ applyVoiceParams(channel: any, controllerType: any): void;
110
137
  createControlChangeHandlers(): {
111
138
  1: (channelNumber: any, modulation: any) => void;
112
139
  6: (channelNumber: any, value: any) => void;
@@ -121,7 +148,7 @@ export class MidyGM1 {
121
148
  121: (channelNumber: any) => void;
122
149
  123: (channelNumber: any) => Promise<void>;
123
150
  };
124
- handleControlChange(channelNumber: any, controller: any, value: any): void;
151
+ handleControlChange(channelNumber: any, controllerType: any, value: any): void;
125
152
  updateModulation(channel: any): void;
126
153
  setModulationDepth(channelNumber: any, modulation: any): void;
127
154
  setVolume(channelNumber: any, volume: any): void;
@@ -140,13 +167,12 @@ export class MidyGM1 {
140
167
  setRPNMSB(channelNumber: any, value: any): void;
141
168
  setRPNLSB(channelNumber: any, value: any): void;
142
169
  dataEntryMSB(channelNumber: any, value: any): void;
143
- updateDetune(channel: any, detuneChange: any): void;
144
170
  handlePitchBendRangeRPN(channelNumber: any): void;
145
- setPitchBendRange(channelNumber: any, pitchBendRange: any): void;
171
+ setPitchBendRange(channelNumber: any, value: any): void;
146
172
  handleFineTuningRPN(channelNumber: any): void;
147
- setFineTuning(channelNumber: any, fineTuning: any): void;
173
+ setFineTuning(channelNumber: any, value: any): void;
148
174
  handleCoarseTuningRPN(channelNumber: any): void;
149
- setCoarseTuning(channelNumber: any, coarseTuning: any): void;
175
+ setCoarseTuning(channelNumber: any, value: any): void;
150
176
  allSoundOff(channelNumber: any): Promise<void>;
151
177
  resetAllControllers(channelNumber: any): void;
152
178
  allNotesOff(channelNumber: any): Promise<void>;
@@ -160,7 +186,7 @@ export class MidyGM1 {
160
186
  scheduleTask(callback: any, startTime: any): Promise<any>;
161
187
  }
162
188
  declare class Note {
163
- constructor(noteNumber: any, velocity: any, startTime: any, instrumentKey: any);
189
+ constructor(noteNumber: any, velocity: any, startTime: any, voice: any, voiceParams: any);
164
190
  bufferSource: any;
165
191
  filterNode: any;
166
192
  volumeNode: any;
@@ -172,7 +198,8 @@ declare class Note {
172
198
  noteNumber: any;
173
199
  velocity: any;
174
200
  startTime: any;
175
- instrumentKey: any;
201
+ voice: any;
202
+ voiceParams: any;
176
203
  }
177
204
  export {};
178
205
  //# sourceMappingURL=midy-GM1.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AAqBA;IAoBE;;;;;;;;;;;MAWE;IAEF;;;;;;;MAOE;IAEF,+BAOC;IAhDD,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,sBAA2C;IAC3C,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,gBAAc;IACd,mBAAiB;IACjB,oBAAkB;IAClB,iCAA8B;IAyB5B,kBAAgC;IAChC,gBAA4C;IAC5C;;;;;;;;;;;;;MAA+D;IAC/D,gBAAiD;IAKnD,4BAMC;IAED,mCAWC;IAED,gDAMC;IAED,sCASC;IAED;;;;MAeC;IAED,yCAUC;IAED,+DA2BC;IAED,mEAWC;IAED,2EA+CC;IAED,mCAOC;IAED,0BAkDC;IAED,uDAEC;IAED,wDAEC;IAED;;;MAgEC;IAED,+EAmBC;IAED,qDAKC;IAED,uBAKC;IAED,aAGC;IAED,cAKC;IAED,wBAIC;IAED,0BAKC;IAED,wBAOC;IAED,sBAGC;IAED,uDASC;IAED,6CAQC;IAED,2BAEC;IAED,4BAEC;IAED,sCAGC;IAED,mFAGC;IAED,mCAeC;IAED,+CAwBC;IAED,6CAIC;IAED,mCAsBC;IAED,+DA0BC;IAED,wHAgCC;IAED,kGAgDC;IAED,0EAGC;IAED,qFA4BC;IAED,6HAuBC;IAED,0FAGC;IAED,kEAeC;IAED,gFAiBC;IAED,4DAGC;IAED,qEAGC;IAED,uDAOC;IAED;;;;;;;;;;;;;MAeC;IAED,2EASC;IAED,qCAkBC;IAED,8DAIC;IACD,iDAIC;IAED;;;MAMC;IAED,2CAIC;IAED,yDAIC;IAED,mDAGC;IAED,wCAUC;IAED,sDAMC;IAED,kFAeC;IAED,2DAMC;IAED,oCAkBC;IAED,gDAEC;IAED,gDAEC;IAED,mDAGC;IAED,oDAaC;IAED,kDAKC;IAED,iEAOC;IAED,8CAKC;IAED,yDAMC;IAED,gDAKC;IAED,6DAMC;IAED,+CAEC;IAED,8CAEC;IAED,+CAEC;IAED,4DAgBC;IAED,oBASC;IAED,yDAaC;IAED,yCAGC;IAED,mCAQC;IAED,wCAEC;IAED,6BASC;IAED,0DAUC;CACF;AA9kCD;IAUE,gFAKC;IAdD,kBAAa;IACb,gBAAW;IACX,gBAAW;IACX,iBAAY;IACZ,mBAAc;IACd,qBAAgB;IAChB,gBAAW;IACX,kBAAa;IAGX,gBAA4B;IAC5B,cAAwB;IACxB,eAA0B;IAC1B,mBAAkC;CAErC"}
1
+ {"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AAqFA;IAoBE;;;;;;;;;;;;MAYE;IAEF,+BAQC;IAzCD,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,sBAA2C;IAC3C,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,gBAAc;IACd,mBAAiB;IACjB,oBAAkB;IAClB,iCAA8B;IAiB5B,kBAAgC;IAChC,gBAA4C;IAC5C;;;;;;;;;;;MAA2D;IAC3D;;;;;;;;;;;;;MAA+D;IAC/D,gBAAiD;IAKnD,4BAMC;IAED,mCAWC;IAED,gDAMC;IAED,sCASC;IAED;;;;MAeC;IAED,yCAUC;IAED,6DA2BC;IAED,iEAUC;IAED,2EA+CC;IAED,mCAOC;IAED,0BAkDC;IAED,uDAEC;IAED,wDAEC;IAED;;;MAgEC;IAED,+EAmBC;IAED,qDAKC;IAED,uBAKC;IAED,aAGC;IAED,cAKC;IAED,wBAIC;IAED,0BAKC;IAED,wBAOC;IAED,sBAGC;IAED,uDASC;IAED,6CAQC;IAED,2BAEC;IAED,8BAEC;IAED,8BAEC;IAED,4BAEC;IAED,qCAMC;IAED,iCAWC;IAED,mCAgBC;IAED,kCAqBC;IAED,6CAIC;IAED,mCAuBC;IAED,+DAoBC;IAED,gHA2BC;IAED,kGAgDC;IAED,0EAGC;IAED,qFA4BC;IAED,6HAuBC;IAED,0FAGC;IAED,kEAeC;IAED,gFAiBC;IAED,4DAGC;IAED,qEAGC;IAED,mDASC;IAED,gDASC;IAED,gDASC;IAED,qCAMC;IAED,mCAQC;IAED,gCAOC;IAED,+BAMC;IAED;;;;;;;;;;;MA2CC;IAED,+EAMC;IAED,0DA6CC;IAED;;;;;;;;;;;;;MAeC;IAED,+EASC;IAED,qCAiBC;IAED,8DAKC;IACD,iDAIC;IAED;;;MAMC;IAED,2CAIC;IAED,yDAIC;IAED,mDAGC;IAED,wCAWC;IAED,sDAKC;IAED,kFAeC;IAED,2DAMC;IAED,oCAkBC;IAED,gDAEC;IAED,gDAEC;IAED,mDAGC;IAED,kDAKC;IAED,wDASC;IAED,8CAKC;IAED,oDAOC;IAED,gDAKC;IAED,sDAOC;IAED,+CAEC;IAED,8CAqBC;IAED,+CAEC;IAED,4DAgBC;IAED,oBAMC;IAED,yDAaC;IAED,yCAGC;IAED,mCAQC;IAED,wCAEC;IAED,6BASC;IAED,0DAUC;CACF;AAjzCD;IAUE,0FAMC;IAfD,kBAAa;IACb,gBAAW;IACX,gBAAW;IACX,iBAAY;IACZ,mBAAc;IACd,qBAAgB;IAChB,gBAAW;IACX,kBAAa;IAGX,gBAA4B;IAC5B,cAAwB;IACxB,eAA0B;IAC1B,WAAkB;IAClB,iBAA8B;CAEjC"}