運行時,音高之間會有一聲卡嗒聲。我不介意咔嗒聲太多 - 它令人愉快有節奏。這就是說...刪除/控制使用PyAudio作爲振盪器的點擊聲音
- 我希望能夠擺脫這種點擊聲音,當我不想要它。
- 更重要的是,這將是很好能夠控制在某種程度上咔嗒聲 - 音量等
我看到這個線程,但還沒有想出如何把它應用到我的問題: How to remove pops from concatented sound data in PyAudio
任何想法?謝謝你的時間!
import numpy
import pyaudio
import math
import random
def sine(frequency, length, rate):
length = int(length * rate)
factor = float(frequency) * (math.pi * 2)/rate
waveform = numpy.sin(numpy.arange(length) * factor)
return waveform
def play_tone(stream, frequency, length, rate=44100):
chunks = []
chunks.append(sine(frequency, length, rate))
chunk = numpy.concatenate(chunks) * .25
stream.write(chunk.astype(numpy.float32).tostring())
def bassline():
frequency = 300
for i in range(1000000):
play_tone(stream, frequency, .15)
change = random.choice([-75, -75, -10, 10, 2, 3, 100, -125])
print (frequency)
if frequency < 0:
frequency = random.choice([100, 200, 250, 300])
else:
frequency = frequency + change
if __name__ == '__main__':
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paFloat32,
channels=1, rate=44100, output=4)
bassline()
/EDIT
我繪製的色調,它看起來像的不連續性是在開始和每個音的結束階段之間的關係。
任何想法如何解決這個問題?
您應該嘗試繪製生成的波形。通過這種方式,您可能會看到導致點擊的不連續點。 – Matthias
由於您現在知道問題的原因,並且知道它與PyAudio或PortAudio沒有任何關係,因此您應該放棄此問題並請求描述您實際問題的新問題。您應該嘗試將示例代碼減少到相關部分。你也應該考慮在http://dsp.stackexchange.com/上詢問,因爲它實際上是一個DSP問題。 – Matthias