multimodalart HF Staff commited on
Commit
94f78d2
·
verified ·
1 Parent(s): d54323c

Upload index.html with huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +8 -5
index.html CHANGED
@@ -17,7 +17,7 @@ html,body{background:#161719;overflow:hidden}
17
  const MODELS=["mrt2_small","mrt2_base"], SR=48000, PIDX={0:"temperature",1:"topk",3:"cfg",4:"cfgnotes",7:"unmaskwidth",8:"buffer",39:"drumless",46:"onsetmode",48:"cfgdrums"};
18
  let currentModel="mrt2_base", params={temperature:1.1,topk:50,cfg:1.6,cfgnotes:2.4,cfgdrums:4.0,buffer:0,unmaskwidth:0,drumless:0,onsetmode:0}, lastData=null;
19
  const activeNotes=new Set();
20
- let playing=false, ctx=null, analyser=null, gain=null, vol=1, muted=false, nextTime=0, client=null, freq=null;
21
  let sessionLen=120, budget=120, lastBT=0, mtick=0, settingsOpen=false, resetSeq=0, seedVal=0;
22
  const US=s=>{ if(window.updateState) window.updateState(s); };
23
 
@@ -32,8 +32,10 @@ html,body{background:#161719;overflow:hidden}
32
  case 'selectModel': if(m.name){ currentModel=m.name; US({modelName:m.name,localModels:MODELS}); setStyle(lastData); } break;
33
  case 'downloadModel': case 'initResources': US({resourcesMissing:false,modelName:currentModel,localModels:MODELS}); break;
34
  case 'textPrompts': lastData=m.value; setStyle(m.value); break;
35
- case 'param': { if(m.index===5){ vol=Math.max(0,Math.min(1,(m.value+60)/60)); if(gain)gain.gain.value=muted?0:vol; break; }
36
- if(m.index===6){ muted=!!m.value; if(gain)gain.gain.value=muted?0:vol; break; }
 
 
37
  if(m.index===31){ if(m.value){ resetSeq++; setStyle(lastData); } break; }
38
  if(m.index===47){ seedVal++; setStyle(lastData); break; }
39
  const k=PIDX[m.index]; if(k){ params[k]=m.value; setStyle(lastData); } break; }
@@ -41,7 +43,7 @@ html,body{background:#161719;overflow:hidden}
41
  case 'setSoloMode': US({solomode:!!m.value}); break;
42
  case 'checkBanks': US({bankStatus:{}}); break;
43
  case 'selectMidiSource': US({computerKeyboardMidi:(m.endpoint===0||m.endpoint===undefined)}); break;
44
- case 'kbdNote': if(m.on)activeNotes.add(m.note); else activeNotes.delete(m.note); US({activeNotes:[...activeNotes]}); setStyle(lastData||[{text:'instrumental music',weight:1}]); break;
45
  case 'gpuSession': sessionLen=+m.value; if(!playing)budget=sessionLen; emitGpu(); break;
46
  case 'togglePlay': toggle(); break;
47
  default: break;
@@ -62,6 +64,7 @@ html,body{background:#161719;overflow:hidden}
62
  const s=ctx.createBufferSource(); s.buffer=buf; s.connect(analyser);
63
  if(nextTime<ctx.currentTime+0.05)nextTime=ctx.currentTime+0.12; s.start(nextTime); nextTime+=n/SR;
64
  }
 
65
  function meter(){
66
  if(analyser){ analyser.getByteFrequencyData(freq); let m=0; for(let i=0;i<20;i++)m+=freq[i]; const lv=Math.min(1,m/20/150);
67
  US({audioLevel:lv,audioLevels:{left:lv,right:lv}});
@@ -78,7 +81,7 @@ html,body{background:#161719;overflow:hidden}
78
  }
79
  async function toggle(depleted){
80
  if(playing||depleted){ playing=false; US({isPlaying:false}); if(ctx)ctx.suspend(); emitGpu(); return; }
81
- if(!ctx){ ctx=new AudioContext({sampleRate:SR}); analyser=ctx.createAnalyser(); analyser.fftSize=64; gain=ctx.createGain(); gain.gain.value=muted?0:vol; analyser.connect(gain); gain.connect(ctx.destination); freq=new Uint8Array(analyser.frequencyBinCount); meter(); }
82
  await ctx.resume(); nextTime=ctx.currentTime+0.2; budget=sessionLen; lastBT=performance.now();
83
  playing=true; US({isPlaying:true}); emitGpu(); await setStyle(lastData);
84
  if(!client) client=await Client.connect(window.location.origin); loop();
 
17
  const MODELS=["mrt2_small","mrt2_base"], SR=48000, PIDX={0:"temperature",1:"topk",3:"cfg",4:"cfgnotes",7:"unmaskwidth",8:"buffer",39:"drumless",46:"onsetmode",48:"cfgdrums"};
18
  let currentModel="mrt2_base", params={temperature:1.1,topk:50,cfg:1.6,cfgnotes:2.4,cfgdrums:4.0,buffer:0,unmaskwidth:0,drumless:0,onsetmode:0}, lastData=null;
19
  const activeNotes=new Set();
20
+ let playing=false, ctx=null, analyser=null, gain=null, vol=1, muted=false, midigate=false, bypassed=false, nextTime=0, client=null, freq=null;
21
  let sessionLen=120, budget=120, lastBT=0, mtick=0, settingsOpen=false, resetSeq=0, seedVal=0;
22
  const US=s=>{ if(window.updateState) window.updateState(s); };
23
 
 
32
  case 'selectModel': if(m.name){ currentModel=m.name; US({modelName:m.name,localModels:MODELS}); setStyle(lastData); } break;
33
  case 'downloadModel': case 'initResources': US({resourcesMissing:false,modelName:currentModel,localModels:MODELS}); break;
34
  case 'textPrompts': lastData=m.value; setStyle(m.value); break;
35
+ case 'param': { if(m.index===5){ vol=Math.max(0,Math.min(1,(m.value+60)/60)); applyVol(); break; }
36
+ if(m.index===6){ muted=!!m.value; applyVol(); break; }
37
+ if(m.index===45){ midigate=!!m.value; applyVol(); break; }
38
+ if(m.index===32){ bypassed=!!m.value; applyVol(); break; }
39
  if(m.index===31){ if(m.value){ resetSeq++; setStyle(lastData); } break; }
40
  if(m.index===47){ seedVal++; setStyle(lastData); break; }
41
  const k=PIDX[m.index]; if(k){ params[k]=m.value; setStyle(lastData); } break; }
 
43
  case 'setSoloMode': US({solomode:!!m.value}); break;
44
  case 'checkBanks': US({bankStatus:{}}); break;
45
  case 'selectMidiSource': US({computerKeyboardMidi:(m.endpoint===0||m.endpoint===undefined)}); break;
46
+ case 'kbdNote': if(m.on)activeNotes.add(m.note); else activeNotes.delete(m.note); US({activeNotes:[...activeNotes]}); applyVol(); setStyle(lastData||[{text:'instrumental music',weight:1}]); break;
47
  case 'gpuSession': sessionLen=+m.value; if(!playing)budget=sessionLen; emitGpu(); break;
48
  case 'togglePlay': toggle(); break;
49
  default: break;
 
64
  const s=ctx.createBufferSource(); s.buffer=buf; s.connect(analyser);
65
  if(nextTime<ctx.currentTime+0.05)nextTime=ctx.currentTime+0.12; s.start(nextTime); nextTime+=n/SR;
66
  }
67
+ function applyVol(){ if(gain) gain.gain.value = (muted||bypassed||(midigate&&!activeNotes.size))?0:vol; }
68
  function meter(){
69
  if(analyser){ analyser.getByteFrequencyData(freq); let m=0; for(let i=0;i<20;i++)m+=freq[i]; const lv=Math.min(1,m/20/150);
70
  US({audioLevel:lv,audioLevels:{left:lv,right:lv}});
 
81
  }
82
  async function toggle(depleted){
83
  if(playing||depleted){ playing=false; US({isPlaying:false}); if(ctx)ctx.suspend(); emitGpu(); return; }
84
+ if(!ctx){ ctx=new AudioContext({sampleRate:SR}); analyser=ctx.createAnalyser(); analyser.fftSize=64; gain=ctx.createGain(); analyser.connect(gain); gain.connect(ctx.destination); freq=new Uint8Array(analyser.frequencyBinCount); applyVol(); meter(); }
85
  await ctx.resume(); nextTime=ctx.currentTime+0.2; budget=sessionLen; lastBT=performance.now();
86
  playing=true; US({isPlaying:true}); emitGpu(); await setStyle(lastData);
87
  if(!client) client=await Client.connect(window.location.origin); loop();