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?
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 .
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.
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:
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.
no pop
Esteban Hazel
Drux