@marmooo/midy 0.1.7 → 0.2.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.1.7",
3
+ "version": "0.2.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",
@@ -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,16 @@
1
1
  export class MidyGM1 {
2
2
  static channelSettings: {
3
- volume: number;
4
- pan: number;
3
+ currentBufferSource: null;
4
+ program: number;
5
5
  bank: number;
6
6
  dataMSB: number;
7
7
  dataLSB: number;
8
- program: number;
9
- pitchBend: number;
8
+ rpnMSB: number;
9
+ rpnLSB: number;
10
10
  fineTuning: number;
11
11
  coarseTuning: number;
12
12
  modulationDepthRange: number;
13
13
  };
14
- static effectSettings: {
15
- expression: number;
16
- modulationDepth: number;
17
- sustainPedal: boolean;
18
- rpnMSB: number;
19
- rpnLSB: number;
20
- pitchBendRange: number;
21
- };
22
14
  constructor(audioContext: any);
23
15
  ticksPerBeat: number;
24
16
  totalTime: number;
@@ -40,6 +32,18 @@ export class MidyGM1 {
40
32
  exclusiveClassMap: Map<any, any>;
41
33
  audioContext: any;
42
34
  masterGain: any;
35
+ voiceParamsHandlers: {
36
+ modLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
37
+ vibLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
38
+ modLfoToFilterFc: (channel: any, note: any, _prevValue: any) => void;
39
+ modLfoToVolume: (channel: any, note: any) => void;
40
+ chorusEffectsSend: (_channel: any, _note: any, _prevValue: any) => void;
41
+ reverbEffectsSend: (_channel: any, _note: any, _prevValue: any) => void;
42
+ delayModLFO: (_channel: any, note: any, _prevValue: any) => void;
43
+ freqModLFO: (_channel: any, note: any, _prevValue: any) => void;
44
+ delayVibLFO: (channel: any, note: any, prevValue: any) => void;
45
+ freqVibLFO: (channel: any, note: any, _prevValue: any) => void;
46
+ };
43
47
  controlChangeHandlers: {
44
48
  1: (channelNumber: any, modulation: any) => void;
45
49
  6: (channelNumber: any, value: any) => void;
@@ -65,8 +69,8 @@ export class MidyGM1 {
65
69
  merger: any;
66
70
  };
67
71
  createChannels(audioContext: any): any[];
68
- createNoteBuffer(instrumentKey: any, isSF3: any): Promise<any>;
69
- createNoteBufferNode(instrumentKey: any, isSF3: any): Promise<any>;
72
+ createNoteBuffer(voiceParams: any, isSF3: any): Promise<any>;
73
+ createNoteBufferNode(voiceParams: any, isSF3: any): Promise<any>;
70
74
  scheduleTimelineEvents(t: any, offset: any, queueIndex: any): Promise<any>;
71
75
  getQueueIndex(second: any): number;
72
76
  playNotes(): Promise<any>;
@@ -90,13 +94,13 @@ export class MidyGM1 {
90
94
  cbToRatio(cb: any): number;
91
95
  centToHz(cent: any): number;
92
96
  calcSemitoneOffset(channel: any): any;
93
- calcPlaybackRate(instrumentKey: any, noteNumber: any, semitoneOffset: any): number;
94
97
  setVolumeEnvelope(note: any): void;
95
- setPitch(note: any, semitoneOffset: any): void;
98
+ setPlaybackRate(note: any): void;
99
+ setPitch(channel: any, note: any): void;
96
100
  clampCutoffFrequency(frequency: any): number;
97
101
  setFilterEnvelope(note: any): void;
98
102
  startModulation(channel: any, note: any, startTime: any): void;
99
- createNote(channel: any, instrumentKey: any, noteNumber: any, velocity: any, startTime: any, isSF3: any): Promise<Note>;
103
+ createNote(channel: any, voice: any, noteNumber: any, velocity: any, startTime: any, isSF3: any): Promise<Note>;
100
104
  scheduleNoteOn(channelNumber: any, noteNumber: any, velocity: any, startTime: any): Promise<void>;
101
105
  noteOn(channelNumber: any, noteNumber: any, velocity: any): Promise<void>;
102
106
  stopNote(endTime: any, stopTime: any, scheduledNotes: any, index: any): Promise<any>;
@@ -106,7 +110,27 @@ export class MidyGM1 {
106
110
  handleMIDIMessage(statusByte: any, data1: any, data2: any): void | Promise<any>;
107
111
  handleProgramChange(channelNumber: any, program: any): void;
108
112
  handlePitchBendMessage(channelNumber: any, lsb: any, msb: any): void;
109
- setPitchBend(channelNumber: any, pitchBend: any): void;
113
+ setPitchBend(channelNumber: any, value: any): void;
114
+ setModLfoToPitch(channel: any, note: any): void;
115
+ setModLfoToVolume(note: any): void;
116
+ setVibLfoToPitch(channel: any, note: any): void;
117
+ setModLfoToFilterFc(note: any): void;
118
+ setDelayModLFO(note: any): void;
119
+ setFreqModLFO(note: any): void;
120
+ createVoiceParamsHandlers(): {
121
+ modLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
122
+ vibLfoToPitch: (channel: any, note: any, _prevValue: any) => void;
123
+ modLfoToFilterFc: (channel: any, note: any, _prevValue: any) => void;
124
+ modLfoToVolume: (channel: any, note: any) => void;
125
+ chorusEffectsSend: (_channel: any, _note: any, _prevValue: any) => void;
126
+ reverbEffectsSend: (_channel: any, _note: any, _prevValue: any) => void;
127
+ delayModLFO: (_channel: any, note: any, _prevValue: any) => void;
128
+ freqModLFO: (_channel: any, note: any, _prevValue: any) => void;
129
+ delayVibLFO: (channel: any, note: any, prevValue: any) => void;
130
+ freqVibLFO: (channel: any, note: any, _prevValue: any) => void;
131
+ };
132
+ getControllerState(channel: any, noteNumber: any, velocity: any): Float32Array;
133
+ applyVoiceParams(channel: any, controllerType: any): void;
110
134
  createControlChangeHandlers(): {
111
135
  1: (channelNumber: any, modulation: any) => void;
112
136
  6: (channelNumber: any, value: any) => void;
@@ -121,7 +145,7 @@ export class MidyGM1 {
121
145
  121: (channelNumber: any) => void;
122
146
  123: (channelNumber: any) => Promise<void>;
123
147
  };
124
- handleControlChange(channelNumber: any, controller: any, value: any): void;
148
+ handleControlChange(channelNumber: any, controllerType: any, value: any): void;
125
149
  updateModulation(channel: any): void;
126
150
  setModulationDepth(channelNumber: any, modulation: any): void;
127
151
  setVolume(channelNumber: any, volume: any): void;
@@ -140,9 +164,9 @@ export class MidyGM1 {
140
164
  setRPNMSB(channelNumber: any, value: any): void;
141
165
  setRPNLSB(channelNumber: any, value: any): void;
142
166
  dataEntryMSB(channelNumber: any, value: any): void;
143
- updateDetune(channel: any, detuneChange: any): void;
167
+ updateDetune(channel: any, detune: any): void;
144
168
  handlePitchBendRangeRPN(channelNumber: any): void;
145
- setPitchBendRange(channelNumber: any, pitchBendRange: any): void;
169
+ setPitchBendRange(channelNumber: any, pitchWheelSensitivity: any): void;
146
170
  handleFineTuningRPN(channelNumber: any): void;
147
171
  setFineTuning(channelNumber: any, fineTuning: any): void;
148
172
  handleCoarseTuningRPN(channelNumber: any): void;
@@ -160,7 +184,7 @@ export class MidyGM1 {
160
184
  scheduleTask(callback: any, startTime: any): Promise<any>;
161
185
  }
162
186
  declare class Note {
163
- constructor(noteNumber: any, velocity: any, startTime: any, instrumentKey: any);
187
+ constructor(noteNumber: any, velocity: any, startTime: any, voice: any, voiceParams: any);
164
188
  bufferSource: any;
165
189
  filterNode: any;
166
190
  volumeNode: any;
@@ -172,7 +196,8 @@ declare class Note {
172
196
  noteNumber: any;
173
197
  velocity: any;
174
198
  startTime: any;
175
- instrumentKey: any;
199
+ voice: any;
200
+ voiceParams: any;
176
201
  }
177
202
  export {};
178
203
  //# 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;;;;;;;;;;;MAWE;IAEF,+BAQC;IAxCD,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;IAgB5B,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,4BAEC;IAED,sCAMC;IAED,mCAgBC;IAED,iCAKC;IAED,wCAmBC;IAED,6CAIC;IAED,mCAuBC;IAED,+DAoBC;IAED,gHA4BC;IAED,kGAgDC;IAED,0EAGC;IAED,qFA4BC;IAED,6HAuBC;IAED,0FAGC;IAED,kEAeC;IAED,gFAiBC;IAED,4DAGC;IAED,qEAGC;IAED,mDAOC;IAED,gDASC;IAED,mCAQC;IAED,gDASC;IAED,qCAMC;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,8CAYC;IAED,kDAKC;IAED,wEAOC;IAED,8CAKC;IAED,yDAMC;IAED,gDAKC;IAED,6DAMC;IAED,+CAEC;IAED,8CAqBC;IAED,+CAEC;IAED,4DAgBC;IAED,oBAMC;IAED,yDAaC;IAED,yCAGC;IAED,mCAQC;IAED,wCAEC;IAED,6BASC;IAED,0DAUC;CACF;AAzyCD;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"}