aboutsummaryrefslogtreecommitdiff
path: root/keyboard.py
diff options
context:
space:
mode:
Diffstat (limited to 'keyboard.py')
-rw-r--r--keyboard.py39
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])