{
  "schema_version": "1.5",
  "frequency_bands_hz": [
    125,
    250,
    500,
    1000,
    2000,
    4000,
    8000
  ],
  "_notes": "absorption per ISO 3382-1 / Beranek / Cox & D'Antonio. scattering coefficient per ISO 17497-1 / Cox & D'Antonio (2nd ed.). transmission_loss_db per Hopkins (Sound Insulation), Sharp (1973), Cavanaugh & Wilkes when measured (tl_estimated: false); mass-law estimate TL = 20·log10(m·f) − 47 dB clamped [5, 60] otherwise (tl_estimated: true). Draft engine (Sabine/Hopkins-Stryker/STIPA) ignores scattering; precision ray tracer (Phase B+) uses it for Lambertian vs specular bounce decisions. Transmission loss is consumed by spl-calculator.js when a direct-path segment crosses a wall, per js/physics/wall-path.js. Schema 1.5 (Phase 5 Step 3, 2026-05-23): adds `model` (mass-law | formula | catalogue) on every row, optional `tl_third_oct` (18-band 1/3-oct 100–5000 Hz per ISO 717-1), optional `assembly` block (REQUIRED iff model='formula'; consumed by js/physics/wall-tl-double-leaf.js), and PROMOTED `reference_thickness_m` + `assembly_type` from js/labs/walllab/wall-catalogue.js (UI-layer redundant copies stay until Phase 5 Step 8 retires them). Sam (qa-engineer) signed off 2026-05-23.",
  "materials": [
    {
      "id": "concrete-painted",
      "name": "Painted concrete",
      "model": "mass-law",
      "applicableTo": ["floor", "wall", "ceiling"],
      "absorption": [
        0.01,
        0.01,
        0.02,
        0.02,
        0.02,
        0.03,
        0.03
      ],
      "scattering": [
        0.05,
        0.05,
        0.05,
        0.1,
        0.1,
        0.15,
        0.15
      ],
      "transmission_loss_db": [
        39,
        41,
        47,
        53,
        58,
        62,
        65
      ],
      "surface_density_kg_m2": 345,
      "reference_thickness_m": 0.15,
      "assembly_type": "single_leaf",
      "tl_estimated": false,
      "_tl_source": "Hopkins, Sound Insulation ch.7 + CRC Handbook of Architectural Acoustics table 3.7 — 150 mm dense reinforced concrete (2300 kg/m³). Paint film does not measurably affect TL.",
      "ground_absorption_G": 0,
      "_ground_G_source": "ISO 9613-2 §7.3.1 table 3 — hard ground (concrete / asphalt) G=0. Used for ground reflection on diffracted paths (Tier 1a commit h). Single-value MVP; per-band G is P17 deferred."
    },
    {
      "id": "carpet-heavy",
      "name": "Heavy carpet on concrete (no underlay)",
      "model": "mass-law",
      "applicableTo": ["floor"],
      "absorption": [
        0.02,
        0.06,
        0.14,
        0.37,
        0.6,
        0.65,
        0.65
      ],
      "scattering": [
        0.05,
        0.1,
        0.15,
        0.2,
        0.3,
        0.4,
        0.4
      ],
      "transmission_loss_db": [
        7,
        13,
        19,
        25,
        31,
        37,
        43
      ],
      "surface_density_kg_m2": 4,
      "tl_estimated": true,
      "_source": "Beranek, Noise & Vibration Control Engineering 2nd ed. table 8.1 (carpet, heavy, glued direct to slab)",
      "_tl_note": "Zone-coverage / floor treatment. TL value is a mass-law estimate; only relevant if this material is somehow used as the boundary between two enclosures (rare)."
    },
    {
      "id": "carpet-heavy-underlay",
      "name": "Heavy carpet on foam underlay",
      "model": "mass-law",
      "applicableTo": ["floor"],
      "absorption": [
        0.08,
        0.24,
        0.57,
        0.69,
        0.71,
        0.73,
        0.7
      ],
      "scattering": [
        0.05,
        0.1,
        0.15,
        0.2,
        0.3,
        0.4,
        0.4
      ],
      "transmission_loss_db": [
        9,
        15,
        21,
        27,
        33,
        39,
        45
      ],
      "surface_density_kg_m2": 5,
      "tl_estimated": true,
      "_source": "Cox & D'Antonio, Acoustic Absorbers and Diffusers 2nd ed. table A.1 (thick pile carpet on foam underlay) — typical residential carpet, much higher absorption above 250 Hz than the bare-glue case",
      "_tl_note": "Zone-coverage / floor treatment. TL value is a mass-law estimate; only relevant if this material is somehow used as the boundary between two enclosures (rare)."
    },
    {
      "id": "bass-trap-broadband-corner",
      "name": "Broadband corner bass trap (200mm rockwool)",
      "model": "mass-law",
      "applicableTo": ["wall", "ceiling"],
      "absorption": [
        0.85,
        0.95,
        0.95,
        0.85,
        0.75,
        0.7,
        0.65
      ],
      "scattering": [
        0.1,
        0.15,
        0.2,
        0.25,
        0.3,
        0.35,
        0.35
      ],
      "transmission_loss_db": [
        11,
        17,
        23,
        29,
        35,
        41,
        47
      ],
      "surface_density_kg_m2": 8,
      "tl_estimated": true,
      "_source": "Cox & D'Antonio 2nd ed. table A.4 (corner-mounted 200mm porous, 50mm gap to wall) + Everest & Pohlmann Master Handbook 5th ed. fig 18.7 — broadband, doesn't need tuning",
      "_tl_note": "Surface treatment over a structural substrate; the substrate dominates TL in practice. Estimate retained for schema completeness."
    },
    {
      "id": "bass-trap-membrane-80hz",
      "name": "Membrane absorber tuned 80 Hz",
      "model": "mass-law",
      "applicableTo": ["wall", "ceiling"],
      "absorption": [
        0.55,
        0.7,
        0.3,
        0.15,
        0.12,
        0.1,
        0.08
      ],
      "scattering": [
        0.05,
        0.05,
        0.1,
        0.15,
        0.15,
        0.2,
        0.2
      ],
      "transmission_loss_db": [
        9,
        15,
        21,
        27,
        33,
        39,
        45
      ],
      "surface_density_kg_m2": 5,
      "tl_estimated": true,
      "_source": "Cox & D'Antonio 2nd ed. §8.4.2 + table 8.3 — narrow-band 5kg/m² panel + 100mm damped cavity, peak 80–100 Hz, secondary peak 250 Hz typical",
      "_tl_note": "Surface treatment over a structural substrate; the substrate dominates TL. The 5 kg/m² membrane itself has resonance-tuned behaviour that mass-law does not capture; treat estimate as order-of-magnitude only."
    },
    {
      "id": "bass-trap-helmholtz-125hz",
      "name": "Perforated panel Helmholtz 125 Hz",
      "model": "mass-law",
      "applicableTo": ["wall", "ceiling"],
      "absorption": [
        0.8,
        0.45,
        0.2,
        0.12,
        0.08,
        0.06,
        0.05
      ],
      "scattering": [
        0.1,
        0.1,
        0.15,
        0.2,
        0.2,
        0.25,
        0.25
      ],
      "transmission_loss_db": [
        15,
        21,
        27,
        33,
        39,
        45,
        51
      ],
      "surface_density_kg_m2": 12,
      "tl_estimated": true,
      "_source": "Cox & D'Antonio 2nd ed. §7.3 + ISO 354 archives — 12mm perforated panel 8% open area, 100mm damped cavity, narrow-band 80–160 Hz peak",
      "_tl_note": "Perforations explicitly transmit at the Helmholtz resonance — actual TL is several dB lower than mass-law in the trap's tuned band."
    },
    {
      "id": "ceiling-cloud-200mm",
      "name": "Ceiling cloud 200mm rockwool, 100mm gap",
      "model": "mass-law",
      "applicableTo": ["ceiling"],
      "absorption": [
        0.65,
        0.95,
        1,
        1,
        1,
        0.95,
        0.9
      ],
      "scattering": [
        0.1,
        0.15,
        0.2,
        0.25,
        0.3,
        0.35,
        0.35
      ],
      "transmission_loss_db": [
        11,
        17,
        23,
        29,
        35,
        41,
        47
      ],
      "surface_density_kg_m2": 8,
      "tl_estimated": true,
      "_source": "Beranek 2nd ed. table 7-3 (200mm porous absorber suspended) — broadband, near-perfect above 250 Hz, useful in bands carpet covers poorly",
      "_tl_note": "Suspended cloud — typically there is a structural slab above; that slab dominates the floor-to-floor TL. Estimate retained for schema completeness."
    },
    {
      "id": "diffuser-qrd",
      "name": "QRD quadratic-residue diffuser (200mm wells)",
      "model": "mass-law",
      "applicableTo": ["wall", "ceiling"],
      "absorption": [
        0.1,
        0.15,
        0.2,
        0.2,
        0.18,
        0.15,
        0.12
      ],
      "scattering": [
        0.3,
        0.5,
        0.85,
        0.95,
        0.9,
        0.8,
        0.7
      ],
      "transmission_loss_db": [
        21,
        27,
        33,
        39,
        45,
        51,
        57
      ],
      "surface_density_kg_m2": 25,
      "tl_estimated": true,
      "_source": "Cox & D'Antonio 2nd ed. §9.3 + ISO 17497-1 — Schroeder QRD, prime 13, well depth 200mm, Lambertian above f0 = c/(2N·d_max). Low absorption, high scattering — preserves energy but redirects it diffusely",
      "_tl_note": "Surface treatment over a structural wall; the substrate dominates TL."
    },
    {
      "id": "acoustic-tile",
      "name": "Acoustic ceiling tile 20mm",
      "model": "mass-law",
      "applicableTo": ["ceiling"],
      "absorption": [
        0.2,
        0.4,
        0.55,
        0.65,
        0.7,
        0.7,
        0.7
      ],
      "scattering": [
        0.1,
        0.1,
        0.1,
        0.15,
        0.15,
        0.2,
        0.2
      ],
      "transmission_loss_db": [
        9,
        15,
        21,
        27,
        33,
        39,
        45
      ],
      "surface_density_kg_m2": 5,
      "tl_estimated": true,
      "_tl_note": "Suspended ceiling tile — between the tile and the slab is a return-air plenum that adds 5–10 dB; the slab itself dominates. The tile alone is mass-law from 5 kg/m²."
    },
    {
      "id": "gypsum-board",
      "name": "Gypsum board 13mm on studs",
      "model": "mass-law",
      "applicableTo": ["wall", "ceiling"],
      "absorption": [
        0.29,
        0.1,
        0.05,
        0.04,
        0.07,
        0.09,
        0.1
      ],
      "scattering": [
        0.02,
        0.02,
        0.02,
        0.05,
        0.05,
        0.05,
        0.05
      ],
      "transmission_loss_db": [
        15,
        21,
        28,
        33,
        33,
        28,
        32
      ],
      "surface_density_kg_m2": 10,
      "reference_thickness_m": 0.013,
      "assembly_type": "double_leaf",
      "tl_estimated": false,
      "_tl_source": "Cavanaugh & Wilkes, Architectural Acoustics 2nd ed. table 24-6 — single 13 mm gypsum on 64 mm steel studs at 400 mm o.c., one layer each side (STC ≈ 35). The 4 kHz coincidence dip is real and well-documented."
    },
    {
      "id": "glass-window",
      "name": "Glass window 6mm",
      "model": "mass-law",
      "applicableTo": ["window"],
      "absorption": [
        0.35,
        0.25,
        0.18,
        0.12,
        0.07,
        0.04,
        0.04
      ],
      "scattering": [
        0.02,
        0.02,
        0.02,
        0.02,
        0.02,
        0.02,
        0.02
      ],
      "transmission_loss_db": [
        22,
        25,
        28,
        32,
        28,
        35,
        40
      ],
      "surface_density_kg_m2": 15,
      "reference_thickness_m": 0.006,
      "assembly_type": "single_leaf",
      "tl_estimated": false,
      "_tl_source": "Sharp 1973 + Cavanaugh & Wilkes table 24-9 — 6 mm float glass (STC ≈ 31). The 2 kHz coincidence dip is the structural plate resonance of the pane."
    },
    {
      "id": "wood-floor",
      "name": "Wood floor on joists",
      "model": "mass-law",
      "applicableTo": ["floor"],
      "absorption": [
        0.15,
        0.11,
        0.1,
        0.07,
        0.06,
        0.07,
        0.07
      ],
      "scattering": [
        0.1,
        0.1,
        0.1,
        0.15,
        0.15,
        0.2,
        0.2
      ],
      "transmission_loss_db": [
        18,
        22,
        25,
        28,
        32,
        32,
        32
      ],
      "surface_density_kg_m2": 22,
      "reference_thickness_m": 0.019,
      "assembly_type": "composite",
      "tl_estimated": false,
      "_tl_source": "Beranek, Noise & Vibration Control Engineering 2nd ed. table 11.1 — 19 mm T&G hardwood on 50 × 200 joists at 400 mm o.c., no insulation (IIC ≈ 25, STC ≈ 28). Floor-ceiling assembly between storeys."
    },
    {
      "id": "metal-deck-acoustic",
      "name": "Perforated metal deck w/ 50mm mineral wool (arena ceiling)",
      "model": "mass-law",
      "applicableTo": ["ceiling"],
      "absorption": [
        0.35,
        0.65,
        0.8,
        0.7,
        0.65,
        0.6,
        0.55
      ],
      "scattering": [
        0.2,
        0.3,
        0.4,
        0.5,
        0.5,
        0.5,
        0.5
      ],
      "transmission_loss_db": [
        15,
        21,
        27,
        33,
        39,
        45,
        51
      ],
      "surface_density_kg_m2": 12,
      "tl_estimated": true,
      "_tl_note": "Perforations transmit directly; estimate is the bonded mineral-wool + sheet metal mass. Actual TL of a perforated deck is several dB lower at speech bands than mass-law suggests."
    },
    {
      "id": "perforated-panel-fabric",
      "name": "Fabric-wrapped fiberglass wall panel 50mm",
      "model": "mass-law",
      "applicableTo": ["wall", "ceiling"],
      "absorption": [
        0.17,
        0.55,
        0.85,
        0.95,
        0.93,
        0.88,
        0.85
      ],
      "scattering": [
        0.1,
        0.15,
        0.15,
        0.2,
        0.2,
        0.25,
        0.25
      ],
      "transmission_loss_db": [
        9,
        15,
        21,
        27,
        33,
        39,
        45
      ],
      "surface_density_kg_m2": 6,
      "tl_estimated": true,
      "_tl_note": "Surface treatment over a structural wall — substrate dominates TL. Panel mass alone is order-of-magnitude only."
    },
    {
      "id": "arena-wall-mixed",
      "name": "Arena wall — 20% perforated panel / 80% gypsum (typical coverage)",
      "model": "mass-law",
      "applicableTo": ["wall"],
      "absorption": [
        0.27,
        0.19,
        0.21,
        0.22,
        0.24,
        0.25,
        0.25
      ],
      "scattering": [
        0.1,
        0.15,
        0.2,
        0.25,
        0.25,
        0.3,
        0.3
      ],
      "transmission_loss_db": [
        13,
        19,
        25,
        31,
        37,
        43,
        49
      ],
      "surface_density_kg_m2": 9,
      "tl_estimated": true,
      "_tl_note": "Area-weighted mass-law composite of 20% perforated panel (6 kg/m²) + 80% single-leaf gypsum (10 kg/m²)."
    },
    {
      "id": "upholstered-seat-empty",
      "name": "Upholstered seat — empty (Beranek, per m²)",
      "model": "mass-law",
      "applicableTo": [],
      "absorption": [
        0.35,
        0.45,
        0.57,
        0.61,
        0.59,
        0.55,
        0.5
      ],
      "scattering": [
        0.4,
        0.55,
        0.65,
        0.7,
        0.75,
        0.8,
        0.8
      ],
      "transmission_loss_db": [
        5,
        9,
        14,
        20,
        26,
        32,
        38
      ],
      "surface_density_kg_m2": 3,
      "tl_estimated": true,
      "_tl_note": "Zone-coverage material (rows of seats); TL only relevant if somehow used as a structural boundary, which is non-physical."
    },
    {
      "id": "audience-seated",
      "name": "Upholstered seat — occupied (Beranek, per m²)",
      "model": "mass-law",
      "applicableTo": [],
      "absorption": [
        0.6,
        0.74,
        0.88,
        0.96,
        0.93,
        0.85,
        0.8
      ],
      "scattering": [
        0.4,
        0.6,
        0.7,
        0.8,
        0.85,
        0.85,
        0.8
      ],
      "transmission_loss_db": [
        33,
        39,
        45,
        51,
        57,
        60,
        60
      ],
      "surface_density_kg_m2": 100,
      "tl_estimated": true,
      "_tl_note": "Zone-coverage material (rows of occupied seats); TL only relevant if somehow used as a structural boundary, which is non-physical. Mass = ~75 kg per person averaged over seat footprint."
    },
    {
      "id": "led-glass",
      "name": "LED video wall panel (flat glass + steel chassis)",
      "model": "mass-law",
      "applicableTo": ["wall"],
      "absorption": [
        0.18,
        0.06,
        0.04,
        0.03,
        0.02,
        0.02,
        0.02
      ],
      "scattering": [
        0.05,
        0.05,
        0.05,
        0.05,
        0.05,
        0.05,
        0.05
      ],
      "transmission_loss_db": [
        24,
        30,
        36,
        42,
        48,
        54,
        60
      ],
      "surface_density_kg_m2": 35,
      "reference_thickness_m": 0.01,
      "assembly_type": "composite",
      "tl_estimated": true,
      "_tl_note": "Mass-law estimate from glass face + steel chassis mass. Actual TL varies with panel mounting (truss vs solid backing) and inter-panel gaskets; treat as ±5 dB."
    },
    {
      "id": "plaster-smooth",
      "name": "Smooth painted plaster on solid backing (premium mall soffit)",
      "model": "mass-law",
      "applicableTo": ["wall", "ceiling"],
      "absorption": [
        0.013,
        0.015,
        0.02,
        0.03,
        0.04,
        0.05,
        0.05
      ],
      "scattering": [
        0.05,
        0.05,
        0.05,
        0.08,
        0.1,
        0.12,
        0.12
      ],
      "transmission_loss_db": [
        18,
        24,
        30,
        36,
        42,
        48,
        54
      ],
      "surface_density_kg_m2": 18,
      "reference_thickness_m": 0.013,
      "assembly_type": "single_leaf",
      "tl_estimated": true,
      "_tl_note": "Plaster skim over a solid substrate (concrete or block); if used directly as a wall material the value is the plaster alone — the substrate (when present) dominates."
    },
    {
      "id": "open-air",
      "name": "Open wall (no boundary)",
      "model": "mass-law",
      "applicableTo": ["wall", "ceiling"],
      "absorption": [
        1,
        1,
        1,
        1,
        1,
        1,
        1
      ],
      "scattering": [
        0.5,
        0.5,
        0.5,
        0.5,
        0.5,
        0.5,
        0.5
      ],
      "transmission_loss_db": [
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ],
      "surface_density_kg_m2": 0,
      "tl_estimated": false,
      "_tl_source": "Explicit free-air transmission — used by wall-path.js when a path geometrically passes through a door/window opening or any wall slot tagged 'open-air'."
    },
    {
      "id": "door-solid-wood",
      "name": "Solid wood door",
      "model": "mass-law",
      "applicableTo": ["door"],
      "absorption": [
        0.14,
        0.1,
        0.06,
        0.08,
        0.1,
        0.1,
        0.1
      ],
      "scattering": [
        0.05,
        0.05,
        0.05,
        0.1,
        0.1,
        0.15,
        0.15
      ],
      "transmission_loss_db": [
        17,
        21,
        25,
        25,
        28,
        32,
        36
      ],
      "surface_density_kg_m2": 32,
      "reference_thickness_m": 0.045,
      "assembly_type": "composite",
      "tl_estimated": false,
      "_tl_source": "Sharp 1973 + Beranek table 11-3 — 45 mm solid hardwood door, well-sealed perimeter (STC ≈ 27). The 1 kHz plateau is the diffraction-around-door-edge floor that perimeter leakage cannot beat."
    },
    {
      "id": "door-hollow-core",
      "name": "Hollow core door",
      "model": "mass-law",
      "applicableTo": ["door"],
      "absorption": [
        0.3,
        0.2,
        0.14,
        0.1,
        0.08,
        0.05,
        0.05
      ],
      "scattering": [
        0.05,
        0.05,
        0.05,
        0.1,
        0.1,
        0.15,
        0.15
      ],
      "transmission_loss_db": [
        10,
        13,
        16,
        18,
        20,
        21,
        22
      ],
      "surface_density_kg_m2": 10,
      "reference_thickness_m": 0.045,
      "assembly_type": "composite",
      "tl_estimated": false,
      "_tl_source": "Cavanaugh & Wilkes table 24-12 — 35 mm hollow-core door with paper honeycomb core (STC ≈ 19). Mass-law plateaus above 2 kHz because the thin face panels go through coincidence."
    },
    {
      "id": "door-glass-toughened",
      "name": "Glass door 10mm toughened (aluminium frame)",
      "model": "mass-law",
      "applicableTo": ["door"],
      "absorption": [
        0.18,
        0.12,
        0.08,
        0.05,
        0.04,
        0.03,
        0.03
      ],
      "scattering": [
        0.05,
        0.05,
        0.05,
        0.05,
        0.05,
        0.05,
        0.05
      ],
      "transmission_loss_db": [
        24,
        27,
        31,
        35,
        31,
        38,
        42
      ],
      "surface_density_kg_m2": 25,
      "reference_thickness_m": 0.01,
      "assembly_type": "composite",
      "tl_estimated": false,
      "_tl_source": "Cavanaugh & Wilkes, Architectural Acoustics 2nd ed. table 24-9 — 10 mm monolithic float/toughened glass (STC ≈ 34). The 2 kHz dip is the plate-coincidence resonance, shifted DOWN from the 6 mm pane's ~3 kHz because the thicker plate is stiffer. Aluminium frame + bottom seal add the high-band plateau; a single swing-door leaf, NOT a glazed wall panel."
    },
    {
      "id": "door-steel-insulated",
      "name": "Steel door 44mm insulated (gasketed)",
      "model": "mass-law",
      "applicableTo": ["door"],
      "absorption": [
        0.1,
        0.08,
        0.06,
        0.05,
        0.05,
        0.05,
        0.05
      ],
      "scattering": [
        0.05,
        0.05,
        0.05,
        0.1,
        0.1,
        0.15,
        0.15
      ],
      "transmission_loss_db": [
        22,
        27,
        31,
        33,
        34,
        35,
        36
      ],
      "surface_density_kg_m2": 28,
      "reference_thickness_m": 0.044,
      "assembly_type": "composite",
      "tl_estimated": false,
      "_tl_source": "Cavanaugh & Wilkes table 24-12 — 44 mm hollow steel door, mineral-wool core, perimeter gaskets + drop seal (STC ≈ 33). The plateau above 1 kHz is the perimeter-leak / edge-diffraction floor that gasket quality, not mass, sets. Commercial / back-of-house / MEP-room leaf."
    },
    {
      "id": "door-acoustic-stc45",
      "name": "Acoustic-rated door STC 45 (sealed assembly)",
      "model": "mass-law",
      "applicableTo": ["door"],
      "absorption": [
        0.1,
        0.08,
        0.06,
        0.05,
        0.05,
        0.05,
        0.05
      ],
      "scattering": [
        0.05,
        0.05,
        0.05,
        0.1,
        0.1,
        0.15,
        0.15
      ],
      "transmission_loss_db": [
        32,
        38,
        43,
        46,
        47,
        48,
        49
      ],
      "surface_density_kg_m2": 45,
      "reference_thickness_m": 0.054,
      "assembly_type": "composite",
      "tl_estimated": false,
      "_tl_source": "NRC-CNRC door TL archive + Cavanaugh & Wilkes table 24-12 — proprietary STC-45 acoustic door: dense composite leaf (~45 kg/m²) with full perimeter compression seals, drop seal, and rebated stop (laboratory Rw ≈ 45). Field DnT,w is typically 5–10 dB lower due to frame/wall flanking (ISO 12354) — this row is the lab leaf only. Studio / plant-room / control-room spec."
    },
    {
      "id": "window-double-glazed-igu",
      "name": "Double glazing IGU 4-12-4 (thermal unit)",
      "model": "mass-law",
      "applicableTo": ["window"],
      "absorption": [
        0.3,
        0.2,
        0.15,
        0.1,
        0.06,
        0.04,
        0.04
      ],
      "scattering": [
        0.02,
        0.02,
        0.02,
        0.02,
        0.02,
        0.02,
        0.02
      ],
      "transmission_loss_db": [
        25,
        22,
        29,
        33,
        29,
        37,
        41
      ],
      "surface_density_kg_m2": 20,
      "reference_thickness_m": 0.02,
      "assembly_type": "double_leaf",
      "tl_estimated": false,
      "_tl_source": "Tadeu & Mateus (2001) J. Sound Vib. 240(5) + Cavanaugh & Wilkes table 24-9 — sealed IGU, 4 mm / 12 mm air / 4 mm (STC ≈ 29). The 250 Hz DIP is the mass-air-mass resonance (f₀ ≈ 276 Hz for a 12 mm gap, Sharp 1973), so a thermal IGU is acoustically NO better — and at 250 Hz slightly worse — than a single 6 mm pane. A thermal product, not an acoustic one; cavity must be ≥ 50 mm to push f₀ below the speech band."
    },
    {
      "id": "window-laminated-acoustic",
      "name": "Laminated acoustic glazing 6.4mm (PVB)",
      "model": "mass-law",
      "applicableTo": ["window"],
      "absorption": [
        0.32,
        0.22,
        0.16,
        0.11,
        0.07,
        0.04,
        0.04
      ],
      "scattering": [
        0.02,
        0.02,
        0.02,
        0.02,
        0.02,
        0.02,
        0.02
      ],
      "transmission_loss_db": [
        23,
        26,
        30,
        34,
        35,
        38,
        42
      ],
      "surface_density_kg_m2": 16,
      "reference_thickness_m": 0.0064,
      "assembly_type": "single_leaf",
      "tl_estimated": false,
      "_tl_source": "Tadeu & Mateus (2001) J. Sound Vib. 240(5) + manufacturer data (Pilkington Optiphon / Saint-Gobain SGG Stadip Silence) — 6.4 mm laminate, two 3 mm glass plies bonded by an acoustic PVB interlayer (STC ≈ 35). The PVB damps the coincidence resonance, so unlike a monolithic 6 mm pane there is NO 2 kHz dip — the gain over plain glass is concentrated at 2–4 kHz. The acoustician's standard single-pane upgrade."
    },
    {
      "id": "wall_2x4_sg_2x_each_air",
      "name": "2×4 wood stud, 1×13 mm GWB e/s, air cavity",
      "model": "formula",
      "applicableTo": ["wall"],
      "absorption": [
        0.1,
        0.08,
        0.05,
        0.03,
        0.03,
        0.03,
        0.03
      ],
      "scattering": [
        0.1,
        0.1,
        0.1,
        0.1,
        0.1,
        0.1,
        0.1
      ],
      "transmission_loss_db": [
        18,
        23,
        30,
        34,
        31,
        38,
        42
      ],
      "surface_density_kg_m2": 21,
      "assembly": {
        "leaf1_mass_kg_m2": 10.5,
        "leaf2_mass_kg_m2": 10.5,
        "cavity_depth_m": 0.09,
        "cavity_fill": "none",
        "stud_type": "wood"
      },
      "tl_estimated": false,
      "_tl_source": "NRC IR-761 (1998) wall TL-93-079, Table A1, Rw 33 — 2×4 wood stud at 406 mm o.c., single 13 mm gypsum each side, empty cavity."
    },
    {
      "id": "wall_2x4_sg_2x_each_mf50",
      "name": "2×4 wood stud, 1×13 mm GWB e/s, 50 mm mineral fibre",
      "model": "formula",
      "applicableTo": ["wall"],
      "absorption": [
        0.15,
        0.12,
        0.08,
        0.05,
        0.05,
        0.05,
        0.05
      ],
      "scattering": [
        0.1,
        0.1,
        0.1,
        0.1,
        0.1,
        0.1,
        0.1
      ],
      "transmission_loss_db": [
        22,
        30,
        38,
        43,
        41,
        47,
        50
      ],
      "surface_density_kg_m2": 21,
      "assembly": {
        "leaf1_mass_kg_m2": 10.5,
        "leaf2_mass_kg_m2": 10.5,
        "cavity_depth_m": 0.09,
        "cavity_fill": "fibrous_50mm",
        "stud_type": "wood"
      },
      "tl_estimated": false,
      "_tl_source": "NRC IR-761 (1998) wall TL-93-082, Table A1, Rw 39 — same buildup as TL-93-079 with 50 mm mineral fibre fill."
    },
    {
      "id": "wall_2x4_dg_each_mf90",
      "name": "2×4 wood stud, 2×13 mm GWB e/s, 90 mm mineral fibre",
      "model": "formula",
      "applicableTo": ["wall"],
      "absorption": [
        0.1,
        0.08,
        0.05,
        0.03,
        0.03,
        0.03,
        0.03
      ],
      "scattering": [
        0.1,
        0.1,
        0.1,
        0.1,
        0.1,
        0.1,
        0.1
      ],
      "transmission_loss_db": [
        28,
        36,
        44,
        49,
        47,
        53,
        56
      ],
      "surface_density_kg_m2": 42,
      "assembly": {
        "leaf1_mass_kg_m2": 21,
        "leaf2_mass_kg_m2": 21,
        "cavity_depth_m": 0.09,
        "cavity_fill": "fibrous_50mm",
        "stud_type": "wood"
      },
      "tl_estimated": false,
      "_tl_source": "NRC IR-761 (1998) wall TL-93-122, Table A1, Rw 45 — 2×4 wood stud at 406 mm o.c., double 13 mm gypsum each side, 90 mm fibre fill."
    },
    {
      "id": "wall_double_stud_dg_mf140",
      "name": "Double 2×4 stud (25 mm gap), 2×13 mm GWB e/s, 140 mm mineral fibre",
      "model": "formula",
      "applicableTo": ["wall"],
      "absorption": [
        0.1,
        0.08,
        0.05,
        0.03,
        0.03,
        0.03,
        0.03
      ],
      "scattering": [
        0.1,
        0.1,
        0.1,
        0.1,
        0.1,
        0.1,
        0.1
      ],
      "transmission_loss_db": [
        38,
        50,
        60,
        67,
        65,
        71,
        73
      ],
      "surface_density_kg_m2": 42,
      "assembly": {
        "leaf1_mass_kg_m2": 21,
        "leaf2_mass_kg_m2": 21,
        "cavity_depth_m": 0.19,
        "cavity_fill": "fibrous_50mm",
        "stud_type": "double"
      },
      "tl_estimated": false,
      "_tl_source": "NRC IR-761 (1998) wall TL-93-258, Table A1, Rw 63 — double 2×4 stud (25 mm gap), double 13 mm gypsum each side, 140 mm fibre fill."
    },
    {
      "id": "wall_staggered_2x6_2x_mf90",
      "name": "Staggered 2×4 studs on 2×6 plate, 2×13 mm GWB e/s, 90 mm mineral fibre",
      "model": "formula",
      "applicableTo": ["wall"],
      "absorption": [
        0.1,
        0.08,
        0.05,
        0.03,
        0.03,
        0.03,
        0.03
      ],
      "scattering": [
        0.1,
        0.1,
        0.1,
        0.1,
        0.1,
        0.1,
        0.1
      ],
      "transmission_loss_db": [
        33,
        43,
        53,
        60,
        58,
        64,
        67
      ],
      "surface_density_kg_m2": 42,
      "assembly": {
        "leaf1_mass_kg_m2": 21,
        "leaf2_mass_kg_m2": 21,
        "cavity_depth_m": 0.14,
        "cavity_fill": "fibrous_50mm",
        "stud_type": "staggered"
      },
      "tl_estimated": false,
      "_tl_source": "NRC IR-761 (1998) wall TL-93-241, Table A1, Rw 56 — staggered 2×4 studs on 2×6 plate, double 13 mm gypsum each side, 90 mm fibre fill."
    },
    {
      "id": "cmu_200_hollow",
      "name": "200 mm hollow concrete masonry unit, unpainted",
      "model": "mass-law",
      "applicableTo": ["wall"],
      "absorption": [
        0.36,
        0.44,
        0.31,
        0.29,
        0.39,
        0.25,
        0.2
      ],
      "scattering": [
        0.15,
        0.15,
        0.15,
        0.15,
        0.15,
        0.15,
        0.15
      ],
      "transmission_loss_db": [
        36,
        40,
        44,
        49,
        53,
        56,
        58
      ],
      "surface_density_kg_m2": 195,
      "reference_thickness_m": 0.2,
      "assembly_type": "single_leaf",
      "tl_estimated": false,
      "_tl_source": "Beranek & Vér, Noise and Vibration Control Engineering (1992) Table 11.3, Rw 47 — 200 mm hollow CMU, unpainted, unfilled cores."
    },
    {
      "id": "cmu_200_grouted",
      "name": "200 mm fully-grouted concrete masonry unit",
      "model": "mass-law",
      "applicableTo": ["wall"],
      "absorption": [
        0.1,
        0.05,
        0.06,
        0.07,
        0.09,
        0.08,
        0.08
      ],
      "scattering": [
        0.1,
        0.1,
        0.1,
        0.1,
        0.1,
        0.1,
        0.1
      ],
      "transmission_loss_db": [
        42,
        46,
        50,
        55,
        59,
        62,
        64
      ],
      "surface_density_kg_m2": 365,
      "reference_thickness_m": 0.2,
      "assembly_type": "single_leaf",
      "tl_estimated": false,
      "_tl_source": "Beranek & Vér, Noise and Vibration Control Engineering (1992) Table 11.3, Rw 53 — 200 mm CMU, all cores fully grouted with concrete."
    },
    {
      "id": "rack_metal_painted_panel",
      "name": "Rack panel — painted steel (1 mm)",
      "model": "catalogue",
      "applicableTo": [],
      "absorption": [
        0.05,
        0.05,
        0.05,
        0.05,
        0.05,
        0.05,
        0.05
      ],
      "scattering": [
        0.1,
        0.1,
        0.1,
        0.1,
        0.1,
        0.1,
        0.1
      ],
      "transmission_loss_db": [
        14,
        20,
        26,
        32,
        38,
        44,
        50
      ],
      "tl_third_oct": [12.1, 14, 16.1, 18.1, 20, 22, 24.1, 26, 28, 30.1, 32, 33.9, 36.1, 38, 39.9, 41.9, 44, 45.9],
      "surface_density_kg_m2": 7.8,
      "tl_estimated": true,
      "estimated": true,
      "_source": "Beranek, Noise and Vibration Control Engineering 2nd ed. (2006) table 8.1 — painted metal panels (random-incidence α≈0.05 across band, treated as effectively non-absorbing).",
      "_tl_source": "mass-law from 1 mm painted sheet steel (7.8 kg/m²); estimated.",
      "data_source_note": "Dr. Chen spec, Beranek Table 8.1. Painted-steel rack side / rear / top panels. Estimated random-incidence α."
    },
    {
      "id": "rack_door_mesh_glass_empty",
      "name": "Rack front door — mesh-glass, empty cavity",
      "model": "catalogue",
      "applicableTo": [],
      "absorption": [
        0.1,
        0.2,
        0.35,
        0.45,
        0.4,
        0.3,
        0.2
      ],
      "scattering": [
        0.3,
        0.4,
        0.5,
        0.5,
        0.4,
        0.3,
        0.2
      ],
      "transmission_loss_db": [
        8,
        12,
        18,
        22,
        26,
        30,
        34
      ],
      "tl_third_oct": [6.1, 8, 9.4, 10.7, 12, 14, 16.1, 18, 19.3, 20.7, 22, 23.3, 24.7, 26, 27.3, 28.6, 30, 31.3],
      "surface_density_kg_m2": 12,
      "tl_estimated": true,
      "estimated": true,
      "_source": "Cox & D'Antonio, Acoustic Absorbers and Diffusers 2nd ed. (2009) §6.4 perforated-panel-over-cavity, Eq. 6.16; Maa (1998) J. Acoust. Soc. Am. 104(5) micro-perforation theory. Mesh ~63% perforation over glass face, ~0.6-1.0 m air cavity behind. Peak smears across 500 Hz-1 kHz due to partly resistive mesh impedance.",
      "_tl_source": "mass-law mesh + 4 mm glass composite; estimated.",
      "data_source_note": "Dr. Chen spec, Cox & D'Antonio §6.4 / Maa 1998. Empty enclosed rack with mesh-glass front door over a 0.6-1.0 m cavity behind. Estimated; expected ±0.10 variation by door perforation pattern + glass thickness."
    },
    {
      "id": "rack_door_mesh_glass_loaded",
      "name": "Rack front door — mesh-glass, loaded interior",
      "model": "catalogue",
      "applicableTo": [],
      "absorption": [
        0.1,
        0.15,
        0.25,
        0.3,
        0.25,
        0.2,
        0.15
      ],
      "scattering": [
        0.3,
        0.4,
        0.5,
        0.5,
        0.4,
        0.3,
        0.2
      ],
      "transmission_loss_db": [
        8,
        12,
        18,
        22,
        26,
        30,
        34
      ],
      "tl_third_oct": [6.1, 8, 9.4, 10.7, 12, 14, 16.1, 18, 19.3, 20.7, 22, 23.3, 24.7, 26, 27.3, 28.6, 30, 31.3],
      "surface_density_kg_m2": 12,
      "tl_estimated": true,
      "estimated": true,
      "_source": "Cox & D'Antonio §6.4 with reduced effective cavity depth (~0.1 m air gap before chassis fronts). λ/4 of 0.1 m ≈ 860 Hz; chassis fronts add broadband resistive absorption. Net: lower mid-band α than empty case.",
      "_tl_source": "mass-law mesh + 4 mm glass composite; estimated.",
      "data_source_note": "Dr. Chen spec, Cox & D'Antonio §6.4. Loaded rack: chassis fronts shrink the cavity behind the mesh-glass door. Estimated."
    },
    {
      "id": "rack_door_perforated_rear",
      "name": "Rack rear door — perforated steel (~50%)",
      "model": "catalogue",
      "applicableTo": [],
      "absorption": [
        0.1,
        0.25,
        0.5,
        0.65,
        0.55,
        0.4,
        0.25
      ],
      "scattering": [
        0.4,
        0.5,
        0.6,
        0.6,
        0.5,
        0.4,
        0.3
      ],
      "transmission_loss_db": [
        6,
        10,
        14,
        18,
        22,
        26,
        30
      ],
      "tl_third_oct": [4.1, 6, 7.4, 8.7, 10, 11.3, 12.7, 14, 15.3, 16.7, 18, 19.3, 20.7, 22, 23.3, 24.6, 26, 27.3],
      "surface_density_kg_m2": 4,
      "tl_estimated": true,
      "estimated": true,
      "_source": "Cox & D'Antonio §6.4. Perforation 50% dramatically increases mid-band α vs the front mesh-glass (which is partially blocked by glass). Same cavity-depth assumption.",
      "_tl_source": "mass-law 1 mm steel × 50% open area; estimated.",
      "data_source_note": "Dr. Chen spec, Cox & D'Antonio §6.4. Enclosed rack rear door, perforated steel ~50% open. Empty cavity behind. Estimated."
    },
    {
      "id": "rack_chassis_array_loaded",
      "name": "Loaded rackmount chassis array (face-on)",
      "model": "catalogue",
      "applicableTo": [],
      "absorption": [
        0.1,
        0.15,
        0.2,
        0.25,
        0.25,
        0.2,
        0.15
      ],
      "scattering": [
        0.3,
        0.4,
        0.5,
        0.5,
        0.5,
        0.4,
        0.3
      ],
      "transmission_loss_db": [
        10,
        15,
        20,
        26,
        30,
        34,
        38
      ],
      "tl_third_oct": [8.1, 10, 11.8, 13.4, 15, 16.7, 18.4, 20, 22, 24.1, 26, 27.3, 28.7, 30, 31.3, 32.6, 34, 35.3],
      "surface_density_kg_m2": 15,
      "tl_estimated": true,
      "estimated": true,
      "_source": "Beranek, Concert Halls and Opera Houses 2nd ed. (2004) Table A.6 — equipment racks loaded (approximation). Average of vented + perforated + solid chassis faceplates across band.",
      "_tl_source": "averaged chassis-front impedance; estimated.",
      "data_source_note": "Dr. Chen spec, Beranek Table A.6. Open-frame rack populated with chassis (no front door), front face viewed directly. Estimated."
    },
    {
      "id": "rack_top_vented",
      "name": "Rack top — vented (~40% open)",
      "model": "catalogue",
      "applicableTo": [],
      "absorption": [
        0.1,
        0.15,
        0.25,
        0.3,
        0.25,
        0.2,
        0.15
      ],
      "scattering": [
        0.3,
        0.4,
        0.5,
        0.5,
        0.4,
        0.3,
        0.2
      ],
      "transmission_loss_db": [
        6,
        10,
        14,
        18,
        22,
        26,
        30
      ],
      "tl_third_oct": [4.1, 6, 7.4, 8.7, 10, 11.3, 12.7, 14, 15.3, 16.7, 18, 19.3, 20.7, 22, 23.3, 24.6, 26, 27.3],
      "surface_density_kg_m2": 4,
      "tl_estimated": true,
      "estimated": true,
      "_source": "Cox & D'Antonio §6.4, 40% perf with rack interior as cavity.",
      "_tl_source": "mass-law 1 mm steel × 40% open area; estimated.",
      "data_source_note": "Dr. Chen spec, Cox & D'Antonio §6.4. Enclosed rack top plate with fan-cutout vents. Estimated."
    }
  ]
}
