Spaces:
Sleeping
Sleeping
Download scripts/gsharp_wrong_counterfactual.mjs from jasonmdong/notepilot: direct link, hf CLI and curl.
- Browser
- Download file 1.76 kB
-
https://huggingface.co/spaces/jasonmdong/notepilot/resolve/main/scripts/gsharp_wrong_counterfactual.mjs
- Command line
-
hf download hf://spaces/jasonmdong/notepilot/scripts/gsharp_wrong_counterfactual.mjs
-
curl -L -o gsharp_wrong_counterfactual.mjs https://huggingface.co/spaces/jasonmdong/notepilot/resolve/main/scripts/gsharp_wrong_counterfactual.mjs
1.76 kB
| // Diagnostic-only replay: remove one measured WRONG free pitch from this | |
| // in-memory follower instance. It never changes static defaults or live code. | |
| import fs from 'node:fs'; | |
| import { dequantiseSal } from '../static/salience.js'; | |
| import { ScoreFollower, FOLLOWER_DEFAULTS } from '../static/follower.js'; | |
| const path=process.argv[2]||'/tmp/notepilot-left-loop/mic-follower-hold-diagnostics-20260918-v2.json'; | |
| const q=Number(process.argv[3]||78), tr=JSON.parse(fs.readFileSync(path,'utf8')), ev=tr.events, m=tr.meta||{}; | |
| const sr=m.follower?.sr||48000, hop=m.follower?.hop||512, opt=m.follower?.options||FOLLOWER_DEFAULTS; | |
| const sf=new ScoreFollower({solo:m.rh,sampleRate:sr,win:m.follower?.win||2048,hop,position:0,options:{...opt,diagnostic:()=>{}}}); | |
| sf._wrongPitches=sf._wrongPitches.filter(x=>x.midi!==q); | |
| const fired=new Set(), attempts=ev.filter(e=>e.type==='input.testEvent'), rows=[]; | |
| for(const f of ev.filter(e=>e.type==='follow.frame'&&Array.isArray(e.sal))){ | |
| for(let i=0;i<ev.length;i++){const a=ev[i];if(a.type==='accomp.fire'&&a.t<=f.t&&!fired.has(i)){fired.add(i);sf.accompanimentFired({pitches:a.pitches,atMs:a.t,durMs:500,beat:a.beat});}} | |
| const out=sf.observe({seq:f.k,at:f.at,sr,win:m.follower?.win||2048,hop,db:f.db,floorDb:f.fl,gated:!!f.g,attack:!!f.a,onset:f.on,sal:dequantiseSal(Uint8Array.from(f.sal),f.pk)},f.t); | |
| if(out.advance) rows.push({t:f.t,to:out.advance.toIndex,lag:out.advance.lagMs}); | |
| } | |
| const falseAdv=rows.filter(r=>{const prior=attempts.filter(a=>a.scoreEventId===r.to&&a.t<=r.t);return !prior.length;}); | |
| console.log(JSON.stringify({source:path,excludedQ:q,excludedName:`${q}`,advances:rows.length,advancesTo:rows.slice(-10),falseAdvances:falseAdv.length,falseAdvancesDetail:falseAdv},null,2)); | |