Spaces:
Runtime error
Runtime error
Upload index.html with huggingface_hub
Browse files- 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));
|
| 36 |
-
if(m.index===6){ muted=!!m.value;
|
|
|
|
|
|
|
| 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();
|
| 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();
|