<!doctype html>
<html>
<head>
<title>Name those Chords Game - RJM Programming - May, 2015</title>
<script type='text/javascript'>
var neg='-';
var score=0;
var goes=0;
var tih=null;
var checking=0;
var timeticking=0;
var checkcont='';
var sinval=[];
var actype=[12,11,9,4,8,7,11];
var lastis=[3,3,3,1,1,1,1];
var nextis=0;
var thectype=0;
var clist='';
var adone=false;
var nlist='';
var xtype='';
var allhis='';
var cn=["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"]; // 24 is C1, 36 is C2
function finishednow() {
if (clist != '') {
//alert(clist);
//document.getElementById('myifr').src='./MyScale.html?note=' + clist + "&nlength=4.0";
document.getElementById('myifr').title='./MyScale.html#note=' + clist + "&nlength=4.0";
//document.getElementById('apih').value='0';
}
}
function gotrootwhatnow() {
var allhhh, bitshhbefore, curnote;
if (document.getElementById('apih').value != '0') {
var cfound=document.body.innerHTML.split('val' + 'ue="' + thectype + ';');
if (cfound.length >= 2) {
var iy, nnote=eval(document.getElementById('apih').value), nsemi=cfound[1].split(";");
var xxtype=nsemi[0].split(",");
xtype=xxtype[xxtype.length - 1];
var stepbit=nsemi[1].split('"');
var steps=stepbit[0].split(",");
//alert(thectype + " based on root " + document.getElementById('apih').value + " at " + cfound.length);
if (nextis == 1) {
clist=nnote;
nlist=cn[eval(nnote % 12)] + eval(Math.floor(nnote / 12) - 1);
document.getElementById('pih').value=cn[eval(nnote % 12)] + eval(Math.floor(nnote / 12) - 1);
}
if (nextis <= lastis[thectype]) {
nnote+=eval(steps[nextis - 1]);
document.getElementById('myifr').title='./MyScale.html#note=' + nnote;
document.getElementById('pih').value+="," + cn[eval(nnote % 12)] + eval(Math.floor(nnote / 12) - 1);
clist+=("," + nnote);
nlist+=("," + cn[eval(nnote % 12)] + eval(Math.floor(nnote / 12) - 1));
//alert(clist);
}
if (nextis < lastis[thectype]) {
nextis++;
setTimeout(gotrootwhatnow, 1500);
} else {
//setTimeout(gotrootwhatnow, 1500);
setTimeout(finishednow, 1500);
}
}
} else {
document.getElementById('apih').value='0';
}
}
function andparent(iwas, iis) {
if (tih != null) {
var ago=tih.innerHTML.split("/");
var tgo=eval(ago[ago.length - 1]);
var ascores=ago[ago.length - 2].split(" ");
var bot=0;
bot+=eval(ascores[ascores.length - 1]);
bot+=eval(iis - iwas);
tih.innerHTML=tih.innerHTML.replace(eval(ascores[ascores.length - 1]) + "/" + tgo, bot + "/" + eval(1 + tgo));
}
}
function checklotsans() {
if (timeticking == 0) {
timeticking=1;
setTimeout(putthingsback, 30000);
}
var done=0;
var vsis="," + nlist + ","; // + document.getElementById('pih').value + ",";
var left="," + nlist + ","; // + document.getElementById('pih').value + ",";
var chosen=",", csvs;
var wass=eval(score);
var was=score + "/" + goes;
sinval=[];
var sin=document.getElementById('selans');
for (var i=0; i<sin.options.length; i++) {
if (sin.options[i].selected) {
csvs=sin.options[i].value.split(",");
if (csvs.length > 1) {
done++;
sinval[sinval.length] = csvs[1];
chosen=chosen + csvs[1] + ",";
if (vsis.indexOf("," + sin.options[i].value + ",") != -1) {
score=eval(score + 5);
left = left.replace("," + csvs[1] + ",", ",");
}
}
sin.options[i].selected = false;
}
}
if (done <= 1) {
setTimeout(checklotsans, 10000);
} else {
goes=eval(1 + goes);
if (left.replace(/,/g, '') != '') {
alert("Your Chord consists of " + document.getElementById('pih').value + " but you selected " + (chosen + "*").substring(1).replace(",*","").replace("*","") + " leaving " + (left + "*").substring(1).replace(",*","").replace("*","") + " outstanding. You scored " + eval(score - wass) + ".");
}
document.getElementById('myh1is').innerHTML=document.getElementById('myh1is').innerHTML.replace(was, score + "/" + goes);
checking=0;
sin.style.display='none';
document.getElementById('preselans').style.display='none';
if (document.getElementById('ctype').style.display == 'none') putthingsback();
//document.getElementById('preselans').style.display='none';
//document.getElementById('ctype').style.display='none';
//document.getElementById('selans').style.display='none';
//document.getElementById('mybut').style.backgroundColor='yellow';
andparent(wass, score);
}
}
function dodone() {
if (1 == 6) {
if (!adone) {
if (!adone) {
alert(167);
// create empty buffer
var buffer = myContext.createBuffer(1, 1, 22050);
var source = myContext.createBufferSource();
source.buffer = buffer;
// connect to output (your speakers)
source.connect(myContext.destination);
// play the file
source.noteOn(0);
}
window.addEventListener('touchstart', function() {
if (!adone) {
// create empty buffer
var buffer = myContext.createBuffer(1, 1, 22050);
var source = myContext.createBufferSource();
source.buffer = buffer;
// connect to output (your speakers)
source.connect(myContext.destination);
// play the file
source.noteOn(0);
}
}, false);
window.addEventListener('click', function() {
if (!adone) {
alert(67);
// create empty buffer
var buffer = myContext.createBuffer(1, 1, 22050);
var source = myContext.createBufferSource();
source.buffer = buffer;
// connect to output (your speakers)
source.connect(myContext.destination);
// play the file
source.noteOn(0);
}
}, false);
adone=true;
}
}
}
function putthingsback() {
dodone();
if (timeticking != 0) {
timeticking=0;
document.getElementById('preselans').style.display='none';
document.getElementById('ctype').style.display='none';
document.getElementById('selans').style.display='none';
document.getElementById('mybut').style.backgroundColor='yellow';
document.getElementById('pih').value='0';
document.getElementById('apih').value='0';
if (1 == 3) {
location.href='./name_those_chords.html?score=' + score + '&goes=' + goes;
} else {
document.getElementById('sscore').innerHTML='' + score;
document.getElementById('sgoes').innerHTML='' + goes;
}
}
}
function checkans(tvalis,tis) {
if (timeticking == 0) {
timeticking=1;
setTimeout(putthingsback, 30000);
}
var wass=eval(score);
var was=score + "/" + goes;
goes=eval(1 + goes);
if (tis.id == 'ctype') {
if (tvalis.indexOf(thectype + ";") == 0) {
score=eval(2 + score);
} else {
alert("Sorry, that was " + xtype);
}
} else {
if (document.getElementById('pih').value == tvalis) {
score=eval(5 + score);
} else if (document.getElementById('pih').value.substring(0,1) == tvalis && document.getElementById('pih').value.indexOf("#") == -1 && tvalis.indexOf("#") == -1) {
score=eval(3 + score);
alert("Not bad, that was " + document.getElementById('pih').value + " ... you score 3 points.");
} else if (document.getElementById('pih').value.substring(0,2) == tvalis.substring(0,2) && document.getElementById('pih').value.indexOf("#") != -1 && tvalis.indexOf("#") != -1) {
score=eval(3 + score);
alert("Not bad, that was " + document.getElementById('pih').value + " ... you score 3 points.");
} else {
alert("Sorry, that was " + document.getElementById('pih').value);
}
}
document.getElementById('sscore').innerHTML='' + score;
document.getElementById('sgoes').innerHTML='' + goes;
document.getElementById('myh1is').innerHTML=document.getElementById('myh1is').innerHTML.replace(was, score + "/" + goes);
tis.value='';
tis.style.display='none';
if (tis.id == 'preselans') {
document.getElementById('selans').style.display='none';
if (document.getElementById('ctype').style.display == 'none') putthingsback();
} else if (tis.id == 'selans') {
document.getElementById('preselans').style.display='none';
if (document.getElementById('ctype').style.display == 'none') putthingsback();
}
//document.getElementById('preselans').style.display='none';
//document.getElementById('ctype').style.display='none';
//document.getElementById('selans').style.display='none';
//document.getElementById('mybut').style.backgroundColor='yellow';
andparent(wass, score);
}
</script>
</head>
<body style='background-color: teal;' onload=" score=eval((location.search.split('score=')[1] ? location.search.split('score=')[1].split('&')[0] : '0')); goes=eval((location.search.split('goes=')[1] ? location.search.split('goes=')[1].split('&')[0] : '0')); document.getElementById('myh1is').innerHTML=document.getElementById('myh1is').innerHTML.replace('0/0',score + '/' + goes); checkcont=document.getElementById('ctype').innerHTML; tih=top.document.getElementById('tih'); if (tih != null) { if (1 == 3) { document.getElementById('mybut').style.width='135px'; } document.getElementById('mybut').value=document.getElementById('mybut').value.replace('Click when Ready to ',''); document.getElementById('selans').innerHTML=document.getElementById('selans').innerHTML.replace(' an answer below',' answer'); document.getElementById('preselans').innerHTML=document.getElementById('preselans').innerHTML.replace(' an answer below',' answer'); } ">
<div align='center'>
<h1 title='Perfect Pitch 2.7 subsection 6 ... chortle, chortle' id='myh1is' align='center'><font size=14>N a m e</font> those Chords ... Score <span id=sscore>0</span>/<span id=sgoes>0</span></h1>
<table style='width:95%;'><tr><td style='width:70%';>
<input id='mybut' type='button' style='height:180px; width:95%; background-color: yellow;' value="Click when Ready to Name those Chords and Click any Web Audio link below" onclick=" dodone(); putthingsback(); document.getElementById('pih').value='0'; document.getElementById('apih').value='0'; clist=''; timeticking=0; this.style.backgroundColor='red'; this.value=this.value.split(' and Click any Web Audio link below')[0]; document.getElementById('ctype').style.display='inline'; document.getElementById('preselans').style.display='inline'; document.getElementById('selans').style.display='inline'; thectype = eval((Math.floor(Math.random() * (7 - 0) + 0)) % 7); document.getElementById('myifr').title='./MyScale.html#note=' + neg + '0&nlength=0.75&offset=' + actype[thectype]; if (neg.length > 0) { neg=''; } else { neg='-'; } if (document.getElementById('apih').value != '0' || 1 == 1) { nextis=1; setTimeout(gotrootwhatnow,1500); } "></input></td><td><select style='display:none;' size=13 onchange='checkans(this.value,this);' id='ctype'><option value=''>Score 2 for Chord type</option><option value='0;4,Dominant;4,7,12'>Dominant Chord</option><option value='1;4,Dominant 7th;4,7,11'>Dominant 7th Chord</option><option value='2;4,Diminished 7th;3,6,9'>Diminished 7th Chord</option><option value='3;2,Major Third;4'>Major Third</option><option value='4;2,Minor Sixth;8'>Minor Sixth</option><option value='5;2,Perfect Fifth;7'>Perfect Fifth</option><option value='6;2,Minor Seventh;11'>Minor Seventh</option></select></td><td><select style='display:none;' onchange='checkans(this.value,this);' id='preselans' size=13><option value=''>Score 3 for root note</option><option value='A'>A</option><option value='A#'>A#</option><option value='B'>B</option><option value='C'>C</option><option value='C#'>C#</option><option value='D'>D</option><option value='D#'>D#</option><option value='E'>E</option><option value='F'>F</option><option value='F#'>F#</option><option value='G'>G</option><option value='G#'>G#</option></select></td><td><select style='display:none;' size=13 onclick=" if (checking == 0) { checking=1; setTimeout(checklotsans, 10000); }" id='selans' multiple><option value=''>Score 5 for any/all notes (10 secs)</option></select>
</td></tr></table>
<input id='pih' type='hidden' value='0'></input><input id='apih' type='hidden' value='0'></input>
<iframe onload="setTimeout(function(){ document.getElementById('myifr').style.visibility='hidden'; }, 20000);" id='myifr' src='./MyScale.html?note=500#dchoose' title='Helper' style='display:BLOCK;width:95%;height:800px;'></iframe>
</body>
</html>