Síntesis audio analógica vs software

Guillermo Luijk
#1 por Guillermo Luijk el 18/01/2020
Haciendo prácticas con generadores de tonos en el DAW, y desempolvando lo aprendido en los años de universidad, estaba haciendo algunas reflexiones sobre las dificultades que entraña tratar con sonidos en software, donde todo son muestras y se pierde el ancho de banda de las señales originales (Nyquist,...).

Lo muestro con un ejemplo: quiero generar un tono de pulsos como base para luego aplicarle procesados. En el mundo analógico, con un ancho de banda de los circuitos casi ilimitado para la aplicación, es sencillo construir un oscilador que genere pulsos cuadrados abruptos de gran ancho de banda.

Si quiero programar este mismo tren de pulsos por software, no podemos generar muestras siguiendo pulsos a Vmax y Vmin alternativamente, porque corresponderían a una señal no filtrada paso bajo y por lo tanto el aliasing es terrible. Para programar un simple tren de pulsos cuadrados sin aliasing, tenemos que operar cogiendo hasta el armónico soportado por la frecuencia de muestreo usada; es decir que para generar la señal más simple y básica que existe en el mundo analógico, por software tenemos que hacer un montón de operaciones trigonométricas para obtener muestras libres de aliasing.

Éste es un tren de pulsos limitado en banda (lo he generado con un plugin muy simple que permite las dos opciones, limitado en banda y sin limitar: Tone Generator de Socalabs). Suena bien, a tren de pulsos cuadrados:
05e5245c579a8876c4a0858e8ae53-4636955.png

En cambio si usamos la opción de no limitarlo en banda (en las muestras puede verse que aquí simplemente oscilan entre Vmin/Vmax), la señal no sirve para nada porque está llena de aliasing y suena terrible:
c81a1b16864b68aac64d27571c3a1-4636955.png

Comparando espectros puede verse todo el aliasing que invade el espectro cuando las muestras siguen pulsos ideales sin un filtrado paso bajo previo:
ea2e23eda22cf3c4d404558154063-4636955.png


Supongo que todo lo que digo es bastante obvio pero nunca me había parado a pensarlo y me hace concluir que programar audio por software, al tratarse en todo momento de muestras sujetas a la limitación del ancho de banda que nos da la frecuencia de muestreo usada, no debe ser un camino de rosas precisamente, sino que se tiene constantemente la espada de Nyquist encima. Alguna reflexión al respecto?

Salu2!
Subir
OFERTASVer todas
  • -25%
    Slate Digital ML-1 Matte Black
    329 €
    Ver oferta
  • -11%
    Focusrite Scarlett 8i6 3rd Gen
    177 €
    Ver oferta
  • -48%
    Behringer Powerplay P16-M Personal Mixer
    129 €
    Ver oferta
Carmelopec
#2 por Carmelopec el 18/01/2020
Hay decenas de hilos y artículos de portada en los que se aborda este problema, la solución suele pasarar por el sobremuestreo, como se deduce del propio teorema; pero, como cabe esperar, no es perfecta ni inócua.
Subir
vagar
#3 por vagar el 18/01/2020
Por ejemplo:

https://www.hispasonic.com/tutoriales/sintesis-9-filtros-gran-mentira-ii/38622

https://www.hispasonic.com/tutoriales/suena-peor-distorsion-digital-analogica/42993

En general, si buscas alguna información sobre procesamiento digital de la señal de audio y añades a los términos de búsqueda la contraseña "pablofcid" suele salir material bastante jugoso a nivel divulgativo. ;-)

Ten en cuenta, de todas formas, que el oído humano analógico y fisiológico también está limitado en banda.
Subir
2
Carmelopec
#4 por Carmelopec el 18/01/2020
O, si se añade Euridia, se puede encontrar también varias entradas sobre este fenómeno de solapamiento digital.
Subir
1
Guillermo Luijk
#5 por Guillermo Luijk el 19/01/2020
Gracias vagar y Tantova, voy a empezar por ahí que tienen muy buena pinta esos artículos para ir poniéndome al día.

vagar escribió:
Ten en cuenta, de todas formas, que el oído humano analógico y fisiológico también está limitado en banda.


El problema aquí vagar es que la limitación del oído humano no ayuda porque el aliasing lo que hace es meter en la banda audible réplicas indeseables de la señal original muestreada. Es una distorsión perfectamente audible. Así que o los plugins trabajan con un sobremuestreo muy alto para alejar los efectos de ese aliasing (lo que significa mucha CPU), o en cada paso que dan tienen que andarse con ojo sobre qué operaciones se pueden y qué no se puede hacer.

Sigo maravillado de que las CPU's actuales puedan ejecutar en tiempo real tantos plugins como lo hacen, más ahora sabiendo que el software no tiene fácil respetar las reglas del correcto muestreo digital. Me ha hecho tomar conciencia de la potencia real que se ha alcanzado con estos procesadores.

Salu2!
Subir
pablofcid mod
#6 por pablofcid el 19/01/2020
Te añado otro tema para que pienses: el teorema de Niquist solo es relativo a muestreo para reproducción. En el caso de que medie algún tratamiento es muy normal que el procesamiento extienda el ancho de banda (pocos procesos suceden libres de distorsión) y por tanto el procesamiento también genera trazas de aliasing.
Algo tan aparentemente simple como la interpolación resulta ser un proceso costoso en cómputo si lo queremos con calidad.
Está lectura entronca bien con el ámbito de tu pregunta e interés:
https://www.hispasonic.com/tutoriales/nyquist-muestreo-critico-96khz/38357
Subir
1
Guillermo Luijk
#7 por Guillermo Luijk el 19/01/2020
pablofcid escribió:
es muy normal que el procesamiento extienda el ancho de banda

Es justo lo que me imaginaba Pablo, por eso decía que programar plugins de calidad no debe ser precisamente ningún camino de rosas. He visto tu web, un lujo que tengas tantos artículos recopilados y ordenaditos, voy a sacarles mucho jugo creo, muchas gracias. ;)

Salu2!
Subir
pablofcid mod
#8 por pablofcid el 19/01/2020
Son mayoritariamente artículos que he ido publicando en hispasonic, ahí los tienes organizados. Soy perezoso para actualizar la página de cicloquintas.es, así que igual no está alguno de los más recientes, pero una o dos veces al año le doy un repasito.

Como ya has empezado a ver, el audio es una ayuda estupenda para entender a través de sensaciones lo que las matemáticas del tratamiento (digital o analógico, más bien deberíamos decir discreto o continuo) de señal nos enseña.

Yo resolvía los ejercicios en la carrera pensando en equivalentes audio, y luego lo expresaba en lenguaje matemático. ;-)
Subir
Guillermo Luijk
#9 por Guillermo Luijk el 19/01/2020
Pues ya me he leído el artículo sobre el muestreo crítico, muy esclarecedor, realmente parece hecho a medida para responder a estas inquietudes de las limitaciones de programar con muestras. También he empezado a leerme los de tu web sobre Síntetis. Los conceptos de base los tengo claros pero me faltaba ir uniendo los puntos. Tengo que felicitarte por la forma en que escribes, acabo de empezar con ellos pero creo realmente que tus artículos merecerían ser recopilados dándoles una continuidad en un texto de nivel superior.

Salu2!
Subir
pablofcid mod
#10 por pablofcid el 23/01/2020
Gracias, me alegra que te sirvan. Si necesitas algo pregunta en los comentarios de esos artículos.
Subir
Wikter
#11 por Wikter el 12/12/2021
Interesante hilo, aunque no hay mucho por aportar ya...
En MVXSynths aprendí que se puede ganar algo de espacio al Aliasing usando precisamente un limitador de frecuencia forzado y metiendo distorsión y ruido en alta frecuencia. La técnica es muy simple, un filtro paso bajo de 2 polos con resonancia a unos 18Khz. No hace milagros, pero puesto tras cada oscilador o en la entrada del filtro/salida del mezclador arregla un poco el problema y da casi una octava extra.
Que si suena mejor o peor???...probadlo, que ahora hay modulares a mansalva.
Es importante probar cantidad de resonancia, frecuencia, uso de distorsión, adición de ruido de alta frecuencia con un HP, etc.
Subir
Wikter
#12 por Wikter el 15/12/2021
Ahí va un patch para VCV.
Como se puede ver, a costa de generar armónicos nuevos con la resonancia del filtro y en consecuencia perder parte del sonido, se puede reducir el nivel de volumen del aliasing. En las pruebas qeu yo hice usaba saturación y ruido, pero no encuentro los patches de Synthedit. Hice el módulo y luego sólo tenía que insertarlo desde la librería para tener el "reductor de aliasing".
Archivos adjuntos ( para descargar)
Bandliomited Oscilator.vcv
Subir
Hilos similares
Nuevo post

Regístrate o para poder postear en este hilo