Difference between revisions of "TL Tool - Sound Transmission Loss Measurement"

From OROS Wiki
Jump to navigation Jump to search
(New page: complete documentation for TL Tool (Sound Transmission Loss measurement, ASTM E2611))
 
(Documentation complete TL Tool — mesure perte par transmission acoustique ASTM E2611)
Line 3: Line 3:
[[category:Acoustics]]
[[category:Acoustics]]
{{#seo:
{{#seo:
|title=TL Tool — Sound Transmission Loss Measurement Software | OROS
|title=TL Tool — Mesure de la perte par transmission acoustique | OROS
|keywords=sound transmission loss, TL, ASTM E2611, impedance tube, 4 microphone, transfer matrix, absorption coefficient, NVGate, acoustic measurement
|keywords=perte par transmission, TL, ASTM E2611, tube d'impedance, 4 microphones, matrice de transfert, coefficient d'absorption, NVGate, mesure acoustique
|description=Python software for measuring Sound Transmission Loss (TL) and absorption coefficient using the 4-microphone impedance tube method (ASTM E2611 / ISO 10534-2). Integrates with OROS NVGate for live acquisition and result injection.
|description=Logiciel OROS de mesure de la Perte par Transmission acoustique (TL) et du coefficient d'absorption (alpha) par la methode des 4 microphones en tube d'impedance (ASTM E2611 / ISO 10534-2). Interface graphique integree a NVGate.
}}
}}


__TOC__
__TOC__


= TL Tool — Sound Transmission Loss Measurement =
= TL Tool — Mesure de la Perte par Transmission acoustique =


The '''TL Tool''' is a Python application developed by OROS for measuring '''Sound Transmission Loss (TL)''' and the '''sound absorption coefficient (α)''' using an impedance tube with 2 or 4 microphones.
Le '''TL Tool''' est un logiciel OROS permettant de mesurer la '''Perte par Transmission acoustique (TL)''' et le '''coefficient d'absorption (α)''' d'un materiau en tube d'impedance.


It integrates natively with '''[[NVGate]]''' via the NVDrive TCP protocol for live acquisition and automatic injection of results into NVGate windows.
Il s'interface directement avec '''[[NVGate]]''' pour l'acquisition en temps reel et l'affichage automatique des resultats dans les fenetres NVGate.


== Standards ==
Livraison : application autonome (.exe), aucune installation supplementaire requise.


{| class="wikitable" style="width:60%;"
== Normes appliquees ==
! Standard !! Method !! Application
|-
| '''ASTM E2611''' || Transfer Matrix — 4 microphones || Sound Transmission Loss
|-
| '''ISO 10534-2''' / ASTM E1050 || Two-microphone || Absorption coefficient α
|-
| '''ISO 9613-1''' || Speed of sound formula || Air properties (c, ρ)
|-
| '''ISO 11654''' || Octave averaging, α_w class || Weighted absorption rating
|}


== Architecture ==
{| class="wikitable" style="width:70%;"
 
! Norme !! Methode !! Application
The software is organized into 5 modules:
 
{| class="wikitable" style="width:100%;"
! File !! Role
|-
| <code>tl_tool.py</code> || Main application — tkinter GUI + matplotlib (~5000 lines)
|-
|-
| <code>tl_physics.py</code> || Pure physics engine — wave decomposition, ASTM E2611, DBM model
| '''ASTM E2611''' || Matrice de transfert — 4 microphones || Perte par transmission TL
|-
|-
| <code>tl_nvgate.py</code> || NVDrive/NVGate interface — spectrum reading, result injection
| '''ISO 10534-2''' / ASTM E1050 || Deux microphones || Coefficient d'absorption α
|-
|-
| <code>tl_acquisition.py</code> || NVGate acquisition — channel config, FFT, run/stop, FRF
| '''ISO 9613-1''' || Formule vitesse du son || Proprietes de l'air (c, ρ)
|-
|-
| <code>config_tl.json</code> || Persistent configuration (microphone positions, tube geometry, temperature…)
| '''ISO 11654''' || Moyennage octave, classe α_w || Indice d'absorption pondere
|}
|}


=== Dependency Stack ===
== Montage experimental ==
 
<pre>
tl_tool.py  (GUI)
    ├── tl_physics.py      (physics: pure numpy)
    ├── tl_nvgate.py      (NVDrive TCP injection)
    ├── tl_acquisition.py  (NVGate live acquisition)
    └── pynvdrive          (OROS TCP library — NVGate V18+)
</pre>
 
== Installation ==


=== Requirements ===
=== Schema du tube ===


* Python 3.8 (required by NVGate environment)
Le tube utilise 4 microphones encastres a des positions fixes le long de l'axe :
* NVGate V18 or later
* pynvdrive library (included in NVDrive Toolkit)
 
=== Python Dependencies ===


<pre>
<pre>
pip install numpy matplotlib
  [HP]  x1    x2        x3    x4  [Echantillon]
  ||||---o-----o----------o-----o----[=============]
  Source  \__ cote source _/  \___ cote transmission ___/
</pre>
</pre>


The <code>pynvdrive</code> library is loaded automatically from:
* '''HP''' = Haut-parleur (source acoustique)
<pre>
* '''x1, x2''' = Microphones cote source
C:\OROS\Gemini\NVDrive\Toolkit NVdrive\Python\pynvdrive
* '''x3, x4''' = Microphones cote transmission
</pre>
* '''Echantillon''' = Materiau a caracteriser (insere entre x2 et x3)


=== Launch ===
=== Positions par defaut ===


<pre>
{| class="wikitable" style="width:60%;"
python tl_tool.py
! Parametre !! Valeur par defaut
</pre>
 
== Measurement Setup ==
 
=== Impedance Tube Geometry ===
 
The tube uses 4 flush-mounted microphones at fixed positions along the axis:
 
<pre>
  [SP]  x1    x2        x3    x4  [Sample]
  ||||---o-----o----------o-----o----[=======]
  Source  \__Source side_/  \__Trans_side__/
</pre>
 
* '''SP''' = Sound source (loudspeaker)
* '''x1, x2''' = Upstream microphone positions (source side)
* '''x3, x4''' = Downstream microphone positions (transmission side)
* '''Sample''' = Material under test (inserted between x2 and x3)
 
Default positions (configurable in Tube Setup tab):
 
{| class="wikitable"
! Parameter !! Default value
|-
|-
| x1 || 50 mm
| x1 || 50 mm
Line 113: Line 62:
| x4 || 450 mm
| x4 || 450 mm
|-
|-
| Tube diameter D || 100 mm
| Diametre du tube D || 100 mm
|-
|-
| Temperature || 20 °C
| Temperature || 20 °C
|-
|-
| Pressure || 1013.25 hPa
| Pression || 1013,25 hPa
|}
|}


=== Valid Frequency Range ===
Toutes ces valeurs sont configurables dans l'onglet '''Configuration du tube'''.


The usable frequency range of the tube is determined automatically from the geometry and air properties:
=== Plage de frequences valide ===


* '''f_min''' — limited by microphone spacing (at least λ/10 between mics)
Le logiciel calcule et affiche automatiquement la plage [f_min, f_max] utilisable en fonction de la geometrie du tube et des conditions acoustiques. Les valeurs hors plage sont exclues des resultats.
* '''f_max''' — limited by tube diameter (plane wave propagation: D < 0.586·λ)


The software computes and displays these limits in real time. Measurements outside this range are masked with NaN and excluded from results.
== Interface graphique ==


== GUI Overview ==
L'interface est organisee en onglets :
 
The interface is organized into tabs:


{| class="wikitable" style="width:100%;"
{| class="wikitable" style="width:100%;"
! Tab !! Content
! Onglet !! Contenu
|-
|-
| '''Material''' || Material title, measurement notes, mode selection (2-mic / 4-mic)
| '''Materiau''' || Nom du materiau, notes, selection du mode (2 mic / 4 mic)
|-
|-
| '''Tube Setup''' || Microphone positions, tube diameter, temperature, pressure
| '''Configuration du tube''' || Positions des microphones, diametre, temperature, pression
|-
|-
| '''Acquisition''' || NVGate channel configuration, FFT settings, run/stop, phase calibration
| '''Acquisition''' || Configuration des canaux NVGate, reglages FFT, lancement mesure, calibration de phase
|-
|-
| '''TL Result''' || Transmission Loss plots (fine band + octave bands)
| '''Resultat TL''' || Courbes de perte par transmission (bande fine + bandes d'octave)
|-
|-
| '''Absorption''' || Absorption coefficient α plots + ISO 11654 rating (α_w, NRC, SAA)
| '''Absorption''' || Courbe du coefficient d'absorption + indice ISO 11654 (α_w, NRC, SAA)
|}
|}


=== Top Controls ===
=== Commandes principales (barre superieure) ===


* '''Calculate''' — Run TL/absorption computation from current data
* '''Calculer''' — Lance le calcul TL/absorption a partir des donnees acquisises
* '''Fine band''' checkbox — Show/hide fine-frequency-resolution plots
* Case '''Bande fine''' — Affiche ou masque les courbes haute resolution
* '''1/N octave''' selector — Choose octave resolution (1/3, 1/6, 1/12, 1/24)
* Selecteur '''1/N octave''' — Choix de la resolution (1/3, 1/6, 1/12, 1/24)
* '''Send to NVGate''' — Inject octave result into NVGate display window
* '''Envoyer vers NVGate''' — Injecte le resultat en octave dans une fenetre NVGate
* '''Send fine band''' — Inject fine-band result into NVGate
* '''Envoyer bande fine''' — Injecte le resultat haute resolution dans NVGate
* '''Export CSV''' — Save results to a CSV file
* '''Exporter CSV''' — Sauvegarde les resultats dans un fichier CSV


== Measurement Modes ==
== Modes de mesure ==


=== 4-Microphone Mode (Recommended) — ASTM E2611 ===
=== Mode 4 microphones (recommande) — ASTM E2611 ===


Uses all 4 microphones (CH1–CH4). Two-load method (recommended) or single-load.
Utilise les 4 canaux (CH1 a CH4). Deux variantes disponibles :


'''Two-load method''' (ASTM E2611 §8):
'''Methode deux charges''' (recommandee, ASTM E2611 §8) :
# Measure with '''Load 1''' (anechoic termination)
# Mesure avec la '''charge 1''' (terminaison anechoique)
# Measure with '''Load 2''' (rigid or different termination)
# Mesure avec la '''charge 2''' (bouchon rigide ou autre terminaison)
# The software constructs the full '''transfer matrix''' [T] of the sample
# Le logiciel construit la matrice de transfert complete [T] de l'echantillon
# TL is derived from T₁₂ and the tube impedances
# La TL est extraite de cette matrice


'''Single-load method''':
'''Methode charge unique''' :
# One measurement only (anechoic termination assumed)
# Une seule mesure (terminaison anechoique supposee)
# Less accurate — use only when Load 2 cannot be measured
# Moins precise — a utiliser uniquement si la charge 2 n'est pas realisable


=== 2-Microphone Mode — ISO 10534-2 / ASTM E1050 ===
=== Mode 2 microphones — ISO 10534-2 / ASTM E1050 ===


Uses CH1 and CH2 only (source-side microphones). Measures:
Utilise uniquement CH1 et CH2 (microphones cote source). Mesure :
* Reflection coefficient R(f)
* Coefficient de reflexion R(f)
* Absorption coefficient α(f) = 1 − |R|²
* Coefficient d'absorption α(f) = 1 − |R|²


=== Method Selection ===
=== Selection du mode ===


In the '''Material''' tab, select:
Dans l'onglet '''Materiau''' :
* '''4-mic''' → Two-load TL + absorption
* '''4 mic''' → TL + absorption (deux charges ou charge unique)
* '''2-mic''' → Absorption only (no TL)
* '''2 mic''' → Absorption uniquement (pas de TL)


In the '''Acquisition''' tab (4-mic mode), select:
== Protocole de mesure ==
* '''Two-load''' → recommended, requires two successive measurements
* '''Single-load''' → one measurement, anechoic termination assumed


== Acquisition Workflow ==
=== Prerequis ===


=== Prerequisites ===
# NVGate ouvert et connecte a l'analyseur OROS
# 4 microphones branches sur CH1 a CH4 (couplage ICP, sensibilite ~10 mV/Pa)
# Le haut-parleur alimente par la sortie OUT1 de l'analyseur (bruit blanc ou rose)


# NVGate must be open and connected (NVDrive active)
=== Etape 1 — Configuration des canaux ===
# 4 microphones connected to CH1–CH4 (ICP coupling, sensitivity ~10 mV/Pa)
# Random noise generator enabled on OUT1 (drives the loudspeaker)


=== Step-by-Step ===
Dans l'onglet '''Acquisition''' :
# Verifier le couplage (ICP recommande), le label et la sensibilite de chaque canal
# Cliquer '''Configurer NVGate''' → active les canaux, prepare les resultats FRF


'''Step 1 — Configure Channels'''
=== Etape 2 — Calibration de phase (recommandee) ===


In the Acquisition tab:
Compense les ecarts de phase entre microphones :
# Set coupling (ICP recommended), label, and sensitivity for each channel
# Placer les micros 1 et 2 au meme emplacement du tube
# Click '''Configure NVGate''' → enables channels, sets up FFT, registers FRF results
# Cliquer '''Calibrer phase CH1/CH2'''
# Echanger physiquement les microphones
# Cliquer '''Mesurer (permutes)'''
# Repeter pour les paires CH1/CH3 et CH1/CH4
# Sauvegarder la calibration


'''Step 2 — Phase Calibration (optional but recommended)'''
La correction est appliquee automatiquement lors du calcul.


Compensates for microphone phase mismatch:
=== Etape 3 — Mesure charge 1 ===
# Place Mic 1 and Mic 2 at the same tube port
# Click '''Calibrate Phase CH1/CH2'''
# Physically swap the microphones
# Click '''Measure (swapped)'''
# Repeat for CH1/CH3 and CH1/CH4 pairs
# Save calibration to <code>.npz</code> file


The calibration correction H_c is applied automatically during TL computation.
# Inserer l'echantillon avec la terminaison anechoique
# Cliquer '''Lancer mesure Charge 1'''
# Attendre la fin de la mesure (NVGate s'arrete automatiquement)


'''Step 3 — Load 1 Measurement'''
=== Etape 4 — Mesure charge 2 (mode deux charges) ===


# Insert the sample in the tube with anechoic termination
# Changer la terminaison du tube (bouchon rigide)
# Click '''Run Load 1'''
# Cliquer '''Lancer mesure Charge 2'''
# Wait for the measurement to complete (NVGate stops automatically)
# Attendre la fin de la mesure
# Data is displayed in the FRF preview pane


'''Step 4 — Load 2 Measurement''' (two-load mode only)
=== Etape 5 — Calcul ===


# Change the tube termination (rigid cap or different absorber)
Cliquer '''Calculer'''. Le logiciel :
# Click '''Run Load 2'''
# Recupere les FRF et le spectre de reference depuis NVGate
# Wait for completion
# Applique la calibration de phase
# Calcule la TL fine bande et le coefficient d'absorption
# Synthetise les bandes d'octave
# Affiche les resultats dans les onglets TL et Absorption


'''Step 5 — Calculate'''
== Resultats ==


Click the '''Calculate''' button. The software:
=== Onglet Resultat TL ===
# Reads H21, H31, H41 (FRF) and S11T (auto-spectrum)
# Applies phase calibration Hc
# Computes wave number k from air properties (ISO 9613-1)
# Decomposes incident/reflected waves (ASTM E2611 §6)
# Constructs transfer matrix [T] from two loads (ASTM E2611 §8)
# Derives TL_fine(f) and α_fine(f)
# Synthesizes octave bands


== Physics Engine ==
* '''Courbe bande fine''' (panneau gauche) — TL en dB en fonction de la frequence, plage valide surlignee
* '''Courbe octave''' (panneau droit) — TL par bande de 1/N d'octave
* Titre du materiau affiche dans le titre des graphes
* Plage valide [f_min, f_max] indiquee dans la barre de statut


=== Air Properties (ISO 9613-1) ===
=== Onglet Absorption ===


<pre>
* '''Courbe bande fine''' (panneau gauche, optionnel) — α(f) entre 0 et 1
c  = 20.05 × √(T_K)          [m/s]
* '''Courbe octave''' (panneau droit) — α par bande de 1/3 d'octave
ρ  = 1.2929 × (273.15/T_K) × (P/1013.25)  [kg/m³]
* '''Tableau de classification ISO 11654''' :
</pre>
** α_w (coefficient d'absorption pondere)
 
** Classe d'absorption (A a E)
Where T_K = temperature in Kelvin, P = pressure in hPa.
 
=== Wave Decomposition ===
 
For a plane wave field between two microphones at positions x₁, x₂:
 
<pre>
P(x) = A·e^(+jkx) + B·e^(-jkx)
 
[A]  1      [e^(-jkxâ‚‚)  -e^(-jkx₁)] [P(x₁)]
[B] = ────── [-e^(+jkxâ‚‚)  e^(+jkx₁)] [P(xâ‚‚)]
      det
</pre>
 
A singularity occurs when k·(x₂−x₁) = n·π (half-wavelength resonance) — these frequencies are masked with NaN automatically.
 
=== Transfer Matrix (ASTM E2611 §8) ===
 
The sample transfer matrix [T] is reconstructed from two independent measurements (loads):
 
<pre>
[p_down]  [T₁₁  T₁₂] [p_up  ]
[u_down] = [T₂₁  Tâ‚‚â‚‚] [u_up  ]
</pre>
 
Transmission Loss:
 
<pre>
TL = 20·log₁₀(|T₁₂| / (2·S_tube·ρ·c)) − 10·log₁₀(S_tube/(ρ·c))
  = 20·log₁₀(|T₁₂ / (2·ρ·c)|)    [simplified, S=1]
</pre>
 
=== Octave Synthesis ===
 
{| class="wikitable"
! Quantity !! Averaging method !! Reason
|-
| TL [dB] || Energy: −10·log₁₀(mean(10^(−TL/10))) || ASTM E2611 — power averaging in linear domain
|-
| α [0–1] || Arithmetic: mean(α) || Linear quantity, not in dB
|}
 
=== Delany-Bazley-Miki Model ===
 
The DBM model predicts TL and α from the '''flow resistivity''' σ [Pa·s/m²] of a porous absorber:
 
<pre>
Z_c = ρ·c · [1 + 0.0571·(ρ·f/σ)^(-0.754) + j·0.0870·(ρ·f/σ)^(-0.732)]
k_c = (ω/c) · [1 + 0.0978·(ρ·f/σ)^(-0.700) − j·0.1890·(ρ·f/σ)^(-0.595)]
</pre>
 
The model fitting tool ('''Fit DBM''') extracts σ by minimizing the RMS error between measured and predicted TL/α.
 
== NVGate Integration ==
 
=== TCP Injection ===
 
Results are injected into NVGate via TCP (pynvdrive). The tool creates a '''NVD NTH OCTAVE''' result (process 183) for octave bands, and a '''FFT''' result (process 177) for fine band.
 
{| class="wikitable"
! Result type !! NVGate process !! Module !! Unit
|-
| Octave TL (1/3 oct) || 183 — NVD NTH OCTAVE || 498 || Pa (converted from dB)
|-
| Octave TL (1/12 oct) || 183 — NVD NTH OCTAVE || 498 || Pa (converted from dB)
|-
| Fine band TL || 177 — FFT || 498 || dB
|}
 
=== Octave XREG Encoding ===
 
The <code>n_octave</code> field in the XREG block must match the resolution:
 
{| class="wikitable"
! Resolution !! n_octave value
|-
| 1/1 oct || 0
|-
| 1/3 oct || 1
|-
| 1/6 oct || 1
|-
| 1/12 oct || 2
|-
| 1/24 oct || 3
|}
 
'''Important:''' The injected octave series must be '''complete''' (all standard center frequencies from 1 Hz to 20 kHz, with 0 dB for out-of-range bands). NVGate rejects partial series.
 
=== Pa ↔ dB Conversion ===
 
Octave values are stored in NVGate as '''acoustic pressure [Pa]''' using the SPL reference:
<pre>
Pa = 20×10⁻⁶ × 10^(TL_dB / 20)
</pre>
 
=== NVGate Generator Setup ===
 
To drive the loudspeaker, the random noise generator must be activated in NVGate:
 
# Enable generator: IDN <code>7.249.2</code> = 1
# Route to OUT1: IDN <code>1.72.100</code> = <code>'007.249.000'</code> (enum string)
# Enable OUT1: IDN <code>1.72.2</code> = 1
 
'''Note:''' The generator must be activated '''before''' setting the source routing — the enum value <code>007.249.000</code> only appears when the generator is active.
 
== Results & Export ==
 
=== TL Result Tab ===
 
* '''Fine band plot''' (left panel) — TL in dB vs frequency, valid range highlighted
* '''Octave band plot''' (right panel) — TL per 1/N octave band
* Material title displayed in plot title
* Valid frequency range [f_min, f_max] shown in status bar
 
=== Absorption Tab ===
 
* '''Fine band plot''' (left panel, optional) — α(f) from 0 to 1
* '''Octave band plot''' (right panel) — α per 1/3 octave band
* '''ISO 11654 rating table''':
** α_w (weighted absorption coefficient)
** Absorption class (A–E)
** SAA (Sound Absorption Average)
** SAA (Sound Absorption Average)
** NRC (Noise Reduction Coefficient)
** NRC (Noise Reduction Coefficient)
** α values at 250, 500, 1000, 2000, 4000 Hz
** Valeurs de α aux frequences normalisees : 250, 500, 1000, 2000, 4000 Hz


=== CSV Export ===
=== Export CSV ===


Click '''Export CSV''' in the bottom-left corner. The exported file contains:
Cliquer '''Exporter CSV''' en bas a gauche. Le fichier genere contient :


'''4-mic mode:'''
'''Mode 4 microphones :'''
<pre>
<pre>
Frequency_Hz,TL_dB,Alpha
Frequency_Hz,TL_dB,Alpha
Line 386: Line 208:
</pre>
</pre>


'''2-mic mode:'''
'''Mode 2 microphones :'''
<pre>
<pre>
Frequency_Hz,Alpha
Frequency_Hz,Alpha
Line 393: Line 215:
</pre>
</pre>


The file header includes: material title, measurement date, tube geometry, air properties, and valid frequency range.
L'en-tete du fichier inclut : nom du materiau, date de mesure, geometrie du tube, proprietes de l'air, plage de frequences valide.


== Configuration File ==
=== Affichage dans NVGate ===


Settings are stored in <code>config_tl.json</code> next to the executable. Key parameters:
Les resultats sont injectes automatiquement dans NVGate apres le calcul :
* Un graphe octave (1/3, 1/6, 1/12 ou 1/24 selon le reglage) apparait dans la fenetre NVGate
* Un graphe bande fine (optionnel) est egalement disponible
* Les fenetres sont nommees automatiquement par resolution pour eviter les conflits


{| class="wikitable" style="width:70%;"
== Modele Delany-Bazley-Miki ==
! Key !! Default !! Description
|-
| <code>x1</code>–<code>x4</code> || 50/150/350/450 mm || Microphone positions from source
|-
| <code>D_tube</code> || 100 mm || Internal tube diameter
|-
| <code>temperature</code> || 20 °C || Air temperature
|-
| <code>pressure_hpa</code> || 1013.25 hPa || Atmospheric pressure
|-
| <code>octave_fraction</code> || 12 || Default octave resolution (3/6/12/24)
|-
| <code>tl_method</code> || two_load || Calculation method (two_load / single_load)
|-
| <code>ref_channel</code> || 1 || NVGate reference channel
|-
| <code>calibration_file</code> || "" || Path to phase calibration .npz file
|}


== Offline Analysis ==
Le logiciel inclut un outil de modelisation pour les materiaux absorbants poreux.


In addition to live NVGate acquisition, the tool supports offline analysis from archived data:
A partir de la '''resistivite au passage de l'air''' σ [Pa·s/m²], il predit :
* Le coefficient d'absorption theorique α(f)
* La perte par transmission theorique TL(f)


* '''.oros.npz''' files — OROS archive format (internally NumPy .npz)
L'outil '''Ajuster DBM''' extrait automatiquement σ en minimisant l'ecart entre la mesure et le modele.
* '''Input Basket''' — load pre-measured FRF/spectrum files
* '''Demo mode''' — synthetic data for testing without hardware


To load archived data: use the '''Load Data''' button in the Acquisition tab.
== Analyse hors ligne ==


== Tube Merge (Large + Small Tube) ==
En plus de l'acquisition directe depuis NVGate, le logiciel peut analyser des donnees archivees :
* Fichiers '''.oros''' — format d'archive OROS
* Chargement via le bouton '''Charger donnees''' dans l'onglet Acquisition


For materials requiring a wide frequency range, measurements from two tubes (large diameter = low frequencies, small diameter = high frequencies) can be merged:
== Fusion de tubes (grand + petit diametre) ==


<pre>
Pour couvrir une large plage de frequences, les mesures issues de deux tubes de diametres differents (grand diametre pour les basses frequences, petit pour les hautes) peuvent etre fusionnees en un seul spectre.
python _test_merge.py  # verification script
</pre>


The <code>merge_tubes(f1, y1, f2, y2, f_blend_lo, f_blend_hi)</code> function in <code>tl_physics.py</code> applies a cosine cross-fade in the blend zone [f_blend_lo, f_blend_hi].
La zone de raccord est definie par [f_blend_lo, f_blend_hi] et le logiciel applique un fondu croise progressif.


== Testing ==
== Configuration ==


The software includes a complete test suite with 5 independent test scripts:
Les reglages sont conserves automatiquement dans le fichier <code>config_tl.json</code> au meme endroit que le logiciel. Principaux parametres :


{| class="wikitable" style="width:100%;"
{| class="wikitable" style="width:70%;"
! Script !! Tests !! Coverage
! Parametre !! Defaut !! Description
|-
| x1 a x4 || 50/150/350/450 mm || Positions des microphones depuis la source
|-
| Diametre || 100 mm || Diametre interne du tube
|-
|-
| <code>test_tl_full.py</code> || 53 || Physics engine, ASTM E2611 formulas, CSV export, demo mode
| Temperature || 20 °C || Temperature de l'air
|-
|-
| <code>test_nvgate_live.py</code> || 54 || NVGate integration (requires connected hardware), injection, FRF reading
| Pression || 1013,25 hPa || Pression atmospherique
|-
|-
| <code>_test_merge.py</code> || 35 || Tube merge algorithm, real measurement files
| Resolution octave || 1/12 || Resolution par defaut (1/3, 1/6, 1/12, 1/24)
|-
|-
| <code>test_dbm_merge.py</code> || 18 || DBM model, fitting algorithm
| Methode TL || Deux charges || Methode de calcul (deux charges / charge unique)
|-
|-
| <code>test_phase_calib.py</code> || 10 || Phase calibration round-trip
| Calibration de phase || (aucune) || Chemin vers le fichier de calibration
|}
|}


All 170 tests pass (0 failures) on the release build.
== Depannage ==
 
Run all tests:
<pre>
cd "C:\OROS\Gemini\Transmission loss"
python test_tl_full.py
python test_nvgate_live.py
python _test_merge.py
python test_dbm_merge.py
python test_phase_calib.py
</pre>
 
== Troubleshooting ==


{| class="wikitable" style="width:100%;"
{| class="wikitable" style="width:100%;"
! Symptom !! Cause !! Fix
! Symptome !! Cause probable !! Solution
|-
| NVGate not connected || pynvdrive not found or NVGate closed || Check NVGate is open; verify pynvdrive path
|-
|-
| "Missing FRF data: ['H21', 'H31', 'H41']" || Configure NVGate not clicked, or channels not active || Click '''Configure NVGate''', then re-run measurement
| NVGate non connecte || Analyseur eteint ou cable debranche || Verifier la connexion Ethernet entre le PC et l'analyseur
|-
|-
| TL values all NaN || f_min > f_max (wrong tube geometry) || Check microphone positions x1–x4 and tube diameter
| Donnees FRF manquantes || Canaux non configures || Cliquer '''Configurer NVGate''' avant de lancer la mesure
|-
|-
| Negative TL values || Phase calibration missing or incorrect || Re-calibrate phase (Acquisition tab)
| Valeurs TL toutes nulles || Geometrie du tube incorrecte || Verifier les positions x1 a x4 et le diametre
|-
|-
| NVGate shows wrong octave resolution || Old NVGate channel reused || Different window names are assigned per resolution automatically
| TL negatif || Calibration de phase absente ou incorrecte || Recalibrer la phase dans l'onglet Acquisition
|-
|-
| Fine band X axis too large in NVGate || Fixed in current release || Upgrade to latest version
| Plage de frequences trop etroite || Espacement insuffisant entre microphones || Augmenter l'ecartement x2-x1 ou x4-x3
|-
| CSV export error (division by zero) || Running in 2-mic mode with old version || Fixed in current release
|-
| Stop error 2014001000 || NVGate already stopped || Normal — treated as success
|}
|}


== Key Constants (NVGate V18) ==
== Voir aussi ==
 
<pre>
PROCESS_AVG_SPECTRUM = 2      # Auto-power spectrum (averaged)
PROCESS_FRF_H1      = 31    # FRF estimator H1
PROCESS_NVD_OCT      = 183    # NVD NTH OCTAVE (octave injection)


TCP_MODULE          = 498    # TCP result module
* [[NVGate]] — Logiciel d'analyse OROS
FFT_MODULE          = 10    # FFT analysis module
* [[NVGate_FFT|Analyse FFT dans NVGate]]
 
* [[NVGate_Octave_Analyzer|Analyse en octave]]
IDN_FFT_FMAX        = '10.363.79'
* [[FFT_Spectrum_Analyzer_Multipurpose|Analyseur FFT OROS]]
IDN_FFT_AVERAGES    = '10.361.81'
IDN_FFT_AVG_MODE    = '10.361.80'  # 1 = linear averaging
IDN_GEN_ENABLE      = '7.249.2'
IDN_OUT1_ENABLE      = '1.72.2'
IDN_OUT1_SOURCE      = '1.72.100'
GEN_SRC_NOISE        = '007.249.000' # Random noise 1
</pre>


== References ==
== References ==
Line 514: Line 295:
* ASTM E2611 — ''Standard Test Method for Normal Incidence Determination of Porous Material Acoustical Properties Based on the Transfer Matrix Method''
* ASTM E2611 — ''Standard Test Method for Normal Incidence Determination of Porous Material Acoustical Properties Based on the Transfer Matrix Method''
* ISO 10534-2 — ''Acoustics — Determination of sound absorption coefficient and impedance in impedance tubes''
* ISO 10534-2 — ''Acoustics — Determination of sound absorption coefficient and impedance in impedance tubes''
* ISO 9613-1 — ''Acoustics — Attenuation of sound during propagation outdoors — Calculation of the absorption of sound by the atmosphere''
* ISO 9613-1 — ''Acoustics — Attenuation of sound during propagation outdoors''
* ISO 11654 — ''Acoustics — Sound absorbers for use in buildings — Rating of sound absorption''
* ISO 11654 — ''Acoustics — Sound absorbers for use in buildings — Rating of sound absorption''
* Delany & Bazley (1970), Miki (1990) — Empirical models for porous absorber impedance
* [https://www.bksv.com/media/doc/bv0059.pdf Bruel & Kjaer BV0059 — Measuring Sound Absorption Coefficient]
* [https://www.bksv.com/media/doc/bv0059.pdf Brüel & Kjær BV0059 — Measuring Sound Absorption Coefficient]
 
== See Also ==
 
* [[NVGate]] — OROS analysis software
* [[NVGate_FFT|FFT Analysis in NVGate]]
* [[NVGate_Octave_Analyzer|Octave Analysis]]
* [[FFT_Spectrum_Analyzer_Multipurpose|OROS FFT Analyzer Hardware]]

Revision as of 15:27, 22 May 2026


TL Tool — Mesure de la Perte par Transmission acoustique

Le TL Tool est un logiciel OROS permettant de mesurer la Perte par Transmission acoustique (TL) et le coefficient d'absorption (α) d'un materiau en tube d'impedance.

Il s'interface directement avec NVGate pour l'acquisition en temps reel et l'affichage automatique des resultats dans les fenetres NVGate.

Livraison : application autonome (.exe), aucune installation supplementaire requise.

Normes appliquees

Norme Methode Application
ASTM E2611 Matrice de transfert — 4 microphones Perte par transmission TL
ISO 10534-2 / ASTM E1050 Deux microphones Coefficient d'absorption α
ISO 9613-1 Formule vitesse du son Proprietes de l'air (c, ρ)
ISO 11654 Moyennage octave, classe α_w Indice d'absorption pondere

Montage experimental

Schema du tube

Le tube utilise 4 microphones encastres a des positions fixes le long de l'axe :

  [HP]   x1    x2         x3    x4   [Echantillon]
  ||||---o-----o----------o-----o----[=============]
  Source  \__ cote source _/  \___ cote transmission ___/
  • HP = Haut-parleur (source acoustique)
  • x1, x2 = Microphones cote source
  • x3, x4 = Microphones cote transmission
  • Echantillon = Materiau a caracteriser (insere entre x2 et x3)

Positions par defaut

Parametre Valeur par defaut
x1 50 mm
x2 150 mm
x3 350 mm
x4 450 mm
Diametre du tube D 100 mm
Temperature 20 °C
Pression 1013,25 hPa

Toutes ces valeurs sont configurables dans l'onglet Configuration du tube.

Plage de frequences valide

Le logiciel calcule et affiche automatiquement la plage [f_min, f_max] utilisable en fonction de la geometrie du tube et des conditions acoustiques. Les valeurs hors plage sont exclues des resultats.

Interface graphique

L'interface est organisee en onglets :

Onglet Contenu
Materiau Nom du materiau, notes, selection du mode (2 mic / 4 mic)
Configuration du tube Positions des microphones, diametre, temperature, pression
Acquisition Configuration des canaux NVGate, reglages FFT, lancement mesure, calibration de phase
Resultat TL Courbes de perte par transmission (bande fine + bandes d'octave)
Absorption Courbe du coefficient d'absorption + indice ISO 11654 (α_w, NRC, SAA)

Commandes principales (barre superieure)

  • Calculer — Lance le calcul TL/absorption a partir des donnees acquisises
  • Case Bande fine — Affiche ou masque les courbes haute resolution
  • Selecteur 1/N octave — Choix de la resolution (1/3, 1/6, 1/12, 1/24)
  • Envoyer vers NVGate — Injecte le resultat en octave dans une fenetre NVGate
  • Envoyer bande fine — Injecte le resultat haute resolution dans NVGate
  • Exporter CSV — Sauvegarde les resultats dans un fichier CSV

Modes de mesure

Mode 4 microphones (recommande) — ASTM E2611

Utilise les 4 canaux (CH1 a CH4). Deux variantes disponibles :

Methode deux charges (recommandee, ASTM E2611 §8) :

  1. Mesure avec la charge 1 (terminaison anechoique)
  2. Mesure avec la charge 2 (bouchon rigide ou autre terminaison)
  3. Le logiciel construit la matrice de transfert complete [T] de l'echantillon
  4. La TL est extraite de cette matrice

Methode charge unique :

  1. Une seule mesure (terminaison anechoique supposee)
  2. Moins precise — a utiliser uniquement si la charge 2 n'est pas realisable

Mode 2 microphones — ISO 10534-2 / ASTM E1050

Utilise uniquement CH1 et CH2 (microphones cote source). Mesure :

  • Coefficient de reflexion R(f)
  • Coefficient d'absorption α(f) = 1 − |R|²

Selection du mode

Dans l'onglet Materiau :

  • 4 mic → TL + absorption (deux charges ou charge unique)
  • 2 mic → Absorption uniquement (pas de TL)

Protocole de mesure

Prerequis

  1. NVGate ouvert et connecte a l'analyseur OROS
  2. 4 microphones branches sur CH1 a CH4 (couplage ICP, sensibilite ~10 mV/Pa)
  3. Le haut-parleur alimente par la sortie OUT1 de l'analyseur (bruit blanc ou rose)

Etape 1 — Configuration des canaux

Dans l'onglet Acquisition :

  1. Verifier le couplage (ICP recommande), le label et la sensibilite de chaque canal
  2. Cliquer Configurer NVGate → active les canaux, prepare les resultats FRF

Etape 2 — Calibration de phase (recommandee)

Compense les ecarts de phase entre microphones :

  1. Placer les micros 1 et 2 au meme emplacement du tube
  2. Cliquer Calibrer phase CH1/CH2
  3. Echanger physiquement les microphones
  4. Cliquer Mesurer (permutes)
  5. Repeter pour les paires CH1/CH3 et CH1/CH4
  6. Sauvegarder la calibration

La correction est appliquee automatiquement lors du calcul.

Etape 3 — Mesure charge 1

  1. Inserer l'echantillon avec la terminaison anechoique
  2. Cliquer Lancer mesure Charge 1
  3. Attendre la fin de la mesure (NVGate s'arrete automatiquement)

Etape 4 — Mesure charge 2 (mode deux charges)

  1. Changer la terminaison du tube (bouchon rigide)
  2. Cliquer Lancer mesure Charge 2
  3. Attendre la fin de la mesure

Etape 5 — Calcul

Cliquer Calculer. Le logiciel :

  1. Recupere les FRF et le spectre de reference depuis NVGate
  2. Applique la calibration de phase
  3. Calcule la TL fine bande et le coefficient d'absorption
  4. Synthetise les bandes d'octave
  5. Affiche les resultats dans les onglets TL et Absorption

Resultats

Onglet Resultat TL

  • Courbe bande fine (panneau gauche) — TL en dB en fonction de la frequence, plage valide surlignee
  • Courbe octave (panneau droit) — TL par bande de 1/N d'octave
  • Titre du materiau affiche dans le titre des graphes
  • Plage valide [f_min, f_max] indiquee dans la barre de statut

Onglet Absorption

  • Courbe bande fine (panneau gauche, optionnel) — α(f) entre 0 et 1
  • Courbe octave (panneau droit) — α par bande de 1/3 d'octave
  • Tableau de classification ISO 11654 :
    • α_w (coefficient d'absorption pondere)
    • Classe d'absorption (A a E)
    • SAA (Sound Absorption Average)
    • NRC (Noise Reduction Coefficient)
    • Valeurs de α aux frequences normalisees : 250, 500, 1000, 2000, 4000 Hz

Export CSV

Cliquer Exporter CSV en bas a gauche. Le fichier genere contient :

Mode 4 microphones :

Frequency_Hz,TL_dB,Alpha
100.0000,18.4230,0.12345
...

Mode 2 microphones :

Frequency_Hz,Alpha
100.0000,0.45230
...

L'en-tete du fichier inclut : nom du materiau, date de mesure, geometrie du tube, proprietes de l'air, plage de frequences valide.

Affichage dans NVGate

Les resultats sont injectes automatiquement dans NVGate apres le calcul :

  • Un graphe octave (1/3, 1/6, 1/12 ou 1/24 selon le reglage) apparait dans la fenetre NVGate
  • Un graphe bande fine (optionnel) est egalement disponible
  • Les fenetres sont nommees automatiquement par resolution pour eviter les conflits

Modele Delany-Bazley-Miki

Le logiciel inclut un outil de modelisation pour les materiaux absorbants poreux.

A partir de la resistivite au passage de l'air σ [Pa·s/m²], il predit :

  • Le coefficient d'absorption theorique α(f)
  • La perte par transmission theorique TL(f)

L'outil Ajuster DBM extrait automatiquement σ en minimisant l'ecart entre la mesure et le modele.

Analyse hors ligne

En plus de l'acquisition directe depuis NVGate, le logiciel peut analyser des donnees archivees :

  • Fichiers .oros — format d'archive OROS
  • Chargement via le bouton Charger donnees dans l'onglet Acquisition

Fusion de tubes (grand + petit diametre)

Pour couvrir une large plage de frequences, les mesures issues de deux tubes de diametres differents (grand diametre pour les basses frequences, petit pour les hautes) peuvent etre fusionnees en un seul spectre.

La zone de raccord est definie par [f_blend_lo, f_blend_hi] et le logiciel applique un fondu croise progressif.

Configuration

Les reglages sont conserves automatiquement dans le fichier config_tl.json au meme endroit que le logiciel. Principaux parametres :

Parametre Defaut Description
x1 a x4 50/150/350/450 mm Positions des microphones depuis la source
Diametre 100 mm Diametre interne du tube
Temperature 20 °C Temperature de l'air
Pression 1013,25 hPa Pression atmospherique
Resolution octave 1/12 Resolution par defaut (1/3, 1/6, 1/12, 1/24)
Methode TL Deux charges Methode de calcul (deux charges / charge unique)
Calibration de phase (aucune) Chemin vers le fichier de calibration

Depannage

Symptome Cause probable Solution
NVGate non connecte Analyseur eteint ou cable debranche Verifier la connexion Ethernet entre le PC et l'analyseur
Donnees FRF manquantes Canaux non configures Cliquer Configurer NVGate avant de lancer la mesure
Valeurs TL toutes nulles Geometrie du tube incorrecte Verifier les positions x1 a x4 et le diametre
TL negatif Calibration de phase absente ou incorrecte Recalibrer la phase dans l'onglet Acquisition
Plage de frequences trop etroite Espacement insuffisant entre microphones Augmenter l'ecartement x2-x1 ou x4-x3

Voir aussi

References

  • ASTM E2611 — Standard Test Method for Normal Incidence Determination of Porous Material Acoustical Properties Based on the Transfer Matrix Method
  • ISO 10534-2 — Acoustics — Determination of sound absorption coefficient and impedance in impedance tubes
  • ISO 9613-1 — Acoustics — Attenuation of sound during propagation outdoors
  • ISO 11654 — Acoustics — Sound absorbers for use in buildings — Rating of sound absorption
  • Bruel & Kjaer BV0059 — Measuring Sound Absorption Coefficient