@@ 137,6 137,23 @@ func (s *SineWave) Read(buf []byte) (int, error) {
/* End of Apache 2.0 licensed code. */
const (
+ A3 = 220
+ AS3 = 233.1
+ BF3 = AS3
+ B3 = 246.9
+ C4 = 261.6
+ CS4 = 277.2
+ DF4 = CS4
+ D4 = 293.7
+ DS4 = 311.13
+ EF4 = DS4
+ E4 = 329.6
+ F4 = 349.2
+ FS4 = 370.0
+ GF4 = FS4
+ G4 = 392
+ GS4 = 415.3
+ AF4 = GS4
A4 = 440
AS4 = 466.2
BF4 = AS4
@@ 166,7 183,21 @@ const (
EF6 = DS6
E6 = 1318.5
F6 = 1396.9
-
+ FS6 = 1479.9
+ GF6 = FS6
+ G6 = 1567.9
+ GS6 = 1661.2
+ AF6 = GS6
+ A6 = 1760
+ AS6 = 1864.7
+ BF6 = AS6
+ B6 = 1975.5
+
+ IdxBF3 = IdxAS3
+ IdxDF4 = IdxCS4
+ IdxEF4 = IdxDS4
+ IdxGF4 = IdxFS4
+ IdxAF4 = IdxGS4
IdxBF4 = IdxAS4
IdxDF5 = IdxCS5
IdxEF5 = IdxDS5
@@ 175,10 206,23 @@ const (
IdxBF5 = IdxAS5
IdxDF6 = IdxCS6
IdxEF6 = IdxDS6
+ IdxBF6 = IdxAS6
)
const (
- IdxA4 = iota
+ IdxA3 = iota
+ IdxAS3
+ IdxB3
+ IdxC4
+ IdxCS4
+ IdxD4
+ IdxDS4
+ IdxE4
+ IdxF4
+ IdxFS4
+ IdxG4
+ IdxGS4
+ IdxA4
IdxAS4
IdxB4
IdxC5
@@ 199,10 243,28 @@ const (
IdxDS6
IdxE6
IdxF6
+ IdxFS6
+ IdxG6
+ IdxGS6
+ IdxA6
+ IdxAS6
+ IdxB6
IdxMax
)
var freqs = []float64{
+ IdxA3: A3,
+ IdxAS3: AS3,
+ IdxB3: B3,
+ IdxC4: C4,
+ IdxCS4: CS4,
+ IdxD4: D4,
+ IdxDS4: DS4,
+ IdxE4: E4,
+ IdxF4: F4,
+ IdxFS4: FS4,
+ IdxG4: G4,
+ IdxGS4: GS4,
IdxA4: A4,
IdxAS4: AS4,
IdxB4: B4,
@@ 224,9 286,22 @@ var freqs = []float64{
IdxDS6: DS6,
IdxE6: E6,
IdxF6: F6,
+ IdxFS6: FS6,
+ IdxG6: G6,
+ IdxGS6: GS6,
+ IdxA6: A6,
+ IdxAS6: AS6,
+ IdxB6: B6,
}
var notes = [][]int{
+ IdxA3: {IdxA3},
+ IdxB3: {IdxB3},
+ IdxC4: {IdxC4},
+ IdxD4: {IdxD4},
+ IdxE4: {IdxE4},
+ IdxF4: {IdxF4},
+ IdxG4: {IdxG4},
IdxA4: {IdxA4},
IdxB4: {IdxB4},
IdxC5: {IdxC5},
@@ 238,6 313,11 @@ var notes = [][]int{
IdxB5: {IdxB5},
IdxC6: {IdxC6},
IdxD6: {IdxD6},
+ IdxE6: {IdxE6},
+ IdxF6: {IdxF6},
+ IdxG6: {IdxG6},
+ IdxA6: {IdxA6},
+ IdxB6: {IdxB6},
}
var halfStepUp = func() [][]int {
@@ 249,6 329,13 @@ var halfStepUp = func() [][]int {
}()
var majChords = [][]int{
+ IdxA3: {IdxA3, IdxC4, IdxE4},
+ IdxB3: {IdxB3, IdxD4, IdxF4},
+ IdxC4: {IdxC4, IdxE4, IdxG4},
+ IdxD4: {IdxD4, IdxF4, IdxA4},
+ IdxE4: {IdxE4, IdxG4, IdxB4},
+ IdxF4: {IdxF4, IdxA4, IdxC5},
+ IdxG4: {IdxG4, IdxB4, IdxD5},
IdxA4: {IdxA4, IdxC5, IdxE5},
IdxB4: {IdxB4, IdxD5, IdxF5},
IdxC5: {IdxC5, IdxE5, IdxG5},
@@ 256,9 343,21 @@ var majChords = [][]int{
IdxE5: {IdxE5, IdxG5, IdxB5},
IdxF5: {IdxF5, IdxA5, IdxC6},
IdxG5: {IdxG5, IdxB5, IdxD6},
+ IdxA5: {IdxA5, IdxC6, IdxE6},
+ IdxB5: {IdxB5, IdxD6, IdxF6},
+ IdxC6: {IdxC6, IdxE6, IdxG6},
+ IdxD6: {IdxD6, IdxF6, IdxA6},
+ IdxE6: {IdxE6, IdxG6, IdxB6},
}
var majExtChords = [][]int{
+ IdxA3: {IdxA3, IdxC4, IdxE4, IdxG4},
+ IdxB3: {IdxB3, IdxD4, IdxF4, IdxA4},
+ IdxC4: {IdxC4, IdxE4, IdxG4, IdxB4},
+ IdxD4: {IdxD4, IdxF4, IdxA4, IdxC5},
+ IdxE4: {IdxE4, IdxG4, IdxB4, IdxD5},
+ IdxF4: {IdxF4, IdxA4, IdxC5, IdxE5},
+ IdxG4: {IdxG4, IdxB4, IdxD5, IdxF5},
IdxA4: {IdxA4, IdxC5, IdxE5, IdxG5},
IdxB4: {IdxB4, IdxD5, IdxF5, IdxA5},
IdxC5: {IdxC5, IdxE5, IdxG5, IdxB5},
@@ 266,9 365,23 @@ var majExtChords = [][]int{
IdxE5: {IdxE5, IdxG5, IdxB5, IdxD6},
IdxF5: {IdxF5, IdxA5, IdxC6, IdxE6},
IdxG5: {IdxG5, IdxB5, IdxD6, IdxF6},
+ IdxA5: {IdxA5, IdxC6, IdxE6, IdxG6},
+ IdxB5: {IdxB5, IdxD6, IdxF6, IdxA6},
+ IdxC6: {IdxC6, IdxE6, IdxG6, IdxB6},
}
var keyToIdx = map[string]int{
+ "Z": IdxA3,
+ "X": IdxB3,
+ "C": IdxC4,
+ "V": IdxD4,
+ "B": IdxE4,
+ "N": IdxF4,
+ "M": IdxG4,
+ "<": IdxA4,
+ ",": IdxA4,
+ ">": IdxB4,
+ ".": IdxB4,
"A": IdxA4,
"S": IdxB4,
"D": IdxC5,
@@ 278,6 391,15 @@ var keyToIdx = map[string]int{
"J": IdxG5,
"K": IdxA5,
"L": IdxB5,
+ "Q": IdxA5,
+ "W": IdxB5,
+ "E": IdxC6,
+ "R": IdxD6,
+ "T": IdxE6,
+ "Y": IdxF6,
+ "U": IdxG6,
+ "I": IdxA6,
+ "O": IdxB6,
}
func keySet() key.Set {