Pergunta

Eu gostaria de produzir sons que se pareciam com o áudio de instrumentos reais. O problema é que tenho muito pouca pista de como conseguir isso.

O que eu sei tão longe dos instrumentos reais é que os sons que eles geram raramente são limpos. Mas como produzir sons tão impuros?

Até onde eu fiz isso, produz um som bastante claro, a partir do qual não tenho certeza se está usando o ALSA corretamente.

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())
Foi útil?

Solução

Felizmente, se você deseja gerar (do zero) algo que realmente soa "orgânico", ou seja, como um objeto físico, provavelmente é melhor aprender um pouco sobre como esses sons são gerados. Para uma introdução sólida, você pode dar uma olhada em um livro como Fletcher e Rossings A física dos instrumentos musicais. Há muitas coisas na web também, você pode querer dar uma olhada em um primer James Clark tem aqui

Ter pelo menos um desnatado sobre esse tipo de coisa lhe dará uma idéia do que você está enfrentando. Modelar instrumentos físicos com precisão é muito difícil!

Se o que você deseja fazer é ter algo que soa físico, mas algo que soa como instrumento X, seu trabalho é um pouco mais fácil. Você pode criar frequências com bastante facilidade e empilhá -las, adicionar um pouco de barulho e você receberá algo que pelo menos não soa nada como um tom puro.

Ler um pouco sobre a análise de Fourier em geral ajudará, assim como as técnicas de modulação de frequência (FM).

Divirta-se!

Outras dicas

A síntese sonora é um tópico complexo que requer muitos anos de estudo para dominar.

Também não é um problema totalmente resolvido, embora desenvolvimentos relativamente recentes (como a síntese de modelagem física) tenham feito progresso na imitação de instrumentos do mundo real.

Existem várias opções abertas para você. Se você tem certeza de que deseja explorar ainda mais a síntese, sugiro que você comece aprendendo sobre a síntese de FM. É relativamente fácil de aprender e implementar em software, pelo menos em formas básicas, e produz uma ampla gama de sons interessantes. Além disso, confira o livro "The Computer Music Tutorial", da Curtis Roads. É uma Bíblia para todas as coisas da música de computador e, embora tenha alguns anos, é o livro de escolha para aprender os fundamentos.

Se você deseja uma maneira mais rápida de produzir som realista, considere o uso de técnicas de amostragem: ou seja, grave os instrumentos que deseja reproduzir (ou usar um banco de amostra pré-existente) e basta reproduzir as amostras. É uma abordagem muito mais direta (e muitas vezes mais eficaz).

Concordo que isso é muito não trivial e não há um conjunto de "caminho certo", mas você deve considerar começar com um (ou fazer o seu) Midi Soundfont.

Como outras pessoas disseram, não é um tópico trivial. Existem desafios no lado da programação das coisas (especialmente se você se preocupa com baixa latência) e a parte da síntese. Uma mina de ouro para a síntese sonora é a página de Julius O. Smith. Há muito de técnicas para síntese http://ccrma-www.stanford.edu/~jos/.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top