1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
module.exports = {
// Take some solfege input and normalize it
normalize: function(str) {
var tokens = str.toLowerCase().split(/\s+/);
var normalized = '';
var table = {
'do': 'a',
'do+': 'b',
'do#': 'b',
'doh': 'a',
'doh+': 'b',
'doh#': 'b',
're-': 'b',
'reb': 'b',
're': 'c',
're+': 'd',
're#': 'd',
'mi-': 'd',
'mib': 'd',
'mi': 'e',
'fa': 'f',
'fa+': 'g',
'fa#': 'g',
'so-': 'g',
'sob': 'g',
'so': 'h',
'so+': 'i',
'so#': 'i',
'sol-': 'g',
'solb': 'g',
'sol': 'h',
'sol+': 'i',
'sol#': 'i',
'la-': 'i',
'lab': 'i',
'la': 'j',
'la+': 'k',
'la#': 'k',
'ti-': 'k',
'tib': 'k',
'ti': 'l',
'si-': 'k',
'sib': 'k',
'si': 'l'
};
for (var i = 0; i < tokens.length; i++) {
if (table[tokens[i]]) {
normalized += table[tokens[i]];
}
}
return normalized;
},
// Take some solfege from the DB and translate it back
// to something readable
denormalize: function(str) {
var table = {
'a': 'do',
'b': 'do+',
'c': 're',
'd': 're+',
'e': 'mi',
'f': 'fa',
'g': 'fa+',
'h': 'so',
'i': 'so+',
'j': 'la',
'k': 'la+',
'l': 'ti'
};
var ret = '';
for (var i = 0; i < str.length; i++) {
ret += table[str.charAt(i)] + ' ';
}
return ret.trim();
}
};
|