skytnt commited on
Commit
0ede4e4
1 Parent(s): cfa70b3

fix color in midi_visualizer

Browse files
Files changed (1) hide show
  1. javascript/app.js +15 -4
javascript/app.js CHANGED
@@ -104,6 +104,7 @@ class MidiVisualizer extends HTMLElement{
104
  this.midiEvents = [];
105
  this.activeNotes = [];
106
  this.midiTimes = [];
 
107
  this.wrapper = null;
108
  this.svg = null;
109
  this.timeLine = null;
@@ -145,17 +146,20 @@ class MidiVisualizer extends HTMLElement{
145
  this.wrapper = wrapper;
146
  this.svg = svg;
147
  this.timeLine= timeLine;
 
 
 
 
148
  this.setPlayTime(0);
149
  }
150
 
151
- clearMidiEvents(keepColor=false){
152
  this.pause()
153
  this.midiEvents = [];
154
  this.activeNotes = [];
155
  this.midiTimes = [];
 
156
  this.t1 = 0
157
- if (!keepColor)
158
- this.colorMap.clear()
159
  this.setPlayTime(0);
160
  this.totalTimeMs = 0;
161
  this.playTimeMs = 0
@@ -201,6 +205,9 @@ class MidiVisualizer extends HTMLElement{
201
  midiEvent.push(rect)
202
  this.setPlayTime(t);
203
  this.wrapper.scrollTo(this.svgWidth - this.wrapper.offsetWidth, 0)
 
 
 
204
  }
205
  this.midiEvents.push(midiEvent);
206
  this.svg.style.width = `${this.svgWidth}px`;
@@ -209,7 +216,11 @@ class MidiVisualizer extends HTMLElement{
209
  }
210
 
211
  getColor(track, channel){
212
- let key = `${track},${channel}`;
 
 
 
 
213
  let color = this.colorMap.get(key);
214
  if(!!color){
215
  return color;
 
104
  this.midiEvents = [];
105
  this.activeNotes = [];
106
  this.midiTimes = [];
107
+ this.patches = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
108
  this.wrapper = null;
109
  this.svg = null;
110
  this.timeLine = null;
 
146
  this.wrapper = wrapper;
147
  this.svg = svg;
148
  this.timeLine= timeLine;
149
+ for(let i = 0; i <= 128 ; i++){
150
+ this.colorMap.set(i, HSVtoRGB(i / 129, 1, 1))
151
+ }
152
+ console.log(this.colorMap)
153
  this.setPlayTime(0);
154
  }
155
 
156
+ clearMidiEvents(){
157
  this.pause()
158
  this.midiEvents = [];
159
  this.activeNotes = [];
160
  this.midiTimes = [];
161
+ this.patches = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
162
  this.t1 = 0
 
 
163
  this.setPlayTime(0);
164
  this.totalTimeMs = 0;
165
  this.playTimeMs = 0
 
205
  midiEvent.push(rect)
206
  this.setPlayTime(t);
207
  this.wrapper.scrollTo(this.svgWidth - this.wrapper.offsetWidth, 0)
208
+ }else if(midiEvent[0] === "patch_change"){
209
+ let channel = midiEvent[3]
210
+ this.patches[channel] = midiEvent[4]
211
  }
212
  this.midiEvents.push(midiEvent);
213
  this.svg.style.width = `${this.svgWidth}px`;
 
216
  }
217
 
218
  getColor(track, channel){
219
+ let key = this.patches[channel];
220
+ if( channel === 9){
221
+ // drum
222
+ key = 128;
223
+ }
224
  let color = this.colorMap.get(key);
225
  if(!!color){
226
  return color;