MG-IV: Taller de ecualización. ATC SCM 12

Imprescindibles si queremos que las creaciones HUM tengan calidad y sentido.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

¿Y la componente de exceso de fase? ¿Se filtra también mediante ventanas variables frecuencia-tiempo? Pues sí, en la etapa del cálculo denominada # EP = Excess fase phase band windowing stage.

El procedimiento y los parámetros de configuración son análogos al caso de la etapa MP, donde se filtraba la componente de fase mínima.

La configuración de esta etapa en el taller fue:

# EP = Excess fase phase band windowing stage
EPPrefilterType = s
EPPrefilterFctn = B
EPWindowGap = 44
EPLowerWindow = 16384 # 185 ms
EPUpperWindow = 44 # 0.5 ms
EPStartFreq = 20
EPEndFreq = 20000
EPFilterLen = 4096
EPFSharpness = 0.25
EPBandSplit = 6
EPWindowExponent = 0.7
EPPFFlatGain = 1.0
EPPFOGainFactor = 0.0
EPPFFlatType = M
EPPFFGMultExponent = 3
EPPFFinalWindow = 0
EPPFNormFactor = 1.0
EPPFNormType = E
EPPFOutFile = reppf.pcm
EPPFOutFileType = F

La ventana a 20 Hz es mucho menor que para MP (pasamos de 740 ms a tan solo 185 ms); la ventana a 20 KHz es igual (0.5 ms) y la constante que controla la reducción de la ventanas con el tiempo la reducimos aún más, pasando de 0.8 a 0.7. La longitud de los filtros vuelve a ser de 4096 (EPFilterLen) y se generarán también 60 bandas (1/6 de octava por 10 octavas de 20 Hz a 20 KHz, parámetro EPBandSplit).

A continuación se convolucionan la componente en fase mínima y la componente en exceso de fase para dar lugar, ahora si, al modelo acústico que vamos a invertir. Está fase se denomina # PC = Prefiltering completion stage, y en el taller se configuró de la siguiente forma:

# PC = Prefiltering completion stage
PCOutWindow = 65536
PCNormFactor = 1.0
PCNormType = E
PCOutFile = rpc.pcm
PCOutFileType = F

Aquí solo hay un parámetro relevante, PCOUtWindow, que es el tamaño, en muestras, de la señal rpc final. 65536 a 44100 Hz son 1.48 segundos.
Ir a longitudes mayores de 65536 a 44100 Hz es poco útil, Sbragion cita la razón en la documentación: ¿Alguién quiere filtrar con resoluciones menores de 44100/65536 = 0.68 Hz? En cambio, en cálculo de convolución, doblar el tamaño del filtro supone un importante incremento de la potencia del cálculo necesaria, especialmente a la hora de hacer FFT de la señal a filtrar para trabajar con ella en el dominio de la frecuencia.

¿El resultado? Ahora preparo las gráficas.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

Respuesta a impulso de la señal rpc (en azul), resultante de todo el procesado previo, comparada con el impulso inicial (imp) extraido en la primera etapa de DRC (en rojo). Se puede comprobar que hay un suavizado de la señal tras el impulso inicial y que presenta un llamativo rizado (ringing) previo al pico del impulso.

Imagen

El espectro comparado con el inicial (azul vs. rojo). En espectro, tanto la etapa Dip Limiting como la de Excess phase Prefiltering no han modificado la señal (comparar con la gráfica del espectro de rmppf):

Imagen


Hay que recordar que rpc es la recomposición de la componente de fase mínima y de la componente de exceso de fase. Y este resulatdo, rpc, es el que se va a invertir.

Luego si rpc no es de fase mínima y se invierte ¿qué le va a pasar a la señal resultante?
Avatar de Usuario
luisggarcia
Mensajes: 802
Registrado: Vie 16 Jul 2004 , 9:28

Mensaje por luisggarcia »

No entiendo muy bien como ha funcionado el paso de no corregir por debajo de -2 db las cancelaciones. ¿O es que aún no se ha hecho?

Me refiero a que aparentemente entiendo que vas a invertir la cancelación por ejemplo de 125 hz y de 250 hz. Pues la señal RPC en azul tiene bajónes muy grandes me parece. ¿O quizás me he adelantado?

Se podría poner alguna gráfica de cómo funciona con el factor a -2 db y otra a -9 db por ejemplo para exagerarlo y ver las diferencias. En anteriores posts has puesto la influencia en el resultado de algunos parámetros y se entendía muy bien.

Y no entiendo porque después de tanta complicación de separar fase mínima y exceso de fase, luego se filtra esta también y se añade a la primera. Aunque sea con ventanas menores. Supongo que por pruebas prácticas será que suena mejor. Pero por teoría no le encuentro el sentido, cuando ya nos han convencido que mejor invertir la fase mínima, pues la otra no se puede invertir en teoría. Supongo que te responderás a la pregunta que has hecho al final ¿no?
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

Hola Luis,

me apunto tus dudas para el martes.
Saludos y feliz puente de San Isidro a los madrileños.
Avatar de Usuario
luisggarcia
Mensajes: 802
Registrado: Vie 16 Jul 2004 , 9:28

Mensaje por luisggarcia »

Si, por supuesto, tu con calma que va muy bien la cosa.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

luisggarcia escribió:No entiendo muy bien como ha funcionado el paso de no corregir por debajo de -2 db las cancelaciones. ¿O es que aún no se ha hecho?

Me refiero a que aparentemente entiendo que vas a invertir la cancelación por ejemplo de 125 hz y de 250 hz. Pues la señal RPC en azul tiene bajónes muy grandes me parece. ¿O quizás me he adelantado?
Hola,

he estado repasando el método de Dip Limiting de DRC.

Primero: estaba confundido con su forma de operar. Yo pensaba que se aplicaba el Dip Limiting sobre un rango concreto (desde DLStartFreq hasta DLEndFreq) calculando el nivel RMS sobre toda la banda de audio.

Pues, como dice la documentación, es al reves: se aplica el DL sobre toda la banda de audio, tomando un valor RMS evaluado desde DLStartFreq hasta DLEndFreq.

En el caso que nos ocupa he estado haciendo pruebas de variaciones del factor DLMinGain y no hay grandes cambios. Básicamente dominan las caidas de los extremos del rango de frecuencias sobre las cancelaciones a la hora de cálcular el factor RMS.

Aunque en este caso no se perciba correctamente en las gráficas, tunizando un poco el código de DRC (archivo level.cpp, función C1LPDipLimit) podemos saber que, en el ejemplo de estas ATC, se ha aplicado DL en las siguientes bandas de frecuencia:

0 - 25 Hz
37.9 - 49.4 Hz
54.2 - 59.5 Hz
113 - 116 Hz
251 - 270 Hz
330 - 337 Hz
14500 - 22050 Hz

Salvo los extremos, el resto son bandas muy estrechas, ligeramente recortadas, y por eso gráficamente en la señal rpc no se observan.
luisggarcia escribió: Se podría poner alguna gráfica de cómo funciona con el factor a -2 db y otra a -9 db por ejemplo para exagerarlo y ver las diferencias. En anteriores posts has puesto la influencia en el resultado de algunos parámetros y se entendía muy bien.
Pues en este caso no veríamos nada especial porque desde -2 dB a -9 dB solo hay valles en los extremos de la banda de audio. Si aparece en algún momento algún caso donde está variación de note gráficamente lo estudiaremos.
luisggarcia escribió: Y no entiendo porque después de tanta complicación de separar fase mínima y exceso de fase, luego se filtra esta también y se añade a la primera. Aunque sea con ventanas menores. Supongo que por pruebas prácticas será que suena mejor. Pero por teoría no le encuentro el sentido, cuando ya nos han convencido que mejor invertir la fase mínima, pues la otra no se puede invertir en teoría. Supongo que te responderás a la pregunta que has hecho al final ¿no?
La pregunta es: ¿Cual es el convencimiento que nos lleva a suponer que es mejor invertir la componente de fase mínima y descartar completamente la componente de exceso de fase? Yo no lo conozco.

En todo caso DRC por el momento es así. No es dificil tunizarlo y forzar que se olvide de la componente de exceso de fase desde la fase HM (Homomorphic Deconvolution). Podría hacerse el experimento.

En resumen, para generar el modelo de señal a invertir, DRC hace lo siguiente:

- Recorta de la señal de entrada una fracción concreta.
- La descompone en dos partes: fase mínima y exceso de fase.
- Ambas partes las suaviza mediante ventanas configurables de extensión temporal variable con la frecuencia.
- La parte de fase mínima la recorta en valles de señal por debajo de un límite configurable.
- Recompone la señal a invertir por convolución de las componentes de fase mínima y de exceso de fase ya tratadas.

Y a inversión....
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

La siguiente etapa de DRC es la inversion: Inversion Stage (IS).
En la configuración empleada en el taller, está etapa estaba definida de la siguiente manera:

# IS = Inversion stage
ISType = L
ISPETType = s
ISPrefilterFctn = B
ISPELowerWindow = 1102 # 25 ms
ISPEUpperWindow = 22 # 0.5 ms
ISPEStartFreq = 20
ISPEEndFreq = 22000
ISPEFilterLen = 8191
ISPEFSharpness = 0.50
ISPEBandSplit = 3
ISPEWindowExponent = 1.0
ISSMPMultExponent = 4
ISOutWindow = 0
ISNormFactor = 1.0
ISNormType = E
ISOutFile = ris.pcm
ISOutFileType = F

Aquí hay un parámetro clave: ISType, que define el método de inversión. L indica que se emplee el método Toeplitz de mínimos cuadrados (o minímización del error cuadrático medio). T supone una inversión por deconvolución rápida.

En el caso del método L, el resto de parámatros no se usa. Todos los demás parámetros se emplean para acotar los límites a aplicar en la deconvolución T. En tiempo de computación, el método L es bastante más lento que el método T.

Una explicación rápida del Método de mínimos cuadrados de matriz de Toeplitz aparece aquí:

http://www.dsprelated.com/groups/speech ... how/13.php

En cuanto al método de deconvolución rápida, lo explican sus autores (Kirkeby, Farina) en este artículo (aunque lo emplean en un diseño de crosstalk cancelators):

http://citeseer.ist.psu.edu/kirkeby99design.html

Y ahora a los resultados.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

Inversión por método "L":

Función impulso:

Imagen

Es bien visible que no es de fase mínima (no es causal). Cosa que era de esperar puesto que hemos invertido una señal que no es de fase mínima.

Espectro:

Imagen

Un diagrama muy interesante, respuesta a escalón:

Imagen

Sorprendentemente creciente...

Ahora entraremos en comentarios. Primero voy a dibujar las mismas gráficas para el caso de que se hubiese invertido mediante el método T en vez del L, con el resto de parámetros tal cual estaban preparados.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

Inversión por método T:

Respuesta a impulso:

Imagen

Espectro:

Imagen

Hay ligeras diferencias. Antes que solapar gráficas para ver diferencias, creo que es más interesante ver que ocurre si hacemos la convolución de la señal rpc con su inverso obtenido tanto mediante el método L como mediante el método T, para ver cuanto de cerca o lejos están del ideal del inverso perfecto ambos cálculos:

Imagen

La superior se ha obtenido mediante convolución con el inverso generado por el método L y la inferior por el método T. Son dos deltas "de libro", aunque hay bastante ruido de "artefactos digitoides". Si pasamos a logarítmico:

Imagen

Especialmente llamativo en el caso del método L. Si ampliamos más:

Imagen

Ahora pasamos a los comentarios.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

Comentarios:

En ambos casos comprobamos que los filtros resultantes presentan mucho "ringing" (rizado). De hecho son filtros que perfectamente sirven para explicar gráficamente que es el ringing: son aquellas oscilaciones largas de la señal antes (pre-ringing) y despues (post-ringing) del pico principal del filtro. Generalmente se comenta que este tipo de "artefactos digitales" produce pre-ecos y ecos cuando se filtra música con un fuerte cambio dinámico (aunque apenas queda ya de eso gracias al los procesamientos super-iso-loudness-a-tres-decibelios-de-rango). Es un efecto que yo no he experimentado pero que entiendo que concentualmente puede tener sentido. La posibilidad de tomar este tipo de señales con este rizado y comprobar su efecto como filtros para ecualizar queda abierta a quién quiera hacer alguna prueba.

Ya hemos comprobado que lo que es invertir la señal de partida, ambos métodos (Toeplitz y deconvolución rápida) lo hacen y lo hacen bien, aunque uno (Toeplitz) lo haga mejor que otro (deconvolución rápida).

Pero este no es el filtro final, aún quedan más pasos. Al menos confiamos en poder reducir estos ringings (rizados) anterior y posterior sin afectar en exceso a la curva de respuesta en frecuencia. Además de tomar ciertas precauciones previas a incorporar este tipo de filtros en nuestro sistema audio.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

Una vez invertida la señal, la siguiente etapa por la que pasa el cálculo de DRC es la # PL = Peak limiting stage.

Está fase es una "protección frente a la inversión de valles". En la anterior etapa (la IS - Inversion Stage) hemos comprobado como (y era de esperar) el espectro en frecuencia de la señal invertida resulta tener picos donde había valles y valles donde había picos.
Los picos pasados a valles no suponen un problema cuando se aplique el filtro por convolución. Pero los valles pasados a picos si, porque son ganancias, y la ganancia que podemos aplicar no puede ser infinita. De hecho, en el ámbito digital, el de aplicación del filtro obtenido por DRC, el límite es radicalmente estricto y el recorte, cuando se supere el límite, es perfecto.

En digital la señal puede tomar 2^(no bits empleados) valores entre 0 y 1. Pero no puede pasar de 1 (escala relativa). Es decir, que no podemos multiplicar la señal de entrada por cualquier valor alto, porque si la señal de salida debiera pasar de 1, pues no pasará de 1, sino que es 1. Y una serie de 1's seguidos es un "recorte". Y, a veces (depende del momento musical, de la duración del recorte), se percibe con nitidez.

Alguien dirá que eso no es problema, que si atenuamos la señal de entrada para que la convolución con el filtro no de lugar a recortes de la señal, entonces estamos protegidos. Correcto, ya hemos pasado el primer escollo en la sección digital de nuestra cadena audio. Pero: ¿esto afecta de alguna manera al ampli y a los altavoces? Pues veámoslo de la siguiente manera: un ecualizador afecta al rango dinámico de la música. ¿Como? Pues actua como un expansor donde la sala actua como un compresor por resonancias. El rango dinámico del filtro (distancia entre picos y valles) suele tener una amplitud de unos 20-30 dB. Y por convolución el rango dinámico de la música filtrada se podrá ver ampliado en estos 20 dB-30 dB. Si queremos mantener el nivel de sonoridad que nos gusta en una señal expandida, tenemos que subir la ganancia total. Y esta subida de ganancia que necesitamos, una vez superado el clip digital, solo lo puede dar el enrosque hacia arriba del pote de volumen. Y ahi ahi ahi.... efectivamente.....podemos provocar recorte. No estamos haciendo subir la potencia RMS con respecto a la señal sin ecualizar, ya hemos dicho que subimos el pote de volumen para que la sonoridad percibida sea la misma, luego con las misma cajas será apróximadamente la misma potencia eficaz aplicada. Lo que ocurre es que el factor de cresta de la música ecualizada será mayor (el cuanto dependerá de su contenido espectral, tonal, tímbrico o como guste llamarlo, y del espectro del filtro). Y por lo tanto, podemos llevar a recorte al ampli si el factor de cresta supera el headroom dinámico del ampli. O llevar al driver de graves al límite de excursión fácilmente.

Y hay otra consideración adicional no relacionada con el potencial recorte sino con la calidad de la ecualización: ¿qué ocurre si el filtro inverso presenta picos marcados estrechos (especialmente esto aparece en frecuencia en torno a 500 HZ-3 KHZ)? Pues con un ecualizador paramétrico, sea un cacharro o un programa de PC, se puede hacer la prueba. La música oscilará en torno a este pico y se percibirá como un coloreo incómodo. Yo hago estas pruebas con música con trompeta (si si con la trompeta del Wynton Marsalis, y con sordina mejor que mejor que más banda de espectro recorre de forma más marcada).

Para recortar el rango dinámico del filtro y que no lleguemos a clip ni coloreemos en exceso, está la etapa de PL. En ella DRC va a identificar los picos que pasen de un valor umbral configurable y los va a recortar siguiendo una ley también configurable.

En el caso del taller de ecualización la configuración que se empleó fue:

# PL = Peak limiting stage
PLType = M
PLMaxGain = 4.0 # 6.02 dB Max
PLStart = 0.80
PLStartFreq = 20
PLEndFreq = 20000
PLMultExponent = 3
PLOutWindow = 0
PLNormFactor = 0.0
PLNormType = E
PLOutFile = rpl.pcm
PLOutFileType = F

Donde se indica que se recortará aquella señal que supere en 6 dB (PLMaxGain) el valor RMS computado entre 20 Hz (PLStartFreq) y 20 kHz (PLEndFreq). El proceso de recorte es un soft-clipping, lógico puesto que un recorte duro haría el filtro inservible, de umbral de disparo definido en PLStart.
El método de recorte de picos puede ser de fase lineal o de fase mínima. En este taller se empleó el método de fase mínima (PLType).

Para la ecualización de las ATC SCM-12, esta etapa de Peak Limiting no modifica el filtro inverso. Porque no hay picos a más de 6 dB del valor RMS. Mejor:

Imagen

Como podemos apreciar, el filtro en el caso de las ATC podría (potencialmente) hacer crecer el rango dinámico de la música casi 30 dB.

Intentaré ampliar este concepto de la ecualización como expansor más adelante. Creo que falta desarrollar la idea, y que este concepto está muy relacionado con la percepción que se tiene del sonido ecualizado y por qué da diferentes resultados con diferentes estilos músicales, donde la dinámica es un ingrediente creativo más.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

wynton escribió: Intentaré ampliar este concepto de la ecualización como expansor más adelante. Creo que falta desarrollar la idea, y que este concepto está muy relacionado con la percepción que se tiene del sonido ecualizado y por qué da diferentes resultados con diferentes estilos músicales, donde la dinámica es un ingrediente creativo más.
Pues de momento va a ser que no, que la cosa es más aleatoria que de tendencias marcadas...seguiremos informando hasta donde llego el columpiamiento.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

De todas formas, la función de la etapa de Peak Limiting si que implica un recorte de margen dinámico del filtro, puesto que acortamos aquellos picos que se salgan del margen de control configurado (6 dB por encima del RMS para el ejemplo del taller).

Ya quedan pocas etapas para alcanzar el resultado final. La siguiente fase es la # RT = Ringing truncation stage.

Ya vimos que al hacer una inversión de la convolución de las componentes de fase mínima y exceso de fase tras haberlas filtrado, el resultado tenía un marcado ringing previo y posterior al pico que era apreciable en la gráfica del impulso:

Imagen

En está etapa vamos a recortar los ringings mediante otro filtrado por bandas de frecuencia con ventana temporal variable. Un proceso semejante al de la etapa # MP = Minimum phase band windowing stage o # EP = Excess fase phase band windowing stage.

La configuración que se aplicó en el caso del taller con ATC SCM 12 fue:

# RT = Ringing truncation stage
RTType = S
RTPrefilterFctn = B
RTWindowGap = 44
RTLowerWindow = 16384 # 370 ms aprox. a 44100
RTUpperWindow = 44 # 0.5 ms
RTStartFreq = 20
RTEndFreq = 20000
RTFilterLen = 24575
RTFSharpness = 0.25
RTBandSplit = 3
RTWindowExponent = 1.0
RTOutWindow = 0
RTNormFactor = 0.0
RTNormType = E
RTOutFile = rrt.pcm
RTOutFileType = F

El filtrado es de tipo "ventana deslizante" (RTType = S). En este caso, a diferencia de los filtrados en las etapas MP y EP, se va a aplicar a la componente del impulso previa al pico. De ahí la S mayúscula en vez de minúscula.
El resto de parámetros y la operativa son análogos a la fase MP, solo que aquí al nombre de los parametros le precede el prefijo RT en vez de MP. Salvo que haya dudas preferiría no repetir cada definición. Solamente indicar que ahora el "peso" sala/cajas en el tamaño de las ventanas temporales deslizantes ( RTWindowExponent pasa de 0.8 en MP a 1.0 en RT) es más ventajoso para la respuesta más retrasada en el tiempo (de sala).

El resultado es tan visible que se comenta por si solo. Recorte de rizados previo y posterior. No hay más que comparar la gráfica anterior con esta:

Imagen

Posteo y analizamos si este truncamiento ha afectado al espectro del filtro.

Va a ser que si porque un truncamiento tan radical en el impulso temporal implica un truncamiento en frecuencia. Vale ¿pero donde?.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

Comparación de la respuesta en frecuencia entre la señal saliente de la etapa IS (Inversion Stage) que coincide con la de PL (Peak Limting) y la señal tras el RT (Ringing Truncation):

Imagen

Nuevo suavizado del perfil. Dramático efecto de reducción de picos.
¿Comentarios?
Avatar de Usuario
luisggarcia
Mensajes: 802
Registrado: Vie 16 Jul 2004 , 9:28

Mensaje por luisggarcia »

Preguntas:

Es que me he perdido, ¿Qué es la gráfica de arriba y la de abajo? Canal derecho y canal izquierdo o “antes” y “después” de cada paso.

Me parece que has pasado muy deprisa por uno de los pasos que más me interesa:

# PL = Peak limiting stage.

La limitación de picos ¿La has experimentado más? Por ejemplo
¿Cuando limita recorta los picos por encima PLMaxGain del nivel RMS?
¿Filtra suavizando solo valores por encima de ese valor?
¿Filtra dejando los picos con valor máximo igual a PLMaxGain?

Es decir que si los valores por encima del máximo los rebaja hasta el valor máximo.

Y también cuando das valores mínimo y máximo de frecuencia es para suavizar solo entre esos valores o también para calcular también el valor RMS entre esos valores.

¿Se puede emplear independientemente del resto de los pasos del DRC esta etapa?

¿Sabes que ficheros de variables de entrada y de salida emplea? Supongo que de salida es el rpl.pcm

Me podrías indicar algún enlace en Internet donde den el máximo de detalles sobre este paso. Me interesa mucho y me parece una de las claves del DRC.
Avatar de Usuario
luisggarcia
Mensajes: 802
Registrado: Vie 16 Jul 2004 , 9:28

Mensaje por luisggarcia »

wynton escribió:Como podemos apreciar, el filtro en el caso de las ATC podría (potencialmente) hacer crecer el rango dinámico de la música casi 30 dB.

Intentaré ampliar este concepto de la ecualización como expansor más adelante. Creo que falta desarrollar la idea, y que este concepto está muy relacionado con la percepción que se tiene del sonido ecualizado y por qué da diferentes resultados con diferentes estilos musicales, donde la dinámica es un ingrediente creativo más.
Yo no lo diría así, pienso que más que un expansor es un comprensor. Pienso que un posible defecto aunque por otra parte tenga cualidades es una posible pérdida de dinámica de 30 db. Es cuestión de ver el vaso medio lleno o medio vacío. Ya que a priori no se puede amplificar un rango dinámico de la señal lo que se puede es atenuar si acaso el rango dinámico en otras frecuencias. Es decir no es que se pueda o no se pueda exspandir, si no que en esta operación es donde se pierde detalle, si se expande a la larga se comprimen las frecuencias no expandidas. Y digo que no se expande, porque lo que he apreciado, es que se suele tener una función de transferencia que es valor 1 o menor, es decir que para no saturar, siempre se atenúua. O eso es lo que yo y otros hemos creído observar en pruebas que hemos hecho.

Y sospecho que se notará menos en música comprimida con un volumen elevado o detalle a alto volumen o se notará mucho en músicas con detalle a bajo nivel o volumen como puede ser una reverberación de sala.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

luisggarcia escribió: Es que me he perdido, ¿Qué es la gráfica de arriba y la de abajo? Canal derecho y canal izquierdo o “antes” y “después” de cada paso.
Perdón, se me pasó la explicación:

Estas gráficas están generadas mediante unos scripts para octave basados en los que incluye el paquete de software DRC. Si quieres una copia me lo comentas por privado y te los envio sin problema.

La gráfica superior es el espectro sin suavizar y la gráfica inferior es el espectro suavizado y con una aplicación de ventana de tiempo variable en bandas de frecuencia. Por eso en la primera vemos el abs(FFT) tal cual, con la habitual mala resolución a baja frecuencia en gráficos a escala logarítmica, y en la segunda hay "cocina" para extender más la definición a bajas frecuencias y suavizar el perfil a altas frecuencias. Pero ambas representan la misma señal. Siempre he mostrado los resultados para el canal derecho.
luisggarcia escribió: Me parece que has pasado muy deprisa por uno de los pasos que más me interesa:

# PL = Peak limiting stage.
Un ejemplo salvaje, en la curva azul, con PLMaxGain=0.8 (recorte por debajo del valor RMS) y PLStart=0.6 (cuando haya que recortar, que empiece desde 0.6*0.8=0.48 a perfilar el recorte).

Imagen
luisggarcia escribió: La limitación de picos ¿La has experimentado más? Por ejemplo
¿Cuando limita recorta los picos por encima PLMaxGain del nivel RMS?
¿Filtra suavizando solo valores por encima de ese valor?
¿Filtra dejando los picos con valor máximo igual a PLMaxGain?
Efectivamente recorta todo lo que esté por encima de PLMaxGain, e incluso parte de lo que esta por debajo, según indiques en PLStart.

Si tomas PLStart=1.0 dejas al cálculo sin margen para suavizar con lo cual tendrás un recorte "perfecto". El código siempre aplicará el recorte entre PLMaxGain*PLStart y PLMaxGain. Cuando PLStart es 1.0 o mayor, el margen es cero. Ejemplo (PLMaxGain=0.8 PLStart=1.0):

Imagen

El perfil de suavizado en el rango de aplicación seguirá la norma que se indique en PLType. Si lo analizas, definido el intervalo de recorte, la variable que te queda por fijar es la fase. Así que DRC te deja elegir entre un recorte a fase lineal (F) o a fase mínima (M). La sensibilidad de los resultados dependiendo de este parámetro es algo desconozco. Siempre he trabajo en fase lineal.

El método a fase lineal consiste en mantener la fase inicial tras hacer el recorte. El otro método genera un filtro fase mínima con el perfil del recorte a aplicar y lo convoluciona con la señal de entrada.
luisggarcia escribió: Y también cuando das valores mínimo y máximo de frecuencia es para suavizar solo entre esos valores o también para calcular también el valor RMS entre esos valores.
Este aspecto ya me llevó a confusión en la descripción que hice de la etapa DL. Los parámetros PLStartFreq y PLEndFreq marcan el intervalo de frecuencias en donde se calcula el valor RMS. Ya lo habrás adivinado, el cófigo cálcula el valor RMS de la señal a partir de su FFT.

Pero cuando busca picos para recortar, los busca en todo el rango, no es modificable por configuración.

¿Se podría modificar el código para cambiar el significado de estos parámetros o añádir otros para acotar el margen de busqueda de picos? Pues estaba a punto de lanzar el habitual alegato a favor del software libre como difusor de conocimiento, de hermanamiento....pero estoy un poco cansado hoy (los san-viernes, la alergia al polen) y simplemente te diré que si, si se puede.
luisggarcia escribió: ¿Se puede emplear independientemente del resto de los pasos del DRC esta etapa?
Hay dos métodos dentro del fichero level.cpp, llamados C1LPPeakLimit y HMPPeakLimit, que efectuan todo el proceso (uno para el método a fase lineal y otro para el método a fase mínima). Se podrían extraer estos métodos y la estructura de datos necesaria y escribir un programa que exclusivamente haga un recorte de picos. De hecho DRC es una excelente fuente de código reutilizable para soluciones personalizadas.

Sobre la estructura del código de DRC y posibles aplicaciones hay bastante que debatir entre aquellos liantes del cacharreo software. En un momento que me sienta menos perezoso, comentaré mi forma de verlo.
luisggarcia escribió: ¿Sabes que ficheros de variables de entrada y de salida emplea? Supongo que de salida es el rpl.pcm
DRC trabaja como una cadena donde cada eslabón toma la entrada del anterior y se la pasa al siguiente, con la bifurcación que ya hemos visto de la descomposición de la señal de entrada en componentes de fase mínima y exceso de fase, y el tratamiento separado-paralelo para cada una de ellas hasta llegar a punto de inversión. Pero los ficheros que escribe no los utiliza. Considéralos trazas para análisis. Solo lee un fichero de señal y este es BCInFile.
luisggarcia escribió: Me podrías indicar algún enlace en Internet donde den el máximo de detalles sobre este paso. Me interesa mucho y me parece una de las claves del DRC.
El máximo de detalles es el propio código fuente. Obvio. La documentación de DRC no ofrece más que la descripción de los parámetros de configuración.

Y lamento tener que estar en desacuerdo, pero PL a mi, y sospecho que el desarrollador de DRC por como desarrolla la documentación estará de acuerdo, no me parece una etapa relevante. Es más una salvaguarda de salvajadas ecualizadoras. Lo mejor es hacer un recorte "cero" o minúsculo del filtro. Esto implica que hay que configurar todas las etapas previas para que obtengamos un filtro que sea de naturaleza más atenuante que amplificadora de señal. La ecualización que no supone un riesgo o merma de calidad es aquella que se mueve en el ámbito de las ganancias menores que "1" (menores que mucho debería decir, donde para mi mucho ha sido 6 dB). Ganancias mayores que 1 se dan cuando se intentan amplificar puntos donde acústicamente ha habido cancelaciones y, creo que ya lo he comentado, esto da lugar a resultados que sonoramente no se corresponden con las predicciones del modelo de ecualización. Se puede resolver recortando, pero se debería haber resuelto antes, habiendo extirpado (modo cirujano) estos puntos no deseados de la "maqueta de señal" que vamos a invertir.

El punto más importante de DRC, a mi parecer, es el filtrado de la señal mediante ventanas de duración variable con el rango de frecuencia. Y a la vista de como desarrolla sus comentarios ( http://drc-fir.sourceforge.net/doc/drc.html#htoc22 ) sobre estas técnicas en la documentación de DRC, creo que Dennis Sbragion está en la misma onda.

Seguimos.
Avatar de Usuario
luisggarcia
Mensajes: 802
Registrado: Vie 16 Jul 2004 , 9:28

Mensaje por luisggarcia »

wynton escribió: Y lamento tener que estar en desacuerdo, pero PL a mi, y sospecho que el desarrollador de DRC por como desarrolla la documentación estará de acuerdo, no me parece una etapa relevante. Es más una salvaguarda de salvajadas ecualizadoras. Lo mejor es hacer un recorte "cero" o minúsculo del filtro. Esto implica que hay que configurar todas las etapas previas para que obtengamos un filtro que sea de naturaleza más atenuante que amplificadora de señal. La ecualización que no supone un riesgo o merma de calidad es aquella que se mueve en el ámbito de las ganancias menores que "1" (menores que mucho debería decir, donde para mi mucho ha sido 6 dB). Ganancias mayores que 1 se dan cuando se intentan amplificar puntos donde acústicamente ha habido cancelaciones y, creo que ya lo he comentado, esto da lugar a resultados que sonoramente no se corresponden con las predicciones del modelo de ecualización. Se puede resolver recortando, pero se debería haber resuelto antes, habiendo extirpado (modo cirujano) estos puntos no deseados de la "maqueta de señal" que vamos a invertir.

El punto más importante de DRC, a mi parecer, es el filtrado de la señal mediante ventanas de duración variable con el rango de frecuencia. Y a la vista de como desarrolla sus comentarios ( http://drc-fir.sourceforge.net/doc/drc.html#htoc22 ) sobre estas técnicas en la documentación de DRC, creo que Dennis Sbragion está en la misma onda.
Esto es fantástico. La verdad es que me lo tengo que leer de nuevo más despacio.

Me parece muy bien que estés en desacuerdo. Pero yo es que no estoy pensando en el DRC, si no en emplear herramientas o partes del DRC "a medida". Además es que quien lo diga, o esten de acuerdo unos u otros, no quiere decir nada. A este nivel, uno puede tener una opinión y haber otro con otra diferente y ser perfectamente válidas las dos, ya que no creo que se trate de la perfección absoluta en ningún caso (porque si no, no habría discusión). Y además puede ser adecuado en unas circunstancias y no en otras.

Verás creo que a mi me viene como "al pelo” esa parte para poder desarrollar el FIRtro para cajas pasivas aplicando técnicas de Roberto, que han funcionado increíblemente bien para activo.

La clave es simplificar esto mucho y solo ecualizar la respuesta de la caja sin tener en cuenta las reflexiones. En activo es perfecto, pues no hay cancelaciones. Cada altavoz emite unas frecuencias. El problema en activo es que si eliminas las reflexiones solo puedes tener información del espectro hasta 300 hz. El resto se difumina al ser una ventana demasiado pequeña. Por lo que se ha de emplear el DRC para la parte de graves. Aunque se pueden intentar otras técnicas. Yo tengo varias ideas al respecto para probar.

Lo cierto es que cuando se intenta hacer lo mismo en una caja pasiva el problema es que si hay cancelaciones en la medida sin reflexiones. Son cancelaciones debidas a que llega el sonido desde dos altavoces a la vez. Yo estoy probando con mis cajas que son de primer orden. Y al tratar de corregir la respuesta salen unos grandes picos de ganancia por culpa de las cancelaciones a determinadas frecuencias. Si suavizo todo al final no corrijo. Se trata de hacer un suavizado por arriba y no por abajo. Solo quiero atenuar picos molestos y defectos de los altavoces. Pero no amplificar problemas de caja o sala.

Yo prefiero que sigan sonando mis cajas con cancelaciones que tratar de corregirlas. Por lo menos en medias y altas frecuencias, porque son soluciones solo para una posición muy concreta. En cambio puede ser interesante para graves que la posición es menos crítica. O por lo menos habría que probarlo.

Tampoco estoy tan seguro. Porque una cancelación está haciendo que baje la señal hasta 15 db y si amplifico 15 db para corregirlo me llegará la señal y de nuevo la señal en contrafase invertida y seguiré teniendo un bajón. No se va a quedar plana. Y encima habré amplificado un problema.

Me parece muy bien que Dennis Sbragion y mucha gente tengan una corriente de opinión basadas en teorías complejas. Desde luego ese es el camino. Pero no está a mi alcance. Lo cual no me quita para emplearlos. Yo me guío por mi intuición y aplicando una lógica simple de como se produce el sonido hasta mi oído. Y mi idea es desarrollar otros métodos paralelos y poder probar unos y otros para ver cual va mejor y cual me interesa según que caso. Es decir el objetivo es separar por un lado la corrección de sala de la corrección de altavoz. Yo intento la correccióon de altavoz. Y luego evaluo la corrección de sala. En esta hay varios métodos y me gustaría probarlos. Por ejemplo: DRC, método de Meridian de eliminar modos con filtro paramétricos estrechos, el de Morjopoulus del filtrado complejo o el método de suavizado de la corrección de sala mediante la media de la medida en varios puntos de escucha. Y evaluarlos todos por separado o varios a la vez mezclados. Luego se presentan los útiles y que cada uno escoja el que le guste o le convenga a su sala.

Desde luego que también estoy probando el DRC y mejorando el ajuste con lo que estás contando. Pero también es divertido desarrollar más métodos.

Al grano. Donde y cómo puedo conseguir esa programación ya que no hay un manual más avanzado y a ver si se puede reutilizar parte del código para generar una función a la medida.

¿Supongo que eso se puede hacer y no se molestarán?

¿No estarías dispuesto a echar una mano?
Última edición por luisggarcia el Vie 26 May 2006 , 11:09, editado 1 vez en total.
Avatar de Usuario
luisggarcia
Mensajes: 802
Registrado: Vie 16 Jul 2004 , 9:28

Mensaje por luisggarcia »

La idea sería conseguir algo asi:
Imagen

Lo he mal pintado en verde.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

Luis, está claro que somos una pareja idonea para estudio de campo en psicología de la comunicación o alguna disciplina de este estilo.

He leido varias veces tu último post: no me he enterado de nada. Intuyo algo por aquí y algo por allá, pero el conjunto me resulta imposible. Te lo digo en serio.

Más comprensible me ha resultado el dibujo (si es que un gráfico vale mucho): entiendo que te interesaría contar con un programa al que le pasas un impulso en formato raw y él te calcula el nivel RMS en un rango de frecuencias y te hace el recorte de picos en ese mismo rango de frecuencias (¿o en otro distinto?), y con un margen de suavizado, y que ese recorte que se pueda hacer por método de fase mínima o de fase lineal. Es decir, todo ello basado en algoritmos que ya están implementados en DRC.

Pues, si no tienes prisa, lo puedo preparar.

DRC es código con licencia GNU, así que está abierto a modificaciones, reutilizaciones y adaptaciones a capricho. Por eso se distibuyen las fuentes, en C++ en este caso.

Respecto al desacuerdo. Me explico; no es lo mismo:
luisggarcia escribió:Me interesa mucho y me parece una de las claves del DRC.
que:
luisggarcia escribió:Me interesa mucho y me parece una de las claves del sistema de ecualización que estoy estudiando.
o que:
luisggarcia escribió:Me interesa mucho y me parece una de las claves para resolver un problema que tengo.
o incluso:
luisggarcia escribió:Me interesa mucho.
No sé si consigo explicar lo artificioso del motivo de los debates a veces. A mi es que me han "formado" así "a palos" y los borriquillos no podemos cambiar.
Responder