-
Notifications
You must be signed in to change notification settings - Fork 0
/
fiftythree_keys.go
90 lines (83 loc) · 2.06 KB
/
fiftythree_keys.go
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
82
83
84
85
86
87
88
89
90
package equal
type FiftyThreeKey int
const (
FiftyThreeKeyC = FiftyThreeKey(0 + iota)
FiftyThreeKeyCSharp
FiftyThreeKeyCDoubleSharp
FiftyThreeKeyCSharpDoubleSharp
FiftyThreeKeyCDoubleSharpDoubleSharp
FiftyThreeKeyDDoubleFlatDoubleFlat
FiftyThreeKeyDTripleFlat
FiftyThreeKeyDDoubleFlat
FiftyThreeKeyDFlat
FiftyThreeKeyD
FiftyThreeKeyDSharp
FiftyThreeKeyDDoubleSharp
FiftyThreeKeyDSharpDoubleSharp
FiftyThreeKeyDDoubleSharpDoubleSharp
FiftyThreeKeyEDoubleFlatDoubleFlat
FiftyThreeKeyETripleFlat
FiftyThreeKeyEDoubleFlat
FiftyThreeKeyEFlat
FiftyThreeKeyE
FiftyThreeKeyESharp
FiftyThreeKeyEDoubleSharp
FiftyThreeKeyFFlat
FiftyThreeKeyF
FiftyThreeKeyFSharp
FiftyThreeKeyFDoubleSharp
FiftyThreeKeyFSharpDoubleSharp
FiftyThreeKeyFDoubleSharpDoubleSharp
FiftyThreeKeyGDoubleFlatDoubleFlat
FiftyThreeKeyGTripleFlat
FiftyThreeKeyGDoubleFlat
FiftyThreeKeyGFlat
FiftyThreeKeyG
FiftyThreeKeyGSharp
FiftyThreeKeyGDoubleSharp
FiftyThreeKeyGSharpDoubleSharp
FiftyThreeKeyGDoubleSharpDoubleSharp
FiftyThreeKeyADoubleFlatDoubleFlat
FiftyThreeKeyATripleFlat
FiftyThreeKeyADoubleFlat
FiftyThreeKeyAFlat
FiftyThreeKeyA
FiftyThreeKeyASharp
FiftyThreeKeyADoubleSharp
FiftyThreeKeyASharpDoubleSharp
FiftyThreeKeyADoubleSharpDoubleSharp
FiftyThreeKeyBDoubleFlatDoubleFlat
FiftyThreeKeyBTripleFlat
FiftyThreeKeyBDoubleFlat
FiftyThreeKeyBFlat
FiftyThreeKeyB
FiftyThreeKeyBSharp
FiftyThreeKeyBDoubleSharp
FiftyThreeKeyCFlat
cMaxFiftyThreeKeys
MaxFiftyThreeKey = FiftyThreeKeyCFlat
MinFiftyThreeKey = FiftyThreeKeyC
)
const fiftyThreeKeyStr = "C-C#C*C+C`D_DvDBDb" +
"D-D#D*D+D`E_EvEBEb" +
"E-E#E*Fb" +
"F-F#F*F+F`G_GvGBGb" +
"G-G#G*G+G`A_AvABAb" +
"A-A#A*A+A`B_BvBBBb" +
"B-B#B*Cb"
const FiftyThreeKeysPerOctave int = int(cMaxFiftyThreeKeys)
func (k FiftyThreeKey) String() string {
switch {
case k >= MinFiftyThreeKey && k <= MaxFiftyThreeKey:
idx := k.Index() * 2
return fiftyThreeKeyStr[idx : idx+2]
default:
return "??"
}
}
func (FiftyThreeKey) KeysPerOctave() int {
return FiftyThreeKeysPerOctave
}
func (k FiftyThreeKey) Index() int {
return int(k)
}