From 22e42e0c1b9681f1cbc937a069a7d04911d98fee Mon Sep 17 00:00:00 2001 From: Chris Waldon Date: Fri, 20 May 2022 13:41:35 -0400 Subject: [PATCH] main: add octaves above and below Signed-off-by: Chris Waldon --- main.go | 126 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 124 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index 3e767f6..e49254a 100644 --- a/main.go +++ b/main.go @@ -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 { -- 2.45.2