~whereswaldon/chipalee

22e42e0c1b9681f1cbc937a069a7d04911d98fee — Chris Waldon 2 years ago b0042dc
main: add octaves above and below

Signed-off-by: Chris Waldon <christopher.waldon.dev@gmail.com>
1 files changed, 124 insertions(+), 2 deletions(-)

M main.go
M main.go => main.go +124 -2
@@ 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 {