如何连续改变正弦声音的频率?

如何连续改变正弦声音的频率?,第1张

如何连续改变正弦声音的频率

我想出了这个解决方案。更改

freq
newfreq
,然后更改阶段,如下所示:
newphase = 2*np.pi*t*(freq-newfreq)+phase

import pyaudioimport numpy as npfrom time import timeCHANNELS = 2RATE = 44100TT = time()freq = 100newfreq = 100phase = 0def callback(in_data, frame_count, time_info, status):    global TT,phase,freq,newfreq    if newfreq != freq:        phase = 2*np.pi*TT*(freq-newfreq)+phase        freq=newfreq    left = (np.sin(phase+2*np.pi*freq*(TT+np.arange(frame_count)/float(RATE))))    data = np.zeros((left.shape[0]*2,),np.float32)    data[::2] = left    data[1::2] = left    TT+=frame_count/float(RATE)    return (data, pyaudio.paContinue)p = pyaudio.PyAudio()stream = p.open(format=pyaudio.paFloat32,     channels=CHANNELS,     rate=RATE,     output=True,     stream_callback=callback)stream.start_stream()start = time()try:    while 1:        now = time()  if now-start>1/24.: newfreq=200+np.sin(2*np.pi*1/20.*now)*100 #update the frequency This will depend on y on the future print newfreq        start=nowfinally:    stream.stop_stream()    stream.close()    p.terminate()


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5661802.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存