Started following some tutorial on att85 usi. Downloaded example code from make avr book.

This commit is contained in:
Dan
2022-09-20 01:08:01 -04:00
parent d0cbc0000e
commit 361a828c46
295 changed files with 68746 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
## File to generate equal-tempered scale for use with DDS
import math # because music is math
scale = ['C', 'Cx', 'D', 'Dx', 'E', 'F', 'Fx', 'G', 'Gx', 'A', 'Ax', 'B']
def octave(baseLength):
pitches = [baseLength * math.exp(x*math.log(2)/12) for x in range(0, 12)]
pitches = [int(round(x)) for x in pitches]
return( zip(scale, pitches) )
def writeScaleHeader(basePitch, octaves, filename="scale.h"):
outfile = open(filename, "w")
outfile.write('''/*
Scales for use with DDS synthesis.
Aimed roughly at having A2 be at 440Hz,
when the chip is clocked at 8MHz and
using 8-bit resolution on the PWM.
Tune it by tweaking basePitch.
*/
''')
for i in range(0, octaves):
for note, pitch in octave(basePitch * 2**i):
if pitch < 30000:
noteString = note + str(i)
print("#define {:<5}{:>6}").format(noteString, pitch)
outfile.write("#define {:<5}{:>6}\n".format(noteString, pitch))
outfile.close()
######################################################################
if __name__ == "__main__":
writeScaleHeader(basePitch=130, octaves=5)