我想产生类似于真实乐器音频的声音。问题是我几乎不知道如何获得它。
我所知道的与真实乐器相去甚远的是,它们输出的声音很少是干净的。但是如何产生这种不干净的声音呢?
到目前为止,我已经做到了这一点,它产生了非常简单的声音,我不确定它是否正确使用了 alsa。
import numpy
from numpy.fft import fft, ifft
from numpy.random import random_sample
from alsaaudio import PCM, PCM_NONBLOCK, PCM_FORMAT_FLOAT_LE
pcm = PCM()#mode=PCM_NONBLOCK)
pcm.setrate(44100)
pcm.setformat(PCM_FORMAT_FLOAT_LE)
pcm.setchannels(1)
pcm.setperiodsize(4096)
def sine_wave(x, freq=100):
sample = numpy.arange(x*4096, (x+1)*4096, dtype=numpy.float32)
sample *= numpy.pi * 2 / 44100
sample *= freq
return numpy.sin(sample)
for x in xrange(1000):
sample = sine_wave(x, 100)
pcm.write(sample.tostring())