diff options
Diffstat (limited to 'keyboard.py')
-rw-r--r-- | keyboard.py | 39 |
1 files changed, 7 insertions, 32 deletions
diff --git a/keyboard.py b/keyboard.py index 301c950..73892ea 100644 --- a/keyboard.py +++ b/keyboard.py @@ -1,51 +1,26 @@ import math -import sounddevice as sd import os import sys +import sounddevice as sd +import yue # Number of times to sample each second bitrate = 44100 -def freq(octave, step): - """ - Returns the frequency of a note - """ - return 55 * 2 ** (octave + step / 12 - 1) - - -def tone(f, t): - """ - Returns the intensity of a tone of frequency f sampled at time t - """ - # https://dsp.stackexchange.com/questions/46598/mathematical-equation-for-the-sound-wave-that-a-piano-makes - # https://youtu.be/ogFAHvYatWs?t=254 - # return int(2**13*(1+square(t, 440*2**(math.floor(5*t)/12)))) - # Y = sum([math.sin(2 * i * math.pi * t * f) * math.exp(-0.0004 * 2 * math.pi * t * f) / 2**i for i in range(1, 4)]) - # Y += Y * Y * Y - # Y *= 1 + 16 * t * math.exp(-6 * t) - w = 2 * math.pi * f - Y = 0.6 * math.sin(w * t) * math.exp(-0.001 * w * t) - Y += 0.2 * math.sin(2 * w * t) * math.exp(-0.001 * w * t) - Y += 0.05 * math.sin(3 * w * t) * math.exp(-0.001 * w * t) - Y += Y * Y * Y - Y *= 1 + 16 * t * math.exp(-6 * t) - return Y - - note = [] for i in range(0, 24): - note.append([tone(freq(3, i), j / bitrate) / 4 for j in range(0, 3 * bitrate)]) + note.append([yue.tone(yue.freq(3, i), j / bitrate) / 4 for j in range(0, 3 * bitrate)]) sd.default.samplerate = bitrate -print('READY') +print("READY") while True: - os.system('stty raw -echo') + os.system("stty raw -echo") c = sys.stdin.read(1) - os.system('stty -raw echo') + os.system("stty -raw echo") - x = '`1234567890-~!@#$%^&*()_'.index(c) + x = "`1234567890-~!@#$%^&*()_".index(c) print(x) sd.play(note[x]) |