Я хотел бы создавать звуки, которые напоминали бы звуки реальных инструментов. Проблема в том, что я очень мало знаю, как это получить.
Что я знаю вдали от настоящих инструментов, так это то, что звуки, которые они издают, редко бывают чистыми. Но как издавать такие нечистые звуки?
До сих пор я делал это, он производил довольно простой звук, из которого я не уверен, что он даже правильно использует 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())