Crossover y ecualización por DSP de las Ammonite

DRC y todo lo relacionado con el tema
Avatar de Usuario
avf111
Mensajes: 2344
Registrado: Mar 16 Mar 2004 , 7:56
Ubicación: Vallekas

Mensaje por avf111 »

wynton escribió: gracias por la recomendación, seguro que es un programa fenómeno, pero es que para mi sería como para un musulmán darle al jamón serrano. :? :?
No se que tenéis contra el BillyGates, en su día ofreció un sistema operativo como el EmeSedos para que el proletario pudiera sumar la cesta de la compra sin arruinarse con un Apple, y hoy hace más donativos para causas humanitarias que los Eeuu enteros

Avf
Aunque no te lo creas, te estás sugestionando, te sugestionarás hasta que no aprendas a observar sin pensar.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

Una vista del escritorio del PC donde aparece el gestor de la tarjeta de sonido MAudio (parte superior) y el interfaz gráfico (qjackctl) de gestión de sonido con el diagrama de conexiones que ahora comentaré (click en la imagen para agrandar):
Imagen

Detalle del diagrama de conexiones:

Imagen

Como vemos, nos aparece un "patchbay" virtual para conectar entradas/salidas de sonido.
En la columna izquierda estan las entradas al gestor jackd, que son las entradas hardware (grupo alsa_pcm) y las salidas de los programas que estén recibiendo/entregando señal audio (en este caso vemos conectado al programa brutefir, nuestro convolver).
En la columna de la derecha están las salidas del gestor, que son las salidas hardware (grupo alsa_pcm) y las entradas a programas conectados (brutefir).

Las entradas "alsa_pcm:capture_9" y "alsa_pcm:capture_10" corresponden físicamente con la conexión SPDIF-In de la tarjeta de sonido. Esta entrada, como ya hemos visto en el diagrama de cableado, es por donde llega la señal del lector de CD, y es la que queremos ecualizar. Por lo tanto va conectada, en salida del gestor, a la entrada (estereo izquierda/derecha) de nuestro convolver (input-0 e input-1).

En salida del convolver tenemos 6 canales (graves izquierdo, graves derecho, medios izquierdo, medios derecho y agudos izquierdo, agudos derecho respectivamente de arriba a abajo) que van conectados a 6 salidas de la tarjeta de sonido que corresponden con los conectores RCA físicos que vimos en el diagrama de cableado anterior.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

El digrama operativo del convolver brutefir sería el siguiente (se muestra un solo canal, el izquierdo):

Imagen

La entrada se envia a tres maquinas de convolución, cada una con un FIR encargado simúltaneamente del crossover y la ecualización para cada vía.
Una vez hecha la convolución de la señal de audio, la salida de cada máquina se entrega a cada salida que brutefir tiene activa en el gestor de audio jackd, para que este las conecte con la salida física asignada.

Más adelante veremos la configuración en detalle de brutefir, así como el método empleado para la generación de los filtros de crossover y ecualización.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

Hay un aspecto de la configuración de la tarjeta de sonido que quería comentar.
Cuando se trabaja por entrada digital, la sincronización la marca la señal SPDIF (Master Clock). En este menú de envy24control (click para agradar):

Imagen

Hay que pasar de Internal 44100 a S/PDIF IN. Y en esta configuración, para que nuestro gestor de audio pueda funcionar hay que tener previamente conectada en entrada la fuente digital. Si no, no sincroniza y no hay señal de audio.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

Pasemos ahora a comentar cómo se prepararon los filtros para convolución, esas cajas negras que hemos visto en el diagrama operativo de brutefir.

Para la aplicación de crossover, el método "duffroomcorrection" propone emplear filtros sinc. Estos filtros son los que tienen mayor pendiente en el punto de corte en frecuencia (menor banda de transición), a costa de ser también los de mayor rizado (simétrico en el tiempo además) en la respuesta temporal. O una cosa u otra, ambas están relacionadas.

Una explicación muy buena (en ingles) acerca de como funcionan los filtros sinc se puede encontrar aquí:

http://www.dspguide.com/pdfbook.htm

En el capitulo 16:

http://www.dspguide.com/ch16.htm

Como se muestra en el libro, para obtener un filtro sinc paso-bajo a una frecuencia determinada basta calcular la función sinc correspondiente. La resta de este filtro a una función Delta nos proporciona el filtro paso alto complementario. La resta de un filtro sinc a otro de punto de corte más alto nos proporciona el filtro pasa-banda correspondiente. Esto solo es posible hacerlo en este caso, en el que los filtros manejados son de fase lineal.

Teoricamente un filtro sinc de este tipo es de longitud infinita (y banda de transición cero). Obviamente, no podemos hacer convoluciones con funciones de tamaño infinito, así que por algún sitio hay que cortar. Una vez truncado el filtro, es necesario aplicar algún tipo de función ventana (Hanning o Blackmann por ejemplo) temporal que suavice la lógica discontinuidad temporal resultante.

Y el truncamiento da lugar a que la banda de transición ya no sea cero, aunque será, a efectos de filtros para altavoces, despreciable. La aplicación de la función-ventana lo que nos atenua es el rizado en frecuencia, el otro efecto negativo resultante del truncamiento.

En nuestro taller empleamos filtros sinc pasa-banda de 2^14 puntos (16384 muestras, que equivalen a un intervalo de tiempo de 0.37 segundos a una frecuencia de muestreo de 44100 Hz). Se suavizaron mediante ventana Hanning.

Las frecuencias de corte para la Ammonite en cada caso fueron:

Agudos: 3000 - 20000 Hz
Medios: 380 - 3000 Hz
Graves: 20 -380 Hz

Y su aspecto, en escala de decibelios (más signo) es tal que así (click en la imagen para agrandar):

Imagen

De arriba a abajo tenemos el filtro de agudos, el de medios y el de graves. Podemos apreciar como, según bajamos la frecuencia inferior de corte el rizado temporal se hace de bucle más largo. Los tres filtros son de igual longitud, lo que da lugar a que la banda de transición sea mejor en agudos que en graves.

Esto es más apreciable viendo los espectros en frecuencia de estos filtros.
Agudos:

Imagen

Medios:

Imagen

Graves:

Imagen

Es muy claro que 2^14 no es longitud suficiente como para disponer de una banda de transición buena a 20 Hz. En cualquier caso, para nuestra aplicación, el filtrado de subgrave se preparó con objeto de proteger a los altavoces de las Ammonite de sobreecualizaciones en este rango. La pendiente obtenida es suficiente para nuestro proposito.

Tambien puede apreciarse que los niveles de los filtros no están normalizados entre ellos. Esto es porque se normalizaron de forma independiente bajo criterio quizás demasiado conservador: Normalización L1 - Suma igual a 1.

http://mathworld.wolfram.com/L1-Norm.html

De esta forma, el nivel del filtro del tweeter es significativamente más bajo que el de medios y este a su vez menor que el del woofer. Y los tres son de nivel muy bajo en comparación con el rango dinámico disponible en 16 bits.

Otro asunto a comentar es el retardo que estos filtros introducen por ser de fase lineal. Como puede apreciarse en la primera gráfica (vista de audacity), los tres filtros son simétricos con respecto a su centro, 2^13 muestras, lugar donde se encuentra el pico. Pues bien, la distancia en tiempo hasta este pico/eje de simetría es el retardo introducido de modo inherente: 0.185 segundos.

¿Por qué? Pues porque un filtro que se aplica por convolución necesita de una serie de muestras en el entorno del punto en el que está trabajando para poder funcionar. Hasta que no las tiene, no es capaz de hacer el filtrado. Un filtro de fase mínima necesita muestras anteriores al momento en el que estamos (retardo nulo). En el caso de fase lineal, tenemos que necesita tantas muestras posteriores como anteriores (retardo igual a la mitad de su longitud).

Cuanta más baja sea la frecuencia que queremos filtrar y más marcada sea la pendiente de la banda de transición que queremos, más retardo hay que incluir. En terminos coloquiales podemos decir que el filtro sinc necesita saber qué información le va a llegar en términos de ciclos a la frecuencia deseada. A menor frecuencia, los ciclos son más largos en tiempo, luego el filtro sinc necesitará más tiempo para llevar a cabo su cometido.

El formato de los filtros es raw-headerless a 32 bits coma flotante. La convolución en brutefir se realizo con precisón de 32 bits coma flotante.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

Y ahora ¿cómo se aplica la ecualización?
Pues mediante un filtro calculado por DRC aplicable a toda la caja de altavoces (las tres vías ecualizadas conjuntamente):

http://drc-fir.sourceforge.net/

Este calculo requiere, para cada caja, de su respuesta impulsiva, que puede obtenerse mediante barrido logarítmico (explicado caóticamente aquí):

http://www.matrixhifi.com/foro/viewtopic.php?t=1037

Y es lo que hicimos. Primero montamos una configuración de brutefir solo para la medida, con tan solo los filtros sinc para cada vía, e hicimos el barrido.
La configuración de brutefir:
# Basic settings
float_bits: 32;
sampling_rate: 44100;
filter_length: 8192,4;
overflow_warnings: true;
show_progress: false;
max_dither_table_size: 0;
modules_path: "/home/alf";
monitor_rate: false;
powersave: true;
allow_poll_mode: true;
lock_memory: false;
debug: false;
convolver_config: "/home/alf/.brutefir_config";

logic: "cli" { port: 3000; };

coeff "woofer" {
filename: "/home/alf/acustica/caracolas1/woofer.raw";
format: "FLOAT_LE";
attenuation: 0.0;
blocks: -1;
shared_mem: false;
};

coeff "mid" {
filename: "/home/alf/acustica/caracolas1/mid.raw";
format: "FLOAT_LE";
attenuation: 0.0;
blocks: -1;
shared_mem: false;
};

coeff "tweeter" {
filename: "/home/alf/acustica/caracolas1/tweeter.raw";
format: "FLOAT_LE";
attenuation: 0.0;
blocks: -1;
shared_mem: false;
};

input "izq", "der" {
device: "jack" { ports: "alsa_pcm:capture_9", "alsa_pcm:capture_10"; };
sample: "FLOAT_LE";
channels: 2/0,1;
};

# output module
output "izq_woofer", "der_woofer", "izq_mid", "der_mid","izq_tweeter", "der_tweeter" {
device: "jack" { ports: "alsa_pcm:playback_1", "alsa_pcm:playback_2", "alsa_pcm:playback_3", "alsa_pcm:playback_4","alsa_pcm:playback_5", "alsa_pcm:playback_6";};
sample: "FLOAT_LE";
channels: 6/0,1,2,3,4,5;
};

filter "izq_woofer" {
from_inputs: "izq"/0.0;
to_outputs: "izq_woofer"/0.0;
process: 0;
coeff: "woofer";
delay: 0;
};

filter "der_woofer" {
from_inputs: "der"/0.0;
to_outputs: "der_woofer"/0.0;
process: 0;
coeff: "woofer";
delay: 0;
};

filter "izq_mid" {
from_inputs: "izq"/0.0;
to_outputs: "izq_mid"/0.0;
process: 0;
coeff: "mid";
delay: 0;
};

filter "der_mid" {
from_inputs: "der"/0.0;
to_outputs: "der_mid"/0.0;
process: 0;
coeff: "mid";
delay: 0;
};
filter "izq_tweeter" {
from_inputs: "izq"/0.0;
to_outputs: "izq_tweeter"/0.0;
process: 0;
coeff: "tweeter";
delay: 0;
};

filter "der_tweeter" {
from_inputs: "der"/0.0;
to_outputs: "der_tweeter"/0.0;
process: 0;
coeff: "tweeter";
delay: 0;
};
Más información sobre configuraciones de brutefir en:

http://www.ludd.luth.se/~torger/brutefir.html

Para medir el swept logarítmico empleamos ecasound, que es un muy potente reproductor/grabador de audio para linux, cuya peculiaridad es que se trabaja con él desde la linea de comandos. Merece la pena, para aquellos que trabajeis con audio en linux, estudiar un poco este programa. Permite cosas tan potentes como una grabación multicanal con aplicación selectiva de efectos, mezclas en tiempo real y envios diversos de los grabado/mezclado:

http://www.eca.cx/ecasound/

http://cantor.ee.ucla.edu/~jsab/ecasound.html

El script en cuestión para toda la gestión de las medidas y la generación de las ecualizaciones fue el siguiente:
# Fijamos el reloj master como interno a 44100 Hz
amixer set 'Multi Track Internal Clock' '44100'

# Arrancamos jackd
/usr/bin/jackd -R -P70 -dalsa -dhw:0 -r44100 -p1024 -n2 &

# Dejamos que quede estacionario
sleep 4

# Arrancamos el convolver
/usr/bin/brutefir brutefir_m.conf &

# Generamos el swept
glsweep 44100 0.5 20 20000 45 2 0.05 0.005 sweep.raw inverse.raw

# Sincronización de I/O de lectura/escritura en discos
sleep 2
sync
sleep 2

# Grabación del swept para el canal izquierdo
ecasound -r:69 -t:49 -x -z:xruns -z:multitrack -f:f32_le,1,44100 \
-a:1 -i:sweep.raw \
-a:2 -i:jack_auto,alsa_pcm:capture_1 -ev \
-a:1 -o:jack_auto,brutefir:input-0 \
-a:2 -o:measure_left.raw

# Sincronización de I/O de lectura/escritura en discos
sleep 2
sync
sleep 2

# Grabación del swept para el canal derecho
ecasound -r:69 -t:49 -x -z:xruns -z:multitrack -f:f32_le,1,44100 \
-a:1 -i:sweep.raw \
-a:2 -i:jack_auto,alsa_pcm:capture_1 -ev \
-a:1 -o:jack_auto,brutefir:input-1 \
-a:2 -o:measure_right.raw

# Fin del proceso de medida.

# Obtencion de la respuesta a impulso izquierda
lsconv measure_left.raw inverse.raw impulse_left.raw

# Obtencion de la respuesta a impulso derecha
lsconv measure_right.raw inverse.raw impulse_right.raw

# Calculo del filtro DRC de ecualizacion izquierda
drc --BCBaseDir drc_left/ --BCInFile ../impulse_left.raw --PSPointsFile ../target.txt \
--MCPointsFile ../ecm8000.txt config.drc

# Calculo del filtro DRC de ecualizacion derecha
drc --BCBaseDir drc_right/ --BCInFile ../impulse_right.raw --PSPointsFile ../target.txt \
--MCPointsFile ../ecm8000.txt config.drc

# Obtencion de los tres filtros conjuntos XO+EQ para el lado izquierdo
lsconv drc_left/rmc.pcm tweeter.raw drc_left/tweeter.raw
lsconv drc_left/rmc.pcm mid.raw drc_left/mid.raw
lsconv drc_left/rmc.pcm woofer.raw drc_left/woofer.raw

# Obtencion de los tres filtros conjuntos XO+EQ para el lado derecho
lsconv drc_right/rmc.pcm tweeter.raw drc_right/tweeter.raw
lsconv drc_right/rmc.pcm mid.raw drc_right/mid.raw
lsconv drc_right/rmc.pcm woofer.raw drc_right/woofer.raw
El micrófono se conectó a la entrada LINE IN 1 de la tarjeta MAudio (entrada lógica alsa_pcm:capture_1 en el gestor audio jack). Está entrada es XLR pero sin alimentación phamton. Por este motivo se empleó un alimentador de la casa A.R.T.

La aplicación de ecasound es la siguiente:

- Un primer flujo de audio encamina el fichero sweep.raw (formato 32 bits coma flotante, mono, 44.1 kHz hacía la entrada de brutefir corresponiente para cada canal.
- Un segundo flujo de audio se toma de la entrada física de la tarjeta de sonido IN 1 (alsa_pcm:capture_1) y se guarda en un archivo (measure_xxxx.raw) en formato 32 bits coma flotante, mono, 44100 kHz).

Este encaminamiento se detiene automáticamente a los 49 segundos (el tiempo de duración del swept generado).

El control del nivel de grabación se ajustó previamente ejecutando parte del script (hasta donde se indica el fin del proceso de medida). La opción -ev de ecasound es la que nos proporciona información estadística sobre los niveles de las grabaciones resultantes y si se ha producido clipping o no.

La medida grabada debe ser limpia de clip y conviene que los picos estén en torno a los -8.0 a -1.0 dB-FS.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

Se me olvidó comentarlo. Como el objetivo es ecualizar, el micrófono se puso en lo que se suele denominar "punto de escucha", equidistante y a considerable distancia de ambas Ammonite. La sala es bastante grande.

Veamos los resultados de la medida de una de las Ammonite (la de la izquierda). El espectro en frecuencia (arriba el FFT tal cual, abajo un suavizado a-la-DRC que, al menos a mi, (me) posibilita una interpretación en términos acústico-ecualizadores) (click sobre la imagen para agrandar):

Imagen

Como era de esperar, los niveles entre vías estan visiblemente desajustados. Se pueden apreciar claramente los escalones.

El corte abrupto a 18 kHz fue un error en la generación del sweep en su momento, las Ammonite por arriba llegan sin problema. Por abajo vemos que, más allá del efecto del filtro protector de subgraves por debajo de 20 Hz, las Ammonites no desciende hasta esos extremos. Ni falta que las hace, por cierto.
Se puede apreciar la existencia de modos resonantes muy marcados. Especialmente problemáticos serán el de casi 50 Hz, el de 80 Hz, otro ligeramente pasados los 100 Hz y el ubicado en 200 Hz.

Vamos a dejar que sea DRC, en su cálculo de la ecualización, el que nos nivele la Ammonite en bandas de frecuencia. Pero le vamos a pedir un poco más todavía.

Veamos la respuesta a impulso de la medida (click en la imagen para agrandar):

Imagen

En torno al tiempo cero tenemos el impulso directo de la Ammonite, junto con dos reflexiones cercanas, pasados 1 ms y 2 ms. Es fácil detectar que la respuesta impulsiva directa es algo así como "en fase aleatoria". Y es lógico: de momento no hay ningún elemento que se responsabilice de ajustar fase/retardos entre vías.

Veamos la respuesta impulsiva filtrada para mostrar la componente de cada vía (puede hacerse porque aquí no hay practicamente solapamiento entre bandas).

Agudos:

Imagen

Medios:

Imagen

Graves:

Imagen

Primero llegan los graves en contrafase, luego los medios y por último los agudos.

Así que, con esta prueba, vamos a ver cual es la capacidad de DRC para ecualizar la fase de la respuesta directa de la caja.

En resumen, vamos a pedirle a DRC que nos haga:

- El nivelado entre vías.
- El ajuste de fase del impulso directo.
- La ecualización acústica.

Pongo el espectrograma, que últimamente está muy de moda (hasta 1 kHz) (click para agrandar):

Imagen

A otra escala:

Imagen

Jodidilla la sala en graves....
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

La primera configuración para DRC que se empleó fue la siguiente:
# Normal correction settings

# Normal prefiltering windows (500 ms at 20 Hz, 0.50 ms at 22 Khz)
# Normal peak limiting (6.02 dB Max)
# Minimum phase excess phase allpass recovering to reduce pre-echo
# Normal pre-echo truncation
# Minimum phase postfiltering to reduce I/O latency
# Normal ringing truncation

# BC = Base Configuration
BCInFile = impulse.pcm
BCSampleRate = 44100
BCInFileType = F
BCImpulseCenterMode = A
BCImpulseCenter = 0
BCInitWindow = 65536
BCPreWindowLen = 256
BCPreWindowGap = 192
BCNormFactor = 1.0
BCNormType = E

# HD = Homomorphic Deconvolution
HDMultExponent = 3

HDMPNormFactor = 1.0
HDMPNormType = E
HDMPOutFile = rmp.pcm
HDMPOutFileType = F

HDEPNormFactor = 1.0
HDEPNormType = E
HDEPOutFile = rep.pcm
HDEPOutFileType = F

# MP = Minimum phase band windowing stage
MPPrefilterType = s
MPPrefilterFctn = B
MPWindowGap = 44
MPLowerWindow = 65536
MPUpperWindow = 88
MPStartFreq = 20
MPEndFreq = 20000
MPFilterLen = 4096
MPFSharpness = 0.25
MPBandSplit = 6
MPWindowExponent = 0.8
MPHDRecover = Y
MPEPPreserve = Y
MPHDMultExponent = 3
MPPFFinalWindow = 0
MPPFNormFactor = 0.0
MPPFNormType = E
MPPFOutFile = rmppf.pcm
MPPFOutFileType = F

# DL = Dip limiting stage
DLType = L
DLMinGain = 0.80
DLStartFreq = 20
DLEndFreq = 800
DLStart = 0.70
DLMultExponent = 3

# EP = Excess fase phase band windowing stage
EPPrefilterType = s
EPPrefilterFctn = B
EPWindowGap = 44
EPLowerWindow = 16384
EPUpperWindow = 44
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

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

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

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

# RT = Ringing truncation stage
RTType = S
RTPrefilterFctn = B
RTWindowGap = 44
RTLowerWindow = 16384
RTUpperWindow = 44
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

# PS = Target respose stage
PSFilterType = T
PSInterpolationType = G
PSMultExponent = 3
PSFilterLen = 65535
PSNumPoints = 0
PSPointsFile = target.txt
PSMagType = D
PSOutWindow = 16834
PSNormFactor = 1.0
PSNormType = E
PSOutFile = rps.pcm
PSOutFileType = F

# MC = Mic compensation stage
MCFilterType = T
MCInterpolationType = G
MCMultExponent = 3
MCFilterLen = 16383
MCNumPoints = 0
MCPointsFile = ecm8000.txt
MCMagType = D
MCOutWindow = 16384
MCNormFactor = 1.0
MCNormType = E
MCOutFile = rmc.pcm
MCOutFileType = F

# Minimum phase filter extraction stage
MSMultExponent = 3
MSOutWindow = 16384
MSNormFactor = 1.0
MSNormType = E
MSOutFile = rms.pcm
MSOutFileType = F

# Test convolution stage
TCNormFactor = 1.0
TCNormType = M
TCOutFile = rtc.pcm
TCOutFileType = F
El filtro empleado fue "rmc.pcm", de una longitud de 2^14 taps (16384).
Posteriormente comentaré los aspectos más relevantes de esta configuración a efectos audibles/ecualizadores.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

Tras la medida y el cálculo del filtro por DRC, se crearon seis nuevos filtros para brutefir, formado a partir de la convolución de la ecualización de cada canal por cada uno de los filtros de las vías. Para hacerlo se empleo el programa lsconv, que es un convolver (off-line) que forma parte de los programas incluidos en DRC. Los filtros resultantes pasan a tener una longitud de 2^15 taps.

La configuración final de brutefir fue como sigue:
# Basic settings
float_bits: 32;
sampling_rate: 44100;
filter_length: 8192,4;
overflow_warnings: true;
show_progress: false;
max_dither_table_size: 0;
modules_path: "/home/alf";
monitor_rate: false;
powersave: true;
allow_poll_mode: true;
lock_memory: false;
debug: false;
convolver_config: "/home/alf/.brutefir_config";

logic: "cli" { port: 3000; };

coeff "izq_woofer" {
filename: "/home/alf/acustica/caracolas1/drc_left/woofer.raw";
format: "FLOAT_LE";
attenuation: 0.0;
blocks: -1;
shared_mem: false;
};

coeff "izq_mid" {
filename: "/home/alf/acustica/caracolas1/drc_left/mid.raw";
format: "FLOAT_LE";
attenuation: 0.0;
blocks: -1;
shared_mem: false;
};

coeff "izq_tweeter" {
filename: "/home/alf/acustica/caracolas1/drc_left/tweeter.raw";
format: "FLOAT_LE";
attenuation: 0.0;
blocks: -1;
shared_mem: false;
};

coeff "der_woofer" {
filename: "/home/alf/acustica/caracolas1/drc_right/woofer.raw";
format: "FLOAT_LE";
attenuation: 0.0;
blocks: -1;
shared_mem: false;
};

coeff "der_mid" {
filename: "/home/alf/acustica/caracolas1/drc_right/mid.raw";
format: "FLOAT_LE";
attenuation: 0.0;
blocks: -1;
shared_mem: false;
};

coeff "der_tweeter" {
filename: "/home/alf/acustica/caracolas1/drc_right/tweeter.raw";
format: "FLOAT_LE";
attenuation: 0.0;
blocks: -1;
shared_mem: false;
};

input "izq", "der" {
device: "jack" { ports: "alsa_pcm:capture_9", "alsa_pcm:capture_10"; };
sample: "FLOAT_LE";
channels: 2/0,1;
};

# output module
output "izq_woofer", "der_woofer", "izq_mid", "der_mid","izq_tweeter", "der_tweeter" {
device: "jack" { ports: "alsa_pcm:playback_1", "alsa_pcm:playback_2", "alsa_pcm:playback_3", "alsa_pcm:playback_4","alsa_pcm:playback_5", "alsa_pcm:playback_6";};
sample: "FLOAT_LE";
channels: 6/0,1,2,3,4,5;
};

filter "izq_woofer" {
from_inputs: "izq"/0.0;
to_outputs: "izq_woofer"/-12.0;
process: 0;
coeff: "izq_woofer";
delay: 0;
};

filter "der_woofer" {
from_inputs: "der"/0.0;
to_outputs: "der_woofer"/-12.0;
process: 0;
coeff: "der_woofer";
delay: 0;
};

filter "izq_mid" {
from_inputs: "izq"/0.0;
to_outputs: "izq_mid"/-12.0;
process: 0;
coeff: "izq_mid";
delay: 0;
};

filter "der_mid" {
from_inputs: "der"/0.0;
to_outputs: "der_mid"/-12.0;
process: 0;
coeff: "der_mid";
delay: 0;
};
filter "izq_tweeter" {
from_inputs: "izq"/0.0;
to_outputs: "izq_tweeter"/-12.0;
process: 0;
coeff: "izq_tweeter";
delay: 0;
};

filter "der_tweeter" {
from_inputs: "der"/0.0;
to_outputs: "der_tweeter"/-12.0;
process: 0;
coeff: "der_tweeter";
delay: 0;
};


Se ajustó a mano la ganancia final que fue de 12 dB para todos los canales. Los valores aparecen en negativo porque brutefir espera atenuanciones en estos parámetros, a las que da valores positivos.

Ahora analizaremos la grabación de unas nuevas medidas por swept logarítmicos con la Ammonite filtradas y ecualizadas.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

Una vez aplicada la ecualización (más filtrado) procedimos a medir de nuevo y obtuvimos el siguiente resultado:

Respuesta a impulso de la caja izquierda:

Imagen

Filtrado para la vía de agudos:

Imagen

Para la vía de medios:

Imagen

Para la vía de graves:

Imagen

Vemos que acústicamente las tres vías han quedado en fase. Esto es algo que es producto inevitable de la aplicación de DRC. Lo mismo ocurre cuando se ecualizan unas cajas pasivas: su respuesta impulsiva tiende a asemejarse más a una delta ideal que antes de ecualizar.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

En cuanto al espectro en frecuencias, quedó tal que así:

Imagen

Lo habitual. Los niveles entre vías se equilibran y además se equilibran las resonancias de la sala entre si. Aunque, evidentemente, no desaparecen.

La caida en agudos antes de llegar a los 20 kHz es el fallo en la generación del sweep, que se arrastró durante toda la reunión.

En cuanto a los nuevos espectrogramas tras la aplicación de la ecualización, quedan como sigue:

Imagen

En una escala de tiempos de menor rango:

Imagen

Vemos que el caracter resonante en graves de la sala permanece. Pero el sonido más temprano está más equilibrado de nivel (banda amarilla más extendida en frecuencia).

Y ahí está el truco de la ecualización: el sonido inicial nos llega más equilibrado en frecuencia, reduciendo los realces tímbricos indeseados, sea quien sea el causante; y en los graves, los niveles del sonido directo están ajustados teniendo en cuenta la contribución del grave resonante. Donde más resuene, menos excitación directa se emite.

No tiene más ciencia, aunque lo dificil es el ajuste fino (hasta donde se puede llegar o no) y trasladar a parámetros de DRC una serie de normas básicas dificilmente cuantificables para una acústica y unas cajas genéricas.

Ahora pasaremos a analizar las dificultades encontradas.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

El primer (y gran) problema lo tuvimos con el hardware.
Por motivos desconocidos, inicialmente el sistema tenía un ruido de fondo alto, que todos identificamos como de origen "informático". "Algo" estaba colándose a través de la tarjeta de sonido.

En numerosas pruebas realizadas con anterioridad este nivel de ruido no había sido detectado (más bien lo contrario, la tarjeta MAudio Delta 1010 LT destacaba por su muy bajo nivel de ruido).

Peor aún, tras abrir el ordenador para enseñarlo, comentar los detalles de su configuración y hacer las fotos, una vez vuelto a reconectar, hubo tres canales que dejaron de sonar. Los niveles en salida según el gestor envy24control, eran correctos, pero el sonido no salía. Reinicio, vuelta a recolocar la tarjeta de sonido. Nada.

Curiosamente, de vuelta a casa, la tarjeta está funcionando perfectamente. Misterios de las instalaciones eléctricas y de la informática.

En esta tesitura, se optó por incrementar un poco más el nivel friki de la instalación, pasando a la solución de contingencia.
Recuperamos toda la configuración al portatil con el que estabamos haciendo el control remoto, y fue el portatil el que terminó haciendo de nuevo convolver.

Enumero la nueva instalación informática:

- Portatil Fujitsu-Siemens Amilo Pro V2060
http://www.optize.es/servlet/PORTATIL_F ... ptize.html ) Sistema Operativo: GNU/Linux Debian etch con kernel 2.6.20.1 tunizado a realtime-preemption con los parches de Ingo Molnar.

El portatil estuvo en underclocking a 600 MHz (frecuencia mínima de trabajo de este Centrino Movile) y en undervolting a 700 mV ( https://www.dedigentoo.org/trac/linux-phc/ ).
De esta forma, el ventilador del portatil no entra en funcionamiento durante el procesado de la convolución y a esta velocidad de reloj hay suficiente potencia de cálculo para hacer todo el filtrado y ecualización necesario con baja carga total ( > 20% CPU-time).

Aunque las CPU de Via son las de consumo mínimo, las CPU de tecnologías de ordenador portatil son las de mayor razón capacidad de proceso vs. potencia consumida. Consumen algo más pero son bastante más potentes.

- Tarjeta de sonido firewire ESI Quatafire 610 ( http://www.esi-pro.com/viewProduct.php?pid=16 ). Se cableó empleando la entrada digital coaxial y 6 de las ocho salidas analógicas.
El controlador para linux de esta tarjeta de sonido fue freebob en su versión 1.0.3:

http://freebob.sourceforge.net/index.php/Main_Page

http://sourceforge.net/project/showfile ... _id=493878)

Con está configuración hardware, el ruido de fondo se aminoró bastante, quedando alguna etapa Behringer con algún soplo un poco más alto que el resto.

Y así acabó la noche del sabado, en la que la Ammonite se emplearon a fondo como equipo de discoteca.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

Otro grupo de problemas lo compuso los llamados "artefactos acústicos digitoides", donde se mostro la potencia del DSP para generar aberraciones.

El primer día de escuchas un par de golden-ear-testers detecto un efecto extraño en graves con un tema muy concreto en un instante muy concreto. Una especie de eco o subibaja de nivel de una serie de ataques musicales en graves.
El problema con estas sensaciones es que es dificil traducirlas a aspectos técnicos. En cualquier caso, hay dos candidatos EMMO:
  • 1- La respuesta temporal ecualizada para graves (0.7 s) era demasiado larga para lo que esa sala permite y puede dar lugar, bajo ciertos transitorios musicales, a la aparición de indeseados efectos. Más adelante intentaré aclarar este punto, que es uno de los elementos críticos de una ecualización que se fundamente en la respuesta temporal y no en la estacionaria de un sistema. Lo que cada vez tengo más claro, creo, es que cuanto "mejor" (más equilibrada de RT's en bandas de frecuencia y con menos reflexiones fuertes) es la sala, más ecualización se puede meter con éxito. Es justo al reves del pensamiento común, el DSP puede emplearse más a fondo en sistema "buenos" que en sistemas "malos".
  • 2- Por algún motivo se hizo perceptible el rizado del filtro de fase lineal empleado en graves. El uso de filtros de fase lineal para separar la señal por vías creo que es algo que merece la pena estudiarse más a fondo. Más allá de sus ventajas e inconvenientes teóricos EMMO queda pendiente hacer una valoración subjetiva (si si subjetiva) del impacto real de estas ventajas e inconvenientes a la hora de escuchar música.
En el segundo día ocurrió algo soprendente. Las cajas se pusieron, una con respecto a la otra, en una (des)sincronización que no era ni en fase ni en contrafase. Tanto en medios como en agudos. Pusimos ruido rosa en fase y contrafase y de ninguna de las dos formas el canal (virtual) central permanecia en su sitio. Con música era algo sobrenatural: dependiendo de donde se sentara uno (distancias de medio metro) el sonido central salía de una pared lateral o al lado de la Ammonite opuesta.

¿Cómo se arregló este segundo problema? Pues primero giramos las caracolas de forma que apuntarán más a la posición central de escucha. Creo que, cosas que pasan, durante la fiesta discotequera las cajas se movieron a sitios ligeramente distintos y, sobre todo, se giraron muy al frente. La ecualización por DRC necesita de una clara (y buena) señal directa de las cajas. La mejor la próxima a eje. De no ser así el resultado no es óptimo. También se explicará el motivo.

El segundo cambio fue ecualizar menos el grave reverberante y dar, en medios y agudos, mucho más peso específico al sonido directo de los altavoces frente a la aportación acústica de la sala.
El resultado fue un grave menos seco pero un canal central en su sitio, tras necesitar equilibrar el balance entre cajas atenuando 2 dB a la derecha; a veces en salas grandes o con asimetrías acústicas un canal puede sonar más alto que otro, tan importante es la acústica en la sensación de sonoridad percibida.

Los cambios en la configuración de DRC final con respecto a la indicada anteriormente fueron:
MPLowerWindow = 32768
MPUpperWindow = 44
MPWindowExponent = 0.6

EPLowerWindow = 32768
EPUpperWindow = 44
EPWindowExponent = 0.6
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

¿Qué es ecualizar?

Ecualizar (en el contexto de audio doméstico) es tratar de conseguir que la emisión de unas cajas acústicas nos proporcione un sonido concreto en una zona de una habitación, mediante el tratamiento LTI(*) de la señal previo a ser emitida por los citados altavoces.

Ecualizar NO ES CORREGIR: no se trata de arreglar lo que otros elementos "no pueden hacer" o llegar donde no pudimos llegar, a la perfección del "Sonido Absoluto", por falta de presupuesto mediante un aparato (barato) lleno de botones y LED's de colores. Simplemente es actuar sobre la señal antes de emitirla para conseguir un efecto acústico (lineal) determinado. El que sea; sin prejuicios.

Ecualizar juega con la plasticidad de la señal de audio para permitirnos, por el motivo que sea, realzarla en una zona de interés, reequilibrarla al gusto por el motivo que sea, permitir que resuene más o menos.

Dado que el contribuyente más importante, con diferencia, al sonido que proporciona un sistema de audio es su respuesta en frecuencia estacionaria, todos los elementos que empleamos para ecualizar (DSP, electrónicas analógicas, filtros pasivos) deben actuar (y actuan) sobre ella de modo controlable. Algo que no ocurre con la fase, que no es tan influyente en el sonido percibido y para la cual algunos ecualizadores (muy pocos) tienen algún tipo de control y otros actuan sobre ella de modo fijo (fase mínima, fase lineal) o incluso indeseado (distorsión de fase).

Vuelvo a poner una gráfica extraida del artículo de Floyd Toole publicado en:

http://www.theaudiocritic.com/back_issu ... c_28_r.pdf

Imagen

Previamente a ecualizar, la caracterización acústica de un sistema concreto está (o debería estar) modelada por el emparejamiento de dos elementos: altavoces y sala.

Este emparejamiento es indisoluble a efectos de análisis concreto de cómo nos suena un equipo desde nuestro sofá favorito. No se puede, a una medida acústica de este tipo de sistemas, extraerle las componentes debidas exclusivamente a cada uno de los dos elementos. Tampoco puede medirse la respuesta acústica de una sala por separado, extrayendo los parámetros habituales como pueden ser el tiempo de reverberación, la Claridad, el EDT y combinarlos de ninguna manera con la medida anecoica (independiente del recinto) de unos parlantes de forma que podamos conocer cómo es el sonido que nos va a llegar a donde estamos sentados cuando escuchamos música. Es una "partícula elemental" de nuestro sistema de sonido (**).

¿Qué sabemos? Pues podemos saber por separado si una sala tiene vicios o aberraciones como pueden ser mucho eco o grandes resonancias en graves; o si unos altavoces resuenan en graves, tienen poca extensión, su dispersión lateral o vertical es homogenea o no, amplia o estrecha, si tienen buena linealidad o no (distorsiones). Que no es poco.

Pero ninguno de estos negocios son la ocupación de la ecualización. NINGUNO de estos elementos es "corregible" in-situ por tratamiento lineal de la señal. No tiene nada que ver. Por eso, la incorporación de ecualización a nuestro sistema no puede verse en esos términos. Cuanto mejor sea la sala y mejores sean los altavoces, mejor será la capacidad de maleabilidad de la señal para proporcionarnos el sonido que queremos. Más potencia nos proporcionará la ecualización cuanto menos puntos negros tengan la sala y las cajas.

Alguien puede pensar que si la sala es "perfecta" y los altavoces son "perfectos" el sonido resultante seguirá una pauta canónica y tendremos el "sonido absoluto". Pero es que las personas no escuchamos así: la música en vivo no la emiten instrumentos perfectos en lugares acústicamente perfectos. El gusto musical y sonoro son aspectos culturales de dificil parametrización.

Amén de que nadie puede afirmar que una sala es "perfecta" o que unas cajas son "perfectas". Una sala necesita tener reflexiones, necesita tener difusión, necesita tener reverberación. Y es más, lo necesita al "gusto" del oyente. Lo mismo ocurre con las cajas, unas son buenas para una tarea y malas para otras. No es lo mismo mezclar grabaciones caseras que ver una pelicula en familia.

AHÍ ENTRA LA ECUALIZACIÓN.

La ecualización nos proporciona la opción de reequilibrar al gusto el balance tonal en el punto de escucha de forma flexible. Ese gusto generalmente suele tender a que nos gusta lo que, por ir rápido, que también hay mucha tela que cortar, denominamos "sonido plano" (**). Una vez más, el artículo de Floyd Toole nos ilustra sobre lo que se entiende subjetivamente por buen sonido para el "oyente estandar".


Cuando ecualizamos modificamos la gráfica:

Imagen

Esto ¿qué supone? Pues que para tocar en el ecualizador y que salga el sonido que queremos tenemos que saber que hay una zona donde domina la sala (los graves) y otra donde domina la caja acústica. Conseguir lo que se quiere implica disponer de un juego con dos estrategias: una para graves y otra para el resto de la banda de audio.

Hay quien puede decir: solo ecualizo los graves con unos paramétricos, consideraré el altavoz en medios y agudos como "perfecto". Y hay quien puede decir: solo ecualizo los agudos con un paramétrico, consideraré los graves de mi sala como "perfectos". Ambos criterios son tan correctos como correcta (subjetivamente) sea la hipótesis de partida.

Pero no hay prejuicio que diga que una estrategía es conceptualmente incorrecta. Toda la banda es ecualizable, aunque no de la misma manera. ¿Y por qué no? Porque actuamos ANTES de emitir la señal para provocar un tipo de respuesta al llegar a nuestros oidos. Y en este trayecto hay un grupo de elementos que no controlamos: los geométricos.

No controlamos que las reflexiones unas veces son traseras, otras laterales. Qué la caja nos apunta, o que no. Muchas veces el sonido nos llega de diferentes sitios y no somos capaces de separar esas componentes: por ejemplo con el famoso canal central que es un efecto virtual del estereo y que a veces se mejora (o empeora) con ecualización.

Y más aún, la longitud de la onda emitida combinada con los aspectos geométricos hacen que las reflexiones no signifiquen lo mismo en graves que en agudos. Ni el sonido directo tampoco. Un ejemplo de esto es el famoso subwoofer: los graves son emitidos desde una localización muy distinta de la del resto de la banda acústica. Y sin embargo el resultado es integrable (bien hecho, con ecualización) en el conjunto percibido.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

(*) Tratamiento Lineal e invariante con el tiempo. Los efectos no lineales, aún modificando tambien la sensación sonora resultante, solemos agruparlos en otra familia de tratamientos y se suelen usar más para conseguir que una grabación suene de un modo concreto independientemente de criterios acústicos.

(**) Quien lea el artículo de Floyd Toole ya habrá visto que esto no es cierto al 100% y que puede simularse el efecto combinado de cajas acústicas más sala con relativa precisión. No obstante, a efectos prácticos para aficionados que no disponemos de laboratorios de la capacidad de los del grupo Harman, tal posibilidad es inalcanzable.

(**) Tener una gráfica que en eje X tenga frecuencia, en eje Y amplitud en decibelios y la cruce una linea horizontal no significa que se tenga "sonido plano" (Teorema de Andreu, que fue el primero en demostrarlo).
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

Aunque es evidente que es posible ecualizar un sistema a oido, suele ser más habitual basarse en medidas acústicas a la hora de los ajustes y luego comprobar los resultados a oido, de forma más o menos iterativa, o llamémosla de aprendizaje.

Si disponemos de un sistema ecualizador sin control sobre la fase, como pueden ser los típicos EQ-32-bandas-ISO o los EQ paramétricos, se simplifica mucho el número de parámetros a tener en cuenta. Básicamente solo disponemos de la amplitud vs. frecuencia como variable de juego. Y con una resolución que no irá más allá de la propia del ecualizador.

¿Qué ecualizamos en este caso? Pues ecualizamos sobre una proyección en dos dimensiones (amplitud/frecuencia), sobre una medida que tiene tres (amplitud/fase/frecuencia). ¿Y que significa esto? Que estamos integrando la componente temporal (la de fase).

Por eso, es habitual ecualizar sobre la estacionaria (tiempo -> infinito) mediante la emisión de ruido rosa como señal de referencia y buscando una gráfica de espectro concreta (el famoso sonido plano).

No vemos fase ni retardos, y nuestro ecualizador, aunque obviamente tiene un comportamiento temporal (el que sea) no es ajustable, con lo cual no merece la pena mirar donde no se puede tocar.

Existen sistemás automáticos de ajuste de filtros paramétricos que emplean la componente temporal para detectar el ancho-Q del filtro a aplicar:

http://www.genelec.com/documents/public ... 11th_2.pdf

Se basan en el modelo de resonador:

http://en.wikipedia.org/wiki/Q-factor

Pero la detección del punto de aplicación sigue haciendose a partir de la estacionaria.

Pero sobre este punto prefiero volver más adelante, que estoy cambiando de tema a cosas más avanzadas.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

¿Qué ocurre con sistema DSP más complejos del estilo de DRC?

Pues que aquí si hay control de fase, y brutal.
¿Por qué? Voy a explicar a grandes rasgos que hace DRC. Son tres etapas:
  • - Toma la respuesta a impulso del sistema, donde tenemos amplitud/fase/frecuencia (sería su equivalente, la función de transferencia) y le quita lo que sobra antes de meterla al horno. Pellejos, huesos, tendones duros...
  • - La mete al horno. El horno es una inversión pura y dura mediante dos métodos a elegir:
    • 2- Ajuste por deconvolución rápida. No es exacto sino que depende de un parámetro que puede hacerse depender de la frecuencia. Esta es una división en el dominio FFT pura y dura solo que con "un factor de seguridad".

      http://pcfarina.eng.unipr.it/Public/Old ... stdeco.pdf
  • - La saca del horno y la vuelve a limpiar, sazonar (quitar el pre-rizado, aplicarle una función de transferencia al gusto del cliente).
En el horno, lo que hace es sacar un filtro tal que para un sistema que no sea acústico (sin nuestra variable oculta, "la geometría") por convolución lo convertiría en una "delta". Por ejemplo, a un reverberador lo anularía por completo. Cuando el reverberador quisiera entregar un eco, la convolución con este filtro lo ahogaría.

Esto no es posible hacerlo con la medida estacionaria del ruido rosa.

¿Por qué tanta cocina? Pues por la puñetera geometria. Queda muy bonito: cuando llega una reflexión lateral al micrófono, llega otra en contrafase directamente de las cajas. Se suman y por contrafase se anulan y ya no se oye.

Pues no. Se oyen dos. Por la gemetría, por que nuestros oidos captan la dirección. Porque los tiempos de llegada no son iguales porque la cabeza no la atornillamos a un potro de tortura. Que no, que no se puede anular una reflexión mediante el control de la emisión directa.

Así que hay que cocinar para quitar las reflexiones. ¿Pero todas? ¿todas todas?

Veamos en el caso de las Ammonite en MG, la respuesta impulsiva filtrada de 10 kHz a 20 kHz. Click sobre la imagen para agrandar.

Imagen

Aquí puede haber algunos picos que no tengamos claro si son controlables o no. Los de los 5 primeros milisegundos. Pero, por ejemplo, la reflexión ubicada a unos 20 milisegundos, va a ser mejor cortarla como despojo antes de hacer la inversión, de forma que no tengamos dos ecos innecesariamente. No digamos ya el resto de la respuesta, que toma forma de campos difuso. Si ecualizamos con DRC eso, tendremos unos altavoces resonantes en agudos, tratando de reproducir, en inversión de fase, ese campo difuso. Un disparate porque además, el campo difuso no molesta, no necesitamos ecualizarlo.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

Si lo "cocinamos" eliminando las reflexiones que no queremos ecualizar, la respuesta impulsiva que va a ir al "horno" de la inversión, filtrada de 10 kHz a 20 kHz es esta:

Imagen

Donde vemos que la reflexiones han desaparecido. (Tenemos un prerringing peculiar, rizado a la izquierda, efecto del ciertos tratamientos realizados, que eliminaremos en la etapa posterior a la inversión).

Este es el modelo que invertimos, con lo cual, lo que ecualizamos en esta banda de frecuencias es la respuesta directa de la Ammonite. Sin tener en cuenta ningún aspecto acústico puesto que no es factible su ecualización.

Aunque, obviamente, al aplicar el filtro por convolución, las reflexiones en agudos se modificarán porque son producidas por el sonido directo que si se modifica. Pero son cambios no controlados. Y por lo tanto, una mala acústica en este aspecto seguirá siendo mala, y una buena seguirá siendo buena. No hay sustituto al tratamiento convencional.

Ahora veremos que ocurre en otras bandas: la de medios y la de graves.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

Veamos una década más abajo, de 1 kHz a 3 kHz, la respuesta impulsiva filtrada.

Imagen

Aquí los primeros 5 milisegundos son confusos, podemos suponer que es respuesta del altavoz pero que no está en fase. Y podemos suponer que el altavoz alarga su respuesta un poco, algo normal dado que a menores frecuencias mayor periodo, lo que puede hacer que la emisión directa se junte con alguna reflexión. Lo cocinamos dejando una cola de reflexiones y queda así:

Imagen

El intervalo de tiempos que se deja o se corta es un parámetro, de los más importantes, de configuración de DRC.

En graves (por ejemplo de 100 Hz a 300 Hz) la diferenciación sonido directo sonido reflejado es más confusa y vemos lo que conocemos como grave resonante.

Imagen

Aquí si podemos ecualizar la aportación de los modos propios de la sala. Porque aquí nuestros oidos no distinguen tal claramente si la reflexión llega de un punto u otro, tampoco la posición es crítica frente a la longitud de onda. Y por lo tanto, al cocinar el impulso, no le quitamos ese resonar, al menos no todo. Y queda así:

Imagen

Y ahora cerramos el circulo. Dice Toole que conforme bajamos en frecuencia cuenta mucho la aportación de la sala en el resultado cualitativo final. Y por eso a la hora de ecualizar la tenemos en cuenta. Y viceversa, conforme subimos en frecuencia, el responsable principal es la caja acústica y sobre él nos centramos.
Ponerle a todo esto valores concretos es el problema final de DRC, si no se acierta, la ecualización final puede ser disparatada.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

¿Como gestiona DRC este tipo de criterio de ir descartando señal en la evolución de la respuesta a impulso en función de la frecuencia? Pues con una ventana temporal deslizante de este tipo:

Imagen

Para cada punto en frecuencia se incluye a ecualizar un intervalo de tiempo (ventana) distinto, que decrece conforme crece la frecuencia.

Aquí podemos controlar el tamaño de la ventana de tiempo para dos frecuencias (inicial y final del proceso) y la curvatura. La curvatura hace que para dos puntos extremos seleccionados, se filtre, de lo que se va a ecualizar, más o menos sonido del entregado por la sala. Porque la aportación directa de la caja está en el tiempo cero (DRC toma la referencia de esta forma).

Aplicado al espectrograma que hemos visto anteriormente:

Imagen

Podemos conocer que parte del sonido queremos controlar por ecualización y cual no. Simplemente recortamos las ventanas anteriores ("se ecualiza" y "no se ecualiza") y la superponemos al espectrograma:

Imagen

Esta es la parte de la respuesta impulsiva que vamos a incorporar al modelo a invertir. ¿Qué se nos queda fuera?

Imagen

Justamente hemos recortado por la ventana opuesta. ¿Esto influye en el resultado? De lo que más. Ahora veremos el porqué.
Avatar de Usuario
wynton
Admin
Mensajes: 3065
Registrado: Vie 26 Nov 2004 , 9:05
Ubicación: Madrid

Mensaje por wynton »

Centrémonos en la última gráfica, viendo lo que "sobra". Son las "colas" del campo difuso/reverberante y de las resonancias en graves.

Las hemos excluido del cálculo del filtro de ecualización. Es decir, no vamos a ecualizar una respuesta estacionaria, la típica que se mide con ruido rosa. Y por lo tanto, al afectar la parte que tenemos en cuenta, tanto el campo reverberante como las resonancias se comportarán de modo "no controlado". Cambiará su forma, y no será de acuerdo a un plan objetivo que nos hayamos marcado.

Si la ventana de tiempos es muy pequeña, solo controlamos el sonido directo de los altavoces (en graves ni eso) y dejamos a la sala actuar a su gusto: resonará todo lo que pueda.

Si vamos aumentando la ventana de tiempos, en el ajuste del sonido directo ya tendremos en cuenta que hay algo de resonancias. Al tender DRC a equilibrarlo todo, equilibrará parcialmente las resonancias.

Si la ventana de tiempos es muy grande, estaremos ecualizando la respuesta estacionaria (integrada) del conjunto altavoces y sala. DRC controlará completamente el campo reverberante acústico.

¿Donde está el problema en las soluciones extremas? (suponiendo constante el tamaño de ventanas en agudos, ya discutido su efecto):

- Si ecualizamos en una ventana de tiempos pequeña, los graves quedarán sin control. Resonará.

- Si ecualizamos en una ventana de tiempos grande, los graves pueden quedar anémicos. Porque equilibramos en la emisión directa la contribución sonora que en realidad corresponde a tiempos muy distantes del inicial. Nuestro sistema auditivo maneja unos "tiempos de integración" a la hora de separar contribuciones de diversos focos sonoros, que además dependen de la frecuencia (a menor frecuencia menor capacidad de discernimiento) pero no se pueden forzar. Hay un nivel campo reverberante que no somos capaces de percibir y sobre el cual sobreactuar supone modificar en exceso cómo percibimos globalmente el sonido, con el resultado de que nos podemos quedar realmente sin graves.

Más problemática aún es la zona de los 300 a los 1000 Hz. Aquí las reflexiones pronunciadas hay que dejarlas fuera. Y pueden resonar mucho, durante bastante tiempo. Si no las dejamos fuera corremos el riesgo de que DRC ajuste la fase de la emisión directa de forma que el conjunto quede en un extraño desfase acústico. Dando lugar a efectos no deseados sobre la "localización" tal cual la debe recrear el efecto estereo de un sistema hifi.

Este asunto está en relación muy directa con:

http://www.matrixhifi.com/foro/viewtopic.php?t=2648

Y nos indica que ecualizar obliga a tener en cuenta algún tipo de caracterización psicoacústica en la estrategia de ecualización.

No basta con las premisas expuestas por Floyd Toole sobre la interacción sala+cajas. Además hay que tener en cuenta la inclusión de un oyente en el sistema. Al fin y a la postre, una cosa es que un sistema "mida plano" (o lo que se entienda por ese vago concepto en su definición ideal) y otra que suene bien.

Ambas cosas van de la mano hasta que llega un punto en el cual divergen. Conocer con precisión ese punto es un tema de investigación que yo creo que es de gran interés en esta afición.
Cerrado