¿Agregar armónicos impares / pares a la señal?

12

¿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.

Carlos Barbosa
fuente
3
¿Por qué quieres agregar armónicos? ¿Qué es lo que estás tratando de lograr? ¿Con qué tipo de señal estás trabajando?
Jim Clay
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 buitre de cultura 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.
Carlos Barbosa
1
@CarlosBarbosa Debería editar esa información de los comentarios en su pregunta. Proporcione detalles: cuanto más interesante sea la pregunta para la comunidad, más respuestas puede esperar, así como respuestas de mejor calidad.
Penélope
por qué los armónicos impares son más peligro que incluso armónica en el sistema de energía

Respuestas:

17

Lo que hace su cuadro de distorsión es aplicar una función de transferencia no lineal a la señal: output = function(input)o y = 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:

  • Si su función de transferencia tiene una simetría impar (se puede girar 180 ° alrededor del origen), entonces producirá solo armónicos impares (1f, 3f, 5f, ...). Un ejemplo de un sistema con simetría impar es un amplificador de recorte simétrico.
  • Si su función de transferencia tiene simetría uniforme (puede reflejarse a través del eje Y), entonces los armónicos producidos solo serán armónicos de orden par (0f, 2f, 4f, 6f, ...) El 1f fundamental es un armónico impar, y se elimina Un ejemplo de un sistema con simetría uniforme es un rectificador de onda completa.

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)o y = 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^4o y = x + abs(x). El x +mantiene la frecuencia fundamental que de otro modo serían destruidos, mientras que el x^4es 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:

y = x ^ 6 función de transferencia

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:

y = x ^ 6 espectro

Simetría impar:

Función de transferencia con simetría impar:

y = x ^ 7 función de transferencia

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:

y = x ^ 7 espectro

Incluso simetría + fundamental:

Función de transferencia con simetría uniforme más función de identidad:

y = x + x ^ 4 función de transferencia

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:

y = x + x ^ 4 espectro

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:

  • onda sinusoidal (solo armónico impar fundamental) → seno rectificado de onda completa (solo armónicos pares)
  • onda cuadrada (solo armónicos impares) → DC (solo armónico 0º)
  • onda de diente de sierra (armónicos pares e impares) → onda triangular (solo armónicos impares)
  • onda triangular (solo armónicos impares) → 2 × onda triangular (solo armónicos impares)

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?

endolito
fuente
Tenga en cuenta que las funciones de ejemplo aquí hacen que las matemáticas sean simples de entender, pero no se usan típicamente en material de audio. Con x ^ 7, por ejemplo, la señal se distorsiona menos cuanto más aumenta la ganancia.
endolito el
8

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í:

 y=f(x)=d0+d1x+d2x2+d3x3++dNxN;

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:

Tk+1(x)=2xTk(x)Tk1(x);

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)

T0(x)=1;

T1(x)=x;

Al conocerlos, puede determinar el tercero y el siguiente:

T2(x)=2xx1=2x21;

T3(x)=2x(2x21)x=4x33x;

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

sigrlami
fuente
Buena respuesta, aprendí algo aquí. Sin embargo, no estoy de acuerdo con su uso del término función de transferencia . Su definición común es la relación de salida a entrada de un sistema lineal invariante en el tiempo en el dominio de la frecuencia. Su sistema no es lineal. Prefiero llamarlo característico o simplemente funcionar aquí.
Deve
@Deve Gracias. Sí, de hecho, usé un término incorrecto, solo funciono lo suficientemente bien. Estaba pensando en escribir un ejemplo de sistema lineal, pero es bastante sencillo, por lo que el término permaneció en mis pensamientos
sigrlami
Wow, gracias por todo esto, leeré aunque parezca mucho, ¿alguna posibilidad de algún código c de ejemplo? gracias una vez más
Carlos Barbosa
¿Puede explicar cómo se relacionan exactamente las ecuaciones con , etc., con la ecuación original con ? ...T 1 ( x ) yT0(x)T1(x)y
Spacey
@Mohammad no están relacionados exactamente, es solo una descripción simple de la función polinómica si el iniciador del tema no lo sabe.
sigrlami