Distorsión con barridos y utilidades de fase
Normas aplicables: 108th AES ConventionReferencias: Novak et al. 2015Müller y Massarani 2001Bendat y Piersol 2010
Un solo barrido sinusoidal exponencial caracteriza a la vez la respuesta lineal y todos los órdenes de distorsión armónica de un sistema débilmente no lineal. Tras la deconvolución, los productos de distorsión de orden se empaquetan en respuestas al impulso separadas que preceden a la respuesta lineal con el adelanto fijo (Farina 2000)
de modo que enventanar cada llegada produce las respuestas en frecuencia
armónicas y, a partir de ellas, la distorsión
armónica total en función de la frecuencia de excitación con un barrido en
lugar de un recorrido tono a tono. Esta página cubre esa separación en
phonometry.electroacoustics, con el barrido sincronizado de Novak,
Lotton y Simon (2015), coherente en fase, como método por defecto, y las
utilidades de fase que la acompañan en phonometry.signals: fase
mínima desde , retardo de grupo y exceso de fase.
1. Un barrido, todos los armónicos
Sección titulada «1. Un barrido, todos los armónicos»En un barrido exponencial la frecuencia instantánea crece como
, así que en el momento en que la excitación pasa por
, el producto de distorsión del armónico n aparece en : exactamente
donde estará el propio barrido segundos después. Deconvolucionar
la grabación contra el barrido comprime por tanto cada orden en su propia
respuesta al impulso, antes de la lineal.
swept_sine_distortion enventana cada llegada (con el alineado exacto de
fracción de muestra), la transforma en y lee la distorsión de orden
a la frecuencia de excitación de :
La cadena es exactamente el esquema siguiente: reproducir el barrido, grabar, convolucionar con el filtro inverso, y los armónicos caen por delante de la respuesta lineal con sus adelantos fijos.
Los adelantos los fija el barrido por sí solo — aquí s — y no el dispositivo, que es la razón de que las mismas ventanas sirvan para cualquier sistema débilmente no lineal y de que alargar el barrido sea lo que compra separación.
import numpy as npfrom phonometry import swept_sine_distortion, synchronized_sweep_signal
fs, f1, f2, seconds = 48000, 20.0, 6000.0, 4.0x = synchronized_sweep_signal(fs, f1, f2, seconds) # reproducir esto...# ... grabar la respuesta del dispositivo en `y` (con su cola de caída) ...res = swept_sine_distortion(y, fs, f1, f2, seconds, n_harmonics=3)
res.harmonic_responses # H1..H3 complejas sobre res.frequenciesres.thd, res.thd_frequenciesres.distortion_ratios # |Hn(n f)| / |H1(f)| por ordenres.plot() # magnitudes |Hn| + THD(f)1.1 Cómo se reproduce y se graba
Sección titulada «1.1 Cómo se reproduce y se graba»Una curva de THD(f) es una propiedad del dispositivo a un solo nivel de excitación, así que hay que publicarla con ese nivel y, si la medición es acústica, con el nivel de presión acústica que produjo en el micrófono. El mismo altavoz medido 6 dB más fuerte devuelve una curva varios decibelios más alta y con otra forma, porque los mecanismos que dominan cambian con la excursión. Elige el nivel entre dos paredes: lo bastante alto para que los armónicos destaquen sobre el fondo, porque la ganancia de proceso de la deconvolución ayuda mucho más a la respuesta lineal que a las prellegadas, y lo bastante bajo para que no recorte ni el dispositivo ni ningún conversor de la cadena, porque un registro recortado fabrica exactamente los armónicos de orden impar que se están midiendo, y en todas las ventanas. Ten en cuenta además que un barrido tiene un factor de cresta mucho más bajo que una ráfaga tonal, así que a igual amplitud de pico entrega más energía y exige más al dispositivo que un ensayo con tono al mismo nivel nominal.
Hay cuatro cosas que fijar antes de la primera toma:
import numpy as np
# `synchronized_sweep_signal` y `swept_sine_distortion` importados arriba.x = synchronized_sweep_signal(fs, f1, f2, seconds, amplitude=0.5, fade=0.02)# ... reproduce x, graba y, y sigue grabando hasta que la caída se apague ...res = swept_sine_distortion(y, fs, f1, f2, seconds, n_harmonics=3, amplitude=0.5, fade=0.02)amplitudees la referencia contra la que se calculan el devuelto y todas las razones, así que tiene que ser el nivel realmente reproducido, y el mismo valor tiene que llegar a las dos llamadas: el análisis toma 1.0 por defecto, así que un barrido generado a 0.5 y analizado con el valor por defecto devuelve una ganancia 6 dB baja.fadeaplica un breve enventanado de medio Hann en los dos extremos. Vale 0 por defecto porque el análisis es exacto sobre el barrido sin fundido, pero un barrido sin fundido empieza y acaba en una discontinuidad a plena amplitud que suena como un chasquido a través de un amplificador y un altavoz reales y reparte energía por todo el eje temporal de los armónicos. El mismo valor hay que pasarlo al análisis, o la deconvolución queda desemparejada; 20 ms solo retocan los bordes extremos de la banda.- Recorte. Comprueba todas las etapas, no solo el conversor: cualquier elemento que recorte antes del que está bajo ensayo destruye el sentido de la medición.
- La cola. Graba el barrido más toda su caída, o las prellegadas armónicas se enrollan por la deconvolución circular hasta el final de la respuesta lineal.
Hay dos modos de fallo silenciosos en vez de evidentes. El método supone que el sistema no cambia durante el barrido, así que un ventilador en marcha, una persona que se mueve, una bobina móvil que se calienta o una temperatura de sala que deriva descorrelacionan la parte final del barrido de la inicial y aparecen como un suelo de ruido levantado alrededor de las llegadas armónicas, no como un fallo evidente, que es la razón de que las mediciones largas se promedien en vez de alargarse indefinidamente. Y cualquier suceso impulsivo de la grabación lo reparte la deconvolución por todo el eje temporal y aterriza dentro de las ventanas armónicas, donde se lee como distorsión: un solo chasquido fuerte puede inventarse una THD de varios por ciento, así que repite la medición en vez de intentar recortarlo con una ventana. Por último, el suelo de ruido residual de la deconvolución es el suelo de la curva de THD(f) — una captura con 60 dB de relación señal-ruido no puede mostrar un armónico del 0,05 % por bien colocadas que estén las ventanas —, así que informa del suelo de ruido medido junto a la curva.
Las mesetas planas de baja frecuencia son los niveles de Chebyshev y del polinomio sin memoria, y cada orden se dobla hacia abajo donde su propio producto cruza el postfiltro de 3 kHz, de modo que los codos quedan en 1,5 kHz para y en 1 kHz para , sobre el eje de excitación. Ese es el mismo oráculo que fijan los tests de conformidad.
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom scipy import signal as sp_signalfrom phonometry import swept_sine_distortion, synchronized_sweep_signal
fs, f1, f2, seconds = 48000, 20.0, 6000.0, 4.0a2, a3 = 0.12, 0.08x = synchronized_sweep_signal(fs, f1, f2, seconds)b, a = sp_signal.butter(2, 3000.0, fs=fs) # postfiltro de 3 kHzy = sp_signal.lfilter(b, a, x + a2 * x**2 + a3 * x**3)res = swept_sine_distortion(y, fs, f1, f2, seconds, n_harmonics=3)
h1 = 1.0 + 3.0 * a3 / 4.0 # ganancia de Chebyshevfig, ax = plt.subplots(figsize=(10, 6))ax.loglog(res.thd_frequencies, 100.0 * res.thd, label="THD(f) total")ax.loglog(res.thd_frequencies, 100.0 * res.distortion_ratios[0], ls="--", label="2º armónico d2(f)")ax.loglog(res.thd_frequencies, 100.0 * res.distortion_ratios[1], ls="--", label="3er armónico d3(f)")ax.axhline(100.0 * (a2 / 2.0) / h1, ls=":", label="Asíntota de Chebyshev (a2/2)/H1")ax.axhline(100.0 * (a3 / 4.0) / h1, ls=":", label="Asíntota de Chebyshev (a3/4)/H1")ax.set_xlabel("Frecuencia de excitación [Hz]")ax.set_ylabel("Distorsión respecto al fundamental [%]")ax.legend()plt.show()El oráculo detrás de la implementación es el polinomio sin memoria: excitar
con un barrido unitario debe devolver, por las
identidades de Chebyshev, , (fase ),
(fase ) y . Las
suites de tests y de conformidad fijan los cuatro valores, y la misma THD
medida tono a tono con phonometry.thd coincide al 0,1 %.
Lo que el método existe para producir, sin embargo, no son las razones escalares — un barrido de tonos por pasos también las da — sino el conjunto de funciones de transferencia armónicas. Cada es una respuesta en frecuencia completa sobre su propia banda :
Cada orden es una respuesta, no un número, y aquí están representados frente a
la frecuencia del propio armónico: los tres caen en los mismos 3 kHz, porque el
postfiltro actúa sobre el producto y no sobre la excitación. Las líneas
punteadas son los niveles de Chebyshev. res.plot() dibuja estas magnitudes
junto con el panel de THD(f) de arriba.
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom scipy import signal as sp_signal
# `swept_sine_distortion` y `synchronized_sweep_signal` importados arriba.fs, f1, f2, seconds = 48000, 20.0, 6000.0, 4.0a2, a3 = 0.12, 0.08x = synchronized_sweep_signal(fs, f1, f2, seconds)b, a = sp_signal.butter(2, 3000.0, fs=fs)y = sp_signal.lfilter(b, a, x + a2 * x**2 + a3 * x**3)res = swept_sine_distortion(y, fs, f1, f2, seconds, n_harmonics=3)
for k in range(3): mag = np.abs(np.asarray(res.harmonic_responses[k])) plt.semilogx(res.frequencies, 20 * np.log10(np.maximum(mag, 1e-9)))plt.show()Cómo se lee un dispositivo real. En un altavoz medido la curva tiene una forma que conviene reconocer: distorsión que sube con fuerza por debajo de la resonancia fundamental, donde la excursión crece a la vez que cae la respuesta; un pico local allí donde se está excitando con fuerza una resonancia; y un suelo de una fracción de por ciento por la banda media a excitación moderada. Separar los órdenes es lo que hace diagnóstica la curva: un segundo armónico dominante es asimetría — una bobina móvil descentrada en el entrehierro, una suspensión más rígida en un sentido que en el otro — mientras que un tercero dominante es limitación simétrica, la suspensión o el entrehierro magnético agotándose en los dos extremos, y las dos cosas piden arreglos distintos. Como orden de magnitud, por debajo de un 1 % en la banda media no tiene nada de particular en un radiador directo a niveles de conversación, un 10 % es la marca convencional del límite de excursión que define el extremo grave útil de un altavoz, y cualquier amplificador que llegue al 1 % por debajo del recorte está averiado. Recuerda que la abscisa es la frecuencia de excitación: un rasgo a 100 Hz en la traza de es energía radiada a 200 Hz, que es donde se oirá.
2. El barrido sincronizado (Novak et al. 2015)
Sección titulada «2. El barrido sincronizado (Novak et al. 2015)»El enventanado separa las magnitudes armónicas con cualquier barrido exponencial, pero las fases de solo tienen sentido si retrasar el barrido equivale exactamente a generar su armónico n. Eso solo se cumple para
el barrido sincronizado: el redondeo hace que sea entero, así
que el barrido arranca con fase cero y todas las copias armónicas quedan
alineadas. synchronized_sweep_signal lo genera (la duración queda
ligeramente cuantizada; cuando es entero el barrido también termina
con fase cero), y swept_sine_distortion(..., method="synchronized"), el
método por defecto, deconvoluciona con el espectro en forma cerrada del
filtro inverso,
en lugar de con una FFT de la señal. Además de exacta, la deconvolución analítica extiende la banda útil de cada hasta (Novak et al., Fig. 6): el segundo armónico de un barrido de 6 kHz se mide hasta 12 kHz.
Dos notas prácticas del artículo vienen incorporadas: la media de la
grabación se resta por defecto (remove_dc=True; de lo contrario, un offset de
continua cuela en la respuesta al impulso una copia escalada del filtro
inverso), y la parte no entera de cada llegada se elimina en
el dominio de la frecuencia, de modo que las fases armónicas no arrastran
sesgo sub-muestra residual.
3. Analizar grabaciones con el barrido exponencial (ESS) clásico (method="farina")
Sección titulada «3. Analizar grabaciones con el barrido exponencial (ESS) clásico (method="farina")»Las grabaciones hechas con el barrido sinusoidal exponencial (ESS) simple de
phonometry.sweep_signal (la excitación de ISO 18233 que usa
impulse_response) se analizan con
method="farina": el mismo enventanado sobre el filtro inverso invertido en
el tiempo y compensado en amplitud de Farina (2000). Las magnitudes
armónicas y la THD son correctas (el oráculo de Chebyshev pasa igual), pero
el término de fase -1 del barrido rompe la equivalencia
desplazamiento-armónico, así que las fases de dependen de la
excitación y deben ignorarse; la banda de cada queda además limitada a
por el filtro inverso.
from phonometry import sweep_signal, swept_sine_distortion
x = sweep_signal(fs, f1, f2, seconds) # el ESS de ISO 18233res = swept_sine_distortion(y, fs, f1, f2, seconds, method="farina")res.plot() # los mismos paneles |Hn| + THD(f) que el método sincronizado (necesita matplotlib)El resultado es el mismo SweptSineDistortionResult dibujable que el del
método sincronizado, así que los paneles |Hn| y THD(f) de la figura de la
sección 1 se leen idénticos; entre los dos métodos solo cambian las fases de
los armónicos (y el tope de banda de cada orden). Las dos diferencias se ven
sobre una misma grabación:
La misma grabación, las mismas magnitudes, dos diferencias. La deconvolución
sincronizada mide hasta ; el filtro inverso de Farina lo detiene en
. Y en un dispositivo cuya fase verdadera de es exactamente
en todas las frecuencias (el cúbico sin memoria del oráculo), solo la fase
sincronizada la reproduce, que es la razón de que method="farina" devuelva
fases que hay que descartar en vez de leer.
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as np
# `synchronized_sweep_signal` y `swept_sine_distortion` importados arriba.x = synchronized_sweep_signal(48000, 20.0, 6000.0, 4.0)y = x + 0.12 * x**2 + 0.08 * x**3 # el oráculo sin memoriaactual = len(x) / 48000 # el generador cuantiza Tfor method in ("synchronized", "farina"): res = swept_sine_distortion(y, 48000, 20.0, 6000.0, actual, n_harmonics=3, method=method) plt.semilogx(res.frequencies, np.unwrap(np.angle(np.asarray(res.harmonic_responses[1]))))plt.show()4. Dimensionar el barrido
Sección titulada «4. Dimensionar el barrido»Antes de grabar nada, tres números tienen que casar: la duración del barrido , el número de órdenes armónicos y la frecuencia superior . Las reglas de abajo rigen para los dos métodos.
- La ventana frente a la separación entre llegadas. El par de llegadas más
próximo dista segundos, así que la ventana por orden
(
ir_length, por defecto la mayor potencia de dos que cabe, con tope en 8192 muestras) no debe excederlo. Alarga el barrido o bajan_harmonicsen un sistema reverberante cuya cola necesite una ventana más larga. - El techo de Nyquist. Mantén por debajo de : los productos de distorsión por encima se pliegan en cualquier grabación real y quedan contados entonces en la frecuencia equivocada.
- La referencia de amplitud. El análisis queda referido a la
amplitudede la excitación, así que es la ganancia lineal y la THD queda referida al nivel exactamente como se excitó.
Hecho para el barrido que usa esta página: Hz, kHz y s dan s, así que la separación entre y es s y la ventana por defecto de 8192 muestras (0,17 s a 48 kHz) cabe dentro con holgura. Con y kHz, el techo kHz queda cómodamente por debajo de la frecuencia de Nyquist de 24 kHz.
5. Utilidades de fase: fase mínima, retardo de grupo, exceso de fase
Sección titulada «5. Utilidades de fase: fase mínima, retardo de grupo, exceso de fase»En un sistema causal, estable y de fase mínima, la log-magnitud y la fase
de la respuesta en frecuencia forman un par de transformadas de Hilbert
(Bendat y Piersol, Sec. 13.1.4): la fase queda totalmente determinada por
. Las utilidades de phonometry.signals calculan esa
reconstrucción con el cepstrum real y descomponen cualquier respuesta
medida en su parte invertible y su parte paso todo:
import numpy as npfrom phonometry import ( excess_phase, group_delay, minimum_phase, phase_decomposition,)
H = np.fft.rfft(ir) # respuesta unilateral, DC..Nyquisth_min = minimum_phase(np.abs(H)) # la fase solo desde la magnitudtau_g = group_delay(H, fs) # -(1/2pi) dphi/df, en segundosphi_x = excess_phase(H) # unwrap(arg H) - phi_min
res = phase_decomposition(H, fs) # todo sobre un mismo ejeres.excess_group_delay # la parte paso todo, en sres.plot() # magnitud, fases, retardos de grupoUn ecualizador de campana de +6 dB medido a través de una latencia de procesado de 2,5 ms: la parte de fase mínima lleva solo la pequeña ondulación de fase que un ecualizador podría invertir, el exceso de fase es la rampa pura del retardo, y el retardo de grupo de exceso lee la latencia directamente como una línea plana de 2,5 ms.
En una medición acústica esa parte plana no es latencia, es distancia. El
tiempo de vuelo de altavoz a micrófono es de unos 2,9 ms por metro, así que una
respuesta medida a 1 m lleva un exceso de retardo de grupo de 2,9 ms que no
tiene nada que ver con la electrónica, y quien lo lea como latencia de procesado
intentará compensar un retardo que no existe. Quítalo primero — recorta la
respuesta al impulso hasta su llegada, o resta la distancia conocida —, porque
nada más del exceso de fase se puede interpretar hasta que se haya ido. Lo que
queda tras quitarlo es la parte que importa: un residuo paso todo que ningún
ecualizador puede invertir, producido por un comportamiento genuinamente de fase
no mínima, como una reflexión fuerte que llega después del sonido directo, o un
cruce cuyos centros acústicos no están alineados. Esa es la pregunta de diseño
que de verdad se le hace a phase_decomposition en corrección de altavoces y de
salas: una respuesta que es de fase mínima una vez quitado el retardo se puede
corregir en magnitud y fase a la vez con un solo filtro; una que no lo es, no.
Mostrar el código de esta figura
import matplotlib.pyplot as pltimport numpy as npfrom scipy import signal as sp_signalfrom phonometry import phase_decomposition
fs = 48000.0delay = int(0.0025 * fs) # una latencia de procesado de 2,5 msgain_a = 10.0 ** (6.0 / 40.0) # EQ de campana +6 dB a 1 kHz, Q = 1w0 = 2.0 * np.pi * 1000.0 / fsalpha = np.sin(w0) / 2.0b = np.array([1 + alpha * gain_a, -2 * np.cos(w0), 1 - alpha * gain_a])a = np.array([1 + alpha / gain_a, -2 * np.cos(w0), 1 - alpha / gain_a])imp = np.zeros(16384)imp[delay] = 1.0ir = sp_signal.lfilter(b / a[0], a / a[0], imp)
res = phase_decomposition(np.fft.rfft(ir), fs)res.plot(language="es") # |H|, las tres fases y los retardos de grupoplt.show()La descomposición separa lo que un ecualizador puede invertir (, fase mínima, causal y causalmente invertible) de lo que nunca podrá (, el exceso paso todo: latencia más ceros de fase no mínima como las reflexiones). El exceso de fase es para una respuesta de fase mínima y exactamente para una latencia pura ; su retardo de grupo lee la latencia en segundos.
Contrato numérico, fijado por los tests: sobre un biquad estrictamente de
fase mínima muestreado en una malla densa, la fase reconstruida coincide
con la real a mejor de rad; el retardo de grupo de un paso todo de
primer orden coincide con la forma cerrada a
muestras; el exceso de retardo de grupo de un biquad retardado
devuelve el retardo a muestras. Las precauciones están documentadas
con la API: la respuesta debe muestrearse uniformemente de DC a Nyquist
inclusive (la disposición rfft) y con densidad suficiente para que la
respuesta al impulso subyacente quepa en el registro implícito; los ceros
de magnitud (bordes de un paso banda, fondos de notch) se acotan y no son
representables por un sistema de fase mínima; el factor oversample
(interpolación trigonométrica de la magnitud antes del cepstrum) mitiga el
aliasing cepstral que los ceros casi sobre el círculo causan en mallas
gruesas.
Relación con otras herramientas
Sección titulada «Relación con otras herramientas»impulse_responserecupera la RI lineal de la misma grabación de barrido y simplemente descarta los productos de distorsión a tiempos negativos;swept_sine_distortiones la herramienta que los lee.thd/harmonic_analysismiden la distorsión de un tono estacionario a una frecuencia; el separador por barrido devuelve las mismas razones como función continua de la frecuencia, con una sola medición. La rapidez es la menor de las razones para preferirlo. Deconvolucionar un barrido de duración concentra toda la excitación en un solo impulso, de modo que la relación señal-ruido del resultado supera a la de la grabación en bruto en aproximadamente del producto tiempo-ancho de banda, que es como un barrido mide un dispositivo silencioso en una sala en la que un tono por pasos no podría trabajar. Y la separación es en el tiempo, no en frecuencia: no se aplica ningún filtro de muesca ni hay que declarar armónico ningún bin, que es lo que mantiene con sentido la THD(f) allí donde los armónicos propios de un dispositivo caen fuera de su banda de paso. La contrapartida es que una cola reverberante que dure más que la separación contamina el orden vecino, que es justo lo que las reglas de dimensionado de la sección 4 existen para evitar.- Las utilidades de fase operan sobre cualquier respuesta unilateral
compleja: una
rfftde una RI medida, o laresponsede una estimación contransfer_functionsobre una malla uniforme. Solominimum_phaseacepta además un array de magnitud a secas, p. ej. una magnitud objetivo de diseño para ecualización.
Qué cubre esta guía
Sección titulada «Qué cubre esta guía»Cubierto
La deconvolución de barrido exponencial de Farina (preprint AES 5093, 2000) y el barrido sincronizado coherente en fase de Novak, Lotton y Simon (2015): la separación armónica, el espectro en forma cerrada del filtro inverso y la corrección de sesgo sub-muestra, implementadas por
swept_sine_distortionysynchronized_sweep_signal. Las condiciones de adquisición de las que depende el resultado: el nivel de excitación y su referenciaamplitude, elfadeque tiene que llegar a las dos llamadas, los requisitos de recorte y de cola, los modos de fallo por variación en el tiempo y por ruido impulsivo, y las reglas de dimensionado que relacionan , y . Las utilidades de faseminimum_phase,group_delay,excess_phaseyphase_decompositionimplementan la relación de transformada de Hilbert de la sección 13.1.4 de Bendat y Piersol mediante el cepstrum real.No cubierto
La distorsión de intermodulación y la intermodulación dinámica (IEC 60268-3, apartados 14.12.7-10) se miden a partir de tonos estacionarios en la página de electroacústica, no con un barrido; esta página separa solo los órdenes armónicos. La monografía de medición con barridos de Müller y Massarani se cita como contexto de práctica (fundidos, técnica del filtro inverso), no como una fórmula concreta implementada. Con
method="farina", las fases armónicas de se devuelven pero deben ignorarse: el barrido exponencial simple rompe la equivalencia desplazamiento-armónico de la que depende el método sincronizado. Aquí tampoco se comprueba ninguna de las condiciones de adquisición de la sección 1.1: las funciones toman los arrays que se les dan, así que el nivel de excitación, la ausencia de recorte y la longitud de la cola quedan a cargo de quien opera, que además tiene que informar de ellos.
Véase también
Sección titulada «Véase también»- Electroacústica: el conjunto de con tono estacionario, THD+N e intermodulación de IEC 60268-3 que este barrido complementa, y el punto de funcionamiento en el que están todos definidos.
- Caracterización de altavoces (IEC 60268-5): la curva de THD(f) que se produce aquí es el panel de distorsión de ese informe de características nominales.
- Acústica de salas:
impulse_response, que es la mitad lineal de la misma grabación. - Referencia de la API:
electroacoustics.swept_sineysignals.phase.
Referencias
Sección titulada «Referencias»- Bendat, J. S. y Piersol, A. G. (2010). Random data: Analysis and measurement procedures (4.ª ed.). Wiley. https://doi.org/10.1002/9781118032428Sección 13.1.4: la relación de transformada de Hilbert entre log-magnitud y fase detrás de la reconstrucción de fase mínima. ISBN 978-0-470-24877-5.
- Farina, A. (2000). Simultaneous measurement of impulse response and distortion with a swept-sine technique (108th AES Convention, Paris, preprint 5093). La deconvolución del barrido exponencial y el empaquetado L·ln(n) de cada orden de distorsión por delante de la respuesta al impulso lineal.
- Müller, S. y Massarani, P. (2001). Transfer-function measurement with sweeps. Journal of the Audio Engineering Society, 49(6), 443-471. La monografía de medición con barridos detrás de las notas de práctica: filtros inversos, fundidos y el rechazo de la distorsión en la respuesta al impulso lineal.
- Novak, A., Lotton, P. y Simon, L. (2015). Synchronized swept-sine: Theory, application and implementation. Journal of the Audio Engineering Society, 63(10), 786-798. https://doi.org/10.17743/jaes.2015.0071La condición de sincronización que convierte las fases armónicas en propiedades del sistema, el espectro en forma cerrada del filtro inverso usado en la deconvolución y la separación con precisión sub-muestra.