Code:
<html><head><title>testing</title>
<script language="javascript" type="text/javascript">
var errText = "";
function findKey(token) {
var result = new Array();
var keyTab = [ ["Ab",8],["A ",3],["Bb",10],["B ",5],["Cb",5],["C ",0],["C#",7],["Db",7],["D ",2],
["Eb",9],["E ",4],["F ",11],["F#",6],["Gb",6],["G ",1] ];
var key = "", i, ikey, iadj=0, dosharp;
var Sharpline = "F#,C#,G#,D#,A#,E#,B#"; var Flatline = "Bb,Eb,Ab,Db,Gb,Cb,Fb";
result= token.match(/([A-G][#b]?) *([A-Za-z]{0,3})/);
if (result.length > 1) {result[2] = result[2].toLowerCase();}
if (result != null) { //start of temp code
alert("result length: " + result.length);
for (i = 0; i < result.length; i++)
alert(i + " ->" + result[i] + "<-");
alert("lastmatch " + RegExp.lastMatch + " Index= " + result.index + " length key= " + result[0].length); } // end of temp code
if (result[0].length == 1 && result[0] == "C")
{return "C";}
key = result[1];
if (key.length == 1)
{key += " ";} //Trailing space for search
for (i = 0; i < keyTab.length; i++) {
if (key == keyTab[i][0]) {
ikey = keyTab[i][1]; break; } }
alert("ikey = " + ikey);
if (ikey == keyTab.length) {
errText+= "Did not recognize key: " + key + "\n";
return "C"; }
if ((result[2].length == 1) && (result[2] == "m")) {iadj = 9;} else {
if (result[2].length == 3) {
switch (result[2]) {
case "min" : {iadj = 9; break;}
case "mix" : {iadj = 11; break;}
case "dor" : {iadj = 10; break;}
case "phr" : {iadj = 8; break;}
case "lyd" : {iadj = 1; break;}
case "loc" : {iadj = 5; break;}
case "maj" : {iadj = 0; break;}
case default: {iadj = 0; errText += "Did not recognize mode: " + result[2] + "\n"; break;} //Help!!!
} } }
ikey += iadj;
ikey = ikey%12;
if (ikey == 0) {
return "C"; }
if (ikey > 0 && < 5) {dosharp = 1;} else
if (ikey > 7 && < 12) {dosharp = 0}; else
if (iadj == 0 && key.indexOf("b")) {dosharp = 0;} else
if (question("Use Flat Key?") == true) {dosharp = 0;} else {dosharp = 1;};
if (dosharp == 1) {
var ilen = ikey * 3 - 1;
return Sharpline.substr(0,ilen); }
ilen = 51.5 - 4.5 * ikey;
return Flatline.substr(0,ilen)
for (var i = 0; i < Sharps.length; i++) {
if (key == Sharps[i].substr(0,2)) {
return Sharpline.substr(0,Sharps[i].substr(2,2)); }}
for (i = 0; i < Flats.length; i++) {
if (key == Flats[i].substr(0,2)) {
return Flatline.substr(0,Flats[i].substr(2,2)); }}
}
</script>
</head>
<body><script langauge="javascript" type="text/javascript">
alert(findKey("B Min"));
if (errText.length) alert(errText);
</script>
</body></html>
I have used the switch statement in other parts of the script
Bookmarks