¿Cómo puedo replicar el sonido de un instrumento?

Tengo experiencia en teoría musical básica, guitarra y piano. Mi proyecto actual consiste en crear un programa de computadora que pueda replicar los sonidos de cualquier instrumento dado (empezando por el piano).

Puedo tocar fácilmente las notas y los acordes correctos, pero no estoy seguro de cómo hacer que suene bien.

Con esto quiero decir, 440Hz es un A pero no suena como tocar un A en un piano... suena falso.

Entonces, ¿qué otras cosas debo investigar para que mis acordes suenen como si estuvieran siendo tocados en un instrumento real?

Conseguir que realmente suene como un instrumento real será extremadamente difícil, y el piano es probablemente uno de los instrumentos más difíciles de imitar dada su complejidad. Busque "síntesis de sonido de software" para tener una idea general de lo que implica.
La síntesis de software es un gran tema. Recomiendo mirar sourceforge.net/apps/trac/fluidsynth Las matemáticas son extrañas para la síntesis de software. Y normalmente escribes un softsynth en C++. Buena suerte para ti.
Después del piano, intente replicar la voz de Elisabeth Schwarzkopf cuando dice una A. Los parámetros pueden ser la edad, el modelo 3D de la parte superior de su cuerpo, si disfrutó su desayuno ese día (si el oyente disfrutó su desayuno ese día). .. Ya ves: quizás no se pueda hacer (además de dejar algo de espacio para la magia :)

Respuestas (4)

Este es un tema extremadamente amplio, así que voy a tratar de resumirlo en unos pocos puntos:

Hay (básicamente) dos formas de generar sonidos electrónicamente: muestreo y síntesis . De manera confusa, tendemos a llamar a toda esta generación de sonido "síntesis", ya que generalmente se trabaja con un "sintetizador".

Querrá leer Wikipedia - Sintetizador , pero aquí hay algunas notas de acantilado:

El muestreo es cuando literalmente graba el sonido del instrumento que desea reproducir en una forma de onda digital (cómo se almacena digitalmente todo el audio), y su software reproduce la forma de onda (o muestra), pero la modifica de acuerdo con la forma en que desea. reproducirse, ya sea con cambio de tono, bucle o modulación. Puede tener tan solo una muestra para un instrumento digital completo, o varias muestras para cada nota del teclado para diferentes niveles dinámicos o calidades de ataque. Casi todos los pianos digitales usan muestras de alta calidad para generar sonido, y existen bibliotecas muy costosas de muestras orquestales que uno puede comprar si necesita sintetizar una orquesta completa.

Síntesis: El muestreo es técnicamente un tipo de síntesis . Otros tipos (en lugar de reproducir grabaciones de un sonido en particular) generan formas de onda básicas como una onda sinusoidal, una onda cuadrada y una onda de diente de sierra, a menudo a diferentes frecuencias, y las suman mientras las pasan a través de varios filtros y otros efectos para dar como resultado una forma de onda distinta que representa un timbre , o calidad de sonido. Cuando intenta replicar instrumentos acústicos de esta manera, lo llama "síntesis imitativa" . Sin embargo, por lo general, uno usaría este tipo de síntesis para generar sonidos que no pueden ser generados por un instrumento acústico. La tecnología de muestreo es mucho más efectiva para replicar sonidos acústicos que la síntesis imitativa.

Según su pregunta, parece que está tratando de lograr una síntesis imitativa. No estoy seguro de lo que quiere decir con que su A suena "falsa": si está a 440 Hz, es tan real como cualquier otra A, pero es probable que solo suene como una onda sinusoidal.

Para un ejercicio extremadamente simple para el lector, intente sintetizar un sonido de "órgano" tocando su onda sinusoidal de 440 Hz de 1 amplitud y una onda sinusoidal de 660 Hz de 0,2 de amplitud al mismo tiempo. Hay un largo camino desde allí hasta un piano. Querrá ver la forma de onda de una sola nota de piano acústico (usando un editor de formas de onda como Audacity ), compararla con lo que está generando con su software y luego averiguar cómo ajustar mejor su software para acercarse a la acústica. forma de onda pianística.

También sería una buena idea familiarizarse primero con algún software de síntesis de audio real, como Reason , Csound , Max/MSP o Pure Data . También querrá leer sobre la serie armónica .

Otro software relevante en este caso es Pianoteq
Esa es una gran respuesta, gracias. No estoy haciendo esto para ningún uso comercial ni nada, solo como una demostración y para aprender, por lo que no se requiere realismo por completo. Solo quiero mejorar el sonido, así que creo que comenzaré haciendo la síntesis de órgano que mencionaste, ya que parece simple. ¿Un teclado electrónico usa muestreo o síntesis?
"Teclado electrónico" es un poco ambiguo. Como digo en mi respuesta, los pianos digitales (teclados de 88 teclas completamente contrapesados) usan muestreo. Los teclados de gama baja de varios tipos utilizarán un muestreo menos complicado. Las estaciones de trabajo de sintetizador analógico virtual de gama alta (como un teclado Nord) tendrían una biblioteca de sonidos muestreados, además de un conjunto de funciones para sintetizar otros timbres. Los sintetizadores analógicos puros (como el miniMoog) no tienen muestras.
Hay otros tipos de síntesis sin muestreo además de aditiva y sustractiva (FM se usa ampliamente y granular es técnicamente algo diferente), además hay síntesis de modelado que es como un híbrido de muestreo puro y síntesis pura, pero una gran respuesta en general.

Debe reproducir el espectro completo para cada nota y modelar la forma en que la amplitud (y la mezcla armónica) varía con el tiempo.

Ver Análisis y Síntesis Paramétrica del Sonido del Piano

Para una reproducción precisa, también debe tener en cuenta los efectos complejos, como las vibraciones inducidas en otras cuerdas no amortiguadas.


forma de onda de piano

Este es un tema complicado. Julius Smith tiene un libro sobre síntesis física de audio. La sección sobre martillos de piano tiene algunas matemáticas decentemente pesadas. Para hacer que los acordes suenen como si estuvieran siendo tocados en un piano, tiene algunas opciones:

  1. Modelar correctamente todos los aspectos de un piano (martillo, cuerda, otras cuerdas, tapa armónica, etc.). Esto es duro.
  2. Graba lo que quieras y reprodúcelo. Algo más fácil.
  3. Modele solo unos pocos efectos físicos y obtenga algo bastante parecido.

En caso de que la síntesis de sonido real no sea lo que está buscando, sino que su programa se trata de controlar sonidos potencialmente existentes, entonces quizás lo que quiera hacer es programar usando alguna API MIDI . De esta manera, no tiene que crear los sonidos usted mismo; en su lugar, puede controlar los sonidos disponibles de un software o de un sintetizador físico.
Si este es el caso, probablemente también querrá aprovechar el esquema General MIDI que incluye una especificación estandarizada de sonidos estándar (como piano, violín, guitarra, trompeta...) controlables a través de MIDI.