<!DOCTYPE html>
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<title>Music Note or Scale Player and Composer - RJM Programming - May, 2015</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

<style>

.crotchet {
opacity: 0.5;
}

.singleright {
text-decoration: underline;
cursor: crosshair;
}

.cmeter {
-ms-transform: rotate(0deg); /* IE 9 */
-webkit-transform: rotate(0deg); /* Chrome, Safari, Opera */
transform: rotate(0deg);
}


#myxtbody {
position: absolute;
left: 0px;
top: 0px;
z-index: 2;
align: top;
-ms-transform: rotate(-90deg); /* IE 9 */
-webkit-transform: rotate(-90deg); /* Chrome, Safari, Opera */
transform: rotate(-90deg);
margin-top: -800px;
margin-left: 850px;
opacity: 1.0;
background-color: white;
}

#myxtd2 {
float: right;
}

#myxh1right {
margin-top: 200px;
}

</style>
<script type='text/javascript'>
var hit=1;
var azzgoon=true;
try {
if (parent.document.title != document.title) {
azzgoon=false;
hit=0;
}
} catch (awzerrr) {
}

var songmode=0;
var askmode=0;
var nonred=-1;
var composingform='';
var lastsong='';
var globvar=0;
var startnote;
var stuff="";
var allhis="";
var thism=1;
var prevtr=-1;
var pinnote=-1;
var delay=0;
var lastn=-1;
var sm="";
var maxfactor=1.0;
var nextc=[];
var inextc=0;
var lastpar3=0;

var barr=['piano/A0.mp3','piano/Bb0.mp3','piano/B0.mp3',
'piano/C1.mp3','piano/Db1.mp3','piano/D1.mp3','piano/Eb1.mp3','piano/E1.mp3','piano/F1.mp3','piano/Gb1.mp3','piano/G1.mp3','piano/Ab1.mp3','piano/A1.mp3','piano/Bb1.mp3','piano/B1.mp3',
'piano/C2.mp3','piano/Db2.mp3','piano/D2.mp3','piano/Eb2.mp3','piano/E2.mp3','piano/F2.mp3','piano/Gb2.mp3','piano/G2.mp3','piano/Ab2.mp3','piano/A2.mp3','piano/Bb2.mp3','piano/B2.mp3',
'piano/C3.mp3','piano/Db3.mp3','piano/D3.mp3','piano/Eb3.mp3','piano/E3.mp3','piano/F3.mp3','piano/Gb3.mp3','piano/G3.mp3','piano/Ab3.mp3','piano/A3.mp3','piano/Bb3.mp3','piano/B3.mp3',
'piano/C4.mp3','piano/Db4.mp3','piano/D4.mp3','piano/Eb4.mp3','piano/E4.mp3','piano/F4.mp3','piano/Gb4.mp3','piano/G4.mp3','piano/Ab4.mp3','piano/A4.mp3','piano/Bb4.mp3','piano/B4.mp3',
'piano/C5.mp3','piano/Db5.mp3','piano/D5.mp3','piano/Eb5.mp3','piano/E5.mp3','piano/F5.mp3','piano/Gb5.mp3','piano/G5.mp3','piano/Ab5.mp3','piano/A5.mp3','piano/Bb5.mp3','piano/B5.mp3',
'piano/C6.mp3','piano/Db6.mp3','piano/D6.mp3','piano/Eb6.mp3','piano/E6.mp3','piano/F6.mp3','piano/Gb6.mp3','piano/G6.mp3','piano/Ab6.mp3','piano/A6.mp3','piano/Bb6.mp3','piano/B6.mp3',
'piano/C7.mp3','piano/Db7.mp3','piano/D7.mp3','piano/Eb7.mp3','piano/E7.mp3','piano/F7.mp3','piano/Gb7.mp3','piano/G7.mp3','piano/Ab7.mp3','piano/A7.mp3','piano/Bb7.mp3','piano/B7.mp3',
'piano/C8.mp3','piano/Db8.mp3'];

var nsuffix='';
var pchosen='';

var fifty="50";
var one_twenty_seven="127";
var nlength="0.75";
var tasimh='';

function noteworth(notenum) {
factor = eval((document.getElementById('speed').value * Math.abs(notenum)) / maxfactor);
return factor;
}

function insong(sheetmusic) { // assumes comma separators
if (sheetmusic != "") {
// add a suffix of + if two hands are playing together
// normal word is a speed descriptor
// normal number is a note
// -1 is crotchet, -2 is minum, -0.5 is quaver, -0.25 is semi-quaver etcetera
// 0 (alone) is for a rest of the duration above
// 0127 is normal loudness, etcetera
var done="", offset=0.0, offset2=0.0, planbit="", isrest=false, delaydelim='', notedelim='', curnote=-1, curvelocity=127, curdelay=-1, jk, ijk, prevvelocity=-1, prefix="", curval=1, kji=0, allhhh, bitshhbefore, notes, curnotes="", delays, curdelays="";
var plan=" MIDI.loadPlugin({ \n";
plan += "soundfontUrl: './soundfont/', \n";
plan += "instrument: document.getElementById('instrument').value.toLowerCase(), \n";
plan += "onprogress: function(state, progress) { \n";
plan += " console.log(state, progress); \n";
plan += "}, \n";
plan += "onsuccess: function() { \n";
plan += " delay = 0.0; \n";
plan += " var note = 21; \n";
plan += " var velocity = 127; \n";
plan += " thism=1; \n";
plan += " setTimeout(cleartd, 1000); \n";
plan += "}}); \n\n";

var mididata=sheetmusic.split(',');
if (mididata[0].substring(0,1) >= 'A') {
kji = 1;
if (mididata[0].toLowerCase().indexOf("slowx") != -1) maxfactor=eval(mididata[0].toLowerCase().replace("slowx", ""));
if (mididata[0].toLowerCase().indexOf("fastx") != -1) maxfactor=eval(mididata[0].toLowerCase().replace("fastx", ""));
if (mididata[0].toLowerCase().indexOf("slowby") != -1) maxfactor=eval(1.0 / mididata[0].toLowerCase().replace("slowby", ""));
if (mididata[0].toLowerCase().indexOf("fastby") != -1) maxfactor=eval(1.0 / mididata[0].toLowerCase().replace("fastby", ""));
if (mididata[0].toLowerCase() == "largo") document.getElementById('speed').value='0.30';
if (mididata[0].toLowerCase() == "larghetto") document.getElementById('speed').value='0.25';
if (mididata[0].toLowerCase() == "adagio") document.getElementById('speed').value='0.20';
if (mididata[0].toLowerCase() == "andante") document.getElementById('speed').value='0.15';
if (mididata[0].toLowerCase() == "moderato") document.getElementById('speed').value='0.10';
if (mididata[0].toLowerCase() == "allegro") document.getElementById('speed').value='0.05';
if (mididata[0].toLowerCase() == "presto") document.getElementById('speed').value='0.025';
}
if (mididata[1].substring(0,1) >= 'A') {
kji = 2;
if (mididata[1].toLowerCase().indexOf("slowx") != -1) maxfactor=eval(mididata[1].toLowerCase().replace("slowx", ""));
if (mididata[1].toLowerCase().indexOf("fastx") != -1) maxfactor=eval(mididata[1].toLowerCase().replace("fastx", ""));
if (mididata[1].toLowerCase().indexOf("slowby") != -1) maxfactor=eval(1.0 / mididata[1].toLowerCase().replace("slowby", ""));
if (mididata[1].toLowerCase().indexOf("fastby") != -1) maxfactor=eval(1.0 / mididata[1].toLowerCase().replace("fastby", ""));
if (mididata[1].toLowerCase() == "largo") document.getElementById('speed').value='0.30';
if (mididata[1].toLowerCase() == "larghetto") document.getElementById('speed').value='0.25';
if (mididata[1].toLowerCase() == "adagio") document.getElementById('speed').value='0.20';
if (mididata[1].toLowerCase() == "andante") document.getElementById('speed').value='0.15';
if (mididata[1].toLowerCase() == "moderato") document.getElementById('speed').value='0.10';
if (mididata[1].toLowerCase() == "allegro") document.getElementById('speed').value='0.05';
if (mididata[1].toLowerCase() == "presto") document.getElementById('speed').value='0.025';
}
for (ijk=kji; ijk<mididata.length; ijk++) {

if (mididata[ijk].indexOf("+") == -1 && curnotes.indexOf(",") != -1) {

if (curnote >= 0 && curvelocity >= 0 && curdelay >= 0) { // is valid data here
if (prevvelocity == curvelocity) {
prefix="";
} else {
prefix=" MIDI.setVolume(0, " + eval(hit * curvelocity) + "); ";
hit=1;
prevvelocity = curvelocity;
}

if (curnote == 0) { // rest
plan=plan.replace("}});", prefix + "delay+=" + curdelay + "; \n }}); \n");
prefix = "";
} else if (curnotes.indexOf(",") != -1) {
notes=curnotes.split(',');
delays=curdelays.split(',');
//alert(notes.length);
offset=0.0;
offset2=0.0;
done="";
for (jk=0; jk<notes.length; jk++) {
planbit=prefix + "\n";
planbit += " MIDI.noteOn(0, " + notes[jk] + ", " + curvelocity + ", delay + " + offset + "); \n";
if (jk != 0) {
offset2=0.0;
offset2+=eval(offset);
offset2+=eval(delays[jk]);
planbit += " MIDI.noteOff(0, " + notes[jk] + ", delay + " + offset2 + "); \n";
offset+=eval(delays[jk]);
if (offset >= delays[0]) {
planbit += done;
done="";
delays[0]=-1.0;
}
} else {
done = " MIDI.noteOff(0, " + notes[0] + ", delay + " + delays[0] + "); \n";
}
planbit += " }}); \n";
plan=plan.replace("}});", planbit);
prefix = "";
}
planbit += done;
//alert("0:" + notes[0]);
planbit = "setmeter(" + notes[0] + "); \n";
planbit += "thism++; lastn=" + notes[0] + "; \n";
planbit += "delay+=" + Math.max(delays[0], offset2) + "; \n";
planbit += " }}); \n";
plan=plan.replace("}});", planbit);
} else if (isrest) { // rest
plan=plan.replace("}});", prefix + "delay+=" + curdelay + "; \n }}); \n");
prefix = "";
} else {
planbit=prefix + "\n";
planbit += " MIDI.noteOn(0, " + curnote + ", " + curvelocity + ", delay); \n";
planbit += " MIDI.noteOff(0, " + curnote + ", delay + " + curdelay + "); \n";
//alert("curnote=" + curnote);
planbit += "setmeter(" + curnote + "); \n";
planbit += "thism++; lastn=" + curnote + "; \n";
planbit += "delay+=" + curdelay + "; \n";
planbit += " }}); \n";
plan=plan.replace("}});", planbit);
prefix = "";
}
curnote = -1;
curnotes = "";
curdelays = "";
curdelay = -1;
prefix = "";
delaydelim='';
notedelim='';
isrest = false;
}
}
//}


if (mididata[ijk].substring(0,1) == "-") {
curval=mididata[ijk].replace("+","");
curdelay = noteworth(curval);
curdelays = curdelays + delaydelim + curdelay;
delaydelim = ',';
} else if (mididata[ijk].replace("+","") == "0") {
isrest = true;
if (curnote < 0) curnote=0;
} else if (mididata[ijk].substring(0,1) == "0") {
curvelocity = mididata[ijk].substring(1).replace("+","");
} else if (mididata[ijk].indexOf(".") != -1) {
if (allhis == "") allhis = document.body.innerHTML;
allhhh=allhis.split(">" + mididata[ijk].replace("+","")); // + "<");
bitshhbefore=allhhh[0].split(">");
curnote = bitshhbefore[bitshhbefore.length - 4].replace("</td", "");
curnotes = curnotes + notedelim + curnote;
notedelim = ',';
} else {
curnote = mididata[ijk].replace("+","");
curnotes = curnotes + notedelim + curnote;
notedelim = ',';
}

if (curnote >= 0 && curvelocity >= 0 && curdelay >= 0 && mididata[ijk].indexOf("+") == -1) { // is valid data here
if (prevvelocity == curvelocity) {
prefix="";
} else {
prefix=" MIDI.setVolume(0, " + eval(hit * curvelocity) + "); ";
hit=1;
prevvelocity = curvelocity;
}

if (curnote == 0) { // rest
plan=plan.replace("}});", prefix + "delay+=" + curdelay + "; \n }}); \n");
prefix = "";
} else if (curnotes.indexOf(",") != -1) {
notes=curnotes.split(',');
delays=curdelays.split(',');
done="";
offset=0.0;
offset2=0.0;
for (jk=0; jk<notes.length; jk++) {
planbit=prefix + "\n";
planbit += " MIDI.noteOn(0, " + notes[jk] + ", " + curvelocity + ", delay + " + offset + "); \n";
if (jk != 0) {
offset2=0.0;
offset2+=eval(offset);
offset2+=eval(delays[jk]);
planbit += " MIDI.noteOff(0, " + notes[jk] + ", delay + " + offset2 + "); \n";
offset+=eval(delays[jk]);
if (offset >= delays[0]) {
planbit += done;
done="";
delays[0]=-1.0;
}
} else {
done = " MIDI.noteOff(0, " + notes[0] + ", delay + " + delays[0] + "); \n";
}
planbit += " }}); \n";
plan=plan.replace("}});", planbit);
prefix = "";
}
planbit += done;
//alert("2:" + notes[0]);
planbit = "setmeter(" + notes[0] + "); \n";
planbit += "thism++; lastn=" + notes[0] + "; \n";
planbit += "delay+=" + Math.max(delays[0], offset2) + "; \n";
planbit += " }}); \n";
plan=plan.replace("}});", planbit);
} else if (isrest) { // rest
plan=plan.replace("}});", prefix + "delay+=" + curdelay + "; \n }}); \n");
prefix = "";
} else {
planbit=prefix + "\n";
planbit += " MIDI.noteOn(0, " + curnote + ", " + curvelocity + ", delay); \n";
planbit += " MIDI.noteOff(0, " + curnote + ", delay + " + curdelay + "); \n";
//alert("2:" + curnote);
planbit += "setmeter(" + curnote + "); \n";
planbit += "thism++; lastn=" + curnote + "; \n";
planbit += "delay+=" + curdelay + "; \n";
planbit += " }}); \n";
plan=plan.replace("}});", planbit);
prefix = "";
}
curnote = -1;
curnotes = "";
curdelays = "";
curdelay = -1;
prefix = "";
delaydelim='';
notedelim='';
isrest = false;
}
}

if (document.getElementById('conduit').value != '') { // if (document.URL.indexOf('webaudio=') != -1) {
//alert(plan.split('onsuccess: function() {')[1].split('}')[0].replace(/MIDI\./g, 'MIDI'));
//alert(plan.split('onsuccess: function() {')[1].split('}')[0].replace(/ MIDI\.noteO/g, ' preMIDInoteO').replace(/ MIDI\./g, ' MIDI')); // play music
if (azzgoon) { eval(plan.split('onsuccess: function() {')[1].split('}')[0].replace(/ MIDI\.noteO/g, ' preMIDInoteO').replace(/ MIDI\./g, ' MIDI')); } // play music
} else {
//alert('' + thism + ' ... ' + plan.split('onsuccess: function() {')[1].split('}')[0].replace(/MIDI\./g, 'MIDI')); // play music
azzgoon=true;
hit=1;
try {
if (parent.document.title != document.title) {
azzgoon=false;
hit=0;
}
} catch (sawzerrr) {
}

if (azzgoon) { eval(plan); } // play music
}
}
}

function MIDIsetVolume(par1, par2) {
//alert('' + par1 + ',' + par2);
}

function playnext() {
if (eval(-1 + inextc) < nextc.length) {
if (inextc == 1) { delay=0; }
eval(nextc[eval(-1 + inextc)]);
setTimeout(playnext, Math.round(eval(eval('' + nextc[eval(-1 + inextc)].split('delay+=')[1].split(';')[0]) * 1000)));
inextc++;
} else {
nextc=[];
inextc=0;
lastpar3=0;
}
}

function preMIDInoteOn(par1, par2, par3, par4) {
//if (('' + par2) == '49') { alert('' + par2); }
par2=eval(-2 + eval('' + par2));
if (inextc == 0 && nextc.length > 0) {
inextc=1;
setTimeout(playnext, 300);
}
nextc.push(" MIDInoteOn(" + par1 + "," + par2 + "," + par3 + "," + par4 + "); setmeter(" + par2 + "); thism++; lastn=" + par2 + "; "); //MIDInoteOff(" + par1 + "," + par2 + "," + par3 + " + 0.3); setmeter(" + par2 + "); thism++; lastn=" + par2 + "; delay+=0.3; ");
}

function preMIDInoteOff(par1, par2, par3) {
par2=eval(-2 + eval('' + par2));
var dlastp=eval(eval('' + par3) - eval('' + lastpar3));
nextc[eval(-1 + nextc.length)]=nextc[eval(-1 + nextc.length)].replace(" setmeter(", " MIDInoteOff(" + par1 + "," + par2 + "," + par3 + "); setmeter(") + " delay+=" + ('' + dlastp).split(' ')[eval(-1 + ('' + dlastp).split(' ').length)];
lastpar3=eval('' + par3);
//alert('dlastp=' + dlastp);
}

function MIDInoteOn(par1, par2, par3, par4) {
//alert('' + par1 + ',' + par2 + ',' + par3 + ',' + par4);
//alert(barr[eval(eval('' + par2) - 21)]);
//var i=0;
//while (document.getElementById('cmdconduit').value.indexOf(' parent.setmeter(-1);') != -1) {
// i=document.getElementById('cmdconduit').value.length;
// document.title='waiting';
//}
//document.title='playing';
//alert('note is ' + eval(eval('' + par2) - 23) + ' and par2=' + par2);
//document.title+=' ' + barr[eval(eval('' + par2) - 21)].replace('/','').replace('.','');
document.getElementById('conduit').value+=barr[eval(eval('' + par2) - 21)].replace('/','').replace('.',''); // + '#' + par4 + ' ';
document.getElementById('cmdconduit').value+='parent.setmeter(' + par2 + ');' + ' ';
}

function MIDInoteOff(par1, par2, par3) {
//alert('' + par1 + ',' + par2 + ',' + par3);
}

function rotatemaybe(isel) {
var jj=21;

if (isel.id == 'instrument') {
var iv=document.getElementById('instrument').value;
if (iv == document.getElementById('instrument').value.toLowerCase()) {
if (1 == 2) location.href='./MyScale.html?instrument=' + document.getElementById('instrument').value + "&myselpos=left&mode=" + document.getElementById('mode').value + "&speed=" + document.getElementById('speed').value;
} else {
//alert(99);
document.body.innerHTML = document.body.innerHTML.replace('"mytbody"', '"myxtbody"').replace('"mytd2"', '"myxtd2"').replace('"myh1right"', '"myxh1right"');
document.getElementById('myselpos').value='top';
while (jj < 109) {
document.getElementById('tr' + jj).style.backgroundColor='white';
jj = eval(1 + jj);
}
}
} else if (isel.value.toLowerCase() == "top") {
document.body.innerHTML = document.body.innerHTML.replace('"mytbody"', '"myxtbody"').replace('"mytd2"', '"myxtd2"').replace('"myh1right"', '"myxh1right"');
document.getElementById('myselpos').value=isel.value;
document.getElementById('vspacer').innerHTML='<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>';
while (jj < 109) {
document.getElementById('tr' + jj).style.backgroundColor='white';
jj = eval(1 + jj);
}
if (isel.value == 'Top') {
rejig(isel.value,'');
document.getElementById('mode').innerHTML='<option value="Composing">Composing</option>';
//location.href='./MyScale.html?instrument=' + document.getElementById('instrument').value + "&myselpos=Top&mode=" + document.getElementById('mode').value + "&speed=" + document.getElementById('speed').value + '#tabr';
//location.href='#sheetmusic'; // tabr
//alert(1);
//if (window.scrollY) {
window.scrollTo(0, 240); // reset the scroll position to the top left of the document.
//alert(11);
//}
} else if (isel.value == 'top') {
//if (window.scrollY) {
window.scrollTo(0, 240); // reset the scroll position to the top left of the document.
//alert(11);
//}
}
} else if (isel.value.toLowerCase() == "left") {
location.href='./MyScale.html?instrument=' + document.getElementById('instrument').value + "&myselpos=" + isel.value + "&mode=" + document.getElementById('mode').value + "&speed=" + document.getElementById('speed').value;
} else if (isel.value != '') {
location.href='./MyScale.html?instrument=' + document.getElementById('instrument').value + "&myselpos=Left&mode=" + document.getElementById('mode').value + "&speed=" + document.getElementById('speed').value + "&playthis=" + encodeURIComponent(isel.value);
}
}

function cleartd() {
var jj=0;
var ourinnerHTML="";
var oi = document.getElementById('mytbody');
if (oi == null) jj=21;
if (oi == null) oi = document.getElementById('myxtbody');
ourinnerHTML=oi.innerHTML.replace(/style="background-color: rgb(255, 192, 203);"/g, '').replace(/style="background-color: pink;"/g, '').replace(/style="background-color:pink;"/g, '').replace(/style="background-color: yellow;"/g, '').replace(/style="background-color:yellow;"/g, '').replace(/style=.background-color:/g, '');
while (ourinnerHTML.indexOf("rgb(255") != -1) {
ourinnerHTML = ourinnerHTML.replace("rgb(255,","");
ourinnerHTML = ourinnerHTML.replace("192,","");
ourinnerHTML = ourinnerHTML.replace('203);"','');
}
oi.innerHTML = ourinnerHTML;
if (jj > 0) {
while (jj < 109) {
document.getElementById('tr' + jj).style.backgroundColor='white';
jj = eval(1 + jj);
}
}
}

function settd() {
if (prevtr >= 0 && 1 == 2) {
//alert(prevtr);
document.getElementById('tr' + prevtr).innerHTML = document.getElementById('tr' + prevtr).innerHTML.replace('style="background-color:pink;"', "");
}
prevtr = pinnote;
document.getElementById('tr' + prevtr).innerHTML = document.getElementById('tr' + prevtr).innerHTML.replace('class="singleright"', ' style="background-color:pink;" class="singleright"');
}

function sett() {
analyzerequest("-1");
globvar=eval(1 + globvar);
}

function setmeter(innote) {
//pinnote=innote;
//setTimeout(settd, eval(delay * 1000));
//alert(' ... ' + innote);
document.getElementById('tr' + innote).style.backgroundColor='pink';
if (allhis == "") allhis = document.body.innerHTML;
var alln=allhis.split(">" + innote); // + "<");
var allns=alln[1].split(">");
if (allns.length > 4) {
var freqs=allns[4].split("<");
//alert(freqs[0]);
var mism=document.getElementById('mymeter' + thism);
if (mism == null) {
//document.getElementById('dmeter').innerHTML = document.getElementById('dmeter').innerHTML.replace("</tr>", "<td><meter class='cmeter' id='mymeter" + thism + "' min='0.0' max='5000.0' value='0.0' style='width:180px;'></meter></td></tr>");
document.getElementById('dmeter').innerHTML = document.getElementById('dmeter').innerHTML.replace("</tbody>", "<tr><td><meter class='cmeter' id='mymeter" + thism + "' min='0.0' max='5000.0' value='0.0' style='width:480px;'></meter></td></tr></tbody>");
mism=document.getElementById('mymeter' + thism);
}
mism.value = freqs[0];
}
}

function ask() {
askmode=0;
var maxis=0, def='', delim='', thisblurb='', thiscontent='', thismidi, thisansi, jg, cells, incells, rds=document.body.innerHTML.split('r' + 'ed;');
if (rds.length == 1) {
var restlength=prompt("Enter (negative) length of rest ... (loosely, -1.0 = crotchet)?", "-1.0");
delim=',';
if (document.getElementById('sheetmusic').value == "") delim = '';
document.getElementById('sheetmusic').value+=(delim + "0," + restlength);
delim=',';
} else {
for (jg=1; jg<rds.length; jg++) {
cells=rds[jg].split(">");
incells=cells[1].split("<");
thismidi=incells[0];
incells=cells[3].split("<");
thisansi=incells[0];
thisblurb=thisblurb + delim + thisansi.split('&')[0];
thiscontent=thiscontent + delim + thismidi.split('&')[0];
def=def + delim + "-1.0";
delim=',';
}
var notelength=prompt("Enter (negative) length(s) of note(s) ... " + thisblurb + " ... (loosely, -1.0 = crotchet ... please comma separate)?", def);
var midibits=thiscontent.split(',');
if (notelength != null) {
var notebits=notelength.split(',');
delim=',';
if (document.getElementById('sheetmusic').value == "") delim = '';
if (notebits.length == 1) {
document.getElementById('sheetmusic').value+=(delim + thiscontent + "," + notelength);
delim=',';
} else {
maxis=0;
for (jg=1; jg<notebits.length; jg++) {
if (eval((notebits[jg]) - (notebits[maxis])) < 0.0) {
maxis=jg;
}
}
document.getElementById('sheetmusic').value+=(delim + "+" + midibits[maxis] + "," + notebits[maxis] + "+");
delim=',';
for (jg=0; jg<notebits.length; jg++) {
if (jg != maxis) {
document.getElementById('sheetmusic').value+=(delim + "+" + midibits[jg] + "," + notebits[jg] + "+");
}
}
}
}
for (jg=0; jg<midibits.length; jg++) {
document.getElementById('tr' + midibits[jg]).style.backgroundColor='white';
}
}
document.getElementById('savemusic').value=document.getElementById('sheetmusic').value;
if (document.getElementById('savemusic').value != "") {
document.getElementById('myform').style.display='inline';
} else {
document.getElementById('myform').style.display='none';
}
}

function analyzerequest(whatis,inwhatyouaskedfor) {
var crval="-1.0";
var whatyouaskedfor=(inwhatyouaskedfor.split('&')[0]) + nsuffix;
nsuffix='';
if (whatyouaskedfor.indexOf('!') != -1) { crval= whatyouaskedfor.split('!')[1]; whatyouaskedfor=whatyouaskedfor.split('!')[0]; }
if (songmode == 1) {
if (whatyouaskedfor.indexOf(".") == -1 && whatyouaskedfor.substring(0,1) >= "0" && whatyouaskedfor.substring(0,1) <= "9") {
whatis.style.backgroundColor='r' + 'ed';
if (askmode == 0) {
askmode=1;
setTimeout(ask, 5000);
}
} else if (whatyouaskedfor.indexOf(".") != -1) {
if (allhis == "") allhis = document.body.innerHTML;
var xallhh=allhis.split(">" + whatyouaskedfor); // + "<");
var xbitshbefore=xallhh[0].split(">");
var m5=6;
if (xbitshbefore[xbitshbefore.length - m5].indexOf('</span') != -1) { m5+=2; }
if (xbitshbefore[xbitshbefore.length - m5].indexOf('<img ') != -1 || xbitshbefore[xbitshbefore.length - m5].indexOf('<td ') != -1) { m5++; }
if (xbitshbefore[xbitshbefore.length - m5].indexOf('</span') != -1) { m5+=2; }
if (xbitshbefore[xbitshbefore.length - m5].indexOf('<img ') != -1 || xbitshbefore[xbitshbefore.length - m5].indexOf('<td ') != -1) { m5++; }
//alert('startnote=' + xbitshbefore[xbitshbefore.length - m5]);
startnote=xbitshbefore[xbitshbefore.length - m5].replace("</td", "").split('&')[0];
document.getElementById('tr' + startnote).style.backgroundColor='r' + 'ed';
if (document.getElementById('sheetmusic').value == "") {
document.getElementById('sheetmusic').value=startnote + "," + crval;
askmode=0;
nonred=startnote;
} else {
document.getElementById('sheetmusic').value+=("," + startnote + "," + crval);
askmode=0;
nonred=startnote;
}
if (nonred < 0) document.getElementById('tr' + startnote).style.backgroundColor='white';
document.getElementById('savemusic').value=document.getElementById('sheetmusic').value;
if (document.getElementById('savemusic').value != "") {
document.getElementById('myform').style.display='inline';
} else {
document.getElementById('myform').style.display='none';
}
} else {
if (allhis == "") allhis = document.body.innerHTML;
var xxallhh=allhis.split(">" + whatyouaskedfor); // + "<");
var xxbitshbefore=xxallhh[0].split(">");
var zm5=2;
if (xxbitshbefore[xxbitshbefore.length - zm5].indexOf('</span') != -1) { zm5+=2; }
if (xxbitshbefore[xxbitshbefore.length - zm5].indexOf('<img ') != -1 || xxbitshbefore[xxbitshbefore.length - zm5].indexOf('<td ') != -1) { zm5++; }
if (xxbitshbefore[xxbitshbefore.length - zm5].indexOf('</span') != -1) { zm5+=2; }
if (xxbitshbefore[xxbitshbefore.length - zm5].indexOf('<img ') != -1 || xxbitshbefore[xxbitshbefore.length - zm5].indexOf('<td ') != -1) { zm5++; }
//alert('Startnote=' + xbitshbefore[xbitshbefore.length - zm5]);
startnote=xxbitshbefore[xxbitshbefore.length - zm5].replace("</td", "").split('&')[0];
document.getElementById('tr' + startnote).style.backgroundColor='r' + 'ed';
if (askmode == 0) {
askmode=1;
setTimeout(ask, 5000);
}
}
} else {
whatis.style.backgroundColor='yellow';
if (whatyouaskedfor != "") {
//alert(whatyouaskedfor);
if (whatyouaskedfor.substring(0,1) == "-") whatyouaskedfor=globvar;
if (whatyouaskedfor.indexOf(".") == -1 && whatyouaskedfor.substring(0,1) >= "0" && whatyouaskedfor.substring(0,1) <= "9") {
if (document.getElementById('conduit').value != '') { // if (document.URL.indexOf('webaudio=') != -1) {
plan="delay = 0.0; // play one note every quarter second " + String.fromCharCode(10);
plan+="var note = " + whatyouaskedfor + "; // the MIDI note " + String.fromCharCode(10);
plan+="var velocity = 127; // how hard the note hits " + String.fromCharCode(10);
plan+="var huh = document.URL.split('?'); " + String.fromCharCode(10);
plan+="thism=1; " + String.fromCharCode(10);
plan+="setTimeout(cleartd, 1000); " + String.fromCharCode(10);
plan+="// play the note " + String.fromCharCode(10);
plan+="MIDIsetVolume(0, 127); " + String.fromCharCode(10);
plan+="MIDInoteOn(0,note,velocity,delay); " + String.fromCharCode(10);
plan+="MIDInoteOff(0,note,delay + 0.75); " + String.fromCharCode(10);
plan+="setmeter(note); " + String.fromCharCode(10);
plan+="lastn=note; " + String.fromCharCode(10);
//alert(plan.replace(/MIDI\./g, 'MIDI'));
eval(plan.replace(/ MIDI\.noteO/g, ' preMIDInoteO').replace(/ MIDI\./g, ' MIDI')); // play music
} else {
MIDI.loadPlugin({
soundfontUrl: "./soundfont/",
instrument: document.getElementById('instrument').value.toLowerCase(),
onprogress: function(state, progress) {
console.log(state, progress);
},
onsuccess: function() {
delay = 0.0; // play one note every quarter second
var note = whatyouaskedfor; // the MIDI note
var velocity = 127; // how hard the note hits
var huh = document.URL.split("?");
thism=1;
setTimeout(cleartd, 1000);
// play the note
MIDI.setVolume(0, eval(hit * 127));
hit=1;
MIDI.noteOn(0, note, velocity, delay);
MIDI.noteOff(0, note, delay + 0.75);
//alert("a:" + note);
setmeter(note);
lastn=note;
}
});
}
} else if (whatyouaskedfor.indexOf(".") != -1) {
//alert(99);
setTimeout(cleartd, 1000);
document.getElementById('mymeter1').value = whatyouaskedfor.replace(/ /g, "");
if (allhis == "") allhis = document.body.innerHTML;
var allhh=allhis.split(">" + whatyouaskedfor); // + "<");
//alert(allhh.length);
var bitshbefore=allhh[0].split(">");
var xm5=4;
//alert('pre startNote=' + bitshbefore[bitshbefore.length - xm5]);
if (bitshbefore[bitshbefore.length - xm5].indexOf('</span') != -1) { xm5+=2; }
if (bitshbefore[bitshbefore.length - xm5].indexOf('<sup') != -1) { xm5+=2; }
if (bitshbefore[bitshbefore.length - xm5].indexOf('<br') != -1) { xm5+=1; xm5+=1; }
//alert('pre2 startNote=' + bitshbefore[bitshbefore.length - xm5]);
if (bitshbefore[bitshbefore.length - xm5].indexOf('#') != -1 || bitshbefore[bitshbefore.length - xm5].indexOf('<img ') != -1 || bitshbefore[bitshbefore.length - xm5].indexOf('<td ') != -1 || bitshbefore[bitshbefore.length - xm5].indexOf('<sup') != -1) { xm5++; }
//alert('pre002 startNote=' + bitshbefore[bitshbefore.length - xm5]);
if (bitshbefore[bitshbefore.length - xm5].indexOf('<span') != -1 || bitshbefore[bitshbefore.length - xm5].indexOf('</span') != -1) { xm5+=2; }
//alert('pre0002 startNote=' + bitshbefore[bitshbefore.length - xm5]);
if (bitshbefore[bitshbefore.length - xm5].indexOf('<img ') != -1 || bitshbefore[bitshbefore.length - xm5].indexOf('<td ') != -1 || bitshbefore[bitshbefore.length - xm5].indexOf('<sup') != -1) { xm5++; }
//alert('pre00002 startNote=' + bitshbefore[bitshbefore.length - xm5]);
if (bitshbefore[bitshbefore.length - xm5].indexOf('<span') != -1 || bitshbefore[bitshbefore.length - xm5].indexOf('</span') != -1) { xm5+=1; }
if (bitshbefore[bitshbefore.length - xm5].indexOf('#') != -1 || bitshbefore[bitshbefore.length - xm5].indexOf('<img ') != -1 || bitshbefore[bitshbefore.length - xm5].indexOf('<td ') != -1 || bitshbefore[bitshbefore.length - xm5].indexOf('<sup') != -1) { xm5++; }
//alert('pre002 startNote=' + bitshbefore[bitshbefore.length - xm5]);
if (bitshbefore[bitshbefore.length - xm5].indexOf('<span') != -1 || bitshbefore[bitshbefore.length - xm5].indexOf('</span') != -1) { xm5+=2; }
//alert('pre0002 startNote=' + bitshbefore[bitshbefore.length - xm5]);
if (bitshbefore[bitshbefore.length - xm5].indexOf('<img ') != -1 || bitshbefore[bitshbefore.length - xm5].indexOf('<td ') != -1 || bitshbefore[bitshbefore.length - xm5].indexOf('<sup') != -1) { xm5++; }
//alert('pre00002 startNote=' + bitshbefore[bitshbefore.length - xm5]);
if (bitshbefore[bitshbefore.length - xm5].indexOf('<span') != -1 || bitshbefore[bitshbefore.length - xm5].indexOf('</span') != -1) { xm5+=1; }
//alert('startNote=' + bitshbefore[bitshbefore.length - xm5]);
startnote=bitshbefore[bitshbefore.length - xm5].replace("</td", "").split('&')[0];
lastn=startnote;
if (document.getElementById('conduit').value != '') { // if (document.URL.indexOf('webaudio=') != -1) {
plan="delay = 0.0; // play one note every quarter second " + String.fromCharCode(10);
plan+="var note = " + startnote + "; // the MIDI note " + String.fromCharCode(10);
plan+="var velocity = 127; // how hard the note hits " + String.fromCharCode(10);
plan+="var huh = document.URL.split('?'); " + String.fromCharCode(10);
plan+="thism=1; " + String.fromCharCode(10);
plan+="setTimeout(cleartd, 1000); " + String.fromCharCode(10);
plan+="// play the note " + String.fromCharCode(10);
plan+="MIDIsetVolume(0, 127); " + String.fromCharCode(10);
plan+="MIDInoteOn(0,note,velocity,delay); " + String.fromCharCode(10);
plan+="MIDInoteOff(0,note,delay + 0.75); " + String.fromCharCode(10);
plan+="setmeter(note); " + String.fromCharCode(10);
//alert(plan.replace(/MIDI\./g, 'MIDI'));
eval(plan.replace(/ MIDI\.noteO/g, ' preMIDInoteO').replace(/ MIDI\./g, ' MIDI')); // play music
} else {
MIDI.loadPlugin({
soundfontUrl: "./soundfont/",
instrument: document.getElementById('instrument').value.toLowerCase(),
onprogress: function(state, progress) {
console.log(state, progress);
},
onsuccess: function() {
delay = 0.0; // play one note every quarter second
var note = startnote; // the MIDI note
var velocity = 127; // how hard the note hits
var huh = document.URL.split("?");
thism=1;
// play the note
MIDI.setVolume(0, eval(hit * 127));
hit=1;
MIDI.noteOn(0, note, velocity, delay);
MIDI.noteOff(0, note, delay + 0.75);
//alert("b:" + note);
setmeter(note);
}
});
}
} else { // try scale
setTimeout(cleartd, 8000);
if (allhis == "") allhis = document.body.innerHTML;
var allh=allhis.split(">" + whatyouaskedfor); // + "<");
var bitsbefore=allh[0].split(">");
var ym5=2;
//alert(whatyouaskedfor + 'pre pre startNotE=' + bitsbefore[bitsbefore.length - ym5]);
if (bitsbefore[bitsbefore.length - ym5].indexOf('</span') != -1) { ym5+=2; }
if (bitsbefore[bitsbefore.length - ym5].indexOf('<sup') != -1) { ym5+=2; }
//alert('pre startNotE=' + bitsbefore[bitsbefore.length - ym5]);
if (bitsbefore[bitsbefore.length - ym5].indexOf('<br') != -1) { ym5+=1; alert('pre02 startNotE=' + bitsbefore[bitsbefore.length - ym5]); ym5+=1; }
if (bitsbefore[bitsbefore.length - ym5].indexOf('<img ') != -1 || bitsbefore[bitsbefore.length - ym5].indexOf('<td ') != -1) { ym5++; }
if (bitsbefore[bitsbefore.length - ym5].indexOf('</span') != -1) { ym5+=2; }
if (bitsbefore[bitsbefore.length - ym5].indexOf('<img ') != -1 || bitsbefore[bitsbefore.length - ym5].indexOf('<td ') != -1) { ym5++; }
//alert('startNotE=' + bitsbefore[bitsbefore.length - ym5]);
startnote=bitsbefore[bitsbefore.length - ym5].replace("</td", "").split('&')[0];
lastn=startnote;
if (document.getElementById('conduit').value != '') { // if (document.URL.indexOf('webaudio=') != -1) {

plan="var ournumo=document.getElementById('mode').value.length; " + String.fromCharCode(10);
plan+="var mode=document.getElementById('mode').value; " + String.fromCharCode(10);
plan+="var i, numo; " + String.fromCharCode(10);
plan+="delay = 0.0; // play one note every quarter second " + String.fromCharCode(10);
plan+="var note = " + startnote + "; // the MIDI note " + String.fromCharCode(10);
plan+="var velocity = 127; // how hard the note hits " + String.fromCharCode(10);
plan+="var factor = eval(document.getElementById('speed').value); //0.15; //0.75; " + String.fromCharCode(10);
plan+="var huh = document.URL.split('?'); " + String.fromCharCode(10);
plan+=" // play the major scale " + String.fromCharCode(10);
plan+=" globvar = " + startnote + "; " + String.fromCharCode(10);
plan+=" thism=1; " + String.fromCharCode(10);
plan+=" MIDI.setVolume(0, eval(hit * 127)); " + String.fromCharCode(10);
plan+=" hit=1; " + String.fromCharCode(10);
plan+=" MIDI.noteOn(0, note, velocity, delay); " + String.fromCharCode(10);
plan+=" setmeter(note); " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOff(0, note, delay); // + factor); " + String.fromCharCode(10);
plan+=" for (numo=1; numo<=ournumo; numo++) { " + String.fromCharCode(10);
plan+=" note++; " + String.fromCharCode(10);
plan+=" note++; // tone major and minor " + String.fromCharCode(10);
plan+=" if (mode < 2) { " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOn(0, note, velocity, delay); // + factor * 2); " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOff(0, note, delay); // + factor * 3); " + String.fromCharCode(10);
plan+=" thism++; " + String.fromCharCode(10);
plan+=" setmeter(note); " + String.fromCharCode(10);
plan+=" } " + String.fromCharCode(10);
plan+=" note++; " + String.fromCharCode(10);
plan+=" if (eval(mode % 2) != 1) note++; // tone " + String.fromCharCode(10);
plan+=" if (mode >= 0) { " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOn(0, note, velocity, delay); // + 3.0); " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOff(0, note, delay); // + 3.75); " + String.fromCharCode(10);
plan+=" thism++; " + String.fromCharCode(10);
plan+=" setmeter(note); " + String.fromCharCode(10);
plan+=" } " + String.fromCharCode(10);
plan+=" note++; // semitone " + String.fromCharCode(10);
plan+=" if (eval(mode % 2) == 1) note++; // tone " + String.fromCharCode(10);
plan+=" if (mode < 2) { " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOn(0, note, velocity, delay); // + 4.5); " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOff(0, note, delay); // + 5.25); " + String.fromCharCode(10);
plan+=" thism++; " + String.fromCharCode(10);
plan+=" setmeter(note); " + String.fromCharCode(10);
plan+=" } " + String.fromCharCode(10);
plan+=" note++; " + String.fromCharCode(10);
plan+=" note++; // tone major and minor " + String.fromCharCode(10);
plan+=" if (mode >= 0) { " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOn(0, note, velocity, delay); // + 6.0); " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOff(0, note, delay); // + 6.75); " + String.fromCharCode(10);
plan+=" thism++; " + String.fromCharCode(10);
plan+=" setmeter(note); " + String.fromCharCode(10);
plan+=" } " + String.fromCharCode(10);
plan+=" note++; " + String.fromCharCode(10);
plan+=" if (eval(mode % 2) != 1) note++; // tone " + String.fromCharCode(10);
plan+=" if (mode < 2) { " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOn(0, note, velocity, delay); // + 7.5); " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOff(0, note, delay); // + 8.25); " + String.fromCharCode(10);
plan+=" thism++; " + String.fromCharCode(10);
plan+=" setmeter(note); " + String.fromCharCode(10);
plan+="} " + String.fromCharCode(10);
plan+="note++; " + String.fromCharCode(10);
plan+="note++; // tone " + String.fromCharCode(10);
plan+="if (eval(mode % 2) == 1) note++; // minor raised " + String.fromCharCode(10);
plan+="if (mode < 2) { " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOn(0, note, velocity, delay); // + 9.0); " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOff(0, note, delay); // + 9.75); " + String.fromCharCode(10);
plan+=" thism++; " + String.fromCharCode(10);
plan+=" setmeter(note); " + String.fromCharCode(10);
plan+="} " + String.fromCharCode(10);
plan+="note++; // semitone " + String.fromCharCode(10);
plan+="if (mode >= 0) { " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOn(0, note, velocity, delay); // + 10.5); " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOff(0, note, delay); // + 11.25); " + String.fromCharCode(10);
plan+=" thism++; " + String.fromCharCode(10);
plan+=" setmeter(note); " + String.fromCharCode(10);
plan+="} " + String.fromCharCode(10);
plan+="} " + String.fromCharCode(10);
plan+=" " + String.fromCharCode(10);
plan+="for (numo=1; numo<=ournumo; numo++) { " + String.fromCharCode(10);
plan+="note--; // semitone " + String.fromCharCode(10);
plan+="if (mode < 2) { " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOn(0, note, velocity, delay); // + 12.0); " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOff(0, note, delay); // + 12.75); " + String.fromCharCode(10);
plan+=" thism--; " + String.fromCharCode(10);
plan+=" setmeter(note); " + String.fromCharCode(10);
plan+="} " + String.fromCharCode(10);
plan+="note--; " + String.fromCharCode(10);
plan+="note--; // tone " + String.fromCharCode(10);
plan+="if (eval(mode % 2) == 1) note--; // minor raised " + String.fromCharCode(10);
plan+="if (mode < 2) { " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOn(0, note, velocity, delay); // + 13.5); " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOff(0, note, delay); // + 14.25); " + String.fromCharCode(10);
plan+=" thism--; " + String.fromCharCode(10);
plan+=" setmeter(note); " + String.fromCharCode(10);
plan+="} " + String.fromCharCode(10);
plan+="note--; " + String.fromCharCode(10);
plan+="if (eval(mode % 2) != 1) note--; // tone " + String.fromCharCode(10);
plan+="if (mode >= 0) { " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOn(0, note, velocity, delay); // + 15.0); " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOff(0, note, delay); // + 15.75); " + String.fromCharCode(10);
plan+=" thism--; " + String.fromCharCode(10);
plan+=" setmeter(note); " + String.fromCharCode(10);
plan+="} " + String.fromCharCode(10);
plan+="note--; " + String.fromCharCode(10);
plan+="note--; // tone major and minor " + String.fromCharCode(10);
plan+="if (mode < 2) { " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOn(0, note, velocity, delay); // + 16.5); " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOff(0, note, delay); // + 17.25); " + String.fromCharCode(10);
plan+=" thism--; " + String.fromCharCode(10);
plan+=" setmeter(note); " + String.fromCharCode(10);
plan+="} " + String.fromCharCode(10);
plan+="note--; // semitone " + String.fromCharCode(10);
plan+="if (eval(mode % 2) == 1) note--; // tone " + String.fromCharCode(10);
plan+="if (mode >= 0) { " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOn(0, note, velocity, delay); // + 18.0); " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOff(0, note, delay); // + 18.75); " + String.fromCharCode(10);
plan+=" thism--; " + String.fromCharCode(10);
plan+=" setmeter(note); " + String.fromCharCode(10);
plan+="} " + String.fromCharCode(10);
plan+="note--; " + String.fromCharCode(10);
plan+="if (eval(mode % 2) != 1) note--; // tone " + String.fromCharCode(10);
plan+="if (mode < 2) { " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOn(0, note, velocity, delay); // + 19.5); " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOff(0, note, delay); // + 20.25); " + String.fromCharCode(10);
plan+=" thism--; " + String.fromCharCode(10);
plan+=" setmeter(note); " + String.fromCharCode(10);
plan+="} " + String.fromCharCode(10);
plan+="note--; " + String.fromCharCode(10);
plan+="note--; // tone major and minor " + String.fromCharCode(10);
plan+="if (mode >= 0) { " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOn(0, note, velocity, delay); // + 21.0); " + String.fromCharCode(10);
plan+=" delay += factor; " + String.fromCharCode(10);
plan+=" MIDI.noteOff(0, note, delay); // + 21.75); " + String.fromCharCode(10);
plan+=" thism--; " + String.fromCharCode(10);
plan+=" setmeter(note); " + String.fromCharCode(10);
plan+="} " + String.fromCharCode(10);
plan+="} " + String.fromCharCode(10);

//alert(plan.replace(/MIDI\./g, 'MIDI'));
if (azzgoon) { eval(plan.replace(/ MIDI\.noteO/g, ' preMIDInoteO').replace(/ MIDI\./g, ' MIDI')); } // play music
} else if (azzgoon) {
MIDI.loadPlugin({
soundfontUrl: "./soundfont/",
instrument: document.getElementById('instrument').value.toLowerCase(),
onprogress: function(state, progress) {
console.log(state, progress);
},
onsuccess: function() {
var ournumo=document.getElementById('mode').value.length;
var mode=document.getElementById('mode').value;
var i, numo;
delay = 0.0; // play one note every quarter second
var note = startnote; // the MIDI note
var velocity = 127; // how hard the note hits
var factor = eval(document.getElementById('speed').value); //0.15; //0.75;
var huh = document.URL.split("?");
// play the major scale
globvar = startnote;
//for (i=startnote; i=(startnote + 12); i++) {
//setTimeout(sett, delay);
//delay = eval(250 + delay);
//}
//alert(note);
thism=1;
MIDI.setVolume(0, eval(hit * 127));
hit=1;
MIDI.noteOn(0, note, velocity, delay);
//alert("c:" + note);
setmeter(note);
delay += factor;
MIDI.noteOff(0, note, delay); // + factor);
for (numo=1; numo<=ournumo; numo++) {
note++;
note++; // tone major and minor
if (mode < 2) {
delay += factor;
MIDI.noteOn(0, note, velocity, delay); // + factor * 2);
delay += factor;
MIDI.noteOff(0, note, delay); // + factor * 3);
thism++;
//alert("d:" + note);
setmeter(note);
}
note++;
if (eval(mode % 2) != 1) note++; // tone
if (mode >= 0) {
delay += factor;
MIDI.noteOn(0, note, velocity, delay); // + 3.0);
delay += factor;
MIDI.noteOff(0, note, delay); // + 3.75);
thism++;
//alert("e:" + note);
setmeter(note);
}
note++; // semitone
if (eval(mode % 2) == 1) note++; // tone
if (mode < 2) {
delay += factor;
MIDI.noteOn(0, note, velocity, delay); // + 4.5);
delay += factor;
MIDI.noteOff(0, note, delay); // + 5.25);
thism++;
//alert("f:" + note);
setmeter(note);
}
note++;
note++; // tone major and minor
if (mode >= 0) {
delay += factor;
MIDI.noteOn(0, note, velocity, delay); // + 6.0);
delay += factor;
MIDI.noteOff(0, note, delay); // + 6.75);
thism++;
//alert("g:" + note);
setmeter(note);
}
note++;
if (eval(mode % 2) != 1) note++; // tone
if (mode < 2) {
delay += factor;
MIDI.noteOn(0, note, velocity, delay); // + 7.5);
delay += factor;
MIDI.noteOff(0, note, delay); // + 8.25);
thism++;
//alert("h:" + note);
setmeter(note);
}
note++;
note++; // tone
if (eval(mode % 2) == 1) note++; // minor raised
if (mode < 2) {
delay += factor;
MIDI.noteOn(0, note, velocity, delay); // + 9.0);
delay += factor;
MIDI.noteOff(0, note, delay); // + 9.75);
thism++;
//alert("i:" + note);
setmeter(note);
}
note++; // semitone
if (mode >= 0) {
delay += factor;
MIDI.noteOn(0, note, velocity, delay); // + 10.5);
delay += factor;
MIDI.noteOff(0, note, delay); // + 11.25);
thism++;
//alert("j:" + note);
setmeter(note);
}
}

for (numo=1; numo<=ournumo; numo++) {
// Going back
note--; // semitone
if (mode < 2) {
delay += factor;
MIDI.noteOn(0, note, velocity, delay); // + 12.0);
delay += factor;
MIDI.noteOff(0, note, delay); // + 12.75);
thism--;
//alert("k:" + note);
setmeter(note);
}
note--;
note--; // tone
if (eval(mode % 2) == 1) note--; // minor raised
if (mode < 2) {
delay += factor;
MIDI.noteOn(0, note, velocity, delay); // + 13.5);
delay += factor;
MIDI.noteOff(0, note, delay); // + 14.25);
thism--;
//alert("l:" + note);
setmeter(note);
}
note--;
if (eval(mode % 2) != 1) note--; // tone
if (mode >= 0) {
delay += factor;
MIDI.noteOn(0, note, velocity, delay); // + 15.0);
delay += factor;
MIDI.noteOff(0, note, delay); // + 15.75);
thism--;
//alert("m:" + note);
setmeter(note);
}
note--;
note--; // tone major and minor
if (mode < 2) {
delay += factor;
MIDI.noteOn(0, note, velocity, delay); // + 16.5);
delay += factor;
MIDI.noteOff(0, note, delay); // + 17.25);
thism--;
//alert("n:" + note);
setmeter(note);
}
note--; // semitone
if (eval(mode % 2) == 1) note--; // tone
if (mode >= 0) {
delay += factor;
MIDI.noteOn(0, note, velocity, delay); // + 18.0);
delay += factor;
MIDI.noteOff(0, note, delay); // + 18.75);
thism--;
//alert("o:" + note);
setmeter(note);
}
note--;
if (eval(mode % 2) != 1) note--; // tone
if (mode < 2) {
delay += factor;
MIDI.noteOn(0, note, velocity, delay); // + 19.5);
delay += factor;
MIDI.noteOff(0, note, delay); // + 20.25);
thism--;
//alert("p:" + note);
setmeter(note);
}
note--;
note--; // tone major and minor
if (mode >= 0) {
delay += factor;
MIDI.noteOn(0, note, velocity, delay); // + 21.0);
delay += factor;
MIDI.noteOff(0, note, delay); // + 21.75);
thism--;
//alert("q:" + note);
setmeter(note);
}
}

}
});
}
//setTimeout(cleartd, 8000);
}
}
}
}

function populatesel() {
document.getElementById('instrument').value=location.search.split('instrument=')[1] ? location.search.split('instrument=')[1].split('&')[0] : 'acoustic_grand_piano';
document.getElementById('mode').value=location.search.split('mode=')[1] ? location.search.split('mode=')[1].split('&')[0] : '0';
document.getElementById('speed').value=(location.search.split('speed=')[1] ? location.search.split('speed=')[1].split('&')[0] : 'Andante').replace('Andante','0.15');
document.getElementById('myselpos').value=location.search.split('myselpos=')[1] ? location.search.split('myselpos=')[1].split('&')[0] : 'left';
if (document.getElementById('myselpos').value.substring(0,1) == document.getElementById('myselpos').value.substring(0,1).toUpperCase()) { // in composer mode
pchosen=location.search.split('playthis=')[1] ? decodeURIComponent(location.search.split('playthis=')[1].split('&')[0]) : '';
if (pchosen != '') { setTimeout(playthisone, 3000); }
}
sm=location.search.split('sheetmusic=')[1] ? location.search.split('sheetmusic=')[1].split('&')[0] : '';
if (sm != '') {
insong(sm);
}
if (document.getElementById('myselpos').value.substring(0,1) == 'L') {
if (sm == "") sm=" ";
rejig(document.getElementById('myselpos').value,'');
document.getElementById('mode').innerHTML='<option value="Composing">Composing</option>';
} else if (document.getElementById('myselpos').value.substring(0,1) == 'T') {
if (sm == "") sm=" ";
rejig(document.getElementById('myselpos').value,'');
rotatemaybe('Top');
document.getElementById('mode').innerHTML='<option value="Composing">Composing</option>';
}

// Name those Notes game
nlength=location.search.split('nlength=')[1] ? location.search.split('nlength=')[1].split('&')[0] : '0.75';
one_twenty_seven=location.search.split('volume=')[1] ? location.search.split('volume=')[1].split('&')[0] : '127';
fifty=location.search.split('note=')[1] ? location.search.split('note=')[1].split('&')[0] : '50';
tasimh=location.search.split('song=')[1] ? location.search.split('song=')[1].split('&')[0] : '';

}

function playthisone() {
document.getElementById('playlist').value=pchosen;
document.getElementById('myciframe').src='./MyScale.php?retrieve=' + encodeURIComponent(pchosen);
}

function rejig(topvsleft, csong) {
songmode=1;
document.getElementById('ac').style.textDecoration='none';
//composingform='<iframe style="display:none;" id="myciframe" src="./MyScale.php"></iframe><input type="hidden" name="hsheetmusic" id="hsheetmusic" value="" /><form target="myciframe" id="myform" action="./MyScale.php" method="POST"><br><select id='playlist' onchange="document.getElementById('myciframe').src='./MyScale.php?retrieve=' + this.value;"><option value="">MIDI code</option></select>: <input type="text" name="sheetmusic" id="sheetmusic" value="' + csong + '" /><br<br><input onclick="thism=1;" type="submit" value="Play" /></form>';
//document.getElementById('eqd').innerHTML = composingform;
document.getElementById('scales').style.display='none';
document.getElementById('composition').style.display='block';
document.getElementById('th1').title='Click to add this note to composition ... will wait for 5 seconds before asking about length of note(s)';
document.getElementById('th2').title='Click to add this note to composition ... will wait for 5 seconds before asking about length of note(s)';
document.getElementById('th3').title='Click to add this note to composition as a crotchet (which you can change manually as you require)';
setInterval(lookoutforit, 1000);
}

function badnews() {
alert(stuff);
}

function lookoutforit() {
if (document.title.indexOf("Illegal MIDI") != -1) {
stuff=document.title;
document.title="Music Note/Scale Player and Composer - RJM Programming - May, 2015";
setTimeout(badnews, 700);
}
if (nonred >= 0) document.getElementById('tr' + nonred).style.backgroundColor='white';
nonred=-1;
var thissong=document.getElementById('hsheetmusic').value.replace(/~/g, '+');
if (thissong != '') {
//alert(thissong);
lastsong=thissong;
document.getElementById('hsheetmusic').value='';
//alert(98);
insong(thissong);
//alert(99);
}
}

function preask(tval) {
if (tval != "") {
var things=document.getElementById('sheetmusic').value.split(",");
if (tval == 'rest') {
ask();
} else if (tval == 'clear') {
document.getElementById('sheetmusic').value='';
} else if (tval == '0') {
var vhowmuch=prompt("What volume level?", "127");
if (vhowmuch != null) {
if (vhowmuch != "") {
if (document.getElementById('sheetmusic').value != "") document.getElementById('sheetmusic').value+=',';
document.getElementById('sheetmusic').value+=(tval + vhowmuch);
}
}
} else if (tval != '') {
if (" largo larghetto adagio andante moderato allegro presto ".indexOf(" " + tval + " ") != -1 && things.length > 1) {
if (document.getElementById('sheetmusic').value != "") {
if (things[1].substring(0,1) >= 'A') {
document.getElementById('sheetmusic').value=document.getElementById('sheetmusic').value.replace("," + things[1], "," + tval);
} else if (things[0].substring(0,1) >= 'A') {
document.getElementById('sheetmusic').value=document.getElementById('sheetmusic').value.replace(things[0] + ",", tval + ",");
} else {
document.getElementById('sheetmusic').value=tval + ',' + document.getElementById('sheetmusic').value;
}
} else {
document.getElementById('sheetmusic').value=tval;
}
} else if (" largo larghetto adagio andante moderato allegro presto ".indexOf(" " + tval + " ") != -1) {
if (document.getElementById('sheetmusic').value != "") {
if (things[0].substring(0,1) >= 'A') {
document.getElementById('sheetmusic').value=document.getElementById('sheetmusic').value.replace(things[0] + ",", tval + ",");
} else {
document.getElementById('sheetmusic').value=tval + ',' + document.getElementById('sheetmusic').value;
}
} else {
document.getElementById('sheetmusic').value=tval;
}
} else if (things.length > 1) {
var zhowmuch=prompt("By how much to " + tval + "?", "1");
if (zhowmuch != null) {
if (zhowmuch != "") {
if (document.getElementById('sheetmusic').value != "") {
if (things[1].substring(0,1) >= 'A') {
document.getElementById('sheetmusic').value=document.getElementById('sheetmusic').value.replace("," + things[1], "," + tval + zhowmuch);
} else if (things[0].substring(0,1) >= 'A') {
document.getElementById('sheetmusic').value=document.getElementById('sheetmusic').value.replace(things[0] + ",", tval + zhowmuch + ",");
} else {
document.getElementById('sheetmusic').value=tval + zhowmuch + ',' + document.getElementById('sheetmusic').value;
}
} else {
document.getElementById('sheetmusic').value+=(tval + zhowmuch);
}
}
}
} else {
var howmuch=prompt("By how much to " + tval + "?", "1");
if (howmuch != null) {
if (howmuch != "") {
if (document.getElementById('sheetmusic').value != "") {
if (things[0].substring(0,1) >= 'A') {
document.getElementById('sheetmusic').value=document.getElementById('sheetmusic').value.replace(things[0] + ",", tval + howmuch + ",");
} else {
document.getElementById('sheetmusic').value=tval + howmuch + ',' + document.getElementById('sheetmusic').value;
}
} else {
document.getElementById('sheetmusic').value+=(tval + howmuch);
}
}
}
}
}
if (document.getElementById('sheetmusic').value != "") {
document.getElementById('myform').style.display='inline';
document.getElementById('savemusic').value=document.getElementById('sheetmusic').value;
document.getElementById('hsheetmusic').value=document.getElementById('sheetmusic').value;
} else {
document.getElementById('myform').style.display='none';
document.getElementById('savemusic').value=document.getElementById('sheetmusic').value;
document.getElementById('hsheetmusic').value=document.getElementById('sheetmusic').value;
document.getElementById('playlist').value = '';
}
document.getElementById('oselt').value = '';
}
}

function andthenmode() {
var phuhis=document.getElementById('playlist').innerHTML.replace(document.getElementById('playlist').innerHTML.split('</option>')[0] + '</option>','');
if (phuhis != '') {
document.getElementById('myselpos').innerHTML+=phuhis;
}

}

function onck() {
if (1 == 2) {
if('webkitAudioContext' in window) {
alert(9);
//var xctx;
ctx = new(window.AudioContext || window.webkitAudioContext || false);
alert(189);
if(ctx.state === 'suspended') {
alert(19);
ctx.resume().then(function() {
//susresBtn.textContent = 'Suspend context';
if (document.getElementById('conduit').value != '') { // if (document.URL.indexOf('webaudio=') != -1) {
plan="var delay = 0; // play one note every quarter second " + String.fromCharCode(10);
plan+="var note = 50; // the MIDI note " + String.fromCharCode(10);
plan+="var velocity = 127; // how hard the note hits " + String.fromCharCode(10);
plan+="MIDIsetVolume(0, 127); " + String.fromCharCode(10);
plan+="MIDInoteOn(0,note,velocity,delay); " + String.fromCharCode(10);
plan+="MIDInoteOff(0,note,delay + 0.75); " + String.fromCharCode(10);
//alert(plan.replace(/MIDI\./g, 'MIDI'));
eval(plan.replace(/ MIDI\.noteO/g, ' preMIDInoteO').replace(/ MIDI\./g, ' MIDI')); // play music
} else {
MIDI.loadPlugin({
soundfontUrl: "./soundfont/",
instrument: "acoustic_grand_piano",
onprogress: function(state, progress) {
console.log(state, progress);
},
onsuccess: function() {
var delay = 0; // play one note every quarter second
var note = 50; //fifty; // the MIDI note
var velocity = 127; //one_twenty_seven; // how hard the note hits
// play the note
MIDI.setVolume(0, eval(hit * 127));
hit=1;
MIDI.noteOn(0, note, velocity, delay);
MIDI.noteOff(0, note, delay + 0.75);

}
});
}
});
} else if(ctx.state === 'running') {
if (document.getElementById('conduit').value != '') { // if (document.URL.indexOf('webaudio=') != -1) {
plan="var delay = 0; // play one note every quarter second " + String.fromCharCode(10);
plan+="var note = 50; // the MIDI note " + String.fromCharCode(10);
plan+="var velocity = 127; // how hard the note hits " + String.fromCharCode(10);
plan+="MIDIsetVolume(0, 127); " + String.fromCharCode(10);
plan+="MIDInoteOn(0,note,velocity,delay); " + String.fromCharCode(10);
plan+="MIDInoteOff(0,note,delay + 0.75); " + String.fromCharCode(10);
//alert(plan.replace(/MIDI\./g, 'MIDI'));
eval(plan.replace(/ MIDI\.noteO/g, ' preMIDInoteO').replace(/ MIDI\./g, ' MIDI')); // play music
} else {
MIDI.loadPlugin({
soundfontUrl: "./soundfont/",
instrument: "acoustic_grand_piano",
onprogress: function(state, progress) {
console.log(state, progress);
},
onsuccess: function() {
var delay = 0; // play one note every quarter second
var note = 50; //fifty; // the MIDI note
var velocity = 127; //one_twenty_seven; // how hard the note hits
// play the note
MIDI.setVolume(0, eval(hit * 127));
hit=1;
MIDI.noteOn(0, note, velocity, delay);
MIDI.noteOff(0, note, delay + 0.75);

}
});
}
}
} else {
alert(39);

(function(root) { 'use strict';

var plugin = null;
var output = null;
var channels = [];
var midi = root.WebMIDI = {api: 'webmidi'};
midi.send = function(data, delay) { // set channel volume
output.send(data, delay * 1000);
};

midi.setController = function(channel, type, value, delay) {
output.send([channel, type, value], delay * 1000);
};

midi.setVolume = function(channel, volume, delay) { // set channel volume
output.send([0xB0 + channel, 0x07, volume], delay * 1000);
};

midi.programChange = function(channel, program, delay) { // change patch (instrument)
output.send([0xC0 + channel, program], delay * 1000);
};

midi.pitchBend = function(channel, program, delay) { // pitch bend
output.send([0xE0 + channel, program], delay * 1000);
};

midi.noteOn = function(channel, note, velocity, delay) {
output.send([0x90 + channel, note, velocity], delay * 1000);
};

midi.noteOff = function(channel, note, delay) {
output.send([0x80 + channel, note, 0], delay * 1000);
};

midi.chordOn = function(channel, chord, velocity, delay) {
for (var n = 0; n < chord.length; n ++) {
var note = chord[n];
output.send([0x90 + channel, note, velocity], delay * 1000);
}
};

midi.chordOff = function(channel, chord, delay) {
for (var n = 0; n < chord.length; n ++) {
var note = chord[n];
output.send([0x80 + channel, note, 0], delay * 1000);
}
};

midi.stopAllNotes = function() {
output.cancel();
for (var channel = 0; channel < 16; channel ++) {
output.send([0xB0 + channel, 0x7B, 0]);
}
};

midi.connect = function(opts) {
root.setDefaultPlugin(midi);
///
navigator.requestMIDIAccess().then(function(access) {
plugin = access;
output = plugin.outputs()[0];
opts.onsuccess && opts.onsuccess();
}, function(err) { // well at least we tried!
if (window.AudioContext) { // Chrome
opts.api = 'webaudio';
} else if (window.Audio) { // Firefox
opts.api = 'audiotag';
} else { // no support
return;
}
root.loadPlugin(opts);
});
};

})(MIDI);
if (document.getElementById('conduit').value != '') { // if (document.URL.indexOf('webaudio=') != -1) {
plan="var delay = 0; // play one note every quarter second " + String.fromCharCode(10);
plan+="var note = 50; // the MIDI note " + String.fromCharCode(10);
plan+="var velocity = 127; // how hard the note hits " + String.fromCharCode(10);
plan+="MIDIsetVolume(0, 127); " + String.fromCharCode(10);
plan+="MIDInoteOn(0,note,velocity,delay); " + String.fromCharCode(10);
plan+="MIDInoteOff(0,note,delay + 0.75); " + String.fromCharCode(10);
//alert(plan.replace(/MIDI\./g, 'MIDI'));
eval(plan.replace(/ MIDI\.noteO/g, ' preMIDInoteO').replace(/ MIDI\./g, ' MIDI')); // play music
} else {
MIDI.loadPlugin({
soundfontUrl: "./soundfont/",
instrument: "acoustic_grand_piano",
onprogress: function(state, progress) {
console.log(state, progress);
},
onsuccess: function() {
var delay = 0; // play one note every quarter second
var note = 50; //fifty; // the MIDI note
var velocity = 127; //one_twenty_seven; // how hard the note hits
// play the note
MIDI.setVolume(0, eval(hit * 127));
hit=1;
MIDI.noteOn(0, note, velocity, delay);
MIDI.noteOff(0, note, delay + 0.75);

}
});
}
if (7 == 7) {
if('AudioContext' in window) {
ctx = new(window.AudioContext || window.webkitAudioContext || false);
if(ctx.state === 'suspended') {
alert(19);
ctx.resume().then(function() {
//susresBtn.textContent = 'Suspend context';
if (document.getElementById('conduit').value != '') { // if (document.URL.indexOf('webaudio=') != -1) {
plan="var delay = 0; // play one note every quarter second " + String.fromCharCode(10);
plan+="var note = 50; // the MIDI note " + String.fromCharCode(10);
plan+="var velocity = 127; // how hard the note hits " + String.fromCharCode(10);
plan+="MIDIsetVolume(0, 127); " + String.fromCharCode(10);
plan+="MIDInoteOn(0,note,velocity,delay); " + String.fromCharCode(10);
plan+="MIDInoteOff(0,note,delay + 0.75); " + String.fromCharCode(10);
//alert(plan.replace(/MIDI\./g, 'MIDI'));
eval(plan.replace(/ MIDI\.noteO/g, ' preMIDInoteO').replace(/ MIDI\./g, ' MIDI')); // play music
} else {
MIDI.loadPlugin({
soundfontUrl: "./soundfont/",
instrument: "acoustic_grand_piano",
onprogress: function(state, progress) {
console.log(state, progress);
},
onsuccess: function() {
var delay = 0; // play one note every quarter second
var note = 50; //fifty; // the MIDI note
var velocity = 127; //one_twenty_seven; // how hard the note hits
// play the note
MIDI.setVolume(0, eval(hit * 127));
hit=1;
MIDI.noteOn(0, note, velocity, delay);
MIDI.noteOff(0, note, delay + 0.75);

}
});
}
});
} else if(ctx.state === 'running') {

if (document.getElementById('conduit').value != '') { // if (document.URL.indexOf('webaudio=') != -1) {
plan="var delay = 0; // play one note every quarter second " + String.fromCharCode(10);
plan+="var note = 50; // the MIDI note " + String.fromCharCode(10);
plan+="var velocity = 127; // how hard the note hits " + String.fromCharCode(10);
plan+="MIDIsetVolume(0, 127); " + String.fromCharCode(10);
plan+="MIDInoteOn(0,note,velocity,delay); " + String.fromCharCode(10);
plan+="MIDInoteOff(0,note,delay + 0.75); " + String.fromCharCode(10);
//alert(plan.replace(/MIDI\./g, 'MIDI'));
eval(plan.replace(/ MIDI\.noteO/g, ' preMIDInoteO').replace(/ MIDI\./g, ' MIDI')); // play music
} else {
MIDI.loadPlugin({
soundfontUrl: "./soundfont/",
instrument: "acoustic_grand_piano",
onprogress: function(state, progress) {
console.log(state, progress);
},
onsuccess: function() {
var delay = 0; // play one note every quarter second
var note = 50; //fifty; // the MIDI note
var velocity = 127; //one_twenty_seven; // how hard the note hits
// play the note
MIDI.setVolume(0, eval(hit * 127));
hit=1;
MIDI.noteOn(0, note, velocity, delay);
MIDI.noteOff(0, note, delay + 0.75);

}
});
}
}
}
}
}
}
}

setTimeout(andthenmode, 2000);
</script>
</head>
<body style='background-color: yellow;'>
<!--h1 align='center'>Music Note or Scale Player and Composer</h1>
<h2 align='center'>Thanks to <a target=_blank href='https://github.com/mudcube/MIDI.js' title='wow!'>mudcube</a> and <a target=_blank href='http://www.glassarmonica.com/science/frequency_midi.php' title='great table!'>The Glass Armonica</a></h2>
<h3 align='center'>RJM Programming - May, 2015</h3>
<h4 align='center'>Click on links in table for music</h4-->
<!--div align='center'-->
<table align='center'>
<tbody>
<tr>
<td id='mytd1'>
<table id='mytable' class="single" style='background-color: white; border: 5px solid brown;'>
<thead>
<tr>
<th id='th1' title='Click to hear this note'>MIDI Note <select onchange'rotatemaybe(this);' id='instrument'>
<option value="acoustic_grand_piano">Acoustic Grand Piano</option>
<option value="synth_drum">Synthesised Drum</option>
<!--option value="ACOUSTIC_GRAND_PIANO">Acoustic Grand Piano (rotated -90 degrees)</option>
<option value="SYNCH_DRUM">Synthesised Drum (rotated -90 degrees)</option-->
</select></th>
<th id='th2' title='Click to hear scale or arpeggio for this note'>ANSI Note <select id='mode'>
<option value="0">Major Scale</option><option value="1">Minor Scale</option><option value="2">Major Arpeggio</option><option value="3">Minor Arpeggio</option>
<option value="00">Major Scale (2 octaves)</option><option value="01">Minor Scale (2 octaves)</option><option value="02">Major Arpeggio (2 octaves)</option><option value="03">Minor Arpeggio (2 octaves)</option>
<option value="000">Major Scale (3 octaves)</option><option value="001">Minor Scale (3 octaves)</option><option value="002">Major Arpeggio (3 octaves)</option><option value="003">Minor Arpeggio (3 octaves)</option>
<option value="0000">Major Scale (4 octaves)</option><option value="0001">Minor Scale (4 octaves)</option><option value="0002">Major Arpeggio (4 octaves)</option><option value="0003">Minor Arpeggio (4 octaves)</option>
</select></th>
<th id='th3' title='Click to hear this frequency'>Frequency (hz) <select id='speed'>
<option value="0.30">Largo</option>
<option value="0.25">Larghetto</option>
<option value="0.20">Adagio</option>
<option value="0.15" selected>Andante</option>
<option value="0.10">Moderato</option>
<option value="0.05">Allegro</option>
<option value="0.025">Presto</option>
</select></th></tr>
</thead><tbody id='mytbody'>
<tr><td id='tr21' class="singleright" onclick="analyzerequest(this, this.innerHTML);">21</td>
<td style="border-left:4px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">A0   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 27.5 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr22' class="singleright" onclick="analyzerequest(this, this.innerHTML);">22</td>
<td style="border-left:4px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">A#0   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:3px solid transparent;font-size:8px;' class=crotchet>♯</sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 29.1 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr23' class="singleright" onclick="analyzerequest(this, this.innerHTML);">23</td>
<td style="border-left:4px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">B0   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:4.3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 30.9 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr24' class="singleright" onclick="analyzerequest(this, this.innerHTML);">24</td>
<td style="border-left:3px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">C1   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:9px;margin-left:-6px;border-bottom:3.7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 32.7 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr25' class="singleright" onclick="analyzerequest(this, this.innerHTML);">25</td>
<td style="border-left:3px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">C#1   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:9px;margin-left:-6px;border-bottom:3.7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯<br></sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 34.6 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr26' class="singleright" onclick="analyzerequest(this, this.innerHTML);">26</td>
<td style="border-left:3px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">D1   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:10px;margin-left:-6px;border-bottom:7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 36.7 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr27' class="singleright" onclick="analyzerequest(this, this.innerHTML);">27</td>
<td style="border-left:3px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">D#1   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:10px;margin-left:-6px;border-bottom:7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯<br></sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 38.9 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr28' class="singleright" onclick="analyzerequest(this, this.innerHTML);">28</td>
<td style="border-left:3px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">E1   <span class=crotchet>🎼</span><img style='transform: scaleX(-0.75) scaleY(-0.75);display:inline-block;width:11px;margin-left:-6px;border-bottom:7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 41.2 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr29' class="singleright" onclick="analyzerequest(this, this.innerHTML);">29</td>
<td style="border-left:3px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">F1   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:1.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 43.7 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr30' class="singleright" onclick="analyzerequest(this, this.innerHTML);">30</td>
<td style="border-left:3px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">F#1   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:1.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><span style='margin-left:-2.5px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯</span></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 46.2 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr31' class="singleright" onclick="analyzerequest(this, this.innerHTML);">31</td>
<td style="border-left:3px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">G1   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:2.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 49.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr32' class="singleright" onclick="analyzerequest(this, this.innerHTML);">32</td>
<td style="border-left:3px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">G#1   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:2.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><span style='margin-left:-2.5px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯</span></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 51.9 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr33' class="singleright" onclick="analyzerequest(this, this.innerHTML);">33</td>
<td style="border-left:3px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">A1   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 55.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr34' class="singleright" onclick="analyzerequest(this, this.innerHTML);">34</td>
<td style="border-left:3px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">A#1   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:3px solid transparent;font-size:8px;' class=crotchet>♯</sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 58.3 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr35' class="singleright" onclick="analyzerequest(this, this.innerHTML);">35</td>
<td style="border-left:3px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">B1   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:4.3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 61.7 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr36' class="singleright" onclick="analyzerequest(this, this.innerHTML);">36</td>
<td style="border-left:2px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">C2   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:9px;margin-left:-6px;border-bottom:3.7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 65.4 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr37' class="singleright" onclick="analyzerequest(this, this.innerHTML);">37</td>
<td style="border-left:2px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">C#2   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:9px;margin-left:-6px;border-bottom:3.7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯<br></sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 69.3 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr38' class="singleright" onclick="analyzerequest(this, this.innerHTML);">38</td>
<td style="border-left:2px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">D2   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:10px;margin-left:-6px;border-bottom:7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 73.4 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr39' class="singleright" onclick="analyzerequest(this, this.innerHTML);">39</td>
<td style="border-left:2px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">D#2   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:10px;margin-left:-6px;border-bottom:7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯<br></sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 77.8 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr40' class="singleright" onclick="analyzerequest(this, this.innerHTML);">40</td>
<td style="border-left:2px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">E2   <span class=crotchet>🎼</span><img style='transform: scaleX(-0.75) scaleY(-0.75);display:inline-block;width:11px;margin-left:-6px;border-bottom:7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 82.4 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr41' class="singleright" onclick="analyzerequest(this, this.innerHTML);">41</td>
<td style="border-left:2px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">F2   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:1.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 87.3 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr42' class="singleright" onclick="analyzerequest(this, this.innerHTML);">42</td>
<td style="border-left:2px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">F#2   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:1.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><span style='margin-left:-2.5px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯</span></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 92.5 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr43' class="singleright" onclick="analyzerequest(this, this.innerHTML);">43</td>
<td style="border-left:2px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">G2   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:2.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';"> 98.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr44' class="singleright" onclick="analyzerequest(this, this.innerHTML);">44</td>
<td style="border-left:2px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">G#2   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:2.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><span style='margin-left:-2.5px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯</span></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">103.8 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr45' class="singleright" onclick="analyzerequest(this, this.innerHTML);">45</td>
<td style="border-left:2px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">A2   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">110.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr46' class="singleright" onclick="analyzerequest(this, this.innerHTML);">46</td>
<td style="border-left:2px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">A#2   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:3px solid transparent;font-size:8px;' class=crotchet>♯</sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">116.5 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr47' class="singleright" onclick="analyzerequest(this, this.innerHTML);">47</td>
<td style="border-left:2px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">B2   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:4.3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">123.5 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr48' class="singleright" onclick="analyzerequest(this, this.innerHTML);">48</td>
<td style="border-left:1px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">C3   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:9px;margin-left:-6px;border-bottom:3.7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">130.8 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr49' class="singleright" onclick="analyzerequest(this, this.innerHTML);">49</td>
<td style="border-left:1px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">C#3   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:9px;margin-left:-6px;border-bottom:3.7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯<br></sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">138.6 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr50' class="singleright" onclick="analyzerequest(this, this.innerHTML);">50</td>
<td style="border-left:1px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">D3   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:10px;margin-left:-6px;border-bottom:7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">146.8 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr51' class="singleright" onclick="analyzerequest(this, this.innerHTML);">51</td>
<td style="border-left:1px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">D#3   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:10px;margin-left:-6px;border-bottom:7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯<br></sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">155.6 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr52' class="singleright" onclick="analyzerequest(this, this.innerHTML);">52</td>
<td style="border-left:1px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">E3   <span class=crotchet>🎼</span><img style='transform: scaleX(-0.75) scaleY(-0.75);display:inline-block;width:11px;margin-left:-6px;border-bottom:7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">164.8 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr53' class="singleright" onclick="analyzerequest(this, this.innerHTML);">53</td>
<td style="border-left:1px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">F3   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:1.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">174.6 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr54' class="singleright" onclick="analyzerequest(this, this.innerHTML);">54</td>
<td style="border-left:1px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">F#3   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:1.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><span style='margin-left:-2.5px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯</span></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">185.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr55' class="singleright" onclick="analyzerequest(this, this.innerHTML);">55</td>
<td style="border-left:1px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">G3   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:2.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">196.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr56' class="singleright" onclick="analyzerequest(this, this.innerHTML);">56</td>
<td style="border-left:1px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">G#3   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:2.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><span style='margin-left:-2.5px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯</span></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">207.7 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr57' class="singleright" onclick="analyzerequest(this, this.innerHTML);">57</td>
<td style="border-left:1px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">A3   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">220.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr58' class="singleright" onclick="analyzerequest(this, this.innerHTML);">58</td>
<td style="border-left:1px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">A#3   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:3px solid transparent;font-size:8px;' class=crotchet>♯</sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">233.1 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr59' class="singleright" onclick="analyzerequest(this, this.innerHTML);">59</td>
<td style="border-left:1px solid purple;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">B3   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:4.3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">246.9 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr60' class="singleright" onclick="analyzerequest(this, this.innerHTML);">60</td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">C4 (middle C)   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:9px;margin-left:-6px;border-bottom:3.7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">261.6 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr61' class="singleright" onclick="analyzerequest(this, this.innerHTML);">61</td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">C#4   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:9px;margin-left:-6px;border-bottom:3.7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯<br></sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">277.2 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr62' class="singleright" onclick="analyzerequest(this, this.innerHTML);">62</td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">D4   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:10px;margin-left:-6px;border-bottom:7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">293.7 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr63' class="singleright" onclick="analyzerequest(this, this.innerHTML);">63</td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">D#4   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:10px;margin-left:-6px;border-bottom:7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯<br></sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">311.1 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr64' class="singleright" onclick="analyzerequest(this, this.innerHTML);">64</td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">E4   <span class=crotchet>🎼</span><img style='transform: scaleX(-0.75) scaleY(-0.75);display:inline-block;width:11px;margin-left:-6px;border-bottom:7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">329.6 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr65' class="singleright" onclick="analyzerequest(this, this.innerHTML);">65</td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">F4   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:1.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">349.2 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr66' class="singleright" onclick="analyzerequest(this, this.innerHTML);">66</td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">F#4   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:1.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><span style='margin-left:-2.5px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯</span></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">370.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr67' class="singleright" onclick="analyzerequest(this, this.innerHTML);">67</td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">G4   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:2.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">392.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr68' class="singleright" onclick="analyzerequest(this, this.innerHTML);">68</td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">G#4   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:2.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><span style='margin-left:-2.5px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯</span></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">415.3 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr69' class="singleright" onclick="analyzerequest(this, this.innerHTML);">69</td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">A4   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">440.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr70' class="singleright" onclick="analyzerequest(this, this.innerHTML);">70</td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">A#4   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:3px solid transparent;font-size:8px;' class=crotchet>♯</sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">466.2 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr71' class="singleright" onclick="analyzerequest(this, this.innerHTML);">71</td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">B4   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:4.3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">493.9 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr72' class="singleright" onclick="analyzerequest(this, this.innerHTML);">72</td>
<td style="border-right:1px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">C5   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:9px;margin-left:-6px;border-bottom:3.7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">523.3 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr73' class="singleright" onclick="analyzerequest(this, this.innerHTML);">73</td>
<td style="border-right:1px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">C#5   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:9px;margin-left:-6px;border-bottom:3.7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯<br></sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">554.4 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr74' class="singleright" onclick="analyzerequest(this, this.innerHTML);">74</td>
<td style="border-right:1px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">D5   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:10px;margin-left:-6px;border-bottom:7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">587.3 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr75' class="singleright" onclick="analyzerequest(this, this.innerHTML);">75</td>
<td style="border-right:1px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">D#5   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:10px;margin-left:-6px;border-bottom:7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯<br></sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">622.3 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr76' class="singleright" onclick="analyzerequest(this, this.innerHTML);">76</td>
<td style="border-right:1px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">E5   <span class=crotchet>🎼</span><img style='transform: scaleX(-0.75) scaleY(-0.75);display:inline-block;width:11px;margin-left:-6px;border-bottom:7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">659.3 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr77' class="singleright" onclick="analyzerequest(this, this.innerHTML);">77</td>
<td style="border-right:1px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">F5   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:1.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">698.5 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr78' class="singleright" onclick="analyzerequest(this, this.innerHTML);">78</td>
<td style="border-right:1px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">F#5   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:1.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><span style='margin-left:-2.5px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯</span></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">740.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr79' class="singleright" onclick="analyzerequest(this, this.innerHTML);">79</td>
<td style="border-right:1px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">G5   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:2.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">784.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr80' class="singleright" onclick="analyzerequest(this, this.innerHTML);">80</td>
<td style="border-right:1px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">G#5   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:2.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><span style='margin-left:-2.5px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯</span></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">830.6 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr81' class="singleright" onclick="analyzerequest(this, this.innerHTML);">81</td>
<td style="border-right:1px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">A5   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">880.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr82' class="singleright" onclick="analyzerequest(this, this.innerHTML);">82</td>
<td style="border-right:1px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">A#5   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:3px solid transparent;font-size:8px;' class=crotchet>♯</sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">932.3 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr83' class="singleright" onclick="analyzerequest(this, this.innerHTML);">83</td>
<td style="border-right:1px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">B5   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:4.3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">987.8 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr84' class="singleright" onclick="analyzerequest(this, this.innerHTML);">84</td>
<td style="border-right:2px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">C6   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:9px;margin-left:-6px;border-bottom:3.7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">1046.5 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr85' class="singleright" onclick="analyzerequest(this, this.innerHTML);">85</td>
<td style="border-right:2px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">C#6   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:9px;margin-left:-6px;border-bottom:3.7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯<br></sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">1108.7 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr86' class="singleright" onclick="analyzerequest(this, this.innerHTML);">86</td>
<td style="border-right:2px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">D6   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:10px;margin-left:-6px;border-bottom:7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">1174.7 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr87' class="singleright" onclick="analyzerequest(this, this.innerHTML);">87</td>
<td style="border-right:2px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">D#6   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:10px;margin-left:-6px;border-bottom:7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯<br></sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">1244.5 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr88' class="singleright" onclick="analyzerequest(this, this.innerHTML);">88</td>
<td style="border-right:2px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">E6   <span class=crotchet>🎼</span><img style='transform: scaleX(-0.75) scaleY(-0.75);display:inline-block;width:11px;margin-left:-6px;border-bottom:7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">1318.5 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr89' class="singleright" onclick="analyzerequest(this, this.innerHTML);">89</td>
<td style="border-right:2px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">F6   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:1.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">1396.9 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr90' class="singleright" onclick="analyzerequest(this, this.innerHTML);">90</td>
<td style="border-right:2px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">F#6   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:1.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><span style='margin-left:-2.5px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯</span></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">1480.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr91' class="singleright" onclick="analyzerequest(this, this.innerHTML);">91</td>
<td style="border-right:2px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">G6   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:2.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">1568.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr92' class="singleright" onclick="analyzerequest(this, this.innerHTML);">92</td>
<td style="border-right:2px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">G#6   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:2.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><span style='margin-left:-2.5px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯</span></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">1661.2 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr93' class="singleright" onclick="analyzerequest(this, this.innerHTML);">93</td>
<td style="border-right:2px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">A6   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">1760.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr94' class="singleright" onclick="analyzerequest(this, this.innerHTML);">94</td>
<td style="border-right:2px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">A#6   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:3px solid transparent;font-size:8px;' class=crotchet>♯</sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">1864.7 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr95' class="singleright" onclick="analyzerequest(this, this.innerHTML);">95</td>
<td style="border-right:2px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">B6   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:4.3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">1975.5 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr96' class="singleright" onclick="analyzerequest(this, this.innerHTML);">96</td>
<td style="border-right:3px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">C7   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:9px;margin-left:-6px;border-bottom:3.7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">2093.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr97' class="singleright" onclick="analyzerequest(this, this.innerHTML);">97</td>
<td style="border-right:3px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">C#7   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:9px;margin-left:-6px;border-bottom:3.7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯<br></sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">2217.5 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr98' class="singleright" onclick="analyzerequest(this, this.innerHTML);">98</td>
<td style="border-right:3px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">D7   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:10px;margin-left:-6px;border-bottom:7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">2349.3 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr99' class="singleright" onclick="analyzerequest(this, this.innerHTML);">99</td>
<td style="border-right:3px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">D#7   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:10px;margin-left:-6px;border-bottom:7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯<br></sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">2489.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr100' class="singleright" onclick="analyzerequest(this, this.innerHTML);">100</td>
<td style="border-right:3px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">E7   <span class=crotchet>🎼</span><img style='transform: scaleX(-0.75) scaleY(-0.75);display:inline-block;width:11px;margin-left:-6px;border-bottom:7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">2637.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr101' class="singleright" onclick="analyzerequest(this, this.innerHTML);">101</td>
<td style="border-right:3px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">F7   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:1.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">2793.8 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr102' class="singleright" onclick="analyzerequest(this, this.innerHTML);">102</td>
<td style="border-right:3px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">F#7   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:1.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><span style='margin-left:-2.5px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯</span></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">2960.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr103' class="singleright" onclick="analyzerequest(this, this.innerHTML);">103</td>
<td style="border-right:3px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">G7   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:2.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">3136.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr104' class="singleright" onclick="analyzerequest(this, this.innerHTML);">104</td>
<td style="border-right:3px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">G#7   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:2.2px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><span style='margin-left:-2.5px;border-bottom:6px solid transparent;font-size:8px;' class=crotchet>♯</span></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">3322.4 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr105' class="singleright" onclick="analyzerequest(this, this.innerHTML);">105</td>
<td style="border-right:3px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">A7   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">3520.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr bgcolor="#cccccc"><td id='tr106' class="singleright" onclick="analyzerequest(this, this.innerHTML);">106</td>
<td style="border-right:3px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">A#7   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img><sup style='margin-left:-2.5px;margin-top:-3px;border-bottom:3px solid transparent;font-size:8px;' class=crotchet>♯</sup></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">3729.3 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr107' class="singleright" onclick="analyzerequest(this, this.innerHTML);">107</td>
<td style="border-right:3px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">B7   <span class=crotchet>🎼</span><img style='display:inline-block;width:10px;margin-left:-6px;border-bottom:4.3px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">3951.1 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td></tr>
<tr><td id='tr108' class="singleright" onclick="analyzerequest(this, this.innerHTML);">108</td>
<td style="border-right:4px solid yellow;" class="singleright" onclick="analyzerequest(this, this.innerHTML);">C8   <span class=crotchet>🎼</span><img style='transform: scaleX(-1) scaleY(-1);display:inline-block;width:9px;margin-left:-6px;border-bottom:3.7px solid transparent;mix-blend-mode:multiply;' src=crotchet.jpg class=crotchet></img></td>
<td class="singleright" onclick="analyzerequest(this, this.innerHTML);" onmouseover="nsuffix='';">4186.0 <input title="Quaver here but crotchet at link to left" style="width:10px;text-decoration:none;" type=button onmouseover="nsuffix='!-0.5';" onclick="nsuffix='!-0.5';" value="🎶"></input></td>
</tr></tbody></table>




</td>
<td width="195" id='mytd2'> </td>
<td valign="top">
<div id=vspacer></div>
<h1 align='center' id='myh1right'>Music <a title='Note/Scale Player' onclick=" document.getElementById('myselpos').value='left'; rotatemaybe(document.getElementById('myselpos')); this.style.textDecoration='none'; document.getElementById('ac').style.textDecoration='underline'; " href='#' style='text-decoration: none;' id='ans'>Note/Scale</a> Player & <a title='Composer Mode' onclick=" document.getElementById('myselpos').value='Top'; rotatemaybe(document.getElementById('myselpos')); this.style.textDecoration='none'; document.getElementById('ans').style.textDecoration='underline'; " href='#top' style='text-decoration: underline;' id='ac'>Composer</a></h1>
<h2 align='center'>Thanks to <a target=_blank href='https://github.com/mudcube/MIDI.js' title='wow!'>mudcube</a> and <a target=_blank href='http://www.glassarmonica.com/science/frequency_midi.php' title='great table!'>The Glass Armonica</a></h2>
<h3 id=myh3 align='center'><span id=spanh3>Via </span><iframe class=ask title='vs Audio Web' frameborder=0 scrolling='no' style='border-bottom:1px solid yellow;overflow:hidden;background-color:yellow;display:inline-block;width:440px;height:28px;max-height:28px;' width=440 height=28 src='../../../HTMLCSS/web_audio.htm?vsmudcube=YdaS'></iframe><br>RJM Programming - May, 2015  <input style='display:none;' id=iready type=button onclick='onck();' value='Ready?'></input></h3>
<h4 align='center'>Click on links in table at <select onchange='rotatemaybe(this);' id='myselpos'><option value='left'>left</option><option value='top'>top</option><option value='Left'>Left</option><option value='Top'>Top</option></select> for scales/Song Creation</h4>
<div id='eqd'>
<div id='scales' style='display:block;'>
<h4 align='center'>Equations:</h4>
<p align='center'>
f = frequency<br>
m = midi note number</p>
<p align='center'>f = 27.5 * 2<sup>((m - 21)/12)</sup></p>
<p align='center'>m = (12/ln(2)) * ln(f/27.5) + 21</p>
<p align='center'>Note: Fractional midi note number will give you 'cents'<br> from standard pitch: e.g. 66.33 would be 33 cents above F#4</p><!--/td></tr-->
<!--tr><td-->
</div>
<div id='composition' style='display:none;'>
<iframe style="display:none;" id="myciframe" src="./MyScale.php?pleasecheck=y"></iframe><input type="hidden" name="hsheetmusic" id="hsheetmusic" value="" />
<br><input onclick="thism=1; azzgoon=true; hit=1; document.getElementById('hsheetmusic').value=document.getElementById('sheetmusic').value;" id="play" type="submit" value="Play" /> <select id='playlist' onchange="document.getElementById('myciframe').src='./MyScale.php?retrieve=' + this.value;"><option value="">MIDI code</option></select> (<select id='oselt' onchange='preask(this.value);'><option value=''>Others ...</option><option value='rest'>Rest</option><option value='clear'>Clear</option><option value='0'>Volume</option><option value='largo'>Largo</option><option value='larghetto'>Larghetto</option><option value='adagio'>Adagio</option><option value='andante'>Andante</option><option value='moderato'>Moderato</option><option value='allegro'>Allegro</option><option value='presto'>Presto</option><option value='slowby'>slowby</option><option value='fastx'>fastx</option></select>) as below:
<form target="myciframe" style='display:none;' id="myform" action="./MyScale.php" method="POST">
<input type="hidden" name="savemusic" id="savemusic" value="" />
<input onclick=" if (document.getElementById('savename').value != '' && document.getElementById('sheetmusic').value != '' && document.getElementById('playlist').innerHTML.indexOf('>' + document.getElementById('savename').value + '<') == -1) { document.getElementById('playlist').innerHTML+='<option value=' + document.getElementById('savename').value.replace(/ /g, '%20') + '>' + document.getElementById('savename').value + '</option>'; document.getElementById('savemusic').value=document.getElementById('sheetmusic').value; } document.getElementById('playlist').value=''; " type="submit" name="save" id="save" value="Save As ... " /><input size=30 type="text" name="savename" id="savename" value="" />
</form>
<textarea onclick="document.getElementById('mytable').style.opacity=0.2; this.zIndex=50; document.getElementById('savename').zIndex=50; document.getElementById('save').zIndex=50; " onchange=" document.getElementById('savemusic').value=this.value; document.getElementById('hsheetmusic').value=this.value; if (this.value != '') { document.getElementById('myform').style.display='inline'; } else { document.getElementById('myform').style.display='none'; } " rows=10 cols=80 name="sheetmusic" id="sheetmusic" value=""></textarea><br><div id='tabr'></div><br>
</div>
<br><br>
</div><div class='cdmeter' id='dmeter' style='margin-top:0px;'>
<table align='center'><tbody><tr><td>
<meter align='center' class='cmeter' id='mymeter1' min="0.0" max="5000.0" value="0.0" style='width:480px;'></meter>
</td></tr></tbody></table></div></td></tr>
</tbody>
</table>
<!--/div-->


<!--input id=iready type=button onclick='document.body.innerHTML="<iframe src=./MyScale.htm style=width:100%;height:100vh;position:absolute;top:0px;left:0px;></iframe>";' style='position:absolute;top:0px;left:0px;' value='Ready?'></input-->


<script type="text/javascript">

window.onload = function () {
var doit=1, offset=0;
populatesel();
var afifty=fifty.split(",");
var anlength=nlength.split(",");
var aone_twenty_seven=one_twenty_seven.split(",");
var igh, lastv=aone_twenty_seven[0], chg=false;
if (document.URL.indexOf("#") != -1) document.getElementById('mode').innerHTML='<option value="Composing">Composing</option>';
if (document.URL.indexOf("#top") != -1) {
document.getElementById('ac').style.textDecoration='none';
}
if (sm == "" && document.URL.indexOf("#") == -1) {
// Name those Notes game
if ((location.search.split('note=')[1] ? location.search.split('note=')[1].split('&')[0] : '') != '' ||
(location.search.split('song=')[1] ? location.search.split('song=')[1].split('&')[0] : '') != '') {
offset=eval((location.search.split('note=')[1] ? location.search.split('note=')[1].split('&')[0] : '0'));
var pih=null, additionals="", found=0;
var tdsare=document.getElementsByTagName('td');
var pselans=parent.document.getElementById('selans');
if (eval(afifty[0]) == 0) {
if ((location.search.split('nlength=')[1] ? location.search.split('nlength=')[1].split('&')[0] : '') == '') {
nlength = (Math.floor(Math.random() * (6000 - 250) + 250) / 1000);
}
}
if (pselans != null) {
if (eval(afifty[0]) == 0) {
fifty = Math.floor(Math.random() * (108 - offset - 21) + 21);
afifty[0] = fifty;
pih=parent.document.getElementById('apih');
if (pih != null) {
if (pih.value == '' || pih.value == '0') pih.value=fifty;
}
pih=parent.document.getElementById('pih');
if (pih != null) {
chg = (pih.value == '' || pih.value == '0');
if (pih.value == '' || pih.value == '0') pih.value=fifty;
}
}
if (pselans.innerHTML.indexOf(".") == -1) { // || 11 == 11) {
var itd=0, ih="";
for (itd=0; itd<tdsare.length; itd++) {
if (tdsare[itd].innerHTML.indexOf("<") == -1) {
if (tdsare[itd].innerHTML.indexOf(".") == -1 && tdsare[itd].innerHTML.substring(0,1) >= '1' && tdsare[itd].innerHTML.substring(0,1) <= '9') {
additionals+='<option value="' + tdsare[itd].innerHTML + ',';
if (eval(tdsare[itd].innerHTML) == afifty[0]) {
found=1; //Math.floor(Math.random() * (3 - 1) + 1);
doit=eval(found % 2);
}
} else if (tdsare[itd].innerHTML.indexOf(".") == -1) {
ih=tdsare[itd].innerHTML.replace(" (middle C)", "");
if (found > 0) {
found=0;
if (pih != null) {
if (chg) pih.value=ih;
}
}
additionals+=(tdsare[itd].innerHTML.replace(" (middle C)", "") + ',');
if (doit == 0) {
tdsare[itd].click();
}
} else {
additionals+=(tdsare[itd].innerHTML + '">' + ih + '</option>');
}
}
}
} else {
var getnote=pselans.innerHTML.split('"' + afifty[0] + ',');
var thenote=getnote[1].split(",");
if (pih != null) {
//alert(chg + " " + pih.value + " will get " + thenote[0]);
if (chg || (pih.value == '' || pih.value == '0')) pih.value=thenote[0];
}
}
if (pselans.innerHTML.indexOf(".") == -1) pselans.innerHTML+=additionals;
}
if (eval(afifty[0]) == 0) {
fifty = Math.floor(Math.random() * (108 - offset - 21) + 21);
afifty[0] = fifty;
pih=parent.document.getElementById('apih');
if (pih != null) {
if (pih.value == '' || pih.value == '0') pih.value=fifty;
}
pih=parent.document.getElementById('pih');
if (pih != null) {
if (pih.value == '' || pih.value == '0') pih.value=fifty;
}
}
if (afifty[0] >= 21 && afifty[0] <= 108) {
var thingtodo=" MIDI.loadPlugin({ \n";
thingtodo+=" soundfontUrl: './soundfont/', \n";
thingtodo+=" instrument: 'acoustic_grand_piano', \n";
thingtodo+=" onprogress: function(state, progress) { \n";
thingtodo+=" console.log(state, progress); \n";
thingtodo+=" }, \n";
thingtodo+=" onsuccess: function() { \n";
//thingtodo+=" MIDI.noteOn(0, 1, 1, 0); \n";
thingtodo+=" var delay = 0; \n";
thingtodo+=" var note = " + afifty[0] + "; \n";
thingtodo+=" var velocity = " + aone_twenty_seven[0] + "; \n";
thingtodo+=" MIDI.setVolume(0, " + eval(hit * eval('' + aone_twenty_seven[0])) + "); \n";
for (igh=0; igh<afifty.length; igh++) {
if (igh > 0) {
thingtodo+=" var note" + igh + " = " + afifty[igh] + "; \n";
thingtodo+=" MIDI.noteOn(0, note" + igh + ", velocity, delay); \n";
} else {
thingtodo+=" MIDI.noteOn(0, note, velocity, delay); \n";
}
if (aone_twenty_seven.length > eval(igh + 1)) {
if (aone_twenty_seven[eval(igh + 1)] != aone_twenty_seven[igh]) {
thingtodo+=" MIDI.setVolume(0, " + eval(hit * eval('' + aone_twenty_seven[eval(igh + 1)])) + "); \n";
lastv=aone_twenty_seven[eval(igh + 1)];
}
} else if (aone_twenty_seven[aone_twenty_seven.length - 1] != lastv) {
thingtodo+=" MIDI.setVolume(0, " + eval(hit * eval('' + aone_twenty_seven[aone_twenty_seven.length - 1])) + "); \n";
lastv=aone_twenty_seven[aone_twenty_seven.length - 1];
}
}
for (igh=0; igh<afifty.length; igh++) {
if (anlength.length > igh) {
thingtodo+=" MIDI.noteOff(0, " + ("note" + igh).replace("note0", "note") + ", delay + " + anlength[igh] + "); \n\n";
} else {
thingtodo+=" MIDI.noteOff(0, " + ("note" + igh).replace("note0", "note") + ", delay + " + anlength[anlength.length - 1] + "); \n\n";
}
}
hit=1;
thingtodo+=" } \n";
thingtodo+=" }); \n";
//if (!chg && document.URL.indexOf(",") != -1) alert(document.URL + " " + thingtodo);
if (doit == 1) { // if (document.getElementById('conduit').value != '') {
if (document.getElementById('conduit').value != '') { // if (document.URL.indexOf('webaudio=') != -1) {
//alert(thingtodo.split('onsuccess: function() {')[1].split('}')[0].replace(/MIDI\./g, 'MIDI'));
if (azzgoon) { eval(thingtodo.split('onsuccess: function() {')[1].split('}')[0].replace(/ MIDI\.noteO/g, ' preMIDInoteO').replace(/ MIDI\./g, ' MIDI')); } // play music
} else {
if (azzgoon) { eval(thingtodo); }
}
}
}
} else {
//MIDI.loader = new widgets.Loader;
if (document.getElementById('conduit').value != '') { // if (document.URL.indexOf('webaudio=') != -1) {
plan="var delay = 0; // play one note every quarter second " + String.fromCharCode(10);
plan+="var note = 50; // the MIDI note " + String.fromCharCode(10);
plan+="var velocity = 127; // how hard the note hits " + String.fromCharCode(10);
plan+="MIDIsetVolume(0, 127); " + String.fromCharCode(10);
plan+="MIDInoteOn(0,note,velocity,delay); " + String.fromCharCode(10);
plan+="MIDInoteOff(0,note,delay + 0.75); " + String.fromCharCode(10);
//alert(plan.replace(/MIDI\./g, 'MIDI'));
eval(plan.replace(/ MIDI\.noteO/g, ' preMIDInoteO').replace(/ MIDI\./g, ' MIDI')); // play music
} else {
MIDI.loadPlugin({
soundfontUrl: "./soundfont/",
instrument: "acoustic_grand_piano",
onprogress: function(state, progress) {
console.log(state, progress);
},
callback: doItAgain,
onsuccess: function() {
var delay = 0; // play one note every quarter second
var note = 50; //fifty; // the MIDI note
var velocity = 127; //one_twenty_seven; // how hard the note hits
// play the note
MIDI.setVolume(0, eval(hit * 127));
hit=1;
MIDI.noteOn(0, note, velocity, delay);
MIDI.noteOff(0, note, delay + 0.75);

}
});
}
}
}
};



function doItAgain() {
if (document.getElementById('conduit').value != '') { // if (document.URL.indexOf('webaudio=') != -1) {
startPlay();
} else {
MIDI.loadPlugin({
soundfontUrl: "./soundfont/",
instrument: "acoustic_grand_piano",
//,targetFormat: "ogg"
onprogress: function (event) {
console.log(state, progress);
}
,callback: startPlay
});
}
};

function startPlay() {
if (document.getElementById('conduit').value != '') { // if (document.URL.indexOf('webaudio=') != -1) {
plan="var delay = 0; // play one note every quarter second " + String.fromCharCode(10);
plan+="var note = 50; // the MIDI note " + String.fromCharCode(10);
plan+="var velocity = 127; // how hard the note hits " + String.fromCharCode(10);
plan+="MIDIsetVolume(0, 127); " + String.fromCharCode(10);
plan+="MIDInoteOn(0,note,velocity,delay); " + String.fromCharCode(10);
plan+="MIDInoteOff(0,note,delay + 0.75); " + String.fromCharCode(10);
//alert(plan.replace(/MIDI\./g, 'MIDI'));
if (azgoon) { eval(plan.replace(/ MIDI\.noteO/g, ' preMIDInoteO').replace(/ MIDI\./g, ' MIDI')); } // play music
} else if (azgoon) {
var delay = 0; // play one note every quarter second
var note = 50; //fifty; // the MIDI note
var velocity = 127; //one_twenty_seven; // how hard the note hits
// play the note
MIDI.setVolume(0, eval(hit * 127));
hit=1;
MIDI.noteOn(0, note, velocity, delay);
MIDI.noteOff(0, note, delay + 0.75);
}
}
</script>

<script src="../inc/shim/Base64.js" type="text/javascript"></script>
<script src="../inc/shim/Base64binary.js" type="text/javascript"></script>
<script src="../inc/shim/WebAudioAPI.js" type="text/javascript"></script>
<script src="../js/midi/audioDetect.js" type="text/javascript"></script>
<script src="../js/midi/gm.js" type="text/javascript"></script>
<script src="../js/midi/loader.js" type="text/javascript"></script>
<script src="../js/midi/plugin.audiotag.js" type="text/javascript"></script>
<script src="../js/midi/plugin.webaudio.js" type="text/javascript"></script>
<script src="../js/midi/plugin.webmidi.js" type="text/javascript"></script>
<script src="../js/util/dom_request_xhr.js" type="text/javascript"></script>
<script src="../js/util/dom_request_script.js" type="text/javascript"></script>

<!-- midi.js package -->
<!--script src="../js/MIDI/WebAudioAPI.js" type="text/javascript"></script>
<script src="../js/MIDI/AudioDetect.js" type="text/javascript"></script>
<script src="../js/MIDI/LoadPlugin.js" type="text/javascript"></script>
<script src="../js/MIDI/Plugin.js" type="text/javascript"></script>
<script src="../js/MIDI/Player.js" type="text/javascript"></script>
<script src="../js/DOM/DOMLoader.XMLHttp.js" type="text/javascript"></script>
<script src="../js/base64/Base64.js" type="text/javascript"></script>
<script src="../js/base64/base64binary.js" type="text/javascript"></script>
<script src="../js/widgets/loader.js" type="text/javascript"></script>

<script src="../js/debug.js" type="text/javascript"></script-->

<input type=hidden id=conduit value=''></input><input type=hidden id=cmdconduit value=''></input>
</body>
</html>