aboutsummaryrefslogtreecommitdiff
path: root/beepemu-pyaudio
diff options
context:
space:
mode:
authorAnthony Wang2022-10-03 18:12:57 -0400
committerAnthony Wang2022-10-03 18:12:57 -0400
commit80e92d1cab560f77900f66a002e54ccc9a59d424 (patch)
tree29492fd37df366c5913f52611caa95b50d7f66c4 /beepemu-pyaudio
parentef083f3740516570e64112ed0aa6bb8220a88604 (diff)
Commit all testing programs
Diffstat (limited to 'beepemu-pyaudio')
-rwxr-xr-xbeepemu-pyaudio46
1 files changed, 46 insertions, 0 deletions
diff --git a/beepemu-pyaudio b/beepemu-pyaudio
new file mode 100755
index 0000000..f0d3347
--- /dev/null
+++ b/beepemu-pyaudio
@@ -0,0 +1,46 @@
+#!/usr/bin/python
+
+import math
+import os
+import sys
+import time
+import pyaudio
+
+p = pyaudio.PyAudio()
+sample_rate=44100
+stream = p.open(
+ format=pyaudio.paInt16,
+ channels=1,
+ rate=sample_rate,
+ output=True
+)
+stream.start_stream()
+
+i = 1
+f = 0
+l = 0
+while i < len(sys.argv):
+ if sys.argv[i] == '-f':
+ i += 1
+ f = float(sys.argv[i])
+ elif sys.argv[i] == '-l':
+ i += 1
+ l = float(sys.argv[i])/1000
+ elif sys.argv[i] == '-D':
+ i += 1
+ time.sleep(float(sys.argv[i])/1000)
+ if f != 0 and l != 0:
+ print(f, l)
+ # https://stackoverflow.com/questions/974071/python-library-for-playing-fixed-frequency-sound
+ num_samples = int(sample_rate * l)
+ rest_frames = num_samples % sample_rate
+ s = lambda i: 0.25 * math.sin(2 * math.pi * f * i / sample_rate)
+ samples = (int(s(i) * 0x7F + 0x80) for i in range(num_samples))
+ # write several samples at a time
+ for buf in zip( *([samples] * sample_rate) ):
+ stream.write(bytes(buf))
+ # fill remainder of frameset with silence
+ stream.write(b'\x80' * rest_frames)
+ f = 0
+ l = 0
+ i += 1