public static int GetTuningForText(string str)
{
var b = 0;
string note = null;
int octave = 0;
var m = TuningRegex.exec(str.ToLower());
if (m != null)
{
note = m[1];
octave = Std.ParseInt(m[2]);
}
if (!note.IsNullOrWhiteSpace())
{
switch (note)
{
case "c":
b = 0;
break;
case "db":
b = 1;
break;
case "d":
b = 2;
break;
case "eb":
b = 3;
break;
case "e":
b = 4;
break;
case "f":
b = 5;
break;
case "gb":
b = 6;
break;
case "g":
b = 7;
break;
case "ab":
b = 8;
break;
case "a":
b = 9;
break;
case "bb":
b = 10;
break;
case "b":
b = 11;
break;
default:
return -1;
}
// add octaves
b += (octave * 12);
}
else
{
return -1;
}
return b;
}