¿Cómo agrego armónicos impares o pares a una señal de coma flotante?
¿Tengo que usar tanh o sin?
Lo que intento hacer es lograr algunos efectos de distorsión muy simples, pero me cuesta encontrar referencias exactas. Lo que me gustaría es algo similar a lo que hace el Culture Vulture al agregar armónicos impares e incluso en sus configuraciones de pentodo y triodo. El valor flotante es una muestra única en un flujo de muestra.
audio
signal-detection
c
distortion
Carlos Barbosa
fuente
fuente
Respuestas:
Lo que hace su cuadro de distorsión es aplicar una función de transferencia no lineal a la señal:
output = function(input)
oy = f(x)
. Simplemente está aplicando la misma función a cada muestra de entrada individual para obtener la muestra de salida correspondiente.Cuando su señal de entrada es una onda sinusoidal, se produce un tipo específico de distorsión llamada distorsión armónica . Todos los nuevos tonos creados por la distorsión son armónicos perfectos de la señal de entrada:
Entonces sí, si desea agregar armónicos impares, ponga su señal a través de una función de transferencia simétrica impar como
y = tanh(x)
oy = x^3
.Si desea agregar solo armónicos pares, ponga su señal a través de una función de transferencia que sea incluso simétrica más una función de identidad, para mantener el fundamental original. Algo como
y = x + x^4
oy = x + abs(x)
. Elx +
mantiene la frecuencia fundamental que de otro modo serían destruidos, mientras que elx^4
es aún-simétrica y sólo produce armónicos pares (incluyendo DC, que es probable que desee eliminar después con un filtro de paso alto).Incluso simetría:
Función de transferencia con simetría uniforme:
Señal original en gris, con señal distorsionada en azul y espectro de señal distorsionada que muestra solo armónicos uniformes y no fundamental:
Simetría impar:
Función de transferencia con simetría impar:
Señal original en gris, con señal distorsionada en azul y espectro de señal distorsionada que muestra solo armónicos extraños, incluidos los fundamentales:
Incluso simetría + fundamental:
Función de transferencia con simetría uniforme más función de identidad:
Señal original en gris, con señal distorsionada en azul y espectro de señal distorsionada que muestra armónicos uniformes más fundamental:
De esto es de lo que habla la gente cuando dice que un cuadro de distorsión "agrega armónicos extraños", pero no es realmente exacto. El problema es que la distorsión armónica solo existe para la entrada de onda sinusoidal . La mayoría de las personas tocan instrumentos, no ondas sinusoidales, por lo que su señal de entrada tiene múltiples componentes de onda sinusoidal. En ese caso, obtienes distorsión de intermodulación , no distorsión armónica, y estas reglas sobre armónicos pares e impares ya no se aplican. Por ejemplo, aplicando un rectificador de onda completa (simetría uniforme) a las siguientes señales:
Por lo tanto, el espectro de salida depende en gran medida de la señal de entrada, no del dispositivo de distorsión, y cada vez que alguien diga " nuestro amplificador / efecto produce armónicos de orden par más musicales ", debe tomarlo con un grano de sal .
(Hay algo de cierto en la afirmación de que los sonidos con armónicos pares son "más musicales" que los sonidos con solo armónicos impares , pero estos espectros en realidad no se producen aquí, como se explicó anteriormente, y esta afirmación solo es válida en el contexto de Escalas occidentales de todos modos. Los sonidos de armónicos impares (ondas cuadradas, clarinetes, etc.) son más consonantes en una escala musical de Bohlen-Pierce basada en la proporción 3: 1 en lugar de la octava 2: 1).
Otra cosa para recordar es que los procesos digitales no lineales pueden causar aliasing, que pueden ser muy audibles. Ver ¿Existe una distorsión no lineal limitada en la banda?
fuente
Lo que intentas lograr se llama distorsión . Estas técnicas se utilizan cuando desea agregar algunos armónicos a la señal dada. Tienes 2 métodos básicos para hacer esto: forma de onda y modulación en anillo . Intentaré explicar el primero.
Forma de onda
Waveshaping le permite crear distorsiones mediante el uso de funciones especialmente seleccionadas . Uno de los métodos útiles son los polinomios de Chebyshev . Tienen una propiedad muy importante cuando se procesan señales armónicas con amplitud unitaria (por ejemplo, una onda sinusoidal), obtenemos la misma señal, solo unas pocas veces más. El multiplicador de frecuencia dependerá del orden del polinomio. Todos los polinomios se ven así:
En nuestro caso, cada elemento genera una armónica, y luego todos se suman. La vista de cada miembro está determinada por la siguiente relación de recurrencia:
En él, cada miembro se determina en función del anterior, todo comienza con un cero, en nuestro caso es igual a uno, y el primero, que es igual a x (pero puede cambiarlo, por supuesto)
Al conocerlos, puede determinar el tercero y el siguiente:
Como puede suponer, el segundo término, el primer armónico, y el tercero, el segundo, etc.
Otra característica de los polinomios de Chebyshev, cuando a través de ellos da una señal cuya amplitud es menor que la unidad, la salida es un sonido menos saturado con armónicos. Esto permite crear un efecto de sobremarcha.
Después de todo, su señal es una matriz de puntos flotantes, puede elegir cualquier parte de su matriz y aplicarlos a los polinomios de Chebyshev, lo que creará armónicos adicionales. Y usar las funciones de será lo suficientemente bueno para esto.sin
fuente