У меня есть фрагмент кода Python, который генерирует непрерывный поток значений. Мне нужно, чтобы эти значения были переведены в звуковую обратную связь в виде зуммера, продолжительность паузы между звуками которого связана с потоком значений.
У меня есть еще один фрагмент кода Python, который генерирует непрерывный звуковой сигнал с определенной продолжительностью паузы (см. Ниже).
Как я могу повторить этот фрагмент кода (то есть повторить один и тот же звуковой сигнал с той же продолжительностью паузы), пока значение паузы ввода не изменится, то есть до тех пор, пока я снова не вызову функцию с новым значением для «паузы»?
РЕДАКТИРОВАТЬ - после предложения комментатора я обновил код, чтобы поместить его в класс. Как сделать этот класс отзывчивым на новый ввод? Я хотел бы получить некоторую помощь, так как мне не очень удобно на занятиях.
import pyaudio
import numpy as np
import time
from threading import Thread
f = 440.0
duration = 0.25
volume=0.5
fs=44100
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paFloat32,
channels=1,
rate=fs,
output=True)
class beeper(Thread):
def __init__(self, pause):
self.pause = pause
def beep(self, pause2):
samples = (np.sin(2*np.pi*np.arange(fs*duration)*f/fs)).astype(np.float32)
print('1')
while True:
if pause2 == self.pause:
stream.write(volume*samples)
time.sleep(self.pause)
print('2')
else:
stream.write(volume*samples)
time.sleep(pause2)
self.pause = pause2
print('3')
def stop(self):
stream.stop_stream()
stream.close()
p.terminate()
Я хочу, чтобы гудок повторялся до тех пор, пока функция снова не будет вызвана с новым и другим значением для «паузы».
Теперь он повторяется бесконечно.