Pregunta

Me gustaría producir sonidos que se parecieran a audio de instrumentos reales. El problema es que tengo muy poca pista sobre cómo obtener eso.

Lo que sé tan lejos de los instrumentos reales es que los sonidos que emiten rara vez están limpios. ¿Pero cómo producir sonidos tan inmundos?

Hasta ahora he llegado a hacer esto, produce un sonido bastante simple a partir del cual no estoy seguro de que esté usando la Alsa correctamente.

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

Solución

Alegre, si quieres generar (desde cero) algo que realmente suena "orgánico", es decir, como un objeto físico, probablemente sea mejor para aprender un poco sobre cómo se generan estos sonidos. Para una introducción sólida, podría echar un vistazo a un libro como Fletcher y Rossings La física de los instrumentos musicales. También hay muchas cosas en la web, es posible que desee echar un vistazo a The Primer James Clark tiene aquí

Tener al menos un poco sobre este tipo de cosas te dará una idea de a qué te enfrentas. ¡Modelar instrumentos físicos con precisión es muy difícil!

Si lo que quiere hacer es tener algo que suene físico, más bien algo que suene como el instrumento X, su trabajo es un poco más fácil. Puede acumular frecuencias con bastante facilidad y apilarlas, agregar un poco de ruido, y obtendrá algo que al menos no suena como un tono puro.

Leer un poco sobre el análisis de Fourier en general ayudará, al igual que las técnicas de modulación de frecuencia (FM).

¡Que te diviertas!

Otros consejos

La síntesis de sonido es un tema complejo que requiere muchos años de estudio para dominar.

Tampoco es un problema completamente resuelto, aunque los desarrollos relativamente recientes (como la síntesis de modelado físico) han progresado en la imitación de instrumentos del mundo real.

Hay una serie de opciones abiertas para usted. Si está seguro de que desea explorar aún más la síntesis, le sugiero que comience aprendiendo sobre la síntesis de FM. Es relativamente fácil de aprender e implementar en software, al menos en formas básicas, y produce una amplia gama de sonidos interesantes. Además, mira el libro "The Computer Music Tutorial" de Curtis Roads. Es una Biblia para todo lo relacionado con la música de computadora, y aunque tiene unos años es el libro de elección para aprender los fundamentos.

Si desea una forma más rápida de producir un sonido realista, considere usar técnicas de muestreo: es decir, grabe los instrumentos que desea reproducir (o use un banco de muestra preexistente) y simplemente reproduce las muestras. Es un enfoque mucho más sencillo (y a menudo más efectivo).

Estoy de acuerdo en que esto es muy no trivial y no hay "manera correcta", pero debe considerar comenzar con un (o hacer el suyo) Midi Sonido de sonido.

Como dijeron otras personas, no un tema trivial en absoluto. Hay desafíos tanto en el lado de la programación (especialmente si te importa la baja latencia) como la parte de síntesis. Una mina de oro para la síntesis de sonido es la página de Julius O. Smith. Hay mucho de técnicas para la síntesis http://ccrma-www.stanford.edu/~jos/.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top