Skip to content

Instantly share code, notes, and snippets.

@Krazete
Last active September 7, 2021 00:05
Show Gist options
  • Save Krazete/3fec3fd6891e3ee4a18e4eccb4180753 to your computer and use it in GitHub Desktop.
Save Krazete/3fec3fd6891e3ee4a18e4eccb4180753 to your computer and use it in GitHub Desktop.
Load a song to automatically play in https://luto-piano.web.app/.
function keypress(key, press, t) {
document.dispatchEvent(new KeyboardEvent(press ? "keydown" : "keyup", {key: key}));
}
function keyplay(key, time, duration) {
setTimeout(e => keypress(key, 1, time), time);
setTimeout(e => keypress(key, 0, time), time + duration);
}
var keylist = [
["f", 4016],
["n", 4166],
["5", 5291],
["r", 5708],
["y", 6125],
["f", 6583],
["f", 7350],
["n", 7500],
["5", 8708],
["r", 9083],
["y", 9500],
["f", 9958],
["2", 10375],
["2", 10875],
["2", 11033],
["r", 11208],
["r", 11708],
["r", 11916],
["5", 12083],
["5", 12333],
["5", 12541],
["f", 12708],
["f", 14141],
["n", 14291],
["5", 15458],
["r", 15875],
["u", 16291],
["g", 16708],
["2", 18000],
["2", 19250],
["2", 20500],
["2", 21125],
["f", 22416],
["2", 22625],
["f", 23875],
["f", 24250],
["f", 24583],
["2", 24750],
["2", 25791],
["2", 26033],
["2", 27916],
["2", 28208],
["f", 29166],
["2", 29375],
["y", 31008],
["f", 31208],
["5", 32333],
["r", 32750],
["y", 33166],
["y", 34391],
["f", 34541],
["5", 35750],
["r", 36166],
["y", 36541],
["y", 37766],
["f", 37916],
["5", 39125],
["r", 39541],
["y", 39958],
["f", 41183],
["n", 41333],
["5", 42500],
["r", 42916],
["2", 43333],
["3", 43666],
["r", 43958],
["f", 44208],
["5", 45875],
["5", 46541],
["6", 46708],
["5", 47125],
["6", 47333],
["y", 47541],
["5", 49033],
["y", 49250],
["u", 49875],
["y", 50083],
["6", 50750],
["6", 51000],
["5", 52625],
["5", 53083],
["6", 53250],
["5", 53666],
["6", 53916],
["y", 54125],
["6", 54541],
["5", 54958],
["e", 55375],
["y", 55833],
["6", 56250],
["5", 56625],
["6", 57033],
["6", 57708],
["6", 58958],
["u", 59166],
["y", 59375],
["y", 59666],
["y", 59875],
["y", 60291],
["6", 60458],
["5", 60666],
["e", 60875],
["5", 61083],
["6", 63000],
["6", 63250],
["5", 63416],
["6", 63625],
["5", 63833],
["6", 64033],
["5", 64250],
["6", 64458],
["6", 65750],
["u", 65916],
["y", 66166],
["y", 66416],
["y", 66625],
["y", 67033],
["6", 67208],
["5", 67416],
["e", 67625],
["5", 67833],
["r", 68666],
["5", 68916],
["6", 69083],
["u", 69333],
["6", 70375],
["6", 70833],
["2", 71250],
["2", 71708],
["2", 71916],
["r", 72083],
["r", 72541],
["r", 72750],
["5", 72916],
["5", 73166],
["5", 73416],
["5", 73833],
["5", 74250],
["y", 74625],
["y", 75083],
["y", 75291],
["u", 75458],
["y", 75666],
["6", 75875],
["6", 76333],
["6", 76791],
["6", 77208],
["5", 77375],
["r", 77541],
["2", 77958],
["2", 78250],
["2", 78500],
["2", 78666],
["r", 78833],
["r", 79333],
["r", 79516],
["5", 79666],
["5", 79958],
["5", 80125],
["5", 80583],
["5", 81000],
["y", 81375],
["y", 81833],
["y", 82033],
["u", 82208],
["y", 82416],
["6", 82625],
["6", 83125],
["6", 83541],
["6", 83933],
["5", 84083],
["r", 84333],
["6", 84750],
["5", 84958],
["r", 85166],
["3", 85375],
["r", 85625],
["3", 85791],
["j", 86000],
["j", 86166],
["n", 86416],
["n", 86833],
["n", 87125],
["j", 87291],
["j", 87708],
["j", 87875],
["n", 88125],
["n", 88541],
["n", 88708],
["j", 89000],
["j", 89416],
["j", 89583],
["n", 89833],
["n", 90225],
["n", 90375],
["j", 90666],
["j", 91083],
["j", 91333],
["k", 91500],
["j", 91750],
["k", 91916],
["j", 92166],
["n", 92333],
["j", 92791],
["j", 92958],
["n", 93208],
["n", 93625],
["n", 93883],
["j", 94033],
["j", 94475],
["j", 94625],
["n", 94875],
["n", 95291],
["n", 95458],
["j", 95708],
["j", 96166],
["j", 96333],
["n", 96583],
["n", 97000],
["n", 97166],
["j", 97416],
["j", 97833],
["j", 98125],
["k", 98291],
["j", 98458],
["k", 98708],
["j", 98916],
["n", 99125],
["f", 99750],
["b", 99958],
["f", 100375],
["f", 100625],
["f", 100875],
["u", 101208],
["f", 101666],
["f", 102708],
["n", 102916],
["j", 103125],
["n", 103375],
["f", 103791],
["f", 104016],
["k", 104166],
["j", 104416],
["k", 104583],
["j", 104833],
["n", 105000],
["b", 105875],
["b", 106375],
["b", 106791],
["f", 107166],
["f", 107416],
["u", 107583],
["f", 108000],
["f", 108458],
["f", 109458],
["n", 109666],
["j", 109916],
["n", 110083],
["f", 110541],
["f", 110791],
["k", 110958],
["j", 111166],
["k", 111375],
["j", 111583],
["n", 111791],
["2", 112666],
["3", 112958],
["r", 113291],
["f", 113458],
["5", 115166],
["5", 115875],
["6", 116033],
["5", 116458],
["6", 116625],
["y", 116875],
["5", 118333],
["y", 118541],
["u", 119208],
["y", 119375],
["6", 120033],
["6", 120291],
["5", 121958],
["5", 122416],
["6", 122583],
["5", 123000],
["6", 123208],
["y", 123416],
["6", 123833],
["5", 124250],
["e", 124666],
["y", 125083],
["6", 125500],
["5", 125958],
["6", 126375],
["6", 127000],
["6", 128250],
["u", 128500],
["y", 128708],
["y", 128958],
["y", 129166],
["y", 129583],
["6", 129750],
["5", 129958],
["e", 130166],
["5", 130416],
["6", 132291],
["6", 132558],
["5", 132708],
["6", 132916],
["5", 133125],
["6", 133333],
["5", 133541],
["6", 133750],
["6", 135033],
["u", 135250],
["y", 135458],
["y", 135750],
["y", 135958],
["y", 136350],
["6", 136500],
["5", 136708],
["e", 136958],
["5", 137166],
["r", 138033],
["5", 138208],
["6", 138458],
["u", 138666],
["6", 139708],
["6", 140208],
["2", 140541],
["2", 141033],
["2", 141250],
["r", 141416],
["r", 141875],
["r", 142083],
["5", 142250],
["5", 142541],
["5", 142708],
["5", 143166],
["5", 143583],
["y", 143958],
["y", 144416],
["y", 144625],
["u", 144791],
["y", 145000],
["6", 145208],
["6", 145708],
["6", 146125],
["6", 146516],
["5", 146666],
["r", 146916],
["2", 147333],
["2", 147583],
["2", 147791],
["2", 148016],
["r", 148166],
["r", 148666],
["r", 148850],
["5", 149000],
["5", 149250],
["5", 149500],
["5", 149916],
["5", 150375],
["y", 150708],
["y", 151166],
["y", 151391],
["u", 151541],
["y", 151750],
["6", 152000],
["6", 152458],
["6", 152875],
["6", 153291],
["5", 153458],
["r", 153666],
["k", 154083],
["k", 154500],
["k", 154916],
["k", 155333],
["k", 155791],
["f", 156625],
["j", 157458],
["j", 157750],
["j", 157958],
["j", 158125],
["j", 158375],
["k", 158541],
["j", 158708],
["b", 158958],
["g", 159166],
["u", 160000],
["j", 160875],
["j", 161125],
["j", 161333],
["j", 161541],
[".", 161708],
["k", 161916],
["j", 162125],
["b", 162333],
["g", 162500],
["u", 163375],
["j", 164208],
["j", 164500],
["j", 164708],
["j", 164916],
["j", 165100],
["k", 165250],
["j", 165500],
["b", 165708],
["g", 165916],
["u", 166750],
["6", 167583],
["6", 168666],
["b", 168875],
["g", 169083],
["g", 169558],
["f", 169708],
["6", 169916],
["6", 170416],
["b", 170583],
["g", 170791],
["g", 171250],
["f", 171416],
["6", 171625],
["6", 172083],
["u", 172250],
["y", 172666],
["y", 172933],
["6", 173083],
["5", 173291],
["y", 173708],
["6", 174125],
["y", 174583],
["6", 174791],
["5", 175000],
["e", 175208],
["b", 175625],
["b", 175916],
["f", 176458],
["j", 176708],
["b", 177333],
["b", 177583],
["f", 178166],
["j", 178375],
["b", 179033],
["j", 179208],
["k", 179458],
["j", 179625],
["k", 179875],
["j", 180083],
["k", 180291],
[".", 181125],
[".", 181375],
["k", 181541],
[".", 181958],
["6", 182833],
["6", 184083],
["u", 184291],
["y", 184500],
["y", 184791],
["y", 185000],
["y", 185416],
["6", 185583],
["5", 185750],
["e", 186000],
["5", 186208],
["6", 188083],
["6", 188350],
["5", 188500],
["6", 188750],
["5", 188958],
["6", 189166],
["5", 189375],
["6", 189583],
["6", 190833],
["u", 191083],
["y", 191250],
["y", 191541],
["y", 191750],
["y", 192166],
["6", 192333],
["5", 192541],
["e", 192750],
["5", 192958],
["r", 193791],
["5", 194000],
["6", 194208],
["u", 194458],
["6", 195500],
["6", 196000],
["2", 196333],
["2", 196791],
["2", 197033],
["r", 197208],
["r", 197666],
["r", 197875],
["5", 198033],
["5", 198291],
["5", 198500],
["5", 198958],
["5", 199375],
["y", 199708],
["y", 200208],
["y", 200416],
["u", 200583],
["y", 200750],
["6", 201000],
["6", 201458],
["6", 201875],
["6", 202291],
["5", 202458],
["r", 202666],
["2", 203083],
["2", 203375],
["2", 203583],
["2", 203791],
["r", 203958],
["r", 204458],
["r", 204625],
["5", 204791],
["5", 205033],
["5", 205291],
["5", 205666],
["5", 206125],
["y", 206500],
["y", 206958],
["y", 207183],
["u", 207333],
["y", 207541],
["6", 207750],
["6", 208250],
["6", 208666],
["6", 209083],
["5", 209250],
["6", 209458]
];
for (var i = 0; i < keylist.length; i++) {
var key = keylist[i][0];
var time = keylist[i][1];
var duration = keylist[i + 1] ? (keylist[i + 1][1] - keylist[i][1]) : 5000;
keyplay(key, time, duration);
}
var start = 0;
var keylist = [];
function logkey(e) {
if (e.type == "keydown") {
if (start <= 0) {
start = e.timeStamp;
}
var ts = Math.round(e.timeStamp - start);
keylist.push([e.key, ts]);
console.log(e.key, ts);
}
}
function gimme() {
console.log(JSON.stringify(keylist));
}
window.addEventListener("keydown", logkey);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment