我有一个SuperCollider制作的振荡器组,它通过OSC从python接收相位和幅度。然而,结果听起来根本不正确。起初我认为问题出在我的SuperCollider代码中,但现在我开始怀疑我的FFT函数和规范化,这是我的代码:
def readNormalize(length, location,sample):
samplerate, data = wavfile.read(location)
a = data.T[0] # first track of audio
c = fft(a[sample:], length)
ownSum = 0;
length = int(length/2)
for i in range(0, length):
ownSum += abs(c[i])
normalizer = 1/ownSum
phases = []
amplitudes = []
for i in range(0,length):
amplitudes.append(abs(c[i])*normalizer)
phases.append(np.angle(c[i]))
return amplitudes, phases
因此,函数接收从何处读取的位置,要计算的FFT的长度以及要从哪个wav文件样本中读取。我的归一化是通过取复数的向量之和,将1除以和,然后将向量乘以归一化值来完成的。我不确定它是否正确完成,这是正确的方法吗?我在SuperCollider中听到的唯一一件事就是这个踢鼓声不是它应该发出的声音。我错过了一些重要的东西吗?