Software correcion altavoces Octave

Previos, filtros activos, DACs, CDs, transportes, vinilo, tratamiento de salas,...
RR
Mensajes: 3019
Registrado: Lun Oct 31, 2005 12:40 pm
Contactar:

Re: Software correcion altavoces Octave

Mensaje por RR » Dom Jun 21, 2015 7:27 pm

Y el filtro...
Adjuntos
w.zip
El filtro propiamente dicho
(118.11 KiB) Descargado 190 veces
Jaimesg
Mensajes: 100
Registrado: Sab May 26, 2012 3:57 pm

Re: Software correcion altavoces Octave

Mensaje por Jaimesg » Lun Jun 22, 2015 2:56 pm

Muy interessante e increible respuesta en frequencia Roberto, gracias por la ilustración.

A lo que me refiero es que un sistema como este no almacena la misma energía en cada frecuencia del mismo modo. En unas frequencias aparecen resonancias y la energía almacenada es mayor que en otras. El hecho de que la energía sea diferente equivale a que la respuesta a wavelet también lo será. Y para corregir esa respuesta no sólo es necesario modificar la fase sino también la ganancía a esa frequencia del sistema al principio y al final de un wavelet para conseguir que el sistema siga perfectamente a la entrada.

Pero como un sistema LTI está completamente definido con su respuesta impulsional, entiendo que con fir, es posible de solucionar.

Lo que estoy intentando ahora extraer la respuesta impulsional inversa del sistema tal que:

sistema*inversa=1

En el campo de la frecuencia es relativamente facil calculando la inversa de la frecuencia pero en la fase la cosa se complica. La idea es hacerlo directo, algo como esto:

http://pcfarina.eng.unipr.it/Aurora_XP/ ... Filter.htm

Me gusta tu idea de dejar que la fase se corrija sola pero creo que tiene que haber algun metodo directo.

Un saludo
RR
Mensajes: 3019
Registrado: Lun Oct 31, 2005 12:40 pm
Contactar:

Re: Software correcion altavoces Octave

Mensaje por RR » Lun Jun 22, 2015 3:33 pm

Se puede invertir directamente la respuesta compleja, es trivial. Pero se tiene que preparar la respuesta a invertir, mediante suavizado y limitación de la banda. Si no, puedes acabar con un filtro de ganancia infinita en DC. Mal.

Esa preparación es el arte del asunto.

Por otra parte, que una respuesta suponga acumulación de energía es la consecuencia inevitable de que la respuesta no es plana y se aproxima a un comportamiento de fase mínima. No hay otra. Y eso no supone nada especial en el filtro de corrección.

Si miras el impulso que he mandado casi se puede leer que es la convolución de un filtro de ecualización de fase mínima y de un paso alto de fase lineal (las oscilaciones regulares con frecuencia igual a la de corte).
Jaimesg
Mensajes: 100
Registrado: Sab May 26, 2012 3:57 pm

Re: Software correcion altavoces Octave

Mensaje por Jaimesg » Lun Jun 22, 2015 4:13 pm

Acabo de montar un algortimo que genera la respuesta impulsional inversa por fuerza bruta calculando la convolucion de cada elemento y haciendo concidir con el dirac de entrada, pero parece que la computación es una locura (decenas de minutos, no he acabado ni una por lo que tarda), así paso de nuevo a trabajar en el dominio de la frecuencia.

Entiendo. El suavizado lo tengo creo que bien solucionado. Voy a intentar chapucear restando la fase y dividiendo la frecuencia y veremos que sucede, aunque no me gusta nada este método por exactamente lo que comentas.
Por otra parte, que una respuesta suponga acumulación de energía es la consecuencia inevitable de que la respuesta no es plana y se aproxima a un comportamiento de fase mínima. No hay otra. Y eso no supone nada especial en el filtro de corrección.
Estamos de acuerdo en que la respuesta no es plana equivale a acumulación de energía, pero que la respuesta corregida sea plana no equivale a no acumulación de energia y me explico: aunque el sistema corregido se comporte bien internamente tiene resonancias y acumulaciones variable de energía, que si bien estan filtradas y solucionadas, en los pasos intermedios quedan. Con esto quiero decir por ejemplo que si estamos sobrados de potencia no hay ningún problema, pero si no, se puede llegar al límite (clipping de cualquier tipo) en pasos intermedios simplemente porque el sistema intenta corregir la respuesta al máximo.

Un saludo
RR
Mensajes: 3019
Registrado: Lun Oct 31, 2005 12:40 pm
Contactar:

Re: Software correcion altavoces Octave

Mensaje por RR » Lun Jun 22, 2015 4:54 pm

Jaimesg escribió: Con esto quiero decir por ejemplo que si estamos sobrados de potencia no hay ningún problema, pero si no, se puede llegar al límite (clipping de cualquier tipo) en pasos intermedios simplemente porque el sistema intenta corregir la respuesta al máximo.
Evitar eso es lo que se pretende con la regularización (creo que ese es el nombre correcto) de la respuesta previa a la inversión.

El filtro va a "administrar por frecuencias" cuánta energía llega al sistema (y cuándo) de modo que la combinación sea plana. Pero en detalle esto puede no ser así. No pasa nada, la psicoacústica nos tranquiliza diciendo que lo que pasa en bandas muy estrechas no es relevante perceptivamente (de ahí que podamos promediar).

Evitar el clipping intermedio equivale a eliminar valles pronunciados de la respuesta a invertir y... ejem... operar en punto flotante (vale, esto nos viene dado por la propia arquitectura de cálculo, así que una cosa menos).

No he entendido lo que pretendes aquí, en lugar de invertir los valores complejos de la respuesta (no la magnitud):
calculando la convolucion de cada elemento y haciendo concidir con el dirac de entrada
Jaimesg
Mensajes: 100
Registrado: Sab May 26, 2012 3:57 pm

Re: Software correcion altavoces Octave

Mensaje por Jaimesg » Lun Jun 22, 2015 5:22 pm

Creo que no me explicando de manera fácil de enteneder, pero creo firmemente en lo que estoy diciendo, a ver si de esta manera puedo transmitirlo mejor:

Sea esta la señal de entrada:
Imagen

Y esta la señal de salida sin corregir:
Imagen

Y en nuestro sistema queremos que la señal de salida sea igual de la de entrada. Para ello aplicamos un filtro a la señal de entrada de modo que la salida sea igual que la entrada.
Independientemente del valor del filtro que no nos importa ahora. Para que el sistema reaccione con suficiente velocidad (tiempo no frecuencia) al wavelet de entrada, la señal filtrada deberá tener una magnitud muy superior en los primeros ciclos para llenar la resonancia de energía, de modo que la evolvente del wavelet de salida sea igual que la de entrada.
Al parar el wavelet lo mismo pero en sentido opuesto.

El sistema normal sin filtrar aplica la señal del wavelet. El sistema filtrado estará recibiendo una señal del filtro con los primeros ciclos de exagerada magnitud.
No he entendido lo que pretendes aquí, en lugar de invertir los valores complejos de la respuesta (no la magnitud):

calculando la convolucion de cada elemento y haciendo concidir con el dirac de entrada
Lo que he hecho es simple pero requiere una eternidad de calculo, si estas usando pc y no raspberry puede que te sirva:
h(n)=respuesta impulsional del sistema
hinv(n)=respuesta impulsional inversa

entrada(n)*h(n)*hin(n)=entrada(n-delay)

siendo entrada igual a un pulso dirac centrado y todos los demas valores 0
h(n)*hin(n)=dirac(n-delay)

Y al final con la ecuacion discreta de la convolución se saca el valor de hinv. Cada valor equivale a la multiplicación de cada elemento de las areas que coinciden sumadas y eso tiene que ser igual al dirac. Pero vamos que no es practico al menos mi algortimo (de momento saca la primera mitad del impulso) y 10 minutos de proceso y lo he parado porque no me vale si tarda tanto.

Un saludo

Edito: pero para corregir la fase crees que con invertir el signo es suficiente? se va a desplazar el impulso por el vector. Es decir si el impulso está en cero puedes invertir pero si está centrado entiendo que hay que hacer más.

Saludos
RR
Mensajes: 3019
Registrado: Lun Oct 31, 2005 12:40 pm
Contactar:

Re: Software correcion altavoces Octave

Mensaje por RR » Lun Jun 22, 2015 11:16 pm

Jaimesg escribió: Y en nuestro sistema queremos que la señal de salida sea igual de la de entrada. Para ello aplicamos un filtro a la señal de entrada de modo que la salida sea igual que la entrada.
Pero no pareces creer en que el dominio de frecuencia y el de tiempo son visiones duales del mismo fenómeno. La transformada de fourier de una señal es totalmente reversible, tiene toda la información de la señal.

De modo que para ciertos problemas (este) uno termina antes operando en el dominio de frecuencia. Así pues, a mí me gustaría saber qué respuesta en frecuencia (y fase si no es de fase mínima) tiene el sistema que transforma tu ráfaga como se ve en las gráficas. Y esa respuesta se invierte y punto. Si no hay una reconstrucción perfecta será por singularidades no invertibles y por limitaciones de ancho de banda.

Creo que es urgente que hagas tú mismo la prueba y compruebes la limpia, sencilla y perfecta corrección que vas a conseguir. Ver es creer.
Para que el sistema reaccione con suficiente velocidad (tiempo no frecuencia) al wavelet de entrada, la señal filtrada deberá tener una magnitud muy superior en los primeros ciclos para llenar la resonancia de energía, de modo que la evolvente del wavelet de salida sea igual que la de entrada.
No. Si tiene un valor grande antes influirá al principio y al final. El impulso es energía distribuida en el tiempo, y la convolución aplica esa distribución a cada punto de la señal de entrada. Para tener velocidad dame ancho de banda, eso es todo.

Sobre la convolución: No entiendo lo de la convolución de cada elemento. Lo que se convoluciona son funciones (o señales). La ecuación que pones me recuerda a la ecuación general de la convolución pero no la pillo, sorry.

En general: Multiplicar en el dominio de frecuencia en equivalente a convolucionar en el dominio de tiempo. Y ese es el modo de obtener inversas, multiplicando los espectros, no haciendo una complicadísima deconvolución. Y es exactamente lo mismo: la vida es bella desde que se descubrió la Transformada Rápida de Fourier (FFT).

Edito: pero para corregir la fase crees que con invertir el signo es suficiente?
Como te dije, corregir la fase implica invertir la respuesta compleja, es decir, la FFT de la señal con su módulo y su argumento. Eso de invertir el signo no tiene sentido.

O sea, dividir el target por la respuesta (en el dominio de frecuencia compleja).

Hay una aritmética de las respuestas que está muy bien estudiar, y que permite hacer virguerías como separar la respuesta en fase mínima y exceso de fase, y cosas así, para simplificar un cálculo por ejemplo. Pero el caso general es el que te digo.
RR
Mensajes: 3019
Registrado: Lun Oct 31, 2005 12:40 pm
Contactar:

Re: Software correcion altavoces Octave

Mensaje por RR » Lun Jun 22, 2015 11:20 pm

Y además:

Es diferente la inversión según la aplicación. O mejor dicho, es diferente la preparación de la respuesta a invertir.

No es lo mismo corregir un sistema electrónico, unidimensional, que un altavoz, con una emisión y recepción multiruta en tres dimensiones. En el segundo caso la preparación de la respuesta debe ser sensible a criterios de percepción.
Jaimesg
Mensajes: 100
Registrado: Sab May 26, 2012 3:57 pm

Re: Software correcion altavoces Octave

Mensaje por Jaimesg » Mar Jun 23, 2015 11:53 am

Roberto un wavelet no funciona por ancho de banda ya que tiene practicamente sólo una frequencia, ese efecto se ve perfectamente en los bass reflex con driver the bajo Q en los que la respuesta (a fb) es muy parecida a las ondas que he puesto ahí (no tan exagerada tal vez). Y lo que digo es que para corregir eso, la señal intermedia aplicada al altavoz puede alcanzar valores increibles en ciertos momentos.

Por supuesto que en el dominio de la frecuencia la información está ahí y sí es beneficioso trabajar bajo ciertas circunstancias en el dominio de la frecuencia, pero fft tiene el nombre por la velocidad del algoritmo no por que sea mas benificioso trabajar con la transformada.

Voy a probar a ver hoy que saco.

El algoritmo no es complicado en si, es bastante simple son en total en torno a 10 lineas y no está calculando más que el brutefir hace por segundo, pero la optimizacion es horrible. He probado en el pc y va bien saca cosas (solo la primera mitad) pero incluso ahí va lento.

Voy a probar a hacerlo en fft.

Te cuento, gracias
RR
Mensajes: 3019
Registrado: Lun Oct 31, 2005 12:40 pm
Contactar:

Re: Software correcion altavoces Octave

Mensaje por RR » Mar Jun 23, 2015 12:08 pm

Jaimesg escribió:Roberto un wavelet no funciona por ancho de banda ya que tiene practicamente sólo una frequencia, ese efecto se ve perfectamente en los bass reflex con driver the bajo Q en los que la respuesta (a fb) es muy parecida a las ondas que he puesto ahí (no tan exagerada tal vez).
Lo que has puesto es un burst con envolvente rectangular, que para nada tiene un ancho de banda localizado. Los wavelets típicos tienen envolvente gaussiana, lo que a su vez da un espectro gaussiano centrado en una frecuencia.
Y lo que digo es que para corregir eso, la señal intermedia aplicada al altavoz puede alcanzar valores increibles en ciertos momentos.
Ya no insisto más, no funciona así. Esa señal intermedia es una señal filtrada, y efectivamente tendrá valores altos pero porque se está ecualizando para compensar un pasabajos hasta enderezarlo, no hay más misterio. Así que lo que estás haciendo parte de un error de concepto.

Si no vemos espectros (en ocasiones :wink: ) de la señal original, del filtro que se le está aplicando y de la segunda señal transformada que has puesto no creo que sepamos qué pasa ahí.
pero fft tiene el nombre por la velocidad del algoritmo no por que sea mas benificioso trabajar con la transformada.
Claro, pero ironizaba sobre la rapidez con que el problema se habría resuelto.
Voy a probar a ver hoy que saco.
A la espera quedo.
Jaimesg
Mensajes: 100
Registrado: Sab May 26, 2012 3:57 pm

Re: Software correcion altavoces Octave

Mensaje por Jaimesg » Mar Jun 23, 2015 7:41 pm

Parece que funciona. Te explico el proceso:

- Convolución con sweep inverso
- Centrado del impulso y división del mismo por la mitad
- FFT
- Eliminación de la mitad derecha
- Smoothing
- Inversión de la magnitud y correción por abajo y por arriba de ganancias
- Inversión de fase
- Vuelta a componer la respuesta completa de fft
- Ifft
- Flip por el medio

Tengo mucha ganancia en graves creo que es por la entrada de la tarjeta de sonido al medir.

Es parecido a como lo haces tu?

Un saludo
RR
Mensajes: 3019
Registrado: Lun Oct 31, 2005 12:40 pm
Contactar:

Re: Software correcion altavoces Octave

Mensaje por RR » Mar Jun 23, 2015 8:21 pm

Bueno, no recuerdo los detalles de la deconvolución del sweep, está todo en el código. Lo que no me suena es la partición del impulso (no recuerdo que fuera simétrico) ni el flip final, pero básicamente es eso.
RR
Mensajes: 3019
Registrado: Lun Oct 31, 2005 12:40 pm
Contactar:

Re: Software correcion altavoces Octave

Mensaje por RR » Mar Jun 23, 2015 8:22 pm

En cuanto a la ganancia, te invito a revisar las estrategias de preparación de la respuesta a invertir que hay en DSD, y por supuesto a usar el toolkit si te ahorra tiempo.
Jaimesg
Mensajes: 100
Registrado: Sab May 26, 2012 3:57 pm

Re: Software correcion altavoces Octave

Mensaje por Jaimesg » Mar Jun 23, 2015 9:19 pm

Es la única forma que se me ha ocurrido de extraer la fase. La fase es un tema peliagudo dependiendo de donde esté el impulso la fase es completamente diferente (y mucho) y la cuestión es eliminar el efecto de esa posición. Afortunadamente si coges directamente la respuesta de un programa de medida no tienes que sufrir estos problemas. ya que habrá hecho esto internamente.

Voy a echar un ojo a veces me resulta más complicado mirar código ajeno que generar nuevo, a ver si saco algo. Gracias

Especialmente me interesa como sintetizar filtros de fase minima.

Un saludo
RR
Mensajes: 3019
Registrado: Lun Oct 31, 2005 12:40 pm
Contactar:

Re: Software correcion altavoces Octave

Mensaje por RR » Mar Jun 23, 2015 9:26 pm

Si te animas no olvides mirar el pdf de la carpeta doc. Facilita bastante las cosas, o esa era la intención...
Responder