Я использую приведенный ниже код, чтобы попытаться сделать простую песню, но каждый раз, когда изменяется высота звука, в моем динамике слышен треск. Это происходит только тогда, когда я изменяю продолжительность ниже 1. Продолжительность - это частоты [index] [2]. Есть ли способ предотвратить растрескивание?
import wave
towrite = ''
x = 0
pause = [1, 1, 0.1]
frequencies = [[90, 1, 1], pause, [90, 1, 0.3], pause, [110, 1, 0.4], pause, [90, 1, 0.4], pause, [78, 1, 0.4], pause, [72, 1, 1], pause, [66, 1, 1]]
for freq in frequencies:
if(x%100==0):
print(x)
x+=1
samplerate = 88200
samples = freq[2]*samplerate
period = samplerate / float(freq[0])
period2 = samplerate / float(freq[1])# in sample points
omega = np.pi * 2 / period
omega2 = np.pi * 2 / period2
xaxis = np.arange(samples,dtype = np.float)
ydata = 16384 * (np.sin(xaxis*omega) + np.sin(xaxis*omega2))
signal = np.resize(ydata, (samples,))
towrite += ''.join([wave.struct.pack('h',s) for s in signal])
f = wave.open('frequency.wav', 'wb')
f.setparams((1,2,44100, 44100*4, 'NONE', 'noncompressed'))
f.writeframes(towrite)
f.close()