mirror of
https://git.exozy.me/a/Never-Gonna-Give-Beep-Up
synced 2024-11-22 00:17:30 +00:00
Commit all testing programs
This commit is contained in:
parent
ef083f3740
commit
80e92d1cab
8
beepemu
8
beepemu
@ -1,9 +1,8 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
|
||||||
import math
|
import os
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
from pysinewave import SineWave
|
|
||||||
|
|
||||||
i = 1
|
i = 1
|
||||||
f = 0
|
f = 0
|
||||||
@ -20,11 +19,8 @@ while i < len(sys.argv):
|
|||||||
time.sleep(float(sys.argv[i])/1000)
|
time.sleep(float(sys.argv[i])/1000)
|
||||||
if f != 0 and l != 0:
|
if f != 0 and l != 0:
|
||||||
print(f, l)
|
print(f, l)
|
||||||
s = SineWave(pitch_per_second=1000)
|
os.system(f'play -n synth {l} sawtooth {f} &')
|
||||||
s.set_frequency(f)
|
|
||||||
s.play()
|
|
||||||
time.sleep(l)
|
time.sleep(l)
|
||||||
s.stop()
|
|
||||||
f = 0
|
f = 0
|
||||||
l = 0
|
l = 0
|
||||||
i += 1
|
i += 1
|
||||||
|
46
beepemu-pyaudio
Executable file
46
beepemu-pyaudio
Executable file
@ -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
|
30
beepemu-pysinewave
Executable file
30
beepemu-pysinewave
Executable file
@ -0,0 +1,30 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
import math
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
from pysinewave import SineWave
|
||||||
|
|
||||||
|
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)
|
||||||
|
s = SineWave(pitch_per_second=1000)
|
||||||
|
s.set_frequency(f)
|
||||||
|
s.play()
|
||||||
|
time.sleep(l)
|
||||||
|
s.stop()
|
||||||
|
f = 0
|
||||||
|
l = 0
|
||||||
|
i += 1
|
26
beepemu-sox
Executable file
26
beepemu-sox
Executable file
@ -0,0 +1,26 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
|
||||||
|
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)
|
||||||
|
os.system(f'play -n synth {l} sawtooth {f} &')
|
||||||
|
time.sleep(l)
|
||||||
|
f = 0
|
||||||
|
l = 0
|
||||||
|
i += 1
|
47
test.py
Normal file
47
test.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
import math
|
||||||
|
from pyaudio import PyAudio, paUInt8
|
||||||
|
|
||||||
|
def generate_sine_wave(frequency, duration, volume=0.2, sample_rate=22050):
|
||||||
|
''' Generate a tone at the given frequency.
|
||||||
|
|
||||||
|
Limited to unsigned 8-bit samples at a given sample_rate.
|
||||||
|
The sample rate should be at least double the frequency.
|
||||||
|
'''
|
||||||
|
if sample_rate < (frequency * 2):
|
||||||
|
print('Warning: sample_rate must be at least double the frequency '
|
||||||
|
f'to accurately represent it:\n sample_rate {sample_rate}'
|
||||||
|
f' ≯ {frequency*2} (frequency {frequency}*2)')
|
||||||
|
|
||||||
|
num_samples = int(sample_rate * duration)
|
||||||
|
rest_frames = num_samples % sample_rate
|
||||||
|
|
||||||
|
pa = PyAudio()
|
||||||
|
stream = pa.open(
|
||||||
|
format=paUInt8,
|
||||||
|
channels=1, # mono
|
||||||
|
rate=sample_rate,
|
||||||
|
output=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
# make samples
|
||||||
|
s = lambda i: volume * math.sin(2 * math.pi * frequency * 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)
|
||||||
|
|
||||||
|
stream.stop_stream()
|
||||||
|
stream.close()
|
||||||
|
pa.terminate()
|
||||||
|
|
||||||
|
generate_sine_wave(
|
||||||
|
# see http://www.phy.mtu.edu/~suits/notefreqs.html
|
||||||
|
frequency=440, # Hz, waves per second C6
|
||||||
|
duration=0.2, # seconds to play sound
|
||||||
|
volume=0.25, # 0..1 how loud it is
|
||||||
|
sample_rate=44100, # number of samples per second: 11025, 22050, 44100
|
||||||
|
)
|
Loading…
Reference in New Issue
Block a user