diff options
author | Anthony Wang | 2022-10-03 18:12:57 -0400 |
---|---|---|
committer | Anthony Wang | 2022-10-03 18:12:57 -0400 |
commit | 80e92d1cab560f77900f66a002e54ccc9a59d424 (patch) | |
tree | 29492fd37df366c5913f52611caa95b50d7f66c4 /beepemu-pyaudio | |
parent | ef083f3740516570e64112ed0aa6bb8220a88604 (diff) |
Commit all testing programs
Diffstat (limited to 'beepemu-pyaudio')
-rwxr-xr-x | beepemu-pyaudio | 46 |
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 |