maia-util
Version:
Utility math and music functions supporting various applications by Music Artificial Intelligence Algorithms, Inc.
45 lines (42 loc) • 1.81 kB
JavaScript
const lookup = [
{ "sign": "G", "line": 2, "name": "treble clef"},
{ "sign": "G", "line": 2, "clefOctaveChange": 1, "name": "treble clef 8va" },
{ "sign": "G", "line": 2, "clefOctaveChange": 2, "name": "treble clef 15ma" },
{ "sign": "G", "line": 2, "clefOctaveChange": -1, "name": "treble clef 8vb" },
{ "sign": "G", "line": 1, "name": "French violin clef" },
{ "sign": "C", "line": 1, "name": "soprano clef" },
{ "sign": "C", "line": 2, "name": "mezzo-soprano clef" },
{ "sign": "C", "line": 3, "name": "alto clef" },
{ "sign": "C", "line": 4, "name": "tenor clef" },
{ "sign": "C", "line": 4, "name": "baritone clef (C clef)" },
{ "sign": "F", "line": 4, "name": "bass clef" },
{ "sign": "F", "line": 4, "clefOctaveChange": 1, "name": "bass clef 8va" },
{ "sign": "F", "line": 4, "clefOctaveChange": 2, "name": "bass clef 15ma" },
{ "sign": "F", "line": 4, "clefOctaveChange": -1, "name": "bass clef 8vb" },
{ "sign": "F", "line": 4, "clefOctaveChange": -2, "name": "bass clef 15mb" },
{ "sign": "F", "line": 3, "name": "baritone clef (F clef)" },
{ "sign": "F", "line": 5, "name": "subbass clef 15mb" },
// These last two do not seem to be supported.
{ "sign": "percussion", "line": 2, "name": "percussion clef" },
{ "sign": "TAB", "line": 0, "name": "tablature" }
];
export default function clef_sign_and_line2clef_name(sign, line, clef_octave_change){
var i = 0;
while (i < lookup.length){
if (lookup[i].sign == sign &&
lookup[i].line == line &&
(clef_octave_change == undefined ||
lookup[i].clefOctaveChange &&
lookup[i].clefOctaveChange == clef_octave_change)){
var clef_name = lookup[i].name;
i = lookup.length - 1;
}
i++;
}
if (clef_name == undefined){
return "unknown";
}
else{
return clef_name;
}
}