todas sostenidos sostenido notas las guitarra escala acordes acorde c# c++ matlab audio music

c# - sostenidos - g# guitarra



Cómo generar una nota de guitarra (7)

De vuelta en una clase de programación de software para estudiantes de primer año, tuvimos que escribir un programa que simulara el sonido de un toque de guitarra.

Puedo hacer ondas de pecado puro todo el día, pero estoy tratando de recordar cómo hacer un sonido como el de una guitarra. Recuerdo que tenía algo que ver con el uso de random () y una constante de caída añadida a la onda de pecado, pero no recuerdo los detalles.


Como punto de partida, es posible que desee ver algunas formas de onda de los sonidos de la guitarra. Verificaría esta publicación de Bob Sturm en MathWorks File Exchange. Parece que contiene un montón de demos de procesamiento de señal, y hay algunos archivos .wav incluidos para muchos instrumentos, incluida una guitarra. Puede cargarlos en MATLAB con WAVREAD , y luego comenzar a averiguar cómo puede replicar la forma de onda (es decir, qué tipo de deterioro usará con el tiempo, etc.).



En Windows, use Win32 MM apis (5 líneas de código)


Es un problema realmente desafiante generar sonidos sintéticos que suenen naturales. Hay muchas técnicas, algunas simples, otras realmente complejas. Para obtener buenos resultados, deberá usar uno de los algoritmos más complejos.

  • Síntesis sustractiva
  • Síntesis aditiva
  • Síntesis granular
  • Síntesis de Wavetable
  • Síntesis de modulación de frecuencia
  • Síntesis de distorsión de fase
  • Síntesis de modelado físico
  • Síntesis basada en muestras
  • Síntesis subarmónica

Estos son algunos métodos de síntesis tomados de Wikipedia . El modelado físico puede producir sonidos realmente buenos, pero esto se muestra en la complejidad del método: la idea es simple, la implementación es difícil.

Probablemente deberías comenzar con síntesis aditiva. Para esto solo agregue las ondas sinusoidales de la frecuencia fundamental y las multiplicaciones enteras. Por ejemplo, 440 Hz, 880 Hz, 1320 Hz, ... La amplitud debería disminuir exponencialmente con la frecuencia. La información sobre la estructura de los componentes se encuentra mejor en artículos científicos sobre análisis de instrumentos de música. Finalmente, debe modular la amplitud de la señal con una envolvente variable. La estructura de una guitarra también se puede encontrar en los artículos mencionados.

Los enlaces de ( Plucking a Guitar String - Algoritmo Karplus-Strong ) y Dervin Thunk ( Modelado físico ) suenan prometedores. Una aproximación realmente simple de modelado físico completo con ecuaciones diferenciales. Tal vez bastante limitado a cuerdas de guitarra e instrumentos similares, pero exactamente lo que está buscando y seguramente más simple de hacer que sintonizar un modelo aditivo. Lo intentaré yo mismo si encuentro algo de tiempo durante el fin de semana; Realmente salí de lo que uno puede sacar del algoritmo.


Esta es una vieja pregunta, pero aquí hay una respuesta más práctica para aquellos que no quieren / necesitan profundizar en la teoría de la síntesis, etc.

Los chicos de CCRMA en Stanford crearon un conjunto de clases de C ++ para síntesis de audio y E / S de audio y están las clases de twang y twang que emulan las cuerdas punteadas.


La síntesis de guitarra es un problema particularmente complicado debido a la cantidad casi infinita de formas de tocar el diapasón y excitar la cuerda.

Esencialmente, la cuerda oscilará en su frecuencia base más una cantidad de armónicos con mucha menos energía. Recomiendo mirar la trama de Fourier de una única selección de cuerdas sin trastes.

Puede obtener el sonido de estado estacionario de la cuerda bastante cerca agregando los armónicos correctos, pero también debe recordar simular los períodos de ataque, sostenimiento y decaimiento correctamente: la amplitud aumentará bruscamente (y probablemente se disparará) cuando la secuencia sea escogido. Caerá un poco y se sostendrá (se mantendrá mayormente constante) durante un período corto y finalmente se deteriorará durante un período más largo. Debes hacerlo bien para que suene como una guitarra y no como otra cosa.


Teniendo en cuenta que era una clase de programación de primer año (tuve que buscar "Freshman"), mi suposición sería que estaban buscando un filtro simple de cuerda pulsada, en lugar de una simulación física precisa de una guitarra (aunque eso probablemente podría obtener un crédito extra). Esta es una tarea común cuando se estudia el procesamiento digital de señales.

El filtro consiste en un ciclo de retardo que se alimenta a través de un filtro de paso bajo y se mezcla con la entrada. Para reproducir una nota, envía una señal corta de amplio espectro a la entrada (por ejemplo, una ráfaga de ruido blanco). Esto viaja alrededor del bucle de retardo, perdiendo algunos de sus componentes de alta frecuencia cada vez. La longitud del ciclo de retardo define la frecuencia de resonancia de la cadena.