From 90f5b195c49d7f07500dc423194fca5b35c6c819 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M=2E=20Requena=20Plens?= Date: Sat, 8 Aug 2026 02:06:26 +0200 Subject: [PATCH 1/2] Open the front door, and say what each section is not Work in progress on the entry points, the section overviews and the glossary. English only: the Spanish edition follows. Getting Started now calibrates. It recovered a sound pressure level from an uncalibrated synthetic signal, 46 dB low, and told the reader that the output of wavfile.read can be fed in as it stands, which is 90.3 dB high for integer WAV. A 94 dB calibrator tone now recovers the sensitivity, and every number on the page was re-measured. The site is organised by subject, which is right for looking something up and wrong for arriving. A reader arrives with a task, so there is now a page that maps a task to the guide that answers it, and the landing page's last onboarding step routes into a measurement run end to end rather than into the generated API reference. All thirty-seven overviews now state what their section does not cover, which none of them did. Without it the absence of a method is ambiguous between the library not having it and the reader looking in the wrong place. The seven stubs went from 64-128 words to 608-857. The theory pages were reachable from their own index and almost nowhere else: back-links went from 25 of 105 guides to 74, and the subjects that have no theory section say so on their overview. The glossary went from 121 terms to 198, in 16 groups, over 70 guide slugs. Four cards were wrong. The bibliography gained the 24 cited works that appeared nowhere on it, and is regrouped by area. Two citation defects found while verifying: the McFadden 1987 DOI in the synchronous averaging frontmatter does not resolve, and the Craik 1996 ISBN carried the wrong check digit. EN/ES parity is deliberately red until the Spanish twin of the new task page is written. --- .github/workflows/docs.yml | 3 +- Makefile | 1 + docs/README.md | 1 + docs/aircraft/index.md | 46 +- docs/buildings/design/index.md | 52 + docs/buildings/index.md | 47 +- docs/buildings/insulation/index.md | 31 + docs/buildings/rooms/index.md | 73 +- docs/devices/broadcast/index.md | 64 +- docs/devices/electroacoustics/index.md | 48 +- docs/devices/emission/index.md | 46 +- docs/devices/index.md | 60 +- docs/devices/noise-control/index.md | 87 +- docs/environment/assessment/index.md | 90 +- docs/environment/index.md | 60 +- docs/environment/propagation/index.md | 129 +- docs/environment/sources/index.md | 99 +- docs/materials/absorbers/index.md | 27 +- docs/materials/diffusers/index.md | 35 +- docs/materials/index.md | 83 +- docs/materials/resilient/index.md | 67 +- docs/materials/surfaces/index.md | 71 +- docs/perception/hearing/index.md | 45 +- docs/perception/index.md | 83 +- docs/perception/psychoacoustics/index.md | 50 + docs/perception/speech/index.md | 47 +- docs/reference/glossary.md | 349 ++ docs/reference/theory/index.md | 6 +- docs/signals/filters/index.md | 18 + docs/signals/index.md | 82 +- docs/signals/levels/index.md | 19 + docs/signals/metrology/index.md | 47 +- docs/signals/spectra/index.md | 70 +- docs/simulation/index.md | 70 + docs/start/index.md | 83 +- docs/underwater/index.md | 67 +- docs/vibration/human/index.md | 45 +- docs/vibration/index.md | 87 +- docs/vibration/machinery/index.md | 72 +- docs/vibration/structural/index.md | 31 +- llms-full.txt | 2506 +++++++++++++-- llms.txt | 11 +- scripts/mirror_glossary.py | 227 ++ site/public/llms/llms-aircraft.txt | 46 +- site/public/llms/llms-buildings-design.txt | 52 + .../public/llms/llms-buildings-insulation.txt | 31 + site/public/llms/llms-buildings-rooms.txt | 1515 ++++----- site/public/llms/llms-buildings.txt | 47 +- site/public/llms/llms-devices-broadcast.txt | 64 +- .../llms/llms-devices-electroacoustics.txt | 48 +- site/public/llms/llms-devices-emission.txt | 1318 ++++---- .../llms/llms-devices-noise-control.txt | 2801 +++++++++-------- site/public/llms/llms-devices.txt | 60 +- .../llms/llms-environment-assessment.txt | 532 ++-- .../llms/llms-environment-propagation.txt | 133 +- site/public/llms/llms-environment-sources.txt | 99 +- site/public/llms/llms-environment.txt | 60 +- site/public/llms/llms-materials-absorbers.txt | 27 +- site/public/llms/llms-materials-diffusers.txt | 35 +- site/public/llms/llms-materials-resilient.txt | 67 +- site/public/llms/llms-materials-surfaces.txt | 71 +- site/public/llms/llms-materials.txt | 83 +- site/public/llms/llms-perception-hearing.txt | 45 +- .../llms/llms-perception-psychoacoustics.txt | 50 + site/public/llms/llms-perception-speech.txt | 47 +- site/public/llms/llms-perception.txt | 83 +- site/public/llms/llms-reference.txt | 354 +++ site/public/llms/llms-signals-filters.txt | 18 + site/public/llms/llms-signals-levels.txt | 19 + site/public/llms/llms-signals-metrology.txt | 47 +- site/public/llms/llms-signals-spectra.txt | 70 +- site/public/llms/llms-signals.txt | 82 +- site/public/llms/llms-simulation.txt | 70 + site/public/llms/llms-start.txt | 89 +- site/public/llms/llms-underwater.txt | 67 +- site/public/llms/llms-vibration-human.txt | 45 +- site/public/llms/llms-vibration-machinery.txt | 72 +- .../public/llms/llms-vibration-structural.txt | 31 +- site/public/llms/llms-vibration.txt | 87 +- site/src/components/Glossary.astro | 116 +- site/src/components/home/Home.astro | 12 + site/src/content/docs/aircraft/index.md | 46 +- .../buildings/design/detailed-prediction.mdx | 1 + .../content/docs/buildings/design/index.md | 52 + .../design/installed-structure-borne.mdx | 1 + .../design/insulation-prediction.mdx | 1 + .../design/panel-sound-insulation.mdx | 1 + .../buildings/design/resilient-layers.mdx | 1 + .../design/structure-borne-power.mdx | 1 + site/src/content/docs/buildings/index.md | 47 +- .../buildings/insulation/flanking-lab.mdx | 1 + .../insulation/heavy-impact-sources.mdx | 1 + .../docs/buildings/insulation/index.md | 31 + .../buildings/insulation/insulation-lab.mdx | 1 + .../insulation/spanish-building-code.mdx | 1 + .../rooms/enclosed-space-absorption.mdx | 1 + .../src/content/docs/buildings/rooms/index.md | 75 +- .../buildings/rooms/open-plan-acoustics.mdx | 1 + .../rooms/reverberation-prediction.mdx | 1 + .../docs/buildings/rooms/room-acoustics.mdx | 1 + .../buildings/rooms/room-image-sources.mdx | 1 + .../buildings/rooms/room-impulse-response.mdx | 1 + .../docs/buildings/rooms/room-noise.mdx | 1 + .../content/docs/devices/broadcast/index.md | 66 +- .../docs/devices/electroacoustics/index.md | 48 +- .../content/docs/devices/emission/index.md | 48 +- .../docs/devices/emission/intensity.mdx | 1 + .../emission/sound-power-intensity.mdx | 1 + .../devices/emission/sound-power-pressure.mdx | 1 + .../emission/sound-power-reverberation.mdx | 1 + .../docs/devices/emission/sound-power.mdx | 1 + .../emission/vibration-sound-power.mdx | 1 + site/src/content/docs/devices/index.md | 62 +- .../docs/devices/noise-control/index.md | 89 +- .../assessment/environmental-levels.mdx | 1 + .../assessment/impulsive-sound.mdx | 1 + .../docs/environment/assessment/index.md | 92 +- .../assessment/spanish-noise-regulation.mdx | 1 + site/src/content/docs/environment/index.md | 60 +- .../propagation/atmospheric-refraction.mdx | 4 + .../propagation/ground-barriers.mdx | 4 + .../docs/environment/propagation/index.md | 131 +- .../propagation/outdoor-propagation.mdx | 1 + .../content/docs/environment/sources/index.md | 99 +- site/src/content/docs/index.mdx | 7 + .../absorbers/absorption-measurement.mdx | 1 + .../absorbers/airflow-resistance.mdx | 1 + .../materials/absorbers/impedance-tube.mdx | 1 + .../content/docs/materials/absorbers/index.md | 27 +- .../absorbers/metamaterial-absorbers.mdx | 1 + .../materials/absorbers/porous-absorbers.mdx | 1 + .../docs/materials/diffusers/diffusers.mdx | 1 + .../content/docs/materials/diffusers/index.md | 35 +- .../materials/diffusers/metadiffusers.mdx | 1 + site/src/content/docs/materials/index.md | 85 +- .../materials/resilient/dynamic-stiffness.mdx | 1 + .../content/docs/materials/resilient/index.md | 69 +- .../content/docs/materials/surfaces/index.md | 73 +- .../materials/surfaces/road-absorption.mdx | 1 + .../perception/hearing/hearing-threshold.mdx | 1 + .../content/docs/perception/hearing/index.md | 45 +- .../hearing/noise-induced-hearing-loss.mdx | 1 + site/src/content/docs/perception/index.md | 83 +- .../psychoacoustics/advanced-loudness.mdx | 1 + .../docs/perception/psychoacoustics/index.md | 50 + .../perception/psychoacoustics/loudness.mdx | 1 + .../psychoacoustic-annoyance.mdx | 1 + .../psychoacoustics/sound-quality.mdx | 1 + .../psychoacoustics/tone-audibility.mdx | 1 + .../psychoacoustics/tone-prominence.mdx | 1 + .../content/docs/perception/speech/index.md | 49 +- .../speech/objective-intelligibility.mdx | 1 + .../speech/speech-intelligibility.mdx | 1 + .../perception/speech/speech-transmission.mdx | 1 + .../content/docs/reference/bibliography.md | 847 +++-- site/src/content/docs/reference/glossary.mdx | 61 +- site/src/content/docs/reference/index.md | 113 +- .../content/docs/reference/theory/index.md | 71 +- .../docs/signals/filters/block-processing.mdx | 1 + .../docs/signals/filters/filter-banks.mdx | 1 + .../signals/filters/filter-compliance.mdx | 1 + .../docs/signals/filters/filter-gallery.mdx | 1 + .../src/content/docs/signals/filters/index.md | 18 + site/src/content/docs/signals/index.md | 82 +- site/src/content/docs/signals/levels/index.md | 19 + .../content/docs/signals/levels/levels.mdx | 1 + .../signals/levels/special-weightings.mdx | 1 + .../docs/signals/levels/time-weighting.mdx | 1 + .../content/docs/signals/levels/weighting.mdx | 1 + .../signals/metrology/data-qualification.mdx | 1 + .../signals/metrology/gum-uncertainty.mdx | 1 + .../content/docs/signals/metrology/index.md | 47 +- .../src/content/docs/signals/spectra/index.md | 70 +- .../signals/spectra/spectral-analysis.mdx | 4 + .../signals/spectra/synchronous-averaging.mdx | 2 +- .../docs/signals/spectra/time-frequency.mdx | 1 + site/src/content/docs/simulation/index.md | 70 + site/src/content/docs/start/about.md | 51 +- .../content/docs/start/getting-started.mdx | 232 +- site/src/content/docs/start/guides.md | 100 +- site/src/content/docs/start/index.md | 85 +- site/src/content/docs/start/tasks.md | 102 + .../src/content/docs/start/why-phonometry.mdx | 75 +- site/src/content/docs/underwater/index.md | 67 +- .../docs/vibration/human/human-vibration.mdx | 1 + .../src/content/docs/vibration/human/index.md | 45 +- .../human/multiple-shock-vibration.mdx | 1 + site/src/content/docs/vibration/index.md | 89 +- .../content/docs/vibration/machinery/index.md | 74 +- .../docs/vibration/structural/index.md | 31 +- .../structural/junction-transmission.mdx | 1 + .../structural/mechanical-mobility.mdx | 1 + .../structural/transfer-stiffness.mdx | 1 + site/src/data/citation.mjs | 8 +- site/src/data/conformance-stats.mjs | 34 +- site/src/data/glossary.mjs | 1694 +++++++++- site/src/data/home.ts | 32 +- site/src/data/topics.mjs | 4 + 198 files changed, 14935 insertions(+), 4460 deletions(-) create mode 100644 docs/reference/glossary.md create mode 100644 scripts/mirror_glossary.py create mode 100644 site/src/content/docs/start/tasks.md diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 23df87a29..3a3c98210 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -95,9 +95,10 @@ jobs: path: ${{ env.PNPM_STORE }} key: pnpm-store-${{ runner.os }}-${{ hashFiles('site/pnpm-lock.yaml') }} restore-keys: pnpm-store-${{ runner.os }}- - - name: Check the overview mirrors, then regenerate llms.txt + - name: Check the overview and glossary mirrors, then regenerate llms.txt run: | python3 scripts/mirror_overviews.py --check + python3 scripts/mirror_glossary.py --check python3 scripts/generate_llms.py - name: Check the icon sheet is not stale # The sheet is the index of the site's own icons and the only place a diff --git a/Makefile b/Makefile index ea1b76702..96ee994bf 100644 --- a/Makefile +++ b/Makefile @@ -103,6 +103,7 @@ brand: llms: $(PYTHON) scripts/mirror_overviews.py + $(PYTHON) scripts/mirror_glossary.py $(PYTHON) scripts/generate_llms.py # Regenerate README_PYPI.md (the PyPI long description) from README.md: diff --git a/docs/README.md b/docs/README.md index aa2269a0d..b4fcab825 100644 --- a/docs/README.md +++ b/docs/README.md @@ -124,6 +124,7 @@ Full documentation for phonometry. Also available as a website: - [Environment and transport](reference/theory/environment-transport.md): environmental descriptors, impulsive adjustment, outdoor propagation, occupational exposure, sound power - [Vibration](reference/theory/vibration.md): human vibration weightings and metrics, multiple-shock spinal model - [Why phonometry](start/why-phonometry.md): IEC compliance vs other libraries +- [Glossary](reference/glossary.md): every quantity the guides compute, grouped by domain, each with its symbol, a one-sentence definition, its unit, the standard and clause that defines it and the guide that implements it, plus the table of symbols that collide across domains - [Bibliography](reference/bibliography.md): the books and papers behind the guides, grouped by domain, every entry with a verified DOI or official publisher link - [Conformance report](CONFORMANCE.md): auto-generated numerical validation: every check pins a standard clause's expected value against the library's computed value, regenerated in CI - [Standards errata](ERRATA.md): defects found in the published standards themselves during implementation: misprints, examples contradicting their own normative text, ambiguous wording, each with evidence and the library's disposition diff --git a/docs/aircraft/index.md b/docs/aircraft/index.md index e73013640..c38d41d39 100644 --- a/docs/aircraft/index.md +++ b/docs/aircraft/index.md @@ -61,10 +61,7 @@ be read first if helicopters are what you came for. The three metrics are not interchangeable. EPNL is a *certification* metric of one aeroplane at one prescribed point; SEL and LASmax are *single-event* assessment metrics at an arbitrary receiver; neither is the long-term index a -land-use study is finally judged on. And the boundary: this section does not -compute cumulative multi-event indices, does not synthesise NPD tables from -engine data, does not model hover, idle or taxi rotorcraft operations, and does -not touch sonic boom. +land-use study is finally judged on. ## Pages in this section @@ -79,3 +76,44 @@ not touch sonic boom. - [The ANP fleet database](anp-fleet.md): the EASA tables of noise-power-distance curves and default trajectories that run the Doc 29 chain for a real aircraft type. + +## What this section does not cover + +**Single events only.** The Doc 29 chain builds single-event contours; it does +not assemble the cumulative multi-event indices — an Lden-style sum over a full +flight schedule — that a complete noise-contour study needs on top of them. That +last step is where a land-use decision is actually made, and it is not here. + +**No aircraft is modelled from first principles.** NPD tables and noise +hemispheres are *inputs*: the library interpolates the tables published for a +type and does not synthesise them from engine data, and the ANP database is read +and never written (version 2.3 ships as-is). Of the ANP entries, only those with +fixed-point profiles have a ready-to-use trajectory, because turning a +procedural-step departure into a flight path needs the ICAO Doc 9911 +flight-mechanics performance model, which is not implemented. + +**Three specific gaps.** Rotorcraft hover, idle and taxi operations are outside +the hemisphere source model, which assumes a flyover. The measurement-system +verifier checks IEC 61265:1995 and not the superseding 2018 edition. And sonic +boom is not touched anywhere in the library. + +Finally, the CNOSSOS-EU aircraft source of sections 2.6 and 2.7 is **not** +implemented: aircraft noise here is the ICAO and ECAC family, which is a +different set of models from the road and rail sources of [Environmental +sources](../environment/sources/index.md), and the two must not be mixed inside +one strategic map without saying so. + +## Before and after these pages + +Every level on these pages is built from band levels, so the filtering, +weighting and calibration that produce them are in [Signal +analysis](../signals/index.md), and [Build a sound level +meter](../signals/sound-level-meter.md) runs that chain end to end on +one runnable page. The derivations for aircraft noise are not in the theory +reference: they stay inside the guides above, beside the flight geometry that +motivates them. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. diff --git a/docs/buildings/design/index.md b/docs/buildings/design/index.md index 73e302372..f4d965c51 100644 --- a/docs/buildings/design/index.md +++ b/docs/buildings/design/index.md @@ -25,6 +25,17 @@ laboratory element and junction data are converted to their in-situ values, every path is formed per band, and the result shows which path dominates each band rather than only whether the room passes. +**Which of the two do you run?** Run the simplified model when what you have is +catalogue weighted ratings — $R_w$, $\Delta L_w$, a mass per unit area — and the +question is whether the partition meets a limit. Run the detailed one when you +have per-band element and junction spectra, or the material properties the +standard can calculate them from, and the question is *which path to fix in +which band*. The choice is not about accuracy on the rating: on the standard's +own worked building the two agree well inside their stated spread, and the +detailed airborne model carries no bias error and a standard deviation of 1,5 dB +to 2,5 dB (Clause 5) against about 2 dB for the simplified one. What the +detailed model buys is the spectrum behind the single number. + [Predicting Panel Sound Insulation](panel-sound-insulation.md) goes one level deeper, to where the element $R$ itself comes from: the mass law and the coincidence dip of a single panel, the mass-spring-mass behaviour of a @@ -69,6 +80,19 @@ follow the 2000 text — including the tabulated flanking correction $K$ that th follows the 2017 text. Check which edition your regulation calls up before quoting a correction from either. +Every prediction here starts from measured data that came from somewhere else, +and the design report has to say where. The element $R$ and $L_n$ come from +ISO 10140-2 and -3, together with the laboratory structural reverberation time +printed in the same report, because the in-situ conversion needs it. The +junction indices $K_{ij}$ come from an ISO 10848 measurement or from the +EN 12354-1 Annex E catalogue of junction types. The floor-covering improvement +$\Delta L_w$ comes from ISO 16251-1 or from a full-size ISO 10140-3 test. The +resilient layer's $s'$ comes from EN 29052-1. And for service equipment, the +characteristic structure-borne power comes from the EN 15657 reception plate. +Two of the pages in this section are themselves such measurements, feeding the +others; the built result is finally checked against the ISO 16283 field +measurement in [Sound insulation](../insulation/index.md). + ## Pages in this section - [Predicting Sound Insulation (EN 12354)](insulation-prediction.md): @@ -103,3 +127,31 @@ Pages elsewhere on the site that this section leans on: - [Dynamic stiffness of resilient materials (EN 29052-1)](../../materials/resilient/dynamic-stiffness.md): the load-plate resonance measurement, the enclosed-gas term and the floating-floor natural frequency. + +## What this section does not cover + +**A prediction is only as good as the element data you feed it, and the library +takes that data as given.** The element ratings, the junction indices, the +covering improvement and the structure-to-airborne adjustment terms of +EN 12354-5 Annexes D and F are inputs you supply from measurement or from the +standards' own annexes; none of them is derived here. The simplified prediction +page stops at the weighted single numbers by design, and the detailed page is +where the per-band models live. + +Every panel model carries a validity range it does not extend past, and the +guides flag each: Sharp's single-panel method is not valid below about 1.5 +times the panel's first resonance, Gomperts' slit model holds only while the +slit is narrow against the wavelength, only Leppington's method no. 1 is +implemented for radiation efficiency, and the orthotropic routes are +infinite-panel models that miss the dip real ribbed cladding shows between 2 and +4 kHz. On the resilient-layer side, the tapping-machine force model assumes a +frequency-independent driving-point impedance, so a joisted or battened +lightweight floor is outside it; soft coverings are treated as linear springs; +there is no per-band prediction of a lining's improvement, because Annex D is a +single-number method; and heavy impact sources such as the rubber ball are not +covered by any of these models at all — their rating is +[Heavy and Soft Impact Sources](../insulation/heavy-impact-sources.md). + +Two edition boundaries: only the 2009 edition of EN 12354-5 is implemented, not +the 2023 revision, and the simplified and detailed pages follow different +editions of the 12354 family, as the note above says. diff --git a/docs/buildings/index.md b/docs/buildings/index.md index 97f83a694..80ac5d6f1 100644 --- a/docs/buildings/index.md +++ b/docs/buildings/index.md @@ -24,7 +24,9 @@ and [Room Acoustics](rooms/room-acoustics.md): the impulse response the first acquires and the parameters the second derives are the vocabulary the rest of the section speaks. If your interest is insulation, read [Field Insulation Measurement (ISO 16283)](insulation/insulation-field.md) -next; if it is design-stage prediction, go to +next, and note that impact sources other than the tapping machine have their own +page, since ISO 16283-2 is the clause a field engineer usually arrives with; if +it is design-stage prediction, go to [Reverberation-time prediction (Sabine, Eyring, Arau)](rooms/reverberation-prediction.md) and [Predicting Sound Insulation (EN 12354)](design/insulation-prediction.md). @@ -65,6 +67,9 @@ laboratory, and predicted from element data. the direct-power route to the same indices when flanking is high. - [Sound Insulation Survey Method (ISO 10052)](insulation/insulation-survey.md): the octave-band control method and its reverberation index. +- [Heavy and Soft Impact Sources (ISO 16283-2)](insulation/heavy-impact-sources.md): + the rubber ball and the bang machine, the impact force exposure level that + specifies them and the ISO 717-2 Annex D single number. - [Laboratory Flanking Transmission (ISO 10848)](insulation/flanking-lab.md): the measured junction vibration reduction index and the flanking descriptors. - [Insulation Ratings (ISO 717)](insulation/insulation-ratings.md): the @@ -98,3 +103,43 @@ and from the physics of the element itself. mobilities. - [Dynamic stiffness of resilient materials (EN 29052-1)](../materials/resilient/dynamic-stiffness.md): the load-plate resonance measurement behind every floating-floor prediction. + +## What this section does not cover + +**The library starts after the microphone and stops before the geometry.** On +the measurement side, every function takes band levels already averaged over +positions and already corrected for background noise: the position counts, the +low-frequency procedures, the signal-to-background floors and the test-facility +qualifications of ISO 16283, ISO 10140 and ISO 3382 are the operator's job, and +nothing here checks that they were done. On the prediction side, the element +ratings, the junction indices and the covering improvements are inputs you +supply from measurement or from a standard's own annex; none is derived from a +drawing. + +**Nothing here is a wave solver or a room model.** There is no geometry +importer, no material database, no ray tracer and no auralisation: the room +pages take dimensions, absorption coefficients and impulse responses and give +back parameters, and the image-source model is specular only. An actual +low-frequency field in a real shape is [wave +simulation](../simulation/index.md). + +**And a prediction is not a verdict.** The single-number ratings and the +national indices are computed here, but the limit values they are judged +against are national — the Spanish code is implemented as a worked example of +one such framework, not as the rule everywhere — and the requirement always +comes from your regulation. + +## Before and after these pages + +Every quantity on these pages starts from band levels or from a filtered +impulse response, so the calibration, weighting and fractional-octave +filtering behind them are in [Signal analysis](../signals/index.md), and +[Build a sound level meter](../signals/sound-level-meter.md) runs that +chain end to end on one runnable page. The derivations sit in [Rooms and +buildings theory](../reference/theory/rooms-buildings.md), from the Schroeder integration +to the EN 12354 path sums. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. diff --git a/docs/buildings/insulation/index.md b/docs/buildings/insulation/index.md index 0b1071bec..14b890acd 100644 --- a/docs/buildings/insulation/index.md +++ b/docs/buildings/insulation/index.md @@ -91,3 +91,34 @@ related EN 12354-5, lives in - [Spanish Building Code (CTE DB-HR)](spanish-building-code.md): the DB-HR global indices RA, RA,tr, DnT,A and D2m,nT,Atr, the clause 2 requirements and the window-size correction. + +## What this section does not cover + +**The library starts after the microphone.** Every function here takes band +levels that were already energy-averaged over positions and already corrected +for background noise, and nothing verifies how the measurement was made: not the +number and placement of source and microphone positions, not the low-frequency +procedures of ISO 16283-1/-2, not the 6 dB signal-to-background floor, and not +the test-facility and mounting requirements of ISO 10140-1. Those are the +operator's responsibility and the report's, and they are what makes the numbers +here mean something. Two consequences worth naming: the field and laboratory +background corrections are *different* rules, so a laboratory helper must not be +applied to field data; and the intensity route takes both the pressure and the +intensity level as inputs, with the scanning probe and its phase-mismatch +calibration outside the library. + +**Coverage inside the standards is partial in two places.** Of ISO 10848 only +the Part 1 formulae are implemented generically, plus the Part 4 modal-overlap +validity check, not the facility-specific setups of Parts 2, 3 and 4. Of the +Spanish code, only the verification indices are implemented: the simplified +option's solution tables of clause 3, the execution conditions of clause 5 and +the maintenance conditions of clause 6 are out of scope, and the general +option's calculation route is +[Predicting Sound Insulation](../design/insulation-prediction.md). + +**And there is no heavy-impact prediction at all.** A floor construction can be +carried to a tapping-machine level by the models in [Insulation +design](../design/index.md); nothing does the same for the rubber +ball, because the complexity of the input force and the use of a time-weighted +maximum leave no simple counterpart. The heavy-impact page rates a measurement, +and only a measurement. diff --git a/docs/buildings/rooms/index.md b/docs/buildings/rooms/index.md index 3eda3a92a..f84670872 100644 --- a/docs/buildings/rooms/index.md +++ b/docs/buildings/rooms/index.md @@ -9,6 +9,14 @@ measurement chain built on the first, the prediction chain built on the second, and the rating of the background noise that occupies the room in between. +One boundary runs through all of it: the **Schroeder frequency**. Above it a +room has so many overlapping modes that a statistical description is the honest +one, and every reverberation formula and decay parameter on these pages lives +there. Below it the modes are discrete and separable, and no statistical model +applies — which is why the measurement and prediction pages alike carry validity +caveats at their lowest bands. A reader chasing a low-frequency problem should +start from the modal treatment rather than from the decay parameters. + The measurement chain starts in [Measuring the Room Impulse Response](room-impulse-response.md): the deterministic excitation signals of ISO 18233, the sweep deconvolution @@ -22,9 +30,20 @@ intelligible across an open floor, through the spatial decay rate and the distraction and privacy distances. [Image sources and the steady-state room field](room-image-sources.md) approaches the same room deterministically, building its impulse response from -mirrored sources and its steady-state level from the room constant. +mirrored sources, its steady-state level from the room constant, and, below the +Schroeder frequency where both of those give out, the discrete normal modes of +the shoebox itself. + +Before the two prediction pages, one page answers a different question about the +same room. +[Room-noise criteria (NC / RC Mark II)](room-noise.md) +asks whether its steady background noise (ventilation, distant traffic) is +acceptable for its use, rated against the ANSI/ASA S12.2 criterion curves, with +the RC Mark II rumble/hiss tag diagnosing *why* a spectrum fails. -Prediction gets two pages because two traditions coexist. +Prediction gets two pages because two traditions coexist. Both are diffuse-field +statistical models fed by the same laboratory absorption coefficients, so they +are not rival physics; they differ in what they are admissible for. [Reverberation-time prediction (Sabine, Eyring, Arau)](reverberation-prediction.md) covers the classical statistical formulae (Sabine, Eyring, Millington-Sette, Fitzroy and Arau-Puchades), including the models that handle a non-uniform @@ -35,11 +54,19 @@ equivalent absorption area assembled from surfaces, objects and air, and the reverberation time that follows from it, as a standard a design report can cite. -[Room-noise criteria (NC / RC Mark II)](room-noise.md) -answers a different question about the same room: whether its steady -background noise (ventilation, distant traffic) is acceptable for its use, -rated against the ANSI/ASA S12.2 criterion curves, with the RC Mark II -rumble/hiss tag diagnosing *why* a spectrum fails. +**Which one?** Cite EN 12354-6 when the deliverable is a design report under a +European building-acoustics framework, when the room is an ordinary building +space inside the clause 4.6 validity limits, and when the receiving-room +absorption has to feed an EN 12354 insulation prediction. Use the classical +family when the room falls outside that scope — a hall, a theatre, an +industrial space, or a room whose absorption is concentrated on one axis so that +an axial model is needed — or when a *band* of predictions rather than a single +normative value is what the situation deserves. Both share one failure mode, the +loss of diffusivity, and they fail in the same direction: the measured +reverberation time comes out longer than predicted, by up to a factor of two in +the low-diffusivity rooms the standard's own accuracy clause records. And +neither replaces a measurement — the measured counterpart is +[Room Acoustics](room-acoustics.md). Related pages elsewhere: the absorption coefficient the prediction chain consumes is measured in @@ -60,12 +87,40 @@ speech intelligibility a room affords is quantified by the - [Open-Plan Office Acoustics (ISO 3382-3)](open-plan-acoustics.md): the spatial decay rate of speech and the distraction and privacy distances. - [Image sources and the steady-state room field](room-image-sources.md): - the deterministic image-source room impulse response (Kuttruff/Vorländer) and + the deterministic image-source room impulse response (Kuttruff/Vorländer), the statistical steady-state level with the room constant, critical distance - and Schroeder frequency (Bies). + and Schroeder frequency (Bies), and the rectangular-room normal modes with + their axial, tangential and oblique families, mode count and modal density + (Long). - [Room-noise criteria (NC / RC Mark II)](room-noise.md): the ANSI/ASA S12.2-2019 NC tangency and RC Mark II ratings. - [Reverberation-time prediction (Sabine, Eyring, Arau)](reverberation-prediction.md): the five statistical models with the air-absorption term. - [Sound absorption in enclosed spaces (EN 12354-6)](enclosed-space-absorption.md): the normative equivalent-absorption-area and reverberation-time prediction. + +## What this section does not cover + +**Nothing here is a wave solver.** The image-source model is specular only: it +carries no diffraction, no scattering off a diffuser and no finite-impedance +boundary, and it stops when the reflection order runs out rather than when the +sound does. Below the Schroeder frequency, where the statistical models give +out, what this section offers is the mode *positions* of a rigid rectangular +box — not the field of a real room at low frequency. For that, the +[wave simulation](../../simulation/index.md) section runs an FDTD solver on the +actual geometry. + +**No auralisation, no ray tracer, no room model.** There is no geometry +importer, no material database and no renderer: the pages take dimensions, +coefficients and impulse responses as inputs, and give back parameters. The +absorption coefficients themselves come from +[Materials and surfaces](../../materials/absorbers/index.md), and the model errs +optimistically when the room is not diffuse — outside the EN 12354-6 clause 4.6 +limits (no dimension more than five times another, opposite surfaces within a +factor of three in absorption, object fraction below 0.2) the measured +reverberation time can reach twice the predicted one. + +Two coverage boundaries follow the standards. Only the normative clause 4 model +of EN 12354-6 is implemented, not its informative Annex D method for irregular +spaces. And nothing in this section measures insulation *between* rooms: that is +[Sound insulation](../insulation/index.md). diff --git a/docs/devices/broadcast/index.md b/docs/devices/broadcast/index.md index f4874c727..456ffeacc 100644 --- a/docs/devices/broadcast/index.md +++ b/docs/devices/broadcast/index.md @@ -6,6 +6,64 @@ Broadcasting solved the loudness problem with a measurement rather than a compressor: one number per programme, gated so that silence does not dilute it, and a range that says how much the programme moves. -[Programme loudness (EBU R 128)](program-loudness.md) -implements the ITU-R BS.1770 K-weighted chain with the EBU Tech 3341 gating and -the Tech 3342 loudness range, checked against the EBU's own test set. +The word *loudness* carries two meanings on this site, and they are not versions +of each other. Here it is an **energy measure**: a K-weighted mean square over +the whole programme, gated, reported in LUFS, designed so that two programmes +normalised to the same number feel equally loud on the same playback chain. In +[Psychoacoustics](../../perception/psychoacoustics/loudness.md) it is a +**perceptual magnitude in sones**, computed by an auditory model with masking +and compression. A broadcast deliverable is specified in LUFS; a product-noise +sensation is specified in sones. Reaching for the wrong one is the commonest +mistake in this area. + +The quantities are few. **Loudness** is reported in LUFS by the EBU and in LKFS +by the ITU — identical units — and **1 LU is 1 dB**, so a loudness difference +and a level difference are the same size. **EBU R 128** sets the delivery +target at **−23.0 LUFS** with a true-peak ceiling of **−1 dBTP**. The **loudness +range**, in LU, says how far the programme moves between its quiet and loud +passages, which is what decides whether it needs dynamic treatment before +normalisation. + +Four documents own four different things, and the section is easier to read once +that is clear. **ITU-R BS.1770** defines the algorithm: the K-weighting +pre-filter — a roughly +4 dB spherical-head shelf followed by the RLB high-pass +— the mean square in 400 ms blocks at 75 % overlap, the channel-weighted sum, +and the **two-stage gate** that makes the number usable on real programme (an +absolute gate at −70 LKFS drops digital silence, then a relative gate 10 LU +below the mean of the survivors drops the quiet passages that would otherwise +dilute a dialogue level). **EBU R 128** sets the target and the ceiling. +**EBU Tech 3341** defines the EBU Mode meter — the momentary, short-term and +integrated time scales, and the compliance test set. **EBU Tech 3342** defines +the loudness range. True peak is measured on an oversampled signal because an +inter-sample peak can exceed every sample value, so a file that reads −0.2 dBFS +can still clip a converter. + +## Pages in this section + +- [Programme loudness (EBU R 128)](program-loudness.md): + the ITU-R BS.1770 K-weighting, gated 400 ms blocks and channel-weighted sum, + the EBU R 128 target and ceiling, the Tech 3341 momentary, short-term and + integrated meters, the Tech 3342 loudness range, the Annex 2 oversampled true + peak and the Annex 3 channel weights for advanced sound systems — validated + against the EBU test signals and ending in an EBU R 128 report fiche. + +## See also + +Pages elsewhere on the site that this section leans on: + +- [Loudness](../../perception/psychoacoustics/loudness.md) (ISO 532-1): the + other loudness, the perceptual magnitude in sones, for when the question is + how loud something *sounds* rather than how a programme should be delivered. +- [Frequency Weighting (A, C, Z)](../../signals/levels/weighting.md): the + weighting family K-weighting sits beside, and does not belong to. + +## What this section does not cover + +BS.1770-5 **Annex 4, object-based audio, is out of scope**, and the library +implements no spatial renderer, so an object-based programme has to be rendered +to a loudspeaker layout before any of this applies. **EBU Tech 3343** is cited +as production practice around these numbers, not as an algorithm: nothing here +runs it. And loudness normalisation itself — the gain change, and any limiting +that follows it — is a production step this library does not perform: it +measures the programme and tells you the offset, and applying it is your +encoder's job. diff --git a/docs/devices/electroacoustics/index.md b/docs/devices/electroacoustics/index.md index cc15e2bb4..09b627658 100644 --- a/docs/devices/electroacoustics/index.md +++ b/docs/devices/electroacoustics/index.md @@ -14,7 +14,29 @@ families have their own type-test pages: with the radiating-piston model behind a loudspeaker's directivity, and [Microphone Characterisation (IEC 60268-4)](microphones.md) with the polar patterns and the inherent-noise conventions, both ending in a -one-page accredited fiche. +one-page report laid out the way an accredited laboratory lays one out, with +the rated-characteristics table beside the response, polar and noise panels +drawn to the IEC 60263 scale conventions. What makes such a sheet a test report +rather than a design study is the measured input data and the declared +standard, and both of those you supply. The loudspeaker page then puts the +characterised device back in a room with an open microphone, where the question +stops being a datasheet number and becomes whether the loop is stable: Long's +gain-before-feedback criterion, the correction for the number of open +microphones and the 10 dB margin an equalised system is designed to are +computed there. If you are designing or diagnosing a sound-reinforcement system +rather than testing a loudspeaker, that is the section to go to. + +The three device pages divide by what is under test, and therefore by what the +bench looks like. An **amplifier** works into its rated load impedance from its +rated supply and source impedance, and IEC 60268-3's standard measuring +conditions (clause 3.1.3) then drop the source e.m.f. 10 dB below the rated +value, so a distortion figure is meaningless without saying which of the two it +was taken at. A **loudspeaker** is measured on its reference axis at a stated +distance in a free or half-space free field, with its mounting declared. A +**microphone** is measured against a calibrated reference. The two type-test +pages start from measured curves rather than telling you how to acquire them, +so the conditions under which those curves were taken travel with every number +in the resulting fiche and belong in it. [Swept-sine distortion and phase utilities](swept-sine-distortion.md) extends the bench with the one-sweep alternative: the Farina / Novak harmonic separation that turns a single exponential sweep into the full set @@ -51,3 +73,27 @@ are the place to start. harmonic separation and THD(f) from one exponential sweep (Farina / Novak synchronized swept-sine), and minimum phase, group delay and excess phase from a measured response. +- [Broadcast](../broadcast/index.md): the loudness problem solved + with a measurement rather than a compressor, one gated number per programme + and the range that says how much it moves. +- [Programme loudness and true peak](../broadcast/program-loudness.md): + the ITU-R BS.1770-5 programme loudness and true-peak level with the + EBU R 128 normalisation practice, EBU Mode metering and loudness range. + +## What this section does not cover + +The type-test pages **reduce and report** what a laboratory measured; they do +not acquire it. The free-field response, the polar cuts, the noise spectrum and +the distortion-against-level sweep come in as data, and no procedure here tells +you how to run the anechoic room or the substitution measurement that produced +them. Two implemented editions are pinned rather than current: the distortion +metrics follow AES17-2015 and not the 2020 revision, and the microphone report +follows IEC 60268-4:2014 and not the 2018 one. Thiele-Small parameter +extraction from an impedance curve is not implemented, and the electrical and +mechanical power-handling ratings of IEC 60268-5 clause 17 are stated by the +manufacturer rather than computed. The feedback criterion is level bookkeeping, +not an acoustic model: it consumes two direct-field levels you supply, does not +compute them from a coverage pattern, and predicts neither the ring frequency +nor the effect of an equaliser or frequency shifter. And IEC 60268-16, the +speech transmission index, is not part of this section at all — it is in +[Speech](../../perception/speech/index.md). diff --git a/docs/devices/emission/index.md b/docs/devices/emission/index.md index dfabf226b..91a8db114 100644 --- a/docs/devices/emission/index.md +++ b/docs/devices/emission/index.md @@ -18,6 +18,19 @@ for the direct and comparison methods of ISO 3741, and [Sound Power by Intensity Scanning](sound-power-intensity.md) for the on-site scanning of ISO 9614-2 and its ISO 9614-3 precision grade. +A fourth route does not measure sound at all. +[Sound power from surface vibration (ISO/TS 7849)](vibration-sound-power.md) +estimates the radiated power from the surface-averaged velocity level and a +radiation factor, which is what remains when the machine cannot be moved to a +qualified room and its environment is too noisy for an enveloping surface: +Part 1 gives an upper-limit value from the velocity alone, Part 2 an +engineering value once the radiation factor has been estimated properly. It +also answers a slightly different question from the four acoustic routes — it +characterises what the *structure* radiates, and stays blind to sound escaping +through openings, intakes and outlets — and it is the natural bridge to the +structure-borne pages, since the same surface velocity is what +[Vibration and structure-borne sound](../../vibration/index.md) measures. + Behind the intensity-based routes sits **sound intensity** itself: the signed power flux that can localise sources and separate them from background noise, measured with a two-microphone probe per IEC 61043 and qualified by the @@ -27,10 +40,12 @@ ISO 9614-1 field indicators, covered in If you are here to measure a machine, start with [Sound Power](sound-power.md) and let its decision guidance pick the route; read [Sound Intensity (p-p)](intensity.md) -when that route involves an intensity probe. The determined power level is -what the quieting measures of the -[Noise control](../noise-control/index.md) pages are judged -against. +when that route involves an intensity probe, and go to +[Sound power from surface vibration](vibration-sound-power.md) +when the machine cannot leave its installation and the background is too high +for any pressure method. The determined power level is what the quieting +measures of the [Noise control](../noise-control/index.md) pages are +judged against. ## Pages in this section @@ -49,3 +64,26 @@ against. value. - [Sound Power by Intensity Scanning](sound-power-intensity.md): the on-site scanning of ISO 9614-2 and the ISO 9614-3 precision grade. + +## What this section does not cover + +The determination methods start after the facility and the probe have been +qualified. ISO 3745's free-field qualification of an anechoic or hemi-anechoic +room, ISO 3741's reverberation-room qualification (eigenfrequency counting or a +reference-source comparison) and the IEC 61043 residual-intensity test of a +probe-and-analyser chain are all **assumed, not performed**: the library warns +on the coarse advisory criteria the standards state explicitly — the Table 1 +minimum volume, the position count, an inter-position spread above 1.5 dB, the +ISO 3744 K₂ validity — and grades a residual-intensity index you measured +yourself. The C₃ meteorological correction of ISO 3745 likewise needs an +air-absorption coefficient you supply; it is not computed from ISO 9613-1 here. + +One route is absent by design: **ISO 9614-1's discrete fixed-point power +summation is not implemented at all**, and only its Annex A field indicators +are, reused by the two scanning parts. On the vibration route, the measurement +clauses 5 to 7 of both parts of ISO/TS 7849 are laboratory practice rather than +code, and only the single-machine radiation factor of Formula 8 is implemented, +so a batch or family determination needs an already-averaged value. Finally, +nothing here reduces a machine's emission: quieting a source is [Noise +control](../noise-control/index.md), and a declared emission value is +the input to that work, not its result. diff --git a/docs/devices/index.md b/docs/devices/index.md index 951936b0b..9289ab89d 100644 --- a/docs/devices/index.md +++ b/docs/devices/index.md @@ -9,7 +9,9 @@ to the room or the distance it is heard at. The **sound power and intensity** pages determine the central emission quantity, the sound power level: the figure that goes on a datasheet, feeds a -room or outdoor prediction and is checked against noise-emission limits. The +room or outdoor prediction and is checked against noise-emission limits — +including the route that reads it off the casing's own vibration when no +microphone can be placed. The **electroacoustics** pages turn to devices that are *supposed* to make sound (amplifiers, loudspeakers and microphones) and to the broadcast programme they carry, and the **noise control** pages hold the path measures that quiet @@ -17,7 +19,9 @@ a machine once its emission is known. If you are here to measure a machine, start with [Sound Power](emission/sound-power.md) and let its decision guidance -pick the route; read [Sound Intensity (p-p)](emission/intensity.md) +pick the route, which may end on an intensity probe or, when only vibration can +be measured, on the radiating surface itself; read +[Sound Intensity (p-p)](emission/intensity.md) when that route involves an intensity probe. If you are here to bench-test audio gear, go straight to [Electroacoustics](electroacoustics/electroacoustics.md); if you are here to @@ -39,6 +43,11 @@ The total acoustic emission of a source, and the power flux it is built on. the direct and comparison methods of ISO 3741. - [Sound Power by Intensity Scanning](emission/sound-power-intensity.md): the on-site scanning of ISO 9614-2 and the ISO 9614-3 precision grade. +- [Sound power from surface vibration (ISO/TS 7849)](emission/vibration-sound-power.md): + the radiated power from the surface-averaged velocity level and the radiation + factor, for the case where the machine cannot be moved, the room is not + qualified and only an accelerometer is available: the Part 1 upper limit and + the Part 2 engineering value. ## [Electroacoustics](electroacoustics/index.md) @@ -80,3 +89,50 @@ it. partition or an enclosure needs to meet a noise criterion. - [Industrial Noise Control: HVAC and Enclosures](noise-control/noise-control.md): duct attenuation, flow noise and machine-enclosure insertion loss. + +## What this section does not cover + +**No facility is qualified here.** ISO 3745's free-field qualification of an +anechoic room, ISO 3741's reverberation-room qualification and IEC 61043's +residual-intensity test of a probe are all assumed to have been done: the +library warns on the coarse advisory criteria a standard states explicitly and +grades a residual index you supply, but it does not certify a room or an +instrument. The same boundary runs through the electroacoustics pages, which +**reduce and report curves the laboratory supplies** rather than telling you how +to acquire them, and through ISO/TS 7849, whose clauses 5 to 7 on +instrumentation, installation and measurement positions are laboratory practice +this library assumes. + +Three specific absences are worth knowing before you plan a job. ISO 9614-1's +discrete fixed-point power summation is **not implemented at all** — only its +field indicators are, reused by the scanning routes. Dissipative duct-lining +silencers are **not modelled from liner properties** anywhere: the reactive +elements are computed exactly, and the lined-elbow and plenum figures are +interpolated installation tables. And no page here predicts a panel's +transmission loss: `enclosure_insertion_loss` combines a value you supply with +the interior correction, and the prediction itself is [Insulation +design](../buildings/design/index.md). + +Editions are pinned rather than current in two places: the distortion metrics +follow AES17-2015 and not the 2020 revision, and the microphone +rated-characteristics report follows IEC 60268-4:2014 and not the 2018 one. +Object-based audio (BS.1770-5 Annex 4) is out of scope, and the library +implements no spatial renderer, so an object-based programme has to be rendered +to a loudspeaker layout before it can be measured. + +## Before and after these pages + +Every emission quantity here is computed from band levels or from an intensity +pair, so the calibration, weighting and filtering behind them are in [Signal +analysis](../signals/index.md), and [Build a sound level +meter](../signals/sound-level-meter.md) runs that chain end to end on +one runnable page. The derivations are split by physics rather than by topic: +[sound power determination](/phonometry/reference/theory/environment-transport/#sound-power-determination-iso-374437453746-iso-3741-iso-9614-23) +is under Environment and transport, and [sound intensity](/phonometry/reference/theory/signal-analysis/#sound-intensity-iec-61043) +under Signal analysis. The electroacoustics and noise-control pages carry their +derivations inline. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. diff --git a/docs/devices/noise-control/index.md b/docs/devices/noise-control/index.md index d257ea34c..63e0b170e 100644 --- a/docs/devices/noise-control/index.md +++ b/docs/devices/noise-control/index.md @@ -2,20 +2,64 @@ # Noise control -Machinery noise is attacked at the source, the path and the receiver in turn, -and this section holds the path measures. +A noise-control problem is a **budget**, not a component choice. Between a +machine and the person who hears it there is a path, and each element on that +path removes a known number of decibels per band; the design question is which +combination closes the gap between what the source emits and what the criterion +allows. Machinery noise is attacked at the source, the path and the receiver in +turn, and this section holds the path — both halves of it: the element models, +and the two composed chains that spend their output against a criterion. -[Silencers](silencers.md) covers the reactive four-pole -elements (expansion chambers, Helmholtz, quarter-wave and extended-tube -resonators) with their transmission and insertion loss, and the choice -between reflection and dissipation, while -[Industrial Noise Control](noise-control.md) keeps the HVAC -duct attenuation and flow noise of an installation and the insertion loss of -a machine enclosure. +Everything here is a **prediction** from declared geometry and declared +material data. That matters when a catalogue is open beside the screen: the +figure a supplier publishes for the same device is a *measured* insertion loss, +obtained under the conditions of a measurement standard — ISO 7235 for a ducted +silencer on a laboratory rig with and without airflow, which also gives the +regenerated flow noise and the pressure loss, ISO 11691 for the survey method +without flow, ISO 11820 for a silencer in situ, and ISO 11546-1 and -2 for an +enclosure in the laboratory and in situ. A computed transmission loss and a +catalogue insertion loss are not the same quantity. Neither is wrong; they +answer different questions, and a design that mixes them without saying so is +not defensible. -What a quieting measure is judged against is the emission of the machine -itself, and that is determined by the -[Sound power and intensity](../emission/index.md) pages. +[Duct-Borne Noise: Fan to Room](duct-path.md) +follows an airborne path from the fan through the duct run into the room: +attenuation in straight duct, at bends and takeoffs, end reflection at the +terminal, regenerated flow noise added back, the room effect at the receiver, +and the result laid against the room criterion. It also states the limit every +element model in this section shares — the frequency above which higher-order +modes cut on and the plane-wave assumption stops holding. +[Room to Room: Partition, Receiving Room, Criterion](room-to-room.md) +follows the airborne room-to-room path instead: a source-room level built from a +sound power and the room constant, a partition with its transmission loss, a +receiving room with its absorption, the received spectrum and its verdict — and +the inverse problem, the transmission loss a partition or a lined enclosure must +have for the receiving room to meet its criterion, solved backwards. + +The two element pages supply what those chains call. +[Silencers](silencers.md) covers the reactive +four-pole elements (expansion chambers, Helmholtz, quarter-wave and +extended-tube resonators) with their transmission and insertion loss, and the +choice between reflection and dissipation, while +[Industrial Noise Control](noise-control.md) +keeps the HVAC duct attenuation and flow noise of an installation and the +insertion loss of a machine enclosure. + +If the noise travels in a duct, start at +[Duct-Borne Noise](duct-path.md); if it travels +through a wall, start at +[Room to Room](room-to-room.md); open the +element pages when a chain asks for a number you do not have. + +Both ends of the problem are settled outside this section, and a path +calculation with either end missing has no verdict. At the **source** end, what +a quieting measure is judged against is the emission of the machine itself, +determined by the [Sound power and intensity](../emission/index.md) +pages — and reducing it there is almost always cheaper than treating a path. At +the **receiver** end sit the criteria: the NC and RC Mark II families of +[Room noise criteria](../../buildings/rooms/room-noise.md), plus whatever +occupational limit applies, in [Occupational exposure +(ISO 9612)](../../perception/hearing/occupational-exposure.md). ## Pages in this section @@ -29,3 +73,22 @@ itself, and that is determined by the partition or an enclosure needs to meet a noise criterion. - [Industrial Noise Control: HVAC and Enclosures](noise-control.md): duct attenuation, flow noise and machine-enclosure insertion loss. + +## What this section does not cover + +Nothing here is a measurement: every number is predicted from geometry and +declared data, and the measurement standards named above are cited as the +source of a supplier's figures, not implemented. Within the predictions, three +limits are structural. **Only reactive silencer elements are computed** — +dissipative duct-lining silencers are discussed for selection but are not +modelled from liner properties anywhere in the library, and the lined-elbow and +plenum figures on the HVAC page are interpolated installation tables rather than +a liner model. **Mean flow is outside the element matrices**: convection, +temperature gradients and the flow-dependent impedance of perforates do not +appear, so a silencer carrying significant flow is predicted as though it were +not. And `enclosure_insertion_loss` **never predicts the panel's transmission +loss**: you supply R measured or from another model, and the module combines it +with the interior correction — predicting R itself is [Insulation +design](../../buildings/design/index.md). Above the higher-order-mode cut-on +frequency the plane-wave assumption every duct model rests on stops holding, +which the duct-path page states and which no method here works around. diff --git a/docs/environment/assessment/index.md b/docs/environment/assessment/index.md index 7992440c7..1aa959b00 100644 --- a/docs/environment/assessment/index.md +++ b/docs/environment/assessment/index.md @@ -3,14 +3,90 @@ # Assessment and regulation Propagation says what arrives at the receiver. Assessment says what it counts -as, which is a separate question with its own standards: an indicator averaged -over the right period, adjustments for the character of the sound, and a limit -to compare the result against. +as, which is a separate question with its own standards. It is a chain with +three links: an **indicator** averages the sound over a defined period; +**adjustments** add decibels for character the average does not capture, tone +by tone and impulse by impulse; and a **limit**, always national, decides. +ISO 1996 supplies the first two links, and a national regulation supplies the +third together with its own version of the second. + +[Environmental Levels (ISO +1996-1/-2)](environmental-levels.md) is the +indicator and adjustment layer, and the page most readers of this subsection +want. Lden weights the evening by +5 dB and the night by +10 dB over default +12/4/8 h periods, adjustable because Member States define them differently; +Ldn is the day-night variant; and the composite rating level of clause 6.5 +generalises both to arbitrary periods with source and character adjustments, +from +5 dB for regularly impulsive sound to +12 dB for highly impulsive sound. +The ISO 1996-2 half of the page *determines* rather than defines: the Annex C +tonal adjustment, the clause 10.4 correction for residual noise, and the +Annex F uncertainty budget that says how much the rating level is worth. It +starts from period levels you already have; producing those is [Integrated and +Statistical Levels](../../signals/levels/levels.md). [Impulsive-sound prominence (NT ACOU 112)](impulsive-sound.md) is the adjustment for sound whose impulses make it more annoying than its LAeq suggests, in both the Nordtest closed form and the ISO/PAS 1996-3 measurement -chain. The indicators it adjusts are in -[Environmental Levels](environmental-levels.md), and the -national application of the whole chain is in -[the Spanish regulation](spanish-noise-regulation.md). +chain: from the onset rate and level difference of each impulse it predicts a +prominence and converts it into the graduated adjustment KI added to the +measured LAeq. It is the measurement that replaces an assessor's judgement in +the character-adjustment slot of the chain above, and it ends in a `.report()` +assessment fiche. + +[Spanish Noise Regulation (RD 1367/2007)](spanish-noise-regulation.md) +is what the whole chain looks like once a state has legislated it: the +corrected level LKeq with its tonal, low-frequency and impulsive corrections +Kt, Kf and Ki, evaluation periods split into noise phases, and the limit tables +an activity is judged against by land use. Read it as the worked example of a +national layer even if you do not work in Spain — it shows which parts of +ISO 1996 a regulation typically restates, and which it replaces. Kf, the +correction driven by the difference between the C-weighted and the A-weighted +level, has no counterpart in ISO 1996 at all. + +Read Environmental Levels first, then the impulsive-sound page as the +adjustment that feeds it, then the Spanish regulation as the national assembly +of both. + +## Pages in this section + +- [Environmental Levels (ISO 1996-1/-2)](environmental-levels.md): + Lden, Ldn and the composite rating level of clause 6.5, the Annex C tonal + adjustment, the clause 10.4 residual-noise correction and the Annex F + uncertainty budget. +- [Impulsive-sound prominence (NT ACOU 112)](impulsive-sound.md): + the predicted prominence of impulsive sounds, the graduated LAeq adjustment + KI, the ISO/PAS 1996-3 measurement chain and the assessment fiche. +- [Spanish Noise Regulation (RD 1367/2007)](spanish-noise-regulation.md): + the corrected level LKeq, the Kt/Kf/Ki corrections, the evaluation periods + and noise phases, and the immission limit tables. + +## See also + +Pages elsewhere on the site that this section leans on: + +- [Integrated and Statistical Levels](../../signals/levels/levels.md): the + LAeq, percentile and event levels of each reference period, which every + indicator here starts from. +- [Objective audibility of tones in noise](../../perception/psychoacoustics/tone-audibility.md): + the ISO/PAS 20065 engineering method whose mean audibility the ISO 1996-2 + tonal adjustment maps into decibels. +- [Outdoor Sound Propagation](../propagation/outdoor-propagation.md): + the path that delivered the sound to the receiver being assessed. + +## What this section does not cover + +The library starts where the sound level meter stops. ISO 1996-2 fixes the +receiver positions and the façade corrections that turn a raw measurement into +the level these functions expect, and those position and correction procedures +are **not implemented** — only the arithmetic that follows once you have +applied them. The same is true nationally: the Annex IV measurement procedures +of RD 1367/2007 (microphone positions, series duration, number of +measurements) are not implemented either, and the acoustic zoning, noise maps +and action plans of Ley 37/2003 are planning instruments rather than +calculations. Two published alternatives are deliberately absent: only the +graduated KI of NT ACOU 112 Formula 2 is implemented, not the flat 5 dB +fallback of its Note 4, and the ISO 1996-1 Table A.1 category adjustments +appear only as the assessor's-judgement baseline the measurement replaces. +Finally, no limit table other than the Spanish one is built in: a limit is +national, and the library gives you the rating level to compare against +whichever one applies. diff --git a/docs/environment/index.md b/docs/environment/index.md index d8cf91027..b62a7ba99 100644 --- a/docs/environment/index.md +++ b/docs/environment/index.md @@ -32,6 +32,15 @@ consumes is shared with the room and materials pages. Start with [Outdoor Sound Propagation](propagation/outdoor-propagation.md); it introduces the source-path-receiver bookkeeping the transport pages reuse. +The three jobs this section is normally used for combine the subsections +differently. A **strategic noise map** is a CNOSSOS source model, a propagation +model and Lden. A **plant or permit assessment** is a measured sound power +(determined in [Sources and devices](../devices/emission/index.md)), ISO 9613-2 +to the nearest dwelling, and the ISO 1996 rating level with its adjustments. +An **activity inspection** is a sound level meter at a receiver point and +RD 1367/2007, or whichever national regulation applies, with no propagation +model in the chain at all. + ## [Assessment and regulation](assessment/index.md) What the received sound is rated against, once it has arrived. @@ -41,7 +50,7 @@ What the received sound is rated against, once it has arrived. turn a measured LAeq into an assessed one. - [Spanish Noise Regulation (RD 1367/2007)](assessment/spanish-noise-regulation.md): the national application of that chain, with its own limits and its own - tonal and impulsive corrections. + tonal, low-frequency and impulsive corrections. - [Impulsive-sound prominence (NT ACOU 112)](assessment/impulsive-sound.md): the predicted prominence of impulsive sounds and the graduated adjustment added to LAeq. @@ -53,10 +62,12 @@ arrives. - [Outdoor Sound Propagation](propagation/outdoor-propagation.md): atmospheric absorption (ISO 9613-1) and the ISO 9613-2 general method with - its per-term attenuation breakdown. -- [Ground effect and barriers](propagation/ground-barriers.md): - the ground attenuation of ISO 9613-2 and the insertion loss a barrier adds - to the path. + its per-term attenuation breakdown, including the tabulated ground term and + the barrier screening term. +- [Spherical ground effect and advanced barriers](propagation/ground-barriers.md): + the wave acoustics underneath those two fits — the Weyl-Van der Pol + spherical-wave reflection coefficient over finite-impedance ground, and + wave-theoretic screen diffraction. - [Atmospheric refraction](propagation/atmospheric-refraction.md): how wind and temperature gradients bend a ray into or out of a shadow zone. @@ -77,3 +88,42 @@ strength per band, ready for the path above to attenuate. Aircraft are the other transport source with internationally fixed metrics, and they have a topic of their own: [Aircraft noise](../aircraft/index.md). + +## What this section does not cover + +Only the source side of CNOSSOS-EU Annex II is implemented, and only two of its +four sources. The **industrial source** of section 2.4 and Appendix H, and the +**aircraft source** of sections 2.6 and 2.7, are not implemented; aircraft noise +is covered by the ICAO and ECAC methods in [Aircraft +noise](../aircraft/index.md), which is a different family of models, and a +non-vehicle machine is characterised as a sound power in [Sources and +devices](../devices/emission/index.md). The **CNOSSOS propagation method** of +section 2.5 is not implemented either: the path here is ISO 9613-2, a different +model, so a chain built from CNOSSOS sources and this library's propagation is +not a CNOSSOS calculation and should not be reported as one. + +Nothing here is a mapping engine. There is no terrain model, no city geometry +and no GIS layer: the propagation functions take one source, one receiver and +the ground between them, both refraction models assume flat ground at z = 0, +and how a source line is split into point sources is declared out of scope by +CNOSSOS itself. On the assessment side, the library starts where the sound +level meter stops — the ISO 1996-2 receiver positions and façade corrections, +and the RD 1367/2007 Annex IV measurement procedures (microphone positions, +series duration, number of measurements), are not implemented, only the +arithmetic that follows once you have applied them. Acoustic zoning, noise maps +and action plans under Ley 37/2003 are planning instruments, not calculations. + +## Before and after these pages + +Every rating here is an adjusted $L_{eq}$, so the calibration, weighting and +time integration that produce it are in [Signal +analysis](../signals/index.md), and [Build a sound level +meter](../signals/sound-level-meter.md) runs that chain end to end on +one runnable page. The derivations are in [Environment and transport +theory](../reference/theory/environment-transport.md): the ISO 1996-1 descriptors, the +NT ACOU 112 prominence criterion and the ISO 9613 attenuation terms. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. diff --git a/docs/environment/propagation/index.md b/docs/environment/propagation/index.md index ec6389029..033f6c832 100644 --- a/docs/environment/propagation/index.md +++ b/docs/environment/propagation/index.md @@ -2,63 +2,58 @@ # Outdoor sound -Outdoor sound assessment has two halves: predicting the level a source -delivers to a distant receiver, and judging the character of the sound that -actually arrives. The pages of this section split along that line, with the -prediction half starting one step earlier, at the source itself. +This section is the **path**: what happens to a sound between a source of known +power and a receiver hundreds of metres away. Its three pages go from the +engineering method down to the physics it approximates, and then to the one +thing both of them assume does not happen. [Outdoor Sound Propagation](outdoor-propagation.md) is the -prediction half. Starting from a source's **sound power**, the ISO 9613-2 -general method subtracts, octave band by octave band, every mechanism that -attenuates sound on its way: geometrical divergence, atmospheric absorption -(supplied by the pure-tone coefficient of **ISO 9613-1**), the ground effect -and barrier screening, with a meteorological correction for long-term -averages. The page keeps the per-term breakdown visible, so a prediction is -never a black box: you can see exactly which mechanism buys how many decibels -at which frequency. - -[CNOSSOS-EU railway source emission](../sources/cnossos-rail-emission.md) -is the source half for the railway. Section 2.3 of Annex II to Directive -2002/49/EC turns a roughness spectrum, a set of transfer functions and a train -flow into the two equivalent source lines every strategic noise map in the -European Union starts from, at 0,5 m and at 4,0 m above the rail head, with -impact noise, curve squeal, traction, aerodynamic noise above 200 km/h and the -bridge term each allocated to the height it radiates from. +engineering method. Starting from a source's **sound power**, ISO 9613-2 +subtracts, octave band by octave band, every mechanism that attenuates sound on +its way: geometrical divergence, atmospheric absorption (supplied by the +pure-tone coefficient of **ISO 9613-1**), the ground effect and barrier +screening, with a meteorological correction for long-term averages. The page +keeps the per-term breakdown visible, so a prediction is never a black box: you +can see exactly which mechanism buys how many decibels at which frequency. +Start here — the other two pages exist to say when its terms can be trusted. [Spherical ground effect and advanced barriers](ground-barriers.md) -goes underneath the ISO 9613-2 fits to the wave acoustics they approximate: the +goes underneath two of those terms to the wave acoustics they fit: the Weyl-Van der Pol spherical-wave reflection coefficient of a finite-impedance ground, and barrier diffraction by the Kurze-Anderson Fresnel number, the exact rigid half-plane, thick barriers and the coherent four-path barrier on the -ground, all resolving the frequency-dependent interference the octave-band terms -smooth away. - -[CNOSSOS-EU road traffic source emission](../sources/cnossos-road-emission.md) -supplies the source power that a prediction starts from, for the one source -that dominates almost every noise map: road traffic. The common EU method of -Annex II to Directive 2002/49/EC builds a rolling and a propulsion sound power -for each vehicle category, corrects the rolling term for pavement, air -temperature and studded tyres and the propulsion term for pavement and road -gradient, applies the junction correction to both, and delivers a directional -sound power per metre of source line. +ground. What it resolves is the frequency-dependent interference the +octave-band terms smooth away: a ground dip is a cancellation between a direct +and a reflected path, at a frequency that depends on the geometry and the +ground impedance, and a tabulated correction cannot know where it falls. Open +this page when the answer is dominated by the ground or by a screen, or when +the octave-band result has to be defended against a measurement. -[Impulsive-sound prominence (NT ACOU 112)](../assessment/impulsive-sound.md) -is the assessment half. Noise containing distinct impulses (hammering, -riveting, pile driving) annoys more than a steady sound of the same LAeq, and -the Nordtest method quantifies that: from the onset rate and level difference -of each impulse it computes a predicted **prominence**, and converts it into -the graduated adjustment KI that is added to the measured LAeq in a rating -level. +[Atmospheric refraction: rays and the GFPE](atmospheric-refraction.md) +removes the assumption both pages above are built on. Sound speed changes with +height, so rays are curved rather than straight, and whether that matters is +mostly a question of range: a representative surface-layer gradient bends rays +on a radius of about 3.4 km, so over the first hundred metres the homogeneous +models are accurate, and beyond a few hundred the geometry takes over. Downwind +or under a nocturnal inversion the rays close over the ground and hold the +level up; upwind the same profile opens an acoustic shadow into which the level +collapses by 20 dB or more. That asymmetry — the same machine at the same +distance, tens of decibels apart depending on which side you stand — is what +ISO 9613-2 fixes by decree in its favourable-propagation convention and +compresses into the scalar meteorological correction. This page computes it, +with curved rays and closed-form shadow-zone distances, and with the Green's +function parabolic equation as the reference field. -The surrounding machinery lives nearby: the rating levels and Lden that -assessments end in are covered in -[Integrated and Statistical Levels](../../signals/levels/levels.md), the tonal -counterpart of the impulsive adjustment in -[Objective audibility of tones in noise](../../perception/psychoacoustics/tone-audibility.md), -and the sources that feed a propagation calculation in the -[Sound power and intensity](../../devices/emission/index.md) and -[Aircraft and wind energy](../../aircraft/index.md) -sections. +Read them in that order. The rating that a predicted level ends in is not here: +the period levels come from [Integrated and Statistical +Levels](../../signals/levels/levels.md), and Lden, Ldn and the rating level +from [Environmental Levels (ISO +1996-1/-2)](../assessment/environmental-levels.md) in the +[assessment](../assessment/index.md) subsection. The source +strengths a prediction starts from are in +[Environmental sources](../sources/index.md) for road, rail and +wind turbines, in [Sound power and intensity](../../devices/emission/index.md) +for a machine, and in [Aircraft noise](../../aircraft/index.md) for aircraft. ## Pages in this section @@ -77,13 +72,31 @@ sections. Pages elsewhere on the site that this section leans on: -- [CNOSSOS-EU railway source emission](../sources/cnossos-rail-emission.md): - the common EU railway emission method, from rail and wheel roughness to the - directional sound power per metre of the two equivalent source lines. -- [CNOSSOS-EU road traffic source emission](../sources/cnossos-road-emission.md): - the road source of Annex II to Directive 2002/49/EC: rolling and propulsion - sound power per vehicle category with the Appendix F database, and the - directional sound power per metre of source line. -- [Impulsive-sound prominence (NT ACOU 112)](../assessment/impulsive-sound.md): - the predicted prominence of impulsive sounds and the graduated LAeq - adjustment KI. +- [CNOSSOS-EU road traffic source emission](../sources/cnossos-road-emission.md) + and [CNOSSOS-EU railway source emission](../sources/cnossos-rail-emission.md), + both in [Environmental sources](../sources/index.md): the + directional sound power per metre of source line that a prediction starts + from. +- [Impulsive-sound prominence (NT ACOU 112)](../assessment/impulsive-sound.md), + in [Assessment and regulation](../assessment/index.md): the + character adjustment applied to the level once it has arrived. + +## What this section does not cover + +These are point-to-point models, not a mapping engine. Each call takes one +source, one receiver and the ground between them; there is no terrain +elevation profile, no building geometry and no GIS layer, both refraction +models assume flat ground at height zero and a profile that varies with height +alone rather than along the path, and how a source line is broken into point +sources is declared out of scope by CNOSSOS itself. The **CNOSSOS-EU +propagation method of section 2.5 is not implemented**: it is a different model +from ISO 9613-2, so a calculation that pairs CNOSSOS source powers with the +path here is not a CNOSSOS calculation. The coherent barrier-on-ground model +weights its four diffracted paths with a single reflection coefficient computed +over the overall geometry, so it is coherent and reciprocal but is not a +boundary-element solution, and no model here computes turbulent scattering: +ISO 9613-2 absorbs it into the fixed caps on its screening term, and the +wave-acoustic and refraction pages assume a non-turbulent atmosphere +outright. Nothing on these pages produces a rating: no Lden, +no limit value and no verdict — those are +[Assessment and regulation](../assessment/index.md). diff --git a/docs/environment/sources/index.md b/docs/environment/sources/index.md index 9601a9e94..1f5cc6cea 100644 --- a/docs/environment/sources/index.md +++ b/docs/environment/sources/index.md @@ -2,13 +2,92 @@ # Environmental sources -Before anything propagates there has to be a source, described in the terms the -propagation model expects: a line power per octave band for traffic, an -apparent sound power level for a turbine. - -[CNOSSOS-EU road traffic](cnossos-road-emission.md) -and [CNOSSOS-EU railways](cnossos-rail-emission.md) -are the emission halves of the European method, the ones a strategic noise map -is built on. [Wind-turbine noise](wind-turbine-noise.md) -is IEC 61400-11, where the source descriptor and its tonal audibility are -measured rather than tabulated. +A propagation model does not accept a machine; it accepts a **source +descriptor** with a fixed geometry. For traffic that means an incoherent source +line carrying a sound power per metre at a standardised height; for a turbine it +means an apparent sound power referred to an equivalent point source at the +rotor centre. The height, the band range and the directivity are part of the +definition, not details of the measurement, which is why an emission method is +a standard in its own right and not a preliminary step. What every page here +produces is that descriptor, in the form +[Outdoor Sound Propagation](../propagation/outdoor-propagation.md) +consumes. + +[CNOSSOS-EU road traffic source emission](cnossos-road-emission.md) +implements section 2.2 of Annex II to Directive 2002/49/EC in its consolidated +text: Directive (EU) 2015/996 as corrected by the OJ L 5 corrigendum of 2018, +which restores the 63 Hz to 8 kHz octave range the original clause contradicted, +and amended by Delegated Directive (EU) 2021/1226, which replaces Tables F-1 and +F-4 outright and makes the current source some 2,5 to 3,5 dB(A) louder than the +2015 one — so any comparison with pre-2021 literature carries that offset. Each +vehicle is a point source 0,05 m above the pavement, with the first pavement +reflection already inside its power. Per category (light, medium heavy, heavy, +mopeds, motorcycles) a rolling and a propulsion term are energy-summed, +corrected for pavement, air temperature, studded tyres and gradient, adjusted +near junctions, and turned into a directional power per metre of source line. + +[CNOSSOS-EU railway source emission](cnossos-rail-emission.md) +implements section 2.3 on the same pattern, but with **two** equivalent source +lines, at 0,5 m and at 4,0 m above the rail head, because the physical sources +radiate from different heights. It starts one step further back than the road +method: from wheel and rail roughness spectra, passed through the contact filter +and the vehicle and track transfer functions, with the wavelength-to-frequency +conversion at the train speed that makes rail arithmetic different from road +arithmetic. Impact noise at joints and switches, curve squeal, traction, +aerodynamic noise above 200 km/h and a bridge term are each allocated to the +height they radiate from. + +[Wind-turbine noise: sound power and tonal audibility](wind-turbine-noise.md) +is IEC 61400-11, where the descriptor is **measured** rather than tabulated. +With the microphone on a ground board at the horizontal distance R0 = H + D/2, +the apparent sound power per band follows from the measured pressure level and +the slant distance to the rotor centre, the −6 dB in the formula accounting for +the pressure doubling on the board; results are binned by standardised wind +speed. The same page carries the tonal audibility that decides whether a +blade-passing, gearbox or generator tone stands above its masking noise, and +ends in a `.report()` assessment fiche. + +Read the road page first even for a railway job: it introduces the source-line +bookkeeping and the Annex II layering that the rail page reuses. The turbine +page is independent of both. + +## Pages in this section + +- [CNOSSOS-EU road traffic source emission](cnossos-road-emission.md): + the rolling and propulsion sound power per vehicle category, its pavement, + temperature, studded-tyre, gradient and junction corrections, and the + directional power per metre of source line. +- [CNOSSOS-EU railway source emission](cnossos-rail-emission.md): + roughness and transfer functions to the two equivalent source lines at 0,5 m + and 4,0 m, with the impact, squeal, traction, aerodynamic and bridge terms. +- [Wind-turbine noise: sound power and tonal audibility](wind-turbine-noise.md): + the IEC 61400-11 apparent sound power referred to the rotor centre, its + wind-speed binning and the tonal-audibility chain, with the assessment fiche. + +## See also + +Pages elsewhere on the site that this section leans on: + +- [Outdoor Sound Propagation](../propagation/outdoor-propagation.md): + the path model every descriptor here is built to feed. +- [Sound power and intensity](../../devices/emission/index.md): how a machine + that is not a vehicle is characterised. + +## What this section does not cover + +Two of the four CNOSSOS sources are missing, by omission rather than oversight: +the **industrial source** of section 2.4 and Appendix H is not implemented, and +neither is the **aircraft source** of sections 2.6 and 2.7 — aircraft noise is +covered by the ICAO and ECAC methods in [Aircraft +noise](../../aircraft/index.md), which is a different family of models entirely. +Neither is the **CNOSSOS propagation method** of section 2.5: it differs from +the ISO 9613-2 model this library implements, so pairing these source powers +with [Outdoor Sound +Propagation](../propagation/outdoor-propagation.md) does not +give a CNOSSOS result. Inside the two methods that are here, three gaps come +from the source documents themselves: the open vehicle category 5 has no +coefficients in Appendix F and is not modelled, rail roughness classes N and B +carry no spectrum in Appendix G and must be supplied by the Member State, and +how a source line is split into point sources is declared out of scope by the +method. Depots, stations and loudspeakers are railway sources under 2.3.3 but +are treated by the industrial method, so they are not here either. diff --git a/docs/materials/absorbers/index.md b/docs/materials/absorbers/index.md index d2c79b346..f9c6e28e1 100644 --- a/docs/materials/absorbers/index.md +++ b/docs/materials/absorbers/index.md @@ -3,10 +3,12 @@ # Absorbers An absorber can be characterised at three scales, and this subsection walks -them in order: the finished product in a reverberation room, the small sample -in an impedance tube, and the raw material in a flow rig, with the prediction -models that tie the three together and the metamaterial designs that push -them past the classical thickness rules. +them from the finished product inwards: the mounted product in a reverberation +room, the raw material in a flow rig, and the small sample in an impedance +tube — the flow rig before the tube because the resistivity it measures is the +single parameter every model the tube is fitted against starts from. Then come +the prediction models that tie the three together, and the metamaterial designs +that push them past the classical thickness rules. [Sound Absorption Measurement and Rating](absorption-measurement.md) is the product scale: the ISO 354 reverberation-room measurement of the @@ -58,3 +60,20 @@ meshed cell. - [Metamaterial Absorbers](metamaterial-absorbers.md): the critical-coupling condition and the slow-sound slit panel with its design solver. + +## What this section does not cover + +None of these pages qualifies a laboratory. ISO 354's room requirements of +Annex A — the number of loudspeaker and microphone positions, the diffusing +elements — are not checked; the functions convert an +already-measured decay pair and only warn when the room volume or sample area +falls outside the clause 6 limits. Two editions are cited but not implemented: +the code follows the 1998/2001 transfer-function method of ISO 10534-2, not the +2023 edition, and ASTM E2611-19, not E2611-24. The probe-traverse refinements of +ISO 10534-1 (extrapolating the minima to the sample face, probe-body +corrections) are described but not automated. The prediction models are +forward-only: they turn a resistivity into an impedance, and no inverse solver +recovers the material parameters from a measured curve. And no measurement +standard governs the metamaterial designs at all — a built panel is verified in +the impedance tube or the reverberation room like any other absorber, which is +why that page states a prediction and not a rating. diff --git a/docs/materials/diffusers/index.md b/docs/materials/diffusers/index.md index 5194ad965..a73deaa0f 100644 --- a/docs/materials/diffusers/index.md +++ b/docs/materials/diffusers/index.md @@ -5,8 +5,9 @@ Where the [Absorbers](../absorbers/index.md) subsection asks how much energy a material removes from the field, this one asks what a *surface* does with the sound it returns: how much it throws off the specular -direction, how evenly it spreads it, and, out on a pavement, how much it -absorbs where no laboratory can follow. Three guides walk that ground. +direction and how evenly it spreads it. Two guides walk that ground, and a +third family of surface measurements — pavements characterised where they lie — +has its own subsection nested inside this group. [Diffusers and Their Coefficients](diffusers.md) is the measurement and design core: the random-incidence **scattering coefficient** @@ -23,12 +24,10 @@ deep, with critical coupling supplying the perfectly absorbing `0` state that ternary sequences need. The published quadratic-residue design is evaluated end to end, transfer-matrix chain to FDTD cross-check. -[In-situ Road-Surface Absorption](../surfaces/road-absorption.md) takes -the absorption question outdoors: the ISO 13472-1 subtraction technique -separates the incident and road-reflected components of an impulse with the -Adrienne window, and the ISO 13472-2 spot tube presses a portable -impedance tube onto the pavement for reflective surfaces, with the choice -between the two methods spelled out. +[Surfaces measured in place](../surfaces/index.md) takes the +absorption question outdoors, to the surfaces that have no sample: it covers +the ISO 13472-1 subtraction technique and the ISO 13472-2 spot tube, and the +decision between them. The neighbours are close: the diffuser panels are surface relatives of the [metamaterial absorbers](../absorbers/metamaterial-absorbers.md) built @@ -51,5 +50,23 @@ methods serve the outdoor-noise interest of Pages elsewhere on the site that this section leans on: -- [In-situ Road-Surface Absorption](../surfaces/road-absorption.md): +- [Surfaces measured in place](../surfaces/index.md) and its guide + [In-situ Road-Surface Absorption](../surfaces/road-absorption.md): the ISO 13472-1 subtraction technique and the ISO 13472-2 spot method. + +## What this section does not cover + +Both prediction models here are **design estimates, not measurements**. The +Fraunhofer far field the diffuser and metadiffuser pages share loses accuracy +at low frequency, at grazing angles and over strongly absorbing surfaces, and +it ignores edge diffraction, so it grades a well-depth sequence before it is +built and does not replace an ISO 17497-2 measurement; the metadiffuser model +is locally reacting on top of that, with no coupling between wells. Only the +quadratic-residue depth sequence has a dedicated helper — primitive-root and +modulated arrangements are discussed as design guidance and enter through the +explicit depth or reflection arguments. The inverse problem, solving resonator +geometries for a target phase profile, is not automated: the workflow matches +phases by evaluation. On the measurement side the library reduces the data but +does not run the rig: the ISO 17497-1 turntable and the ISO 17497-2 goniometer +supply the reverberation times and the polar response, and what is implemented +is the arithmetic that turns them into a coefficient. diff --git a/docs/materials/index.md b/docs/materials/index.md index ef4fd95da..31724a8cb 100644 --- a/docs/materials/index.md +++ b/docs/materials/index.md @@ -42,20 +42,41 @@ coefficient** (ISO 17497-1) and the **diffusion coefficient** (ISO 17497-2), together with Schroeder diffuser design and its far-field prediction. [Metadiffusers](diffusers/metadiffusers.md) rebuilds the Schroeder diffuser from resonator-loaded slits, one to two orders of magnitude thinner. -And [In-situ Road-Surface Absorption](surfaces/road-absorption.md) -measures the absorption of a pavement where it lies, by the ISO 13472-1 -subtraction technique over an extended surface or the ISO 13472-2 spot tube. + +Nested inside that group is **Surfaces measured in place**, for the surfaces +that have no sample. A pavement cannot be cut out and carried indoors without +destroying the connected pore structure that governs its absorption, so the +laboratory geometry is replaced by a time window over an extended surface, or +by a tube pressed onto the road. +[In-situ Road-Surface Absorption](surfaces/road-absorption.md) +measures it where it lies, by the ISO 13472-1 subtraction technique or the +ISO 13472-2 spot tube, and says which of the two a given pavement allows. + +The **Resilient layers** subsection covers the one material property here that +is mechanical rather than acoustic: a resilient layer is characterised not by +what it does to airborne sound but by how softly it supports a mass, so its +measurement is a resonance and not an absorption. A floating floor is a +mass-spring system, the screed is the mass and the layer is the spring, and the +dynamic stiffness per unit area s' of the layer sets the resonance above which +the floor starts working. +[Dynamic stiffness of resilient materials (EN 29052-1)](resilient/dynamic-stiffness.md) +is the load-plate resonance measurement that produces s', with the enclosed-gas +term that makes an air-permeable layer stiffer than its frame alone. The consumers of these numbers are spread across the site: absorption coefficients feed the reverberation predictions in -[Room acoustics](../buildings/rooms/index.md), dynamic -stiffness (measured by a related load-plate method) feeds the floating-floor -model in [Sound insulation](../buildings/insulation/index.md), +[Room acoustics](../buildings/rooms/index.md); the dynamic stiffness measured +here feeds the floating-floor model of +[Sound insulation](../buildings/insulation/index.md) through +[Predicting resilient-layer performance](../buildings/design/resilient-layers.md); and the road-surface methods connect to the outdoor-noise interest of the [Environment and transport](../environment/index.md) section. -## Pages in this section +## [Absorbers](absorbers/index.md) + +How much energy a material takes out of the field, one instrument or model +family per guide. - [Absorbers overview](absorbers/index.md): the measurement chain from reverberation room to flow rig to impedance tube, @@ -74,9 +95,15 @@ section. and the random-incidence Paris integral. - [Metamaterial Absorbers](absorbers/metamaterial-absorbers.md): critical coupling and the slow-sound slit panel with its design solver. + +## [Diffusers and surfaces](diffusers/index.md) + +Where a surface sends what it reflects, and the surfaces that can only be +measured in place. + - [Diffusers and surfaces overview](diffusers/index.md): what a surface does with the sound it returns, from coefficients to - metamaterial panels to pavements. + metamaterial panels. - [Diffusers and Their Coefficients](diffusers/diffusers.md): ISO 17497-1/2 scattering and diffusion coefficients, Schroeder design and the far-field prediction. @@ -86,6 +113,11 @@ section. surfaces that cannot be taken to a laboratory, characterised where they lie. - [In-situ Road-Surface Absorption](surfaces/road-absorption.md): ISO 13472-1/-2 in-situ road-surface absorption. + +## [Resilient layers](resilient/index.md) + +The mechanical property a floating floor is designed around. + - [Resilient layers overview](resilient/index.md): what a resilient layer does under a floating floor, and the dynamic stiffness that sets it. @@ -93,3 +125,38 @@ section. the resonance method that measures what a resilient layer does under a floating floor, and the apparent stiffness the insulation design chapter asks it for. + +## What this section does not cover + +Everything here characterises a **material or a surface**, never a +construction. The transmission loss of a wall, the impact improvement of a +floor and the flanking paths of a junction are +[Sound insulation](../buildings/insulation/index.md) and +[Insulation design](../buildings/design/index.md); this section supplies the +coefficients they consume. Two boundaries inside the measurements themselves +are worth knowing before you start. The in-situ road methods implement +ISO 13472-1:2002 and ISO 13472-2:2010; **their 2022 and 2025 revisions are not +implemented**. And the resilient-layer measurement expects a resonant frequency +that has already been extrapolated to zero force amplitude by clause 7 of +EN 29052-1, a procedure that is not implemented, and an airflow resistivity +supplied as an input rather than measured in place. Nothing in this section +predicts a material from its chemistry or its manufacture: the models run +forwards from measured macroscopic parameters — flow resistivity, porosity, +tortuosity — to an impedance, and there is no inverse solver that recovers +those parameters from a measured impedance curve. + +## Before and after these pages + +Every coefficient on these pages is derived from band levels or from a +transfer function between microphones, so the filtering, weighting and +calibration that produce them are in [Signal analysis](../signals/index.md), +and [Build a sound level meter](../signals/sound-level-meter.md) runs +that chain end to end on one runnable page. The derivations are in [Materials +and surfaces theory](../reference/theory/materials-surfaces.md): the characterisation +quantities, the in-situ subtraction and the scattering and diffusion +coefficients. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. diff --git a/docs/materials/resilient/index.md b/docs/materials/resilient/index.md index 73f3e0877..d13a0f53e 100644 --- a/docs/materials/resilient/index.md +++ b/docs/materials/resilient/index.md @@ -2,12 +2,65 @@ # Resilient layers -A floating floor works because a soft layer decouples it from the structure -below, and how well it works is set by one number: the dynamic stiffness per -unit area of that layer. +A floating floor is a mass-spring system: the screed is the mass, the resilient +layer is the spring, and the impact improvement the pair buys begins above the +resonance they set. That resonance is fixed by the mass per unit area m' of the +slab, in kg/m², and by the **dynamic stiffness per unit area** s' of the layer, +in MN/m³ — the dynamic force per unit area divided by the change in thickness it +produces. A 120 kg/m² screed on a 10 MN/m³ layer resonates near 46 Hz; halving +the stiffness moves that down by a factor of the square root of two, and +everything the floor achieves in the rated bands follows from where the +resonance sits. This is why s' is the one number a resilient-layer datasheet +must carry, and why it is a *dynamic* stiffness: a static compression test +describes neither the audio frequency range nor the working preload. [Dynamic stiffness of resilient materials (EN 29052-1)](dynamic-stiffness.md) -is the resonance measurement that gives it, with the enclosed-gas term that -makes a porous layer stiffer than its frame alone and the natural frequency the -finished floor ends up with. What the insulation design chapter does with that -number is in [Predicting resilient-layer performance](../../buildings/design/resilient-layers.md). +is the measurement that produces it. A 200 mm × 200 mm specimen carries an 8 kg +load plate — 200 kg/m² in total, which reproduces the roughly 2 kPa static +preload of a real floating floor — and a vertical exciter with an accelerometer +gives the fundamental resonance of the plate-on-specimen system, from which the +apparent stiffness follows directly. For an air-permeable material the pore air +is a second spring in parallel with the frame, and the standard adds it back +through an enclosed-gas term that depends on the loaded thickness: the installed +stiffness therefore depends on how the layer will be sealed and on its lateral +airflow resistivity, which is what the clause 8.2 regimes decide. The guide +chains all of it and renders the clause 9 test-report fiche. + +Two inputs come from outside this subsection. The resonant frequency has to be +extrapolated to zero force amplitude by the clause 7 procedure, and the airflow +resistivity is measured by ISO 9053 in +[Airflow Resistance](../absorbers/airflow-resistance.md) — note +that ISO 9053 reports it in Pa·s/m² while this page's argument is in kPa·s/m². +What the design side does with s' is +[Predicting resilient-layer performance](../../buildings/design/resilient-layers.md), +which turns it into the floating-floor improvement and the ISO 12354-1 Annex D +lining rating. + +## Pages in this section + +- [Dynamic stiffness of resilient materials (EN 29052-1)](dynamic-stiffness.md): + the load-plate resonance method, the apparent stiffness it yields, the + enclosed-gas term for air-permeable layers, the airflow-resistivity regimes + of clause 8.2 and the clause 9 test-report fiche. + +## See also + +Pages elsewhere on the site that this section leans on: + +- [Airflow Resistance](../absorbers/airflow-resistance.md): the + ISO 9053 measurement of the lateral resistivity the regime rule needs. +- [Predicting resilient-layer performance](../../buildings/design/resilient-layers.md): + the consumer, where s' becomes a floating-floor improvement. + +## What this section does not cover + +The measurement starts one step after the signal. Clause 7's extraction of the +resonant frequency from the raw excitation-response record — by sinusoidal, +white-noise or pulse excitation — and its extrapolation to zero force amplitude +are **not implemented**: pass a resonant frequency that has already been +extrapolated. The lateral airflow resistivity is an input, not a measurement. +Clause 6's specimen-selection requirement of at least three 200 mm × 200 mm +specimens is not enforced, so nothing here objects if you characterise a +material from one. And the layer's other properties — creep under long-term +load, compressive strength, thermal performance — are outside the standard and +outside the library. diff --git a/docs/materials/surfaces/index.md b/docs/materials/surfaces/index.md index 11e229032..a0624d0a4 100644 --- a/docs/materials/surfaces/index.md +++ b/docs/materials/surfaces/index.md @@ -2,11 +2,70 @@ # Surfaces measured in place -Some surfaces cannot be cut into a sample and carried to a reverberation room. -A road pavement is the standing case: it is characterised where it lies, with a -source and a microphone above it and a time window that separates the reflection -from everything else. +A reverberation-room or impedance-tube coefficient describes a *sample*. Some +surfaces have no sample. A pavement cannot be cut out and carried to a +laboratory without destroying the very thing that governs its absorption — the +connected pore structure of the laid and compacted layer — and a core taken from +it is no longer the surface a tyre rolls on. In-situ methods answer the question +where the surface is, and they pay for it with a geometry problem: the +microphone hears the direct sound and the surface reflection together, so the +method is built around separating them in **time** rather than in space. [In-situ road-surface absorption](road-absorption.md) -implements both ISO 13472 methods, with the Adrienne window the standard -prescribes and the geometry corrections the measurement needs. +implements both parts of ISO 13472 and, more usefully, states which one a given +pavement allows. The **subtraction technique** of Part 1 puts a source and a +microphone above the surface, subtracts a free-field reference measurement and +applies the Adrienne window to keep the reflection and discard everything after +it. It handles the full range from reflective to highly absorbing pavements, +covers 250 Hz to 4 kHz, and averages over a patch metres across — a 5 ms window +gives a maximum sampled-area radius of about 1.34 m, roughly 5.6 m² of road, so +it sees texture and joints rather than one spot. The **spot method** of Part 2 +seals a short portable tube onto the pavement and reads it with the two-microphone +transfer-function routine. It needs only a flat, sealable patch and minutes per +point, so it can sit in a wheel track or on a narrow strip, but it is scoped to +reflective surfaces, is declared unreliable once the measured absorption exceeds +0.15, and stops at 1600 Hz — which matters, because the tyre-road noise the +measurement usually serves peaks around 1 kHz and has content beyond that +ceiling. + +They are complements, not competitors: Part 2's own introduction expects the two +to agree between 315 Hz and 1600 Hz, and both report the same quantity, the +normal-incidence absorption coefficient in one-third-octave bands. A +low-absorption lane can therefore be surveyed with the tube and anchored with a +subtraction measurement at a few positions. That number is what a low-noise +pavement specification is written against, and what the ground term of an +outdoor propagation model consumes. + +## Pages in this section + +- [In-situ road-surface absorption](road-absorption.md): + the ISO 13472-1 subtraction technique with the Adrienne window and its + geometry and validity helpers, the ISO 13472-2 spot tube with its + applicability limits, and the comparison that decides between them. + +## See also + +Pages elsewhere on the site that this section leans on: + +- [Impedance Tube](../absorbers/impedance-tube.md): the + ISO 10534-2 two-microphone reduction the spot method reuses unchanged. +- [Sound Absorption Measurement and Rating](../absorbers/absorption-measurement.md): + the laboratory route, for materials that can be brought indoors. +- [Environment and transport](../../environment/index.md): where a road's + absorption is consumed, as the ground term of an outdoor prediction. + +## What this section does not cover + +**Edition status matters here more than anywhere else in this area.** The +implementation follows ISO 13472-1:2002 and ISO 13472-2:2010; both have since +been revised — 2022 and 2025 respectively — and those revisions are **not** +implemented, so a report that cites the current edition cannot cite these +functions without qualification. The spot method's own signal processing is not +duplicated either: only its geometry, validity and correction helpers live here, +and the two-microphone transfer-function reduction is the ISO 10534-2 routine of +[Impedance Tube](../absorbers/impedance-tube.md). Nothing in +this subsection measures the noise a surface *generates* — the tyre-road source +term is CNOSSOS territory, in [Environmental +sources](../../environment/sources/index.md) — and no in-situ method is provided +for any surface other than a road: a wall or a ceiling measured in place is +outside both parts of ISO 13472. diff --git a/docs/perception/hearing/index.md b/docs/perception/hearing/index.md index dffd7ef75..2f8c4531c 100644 --- a/docs/perception/hearing/index.md +++ b/docs/perception/hearing/index.md @@ -37,14 +37,49 @@ statistics. The perceptual consequences of a shifted threshold, such as reduced speech intelligibility, are picked up by the SII in the [Speech section](../speech/index.md). +**Three pages, three different decibels**, and keeping them apart is most of the +work. A **hearing threshold level** is in dB HL, measured relative to the +audiometric zero, so 0 dB HL is a *different* sound pressure at every frequency +— exactly what ISO 389-7 tabulates. A **daily exposure level** is in +A-weighted decibels normalised to eight hours: an energy dose of the sound +outside the ear, with no listener in it. A **threshold shift** is a difference +of two dB HL values, so it may be added to a hearing level and never to a sound +pressure level. The chain between them runs one way only: ISO 9612 delivers a +single A-weighted LEX,8h into the ISO 1999 formulae, which return dB HL. The +only bridge back from hearing level to physical sound pressure is the ISO 389-7 +reference threshold on the threshold page — which is also what the SII needs +when a raised threshold is used as an input. + ## Pages in this section -- [Hearing threshold (age and reference zero)](hearing-threshold.md): +In the order the chain runs. + +- **Baseline** — [Hearing threshold (age and reference zero)](hearing-threshold.md): the ISO 7029:2017 age-related threshold distribution and the ISO 389-7:2005 reference threshold of hearing. -- [Noise-induced hearing loss (ISO 1999)](noise-induced-hearing-loss.md): - NIPTS and its population distribution, and the combination with age into - HTLAN. -- [Occupational Noise Exposure (ISO 9612)](occupational-exposure.md): +- **Exposure** — [Occupational Noise Exposure (ISO 9612)](occupational-exposure.md): the three measurement strategies for LEX,8h with the Annex C uncertainty budget. +- **Damage** — [Noise-induced hearing loss (ISO 1999)](noise-induced-hearing-loss.md): + NIPTS and its population distribution, and the combination with age into + HTLAN. + +## What this section does not cover + +**Nothing here is a verdict about a person.** ISO 1999 does not define a hearing +handicap or a compensable fence — that line is set by national regulation, and +the library applies none of it, so you supply and check the criterion yourself. +The same is true of the exposure action values: the LEX,8h and its one-sided +95 % upper limit come out of ISO 9612, and the numbers they are compared against +are in your jurisdiction's directive, not here. + +Two implementation boundaries follow the standards. Only **database A** is +implemented for ISO 1999: `htlan` always draws its age component from +ISO 7029:2017, and substituting a nationally measured control population +(clauses 6.2.3 and 6.2.4) means computing that database elsewhere and passing it +in. Of ISO 389-7, only the Table 1 reference values are implemented, not the +procedures by which they were established. + +And no audiometry happens here. Nothing generates a test tone, drives an +audiometer or corrects for an earphone coupler: the pages consume and produce +threshold levels as data. diff --git a/docs/perception/index.md b/docs/perception/index.md index a3e4c2244..f7c516b47 100644 --- a/docs/perception/index.md +++ b/docs/perception/index.md @@ -21,7 +21,45 @@ hearing-damage model of ISO 1999. A good entry point is [Loudness](psychoacoustics/loudness.md): it introduces the perceptual scale (the sone) and the auditory models that most other -metrics in this section reuse or extend. +metrics in this section reuse or extend. The derivations behind these methods — +the critical-band and excitation-pattern models, the masking formulations and +the modulation-transfer chain — are gathered on the [perception theory +page](../reference/theory/perception.md), which the individual guides +cite clause by clause. + +### Reading the numbers + +Almost every perceptual scale in this section is defined by a **reference +sound** rather than by a physical unit, so the first thing to learn about each +is its anchor: the sound that reads exactly 1. + +| Quantity | Unit | The sound that reads 1 | Criterion? | Page | +|---|---|---|---|---| +| Loudness | sone | 1 kHz tone at 40 dB SPL (also 40 phon) | none | [Loudness](psychoacoustics/loudness.md) | +| Sharpness | acum | critical-band-wide noise at 1 kHz, 60 dB SPL | none | [Sound Quality Metrics](psychoacoustics/sound-quality.md) | +| Roughness | asper | 1 kHz tone at 60 dB, fully modulated at 70 Hz | 0.2 asper (informative) | [Sound Quality Metrics](psychoacoustics/sound-quality.md) | +| Fluctuation strength | vacil | the same carrier modulated at 4 Hz | 0.2 vacil (informative) | [Sound Quality Metrics](psychoacoustics/sound-quality.md) | +| Tonality | tu_HMS | 1 kHz tone at 40 dB SPL | 0.4 tu_HMS (informative) | [Sound Quality Metrics](psychoacoustics/sound-quality.md) | +| Tone audibility | dB | — (a level difference above masking) | ISO 1996-2 adjustment | [Tone audibility](psychoacoustics/tone-audibility.md) | +| STI | 0 to 1 | — | Annex F letters, U to A+ | [Speech Transmission Index](speech/speech-transmission.md) | +| SII | 0 to 1 | — | none standardised | [Speech Intelligibility Index](speech/speech-intelligibility.md) | +| Threshold shift | dB HL | — (a difference of two hearing levels) | ISO 1999 statistics | [Noise-induced hearing loss](hearing/noise-induced-hearing-loss.md) | + +Loudness, sharpness, roughness and fluctuation strength are **ratio scales +with no pass/fail line**: twice the number means twice the sensation, so a +20-sone appliance is heard as about twice as loud as a 10-sone one, which is +why appliance declarations set limits in sones rather than in decibels. The +tonal metrics and the speech indices do carry criteria, which is why the tone +pages end in a verdict and the loudness pages do not. + +The three speech numbers all live in [0, 1] and are **not the same number**. An +STI of 0.6 falls in Annex F band D, typical of a good lecture room; an SII of +0.6 means roughly 60 % of the importance-weighted speech spectrum is audible; +and a STOI of 0.6 has no absolute meaning at all, because the mapping from +index to words understood is fitted per listening-test corpus, so STOI is only +ever read as a difference between two processors on the same material. Never +substitute one for another in a specification, and when a requirement quotes a +number, check which standard it belongs to before computing anything. ## [Psychoacoustics](psychoacoustics/index.md) @@ -74,3 +112,46 @@ The hearing threshold, what noise does to it, and how exposure is measured. - [Occupational Noise Exposure (ISO 9612)](hearing/occupational-exposure.md): the task-based, job-based and full-day strategies for LEX,8h with the Annex C uncertainty budget. + +## What this section does not cover + +**No listener is tested here, and no verdict about a person is issued.** Every +model on these pages predicts what a population, or a standard listener, would +perceive from a calibrated signal: none of them runs an audiometric session, +none diagnoses a hearing loss, and ISO 1999 explicitly declines to define a +hearing handicap or a compensable fence — that line is national regulation, and +nothing here applies one. Every prominence and audibility verdict is likewise +the numeric criterion only: ECMA-418-1 also requires aural confirmation of a +prominent tone, and that stays with you. + +**Everything is monaural.** The binaural combinations of ECMA-418-2 are not +implemented, so a two-channel recording is analysed one ear at a time, and +nothing here models localisation, spatial release from masking or binaural +loudness summation. + +**No listening test is replaced.** STOI returns the correlation-based index and +not a percentage of words understood, because that mapping is fitted per +listening-test corpus; the SII returns an audibility fraction and not a score; +and no page predicts annoyance in a community, which is a social-survey +quantity rather than a psychoacoustic one — the community indicators are +[Environment and transport](../environment/index.md). + +Finally, these models start from a **calibrated** signal or spectrum in +pascals, because every one of them is level-dependent. Feeding them raw +soundcard samples produces a number with an arbitrary reference, which is a +different failure from a wrong answer: it looks plausible. + +## Before and after these pages + +Every model here consumes a calibrated signal or a calibrated spectrum, so the +calibration and weighting that produce one are in [Signal +analysis](../signals/index.md), and [Build a sound level +meter](../signals/sound-level-meter.md) runs that chain end to end on +one runnable page. The derivations are in [Perception and hearing +theory](../reference/theory/perception.md), from the equal-loudness contours to the +modulation transfer function. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. diff --git a/docs/perception/psychoacoustics/index.md b/docs/perception/psychoacoustics/index.md index aeddaccb3..406eb1c17 100644 --- a/docs/perception/psychoacoustics/index.md +++ b/docs/perception/psychoacoustics/index.md @@ -11,6 +11,25 @@ emphasis), tonality (audible discrete tones), roughness (fast modulation) and fluctuation strength (slow modulation). And on top sits a combined **annoyance** metric that weighs loudness, sharpness, roughness and fluctuation strength into a single scalar. +Every metric here is a magnitude fixed by a **reference sound** rather than by a +physical unit, and knowing the anchor is what makes a number readable: 1 sone is +a 1 kHz tone at 40 dB SPL, 1 acum a critical-band-wide noise at 1 kHz and 60 dB, +1 asper a 1 kHz carrier fully modulated at 70 Hz at 60 dB, 1 vacil the same +carrier modulated at 4 Hz, and 1 tu_HMS a 1 kHz tone at 40 dB. They are +tabulated together, beside the speech and hearing scales, under "Reading the +numbers" on the [section overview](../index.md). + +The two families of pages differ in purpose, and that difference decides what +you can conclude. Loudness, sharpness, roughness and fluctuation strength are +**open-ended magnitudes** for comparing designs: there is no pass mark, and the +useful statement is always a comparison. The two tonal pages end in a **verdict +against a criterion**, because they exist to justify a declaration or a penalty. +ECMA-418-2 sits between the two: it attaches informative prominence criteria to +its tonality (0.4 tu_HMS on a band), roughness (0.2 asper) and fluctuation +strength (0.2 vacil_HMS), which is the closest thing to a pass mark in the +magnitude family. All of them share one prerequisite: an absolutely calibrated +signal in pascals, because every metric here is level-dependent. + [Loudness](loudness.md) is the foundation page: the Zwicker reference method of ISO 532-1 with its one-page fiche, together with the ISO 226:2023 equal-loudness contours that anchor the perceptual scale for pure @@ -58,3 +77,34 @@ normative model of the same sensation, under a different unit name. - [Psychoacoustic annoyance and fluctuation strength](psychoacoustic-annoyance.md): the Fastl & Zwicker annoyance model and the fluctuation-strength models it consumes. + +## What this section does not cover + +**Everything here is monaural.** The binaural combinations ECMA-418-2 defines +for loudness, roughness and fluctuation strength are not implemented, so a +stereo or binaural recording is analysed one channel at a time, and no model +here accounts for localisation or for spatial release from masking. Two +optional refinements are also left out: the entropy weighting of clause 7.1.6, +which needs an external rotational-speed signal, and the small adjustment +footnote 47 permits. + +**A verdict is never complete.** The `prominent` flag the tone-prominence +functions return is the numeric criterion alone; ECMA-418-1 also requires aural +confirmation and a lower-threshold-of-hearing screen, both of which stay with +the caller. The tone-audibility module is weighting-agnostic and does **not** +apply the A-weighting clause 5.3.2 requires, so A-weight the spectrum before +passing it, and it takes an already-computed narrow-band spectrum rather than +building one from a recording. + +Two documented deviations are worth knowing. ISO 532-3 prescribes resampling to +32 kHz before the running FFT; this implementation works at the native rate, a +deviation that stays inside the standard's expanded uncertainty but that you +should undo by resampling first if strict clause-by-clause conformance matters. +And the Osses 2016 fluctuation-strength signal model is validated for +amplitude-modulated stimuli only, with a documented floor — a steady 1 kHz tone +reads about 0.09 vacil rather than 0. + +Finally, none of these metrics is a community response: annoyance here is a +laboratory sensation computed from a signal, while the annoyance a +neighbourhood reports is a social-survey quantity handled through the +indicators of [Environment and transport](../../environment/index.md). diff --git a/docs/perception/speech/index.md b/docs/perception/speech/index.md index 1f153a753..ad052b867 100644 --- a/docs/perception/speech/index.md +++ b/docs/perception/speech/index.md @@ -10,6 +10,21 @@ rates a *listening condition*: this speech spectrum, in this noise, heard by this listener. A reverberant lecture hall is an STI problem; a hearing-aid fitting or a cockpit warning heard over engine noise is an SII problem. +The shared [0, 1] range is a coincidence of normalisation, not a common scale, +and 0.6 means three different things on the three. An **STI** of 0.6 falls in +band D of the IEC 60268-16 Annex F qualification ladder, whose eleven letters +run from U below 0.36 to A+ at 0.76 and above; that is a good lecture room, and +a voice-alarm specification typically sets its minimum a couple of bands lower. +An **SII** of 0.6 means roughly 60 % of the importance-weighted speech spectrum +is audible to that listener in that noise; the index is a fraction by +construction and carries no standardised qualification ladder at all. A +**STOI** of 0.6 has no absolute meaning: the mapping from the index to a +percentage of words understood is fitted per listening-test corpus and is +deliberately not implemented, so STOI is only ever read as a difference between +two processors on the same material. Never substitute one index for another in +a specification, and when a requirement quotes a number, check which standard +it belongs to before computing anything. + The physical difference sits in what each index models. STI (**IEC 60268-16**) works on the speech *envelope*: intelligibility degrades when reverberation and noise flatten the slow intensity modulations of speech, @@ -36,11 +51,16 @@ speech, how intelligible is the result? They rate the processing itself, which is why they are the standard yardstick for noise reduction and source separation. -The two connect back to the rest of the library naturally: the STI consumes -the impulse responses of +The two standardised indices connect back to the rest of the library naturally: +the STI consumes the impulse responses of [Room Acoustics](../../buildings/rooms/room-acoustics.md), and the SII consumes the hearing thresholds quantified in -[Hearing threshold](../hearing/hearing-threshold.md). +[Hearing threshold](../hearing/hearing-threshold.md). STOI and +ESTOI have an upstream too, but a different kind of one: they take waveforms, +so what feeds them is whatever produced the clean and the degraded recording — +which is why they sit beside the signal-processing tools of [Signals and +spectra](../../signals/spectra/index.md) rather than beside a measurement +standard. ## Pages in this section @@ -53,3 +73,24 @@ hearing thresholds quantified in - [Objective Intelligibility (STOI & ESTOI)](objective-intelligibility.md): the correlation-based measures for time-frequency weighted noisy speech, from a clean/degraded pair. + +## What this section does not cover + +**No listener is tested, and no score is predicted.** STOI returns the +correlation index and not the percentage of words understood, because the +logistic mapping is fitted per listening-test corpus; the SII returns an +audibility fraction rather than a score; and no page here reproduces a +subjective intelligibility test. **No signal is acquired either**: the STI page +implements the STIPA direct signal and the indirect computation from an impulse +response, but the full 14-modulation-frequency direct measurement of clause 6.3 +is not implemented, so a chain with severe distortion needs measuring equipment +rather than this library. + +Two coverage limits inside the SII are worth checking before use: the raised, +loud and shouted speech spectra are carried for the one-third-octave procedure +only, and the tabulated band-importance functions are each table's +average-speech compromise, with Annex B's material-specific alternatives left to +you through the `band_importance=` argument. There is no resampling between the +four band procedures — each is fed spectra on its own bands. And the female +speech option is not missing from the STI: Edition 5 of IEC 60268-16 removed it, +so there is nothing left to implement. diff --git a/docs/reference/glossary.md b/docs/reference/glossary.md new file mode 100644 index 000000000..334a61b11 --- /dev/null +++ b/docs/reference/glossary.md @@ -0,0 +1,349 @@ +← [Documentation index](../README.md) + +# Glossary + +The guides each open with the standard they implement, so a quantity is always +defined where it is used. This page is the other direction: you have a symbol, +from a report, a specification or a colleague's email, and you want to know +what it is, what it is measured in, which document defines it and where in this +documentation it is computed. A quantity that is not here is still defined +where it is computed: every guide states its quantities before its code. + +Two conventions govern the line that says where a quantity is defined, and both +matter more than they seem to. +Where a clause, formula or table number appears, it is the one the +implementation cites, taken from the standard the guide implements. Where only +a designation appears, the standard is established but the defining clause is +not stated anywhere in this documentation, and inventing a plausible one would +be worse than leaving it out. A handful of quantities have no governing +standard at all; their source is the paper or book the model comes from, named +as such. + +A third convention governs the unit, and it is the one most often lost between +a measurement and a report. A decibel is always a ratio, so an entry whose unit +reads *re* something — dB re 20 µPa in air, dB re 1 µPa in water, dB re 1 pW +for power, dB re 1 pW/m² for intensity, dB re 50 nm/s for a velocity level — is +an **absolute level**, and the reference quantity is part of the unit. An entry +whose unit is a bare dB is a **level difference or a rating**: $D$, $R$, $R_w$, +$C$, $C_{tr}$, $\Delta L_w$, $K_{ij}$, where the reference cancels and no +reference applies. Two numbers can only be added or subtracted when they are of +the same kind, and the commonest error in a report is subtracting two levels +referred to different quantities, or adding a rating to a level. + +## Symbols that collide + +Symbols collide across domains, and the glossary does not pretend otherwise. +Some collisions are harmless because the two quantities never meet in one +calculation; others change a number by tens of decibels, or by a whole rating +step, and those are the ones below. Where two entries share a symbol, the +qualifier in brackets after the notation says which one you are reading, and on +the site a symbol index above the cards lists every meaning of a letter side by +side — the answer for a reader who has the symbol and not the domain, which is +the one case the grouping by domain cannot serve. + +| Symbol | Meanings that are not the same quantity | +| :--- | :--- | +| $C$ | The **decay curvature** $100\,(T_{30}/T_{20} - 1)$ in per cent, and the ISO 717-1 **spectrum adaptation term** in decibels. Both are defined on one page, [Rooms and buildings](theory/rooms-buildings.md), a couple of sections apart. | +| TL | A partition's **transmission loss**, a duct element's **transmission loss** (a different measurement, with an anechoic termination in the definition) and the underwater **propagation loss** of the sonar equation. Three domains, three unrelated calculations. | +| NR | The **noise rating** curve family of a room criterion, and the **noise reduction** $L_{p1} - L_{p2}$ between two rooms in noise control. | +| $\alpha$ | The **absorption coefficient** of a surface, the **atmospheric attenuation coefficient** per unit length (dB/m here, dB/km in ISO 9613-2), the **volume absorption coefficient** of sea water (dB/km), and the **tortuosity** $\alpha_\infty$ of a porous model, which is not an absorption at all. | +| $A$ | An **equivalent absorption area** in m², an **accelerance** in 1/kg, and the **total attenuation** of ISO 9613-2 in dB. | +| $D$ | A **level difference**, the definition $D_{50}$, the withdrawn **D-weighting**, the directivity correction $D_c$ and barrier screening $D_z$ of ISO 9613-2, the spatial decay rate $D_{2,S}$ of an open-plan office, and a microphone's **directivity index** $D = 20\log_{10}(M_0/M_\mathrm{diff})$. | +| $H$ | The **receptance** of ISO 7626-1, the **frequency response estimators** $H_1$ and $H_2$, and the **harmonic transfer functions** $H_n$ of a swept-sine measurement — where $H_2$ is the second harmonic, not the noise-on-input estimator. | +| $\eta$ | The **loss factor** of a resilient element, the **coupling loss factor** $\eta_{ij}$ of a junction, and the **internal** and **total** loss factors of a building element. | +| $\tau$ | The **transmission factor** of a partition, the **time constant** of a detector, the **lag** of a correlation, and the **air temperature** in CNOSSOS-EU. | +| $T_s$ | The ISO 3382-1 **centre time** of a room impulse response, typically tens of milliseconds; the **structural reverberation time** of a plate, which is seconds; and the number of **months per year that studded tyres are fitted** in CNOSSOS-EU. | +| $R$ | The **sound reduction index** in building acoustics, the **airflow resistance** in materials, the **roughness** in psychoacoustics, and the **cumulative stress variable** of ISO 2631-5. | +| $\sigma$ | The **airflow resistivity** of a porous material, the **radiation efficiency** of a plate, and the **standard deviation** $\sigma_R$ of a building-acoustics measurement situation. | +| $L_N$, $L_n$ | $L_N$ is a **percentile level** in environmental noise, a **loudness level** in phon, and the level equivalent to a microphone's **inherent noise**; $L_n$, with a lower-case subscript, is the **normalized impact sound pressure level** of ISO 10140-3. In building acoustics the case of the subscript is the whole difference. | +| $v_0$ | A **reference velocity** of 1 nm/s in EN 15657 and EN 12354-5, and of 50 nm/s in ISO/TS 7849 and ISO 9611 — 34 dB apart, in one section of one area. | +| $F_0$ | A **reference force** of 1 N in ISO 16283-2, and of 1 µN in EN 15657 — 120 dB apart. | +| $K_1$ | The ISO 3744 **background noise correction** in dB, and a CNOSSOS-EU **temperature coefficient** in dB/°C. | +| $F$ | **Fluctuation strength** in vacil, the **Fast** time weighting, and the **modulation frequency** in $m(F)$ — all three on this page. | + +Where two meanings meet inside one navigation section, the guide says so at +first use; this table is the site-wide list. + +For the source of each definition rather than the definition itself, the +[bibliography](bibliography.md) lists every cited work with +a DOI or publisher link, and the +[conformance report](https://jmrplens.github.io/phonometry/reference/conformance/) shows the numerical +check that pins each quantity to its standard's own expected value. + +## Sound pressure, power and intensity levels + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $L_p$ | Sound pressure level: twenty times the base-10 logarithm of the r.m.s. sound pressure over the reference pressure. | dB re 20 µPa | IEC 61672-1:2013 | [Calibration and dBFS](../signals/metrology/calibration.md) | +| $L_{eq}$ | Equivalent continuous sound pressure level: the level of the steady sound carrying the same mean-square pressure over the interval. | dB re 20 µPa | IEC 61672-1:2013 | [Integrated and Statistical Levels](../signals/levels/levels.md) | +| $L_{Aeq}$ | The same integral applied to the A-weighted signal, the default descriptor of environmental and occupational noise. | dB re 20 µPa | IEC 61672-1:2013 | [Integrated and Statistical Levels](../signals/levels/levels.md) | +| $L_{AE}$, SEL | Sound exposure level: the whole A-weighted energy of a single event normalised to one second. | dB re (20 µPa)²·s | IEC 61672-1:2013, Equation 8 (Table 4) | [Integrated and Statistical Levels](../signals/levels/levels.md) | +| $L_{Cpeak}$ | C-weighted peak sound level: the absolute maximum of the C-weighted pressure, not a time-weighted maximum. | dB re 20 µPa | IEC 61672-1:2013, subclause 5.13 | [Integrated and Statistical Levels](../signals/levels/levels.md) | +| $L_N$ ($L_{10}$, $L_{50}$, $L_{90}$) | Percentile level: the level exceeded $N$ % of the measurement time, read off the time-weighted level distribution. | dB re 20 µPa | ISO 1996-2:2017 (Annex I uses $L_{90}$ as the residual level) | [Integrated and Statistical Levels](../signals/levels/levels.md) | +| $L_W$, SWL | Sound power level: the power a source radiates, referred to 1 pW. | dB re 1 pW | ISO 3745:2012, Clause 8 | [Sound Power](../devices/emission/sound-power.md) | +| $L_I$ | Sound intensity level: the magnitude of the intensity vector referred to 1 pW/m², with the flow direction reported separately as a sign. | dB re 1 pW/m² | IEC 61043:1993 | [Sound Intensity (p-p)](../devices/emission/intensity.md) | +| $L_p - L_I$ | Pressure-intensity index: the difference between the pressure and intensity levels at a position, the field indicator that qualifies an intensity measurement. | dB | ISO 9614-1:1993, Equation (A.3) | [Sound Intensity (p-p)](../devices/emission/intensity.md) | +| $K_1$ | Background noise correction: what is subtracted from the surface level to remove the background's own contribution, $-10\log_{10}(1 - 10^{-0,1\Delta L_p})$ from the source-on minus source-off margin. It is a cliff rather than a slope: above a 15 dB margin it is taken as zero, between 6 and 15 dB it is computed, and below 6 dB the standard caps it at 1,3 dB and warns that the result has lost accuracy. | dB | ISO 3744:2010, 3.16 and Equation (16) | [Sound Power by Pressure Methods](../devices/emission/sound-power-pressure.md) | +| $K_2$ | Environmental correction: what is subtracted to remove the energy the test room reflects back onto the measurement surface, $10\log_{10}(1 + 4S/A)$ from the surface area and the room's equivalent absorption area. Its ceiling is the grade of accuracy rather than a preference: an engineering-grade result is only valid where $K_{2A} \le 4$ dB, the survey method allows 7 dB, and a qualified hemi-anechoic room gives zero. | dB | ISO 3744:2010, 3.17 and Formula (A.2) | [Sound Power by Pressure Methods](../devices/emission/sound-power-pressure.md) | +| $L_{WAd}$, $K_{WA}$ | The declared noise emission of a machine: either the dual-number form, the measured $L_{WA}$ and its uncertainty $K_{WA}$ stated separately, or the single-number form $L_{WAd} = L_{WA} + K_{WA}$, both rounded to the nearest whole decibel. The declared value is an upper limit a verification measurement is unlikely to exceed, not a best estimate, so it is never the number to feed into a propagation calculation. | dB re 1 pW | ISO 4871:1996, 3.15 and 3.16 | [Sound Power](../devices/emission/sound-power.md) | +| $L_{WA}$ (apparent, wind turbine) | Apparent sound power level of a wind turbine: the A-weighted level of a point source at the rotor centre that would radiate the same downwind emission as the machine measured. It is written like a sound power level but is not one in the usual sense: the ground-board measurement builds a downwind reflection into it, so feeding it to a propagation model that adds a ground effect counts that reflection twice. | dB re 1 pW | IEC 61400-11:2012+AMD1:2018, 3.1 and Formula (26) | [Wind-turbine noise: sound power and tonal audibility](../environment/sources/wind-turbine-noise.md) | + +## Environmental and occupational descriptors + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $L_{den}$ | Day-evening-night level: the energy mean of the three periods with 5 dB added to the evening and 10 dB to the night. | dB re 20 µPa | ISO 1996-1:2016, 3.6.4 | [Environmental Levels (ISO 1996-1/-2)](../environment/assessment/environmental-levels.md) | +| $L_{dn}$ | Day-night level: the same construction with the 10 dB night penalty only. | dB re 20 µPa | ISO 1996-1:2016, 3.6.5 | [Environmental Levels (ISO 1996-1/-2)](../environment/assessment/environmental-levels.md) | +| $L_r$ | Rating level: the whole-day composite level after the source-character and time-of-day adjustments. | dB re 20 µPa | ISO 1996-1:2016, clause 6.5 (Formulae 5 and 6) | [Environmental Levels (ISO 1996-1/-2)](../environment/assessment/environmental-levels.md) | +| $L_{Ar,T}$ | Rating level of an impulsive source over a reference interval, $L_{Aeq}$ plus the graduated impulse adjustment. | dB re 20 µPa | NT ACOU 112:2002, clause 8 | [Impulsive-sound prominence (NT ACOU 112)](../environment/assessment/impulsive-sound.md) | +| $K_I$ | Impulse adjustment added to $L_{Aeq}$, graduated by the predicted prominence of the impulses. | dB | NT ACOU 112:2002, clause 8 | [Impulsive-sound prominence (NT ACOU 112)](../environment/assessment/impulsive-sound.md) | +| $E$ | Sound exposure: the time integral of the squared A-weighted sound pressure over the exposure period. | Pa²h | IEC 61252:1993, 3.1 | [Integrated and Statistical Levels](../signals/levels/levels.md) | +| $L_{EX,8h}$, $L_{EP,d}$ | Daily noise exposure level: the steady level that, sustained over a nominal 8 h day, carries the same A-weighted sound exposure as the measured one. | dB re 20 µPa | IEC 61252:1993, 3.3 | [Occupational Noise Exposure (ISO 9612)](../perception/hearing/occupational-exposure.md) | +| $L_{p,A,eqT}$ | A-weighted equivalent continuous level of a task, a job sample or a full day, the building block $L_{EX,8h}$ is assembled from. | dB re 20 µPa | ISO 9612:2009, clauses 9 to 11 | [Occupational Noise Exposure (ISO 9612)](../perception/hearing/occupational-exposure.md) | +| NIPTS | Noise-induced permanent threshold shift: the median hearing loss attributable to a stated exposure level, duration and audiometric frequency. | dB | ISO 1999:2013 | [Noise-induced hearing loss (ISO 1999)](../perception/hearing/noise-induced-hearing-loss.md) | +| HTLAN | Hearing threshold level associated with age and noise: the NIPTS combined with the age component. | dB | ISO 1999:2013 | [Noise-induced hearing loss (ISO 1999)](../perception/hearing/noise-induced-hearing-loss.md) | +| $L_{Keq,T}$ | Corrected equivalent level: the A-weighted equivalent level of the interval plus the three penalties for tonal, low-frequency and impulsive character, $L_{Aeq,T} + K_t + K_f + K_i$. It is the quantity the Spanish immission limits are written against, so an activity is judged on it and not on the bare $L_{Aeq}$. | dB re 20 µPa | RD 1367/2007 (Spain), Annex I A.2 c | [Spanish Noise Regulation (RD 1367/2007)](../environment/assessment/spanish-noise-regulation.md) | +| $K_t$, $K_f$, $K_i$ | The three character penalties added to $L_{Aeq,T}$: $K_t$ for emergent tonal components, read from an unweighted one-third-octave spectrum against the arithmetic mean of the two adjacent bands; $K_f$ for low-frequency content, from $L_{Ceq} - L_{Aeq}$; and $K_i$ for impulsive content, from $L_{AIeq} - L_{Aeq}$. They are stepped, not continuous, so a spectrum just short of a threshold scores nothing. | dB | RD 1367/2007 (Spain), Annex IV A.3.3 | [Spanish Noise Regulation (RD 1367/2007)](../environment/assessment/spanish-noise-regulation.md) | + +## Outdoor propagation + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $A$ (octave-band attenuation) | Total octave-band attenuation between an outdoor point source and a downwind receiver: the sum $A_{div} + A_{atm} + A_{gr} + A_{bar} + A_{misc}$ subtracted from the sound power level and the directivity correction. Everything the method knows about the path between source and receiver is in this one term. | dB | ISO 9613-2:1996, Equations (3) and (4) | [Outdoor Sound Propagation](../environment/propagation/outdoor-propagation.md) | +| $A_{div}$ | Geometrical divergence: $20\log_{10}(d/d_0) + 11$ dB, the spreading of a point source radiating into free space with $d_0 = 1$ m. The 11 dB constant is what refers the level to a sound power level rather than to a level measured at one metre. | dB | ISO 9613-2:1996, Equation (7) | [Outdoor Sound Propagation](../environment/propagation/outdoor-propagation.md) | +| $A_{atm}$ | Atmospheric absorption: the attenuation coefficient of the air times the path length. It is the term that removes the high bands over long distances, and it depends strongly on frequency, temperature and humidity — which is why a long-range prediction has to state the weather it assumed. | dB | ISO 9613-2:1996, Equation (8) | [Outdoor Sound Propagation](../environment/propagation/outdoor-propagation.md) | +| $\alpha$ (atmospheric) | Atmospheric attenuation coefficient: the excess loss per unit path length from classical absorption and the nitrogen and oxygen relaxation processes, a function of frequency, temperature, humidity and pressure. Watch the length unit: the library returns decibels per metre while ISO 9613-2 Table 2 tabulates decibels per kilometre, a factor of a thousand. | dB/m (ISO 9613-2 tabulates dB/km) | ISO 9613-1:1993, Equation (5) | [Outdoor Sound Propagation](../environment/propagation/outdoor-propagation.md) | +| $A_{gr}$ | Ground effect: the interference between the direct path and the path reflected off the ground, split into a source region, a receiver region and the middle between them. Over hard ground it comes out negative — a net gain, not a loss — which is why it cannot be treated as an attenuation that is merely optional. | dB | ISO 9613-2:1996, Equation (9) | [Outdoor Sound Propagation](../environment/propagation/outdoor-propagation.md) | +| $A_{bar}$ | Barrier attenuation: the screening $D_z$ of the diffracting edge minus the ground effect the barrier removes, floored at zero. The subtraction is the point: a barrier over soft ground buys much less than its raw screening, because the ground was already doing part of the work. | dB | ISO 9613-2:1996, Equation (12) | [Outdoor Sound Propagation](../environment/propagation/outdoor-propagation.md) | +| $C_{met}$ | Meteorological correction: what is subtracted from the downwind level to obtain a long-term average over many wind directions, driven by the local factor $C_0$ and by the source and receiver heights against the distance. It is zero close to the source and grows only where the path is long compared with the heights. | dB | ISO 9613-2:1996, Equations (21) and (22) | [Outdoor Sound Propagation](../environment/propagation/outdoor-propagation.md) | +| $D_c$ | Directivity correction: how far the level from the point source in the chosen direction departs from that of an omnidirectional source of the same sound power. It is the directivity index of the source plus an index for radiation into less than the full sphere, and it is 0 dB for an omnidirectional source in free space. | dB | ISO 9613-2:1996, Equation (3) | [Outdoor Sound Propagation](../environment/propagation/outdoor-propagation.md) | +| $N$ (Fresnel number) | Fresnel number of a screen: twice the extra path length the sound has to travel over the edge, divided by the wavelength. It is the single geometric parameter of the Kurze-Anderson insertion loss, which is why a barrier that works at 1 kHz can be worth almost nothing two octaves lower for the same geometry. | dimensionless | Bies, Hansen and Howard (2017), Equation 5.134; no governing standard | [Spherical ground effect and advanced barriers](../environment/propagation/ground-barriers.md) | + +## Frequency and time weighting + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| A, C, Z | The normative frequency weightings: the ear-response curves applied before integration, Z being the flat reference. | dB | IEC 61672-1:2013, Annex E (acceptance limits in Table 3) | [Frequency Weighting (A, C, Z)](../signals/levels/weighting.md) | +| G | Infrasound weighting, defined by its poles and zeros for the 0.25 Hz to 315 Hz range. | dB | ISO 7196:1995, Table 1 (nominal responses in Table 2) | [Special Weightings (G, B, D, AU)](../signals/levels/special-weightings.md) | +| B | Historical mid-level weighting, withdrawn from the current meter standard. | dB | ANSI S1.4-1983, Appendix C (Formula C2) | [Special Weightings (G, B, D, AU)](../signals/levels/special-weightings.md) | +| D | Historical aircraft-noise weighting, derived from the 40-noy perceived-noisiness contour. | dB | IEC 537:1976 (withdrawn) | [Special Weightings (G, B, D, AU)](../signals/levels/special-weightings.md) | +| AU | Weighting for audible sound measured in the presence of ultrasound. | dB | IEC 61012:1990, subclause 2.2 (Tables 1 and 2) | [Special Weightings (G, B, D, AU)](../signals/levels/special-weightings.md) | +| F, S, I | Fast, Slow and Impulse exponential time weightings: the detector ballistics that produce a displayed level. | s (time constant) | IEC 61672-1:2013 | [Time Weighting](../signals/levels/time-weighting.md) | +| Performance class (0, 1, 2) | Performance class of a filter or an instrument: the width of the tolerance corridor its response has to stay inside, band by band. Class 1 and class 2 share the same design goals and differ in the acceptance limits and in the operating temperature range, class 2 being the looser; class 0, the laboratory reference grade, comes from the withdrawn IEC 61260:1995 and ANSI S1.11-2004 and the current edition no longer defines it. A class is a property of the response, not of the result: a class 2 bank does not make a measurement wrong, it makes its band levels less certain. | dB (tolerance) | IEC 61260-1:2014, 1.2 and Table 1 | [Filter Class Verification (IEC 61260-1)](../signals/filters/filter-compliance.md) | +| K | K-weighting: the programme-loudness curve, a two-stage pre-filter that models the high-frequency boost a spherical head gives and then applies the revised low-frequency B-curve high-pass. It is applied per channel before the channel mean squares are summed and gated, and the LKFS designation records it. | dB | ITU-R BS.1770-5, Annex 1 | [Programme loudness and true peak (BS.1770 / EBU R 128)](../devices/broadcast/program-loudness.md) | +| ITU-R 468 weighting | The broadcast noise weighting: zero at 1 kHz, peaking at $+12{,}2$ dB at 6,3 kHz and falling to $-29{,}9$ dB at 31,5 Hz, shaped to how audible a noise is rather than how loud a tone is. The Recommendation pairs it with a quasi-peak detector and quotes results as dB(468); AES17 reuses the same curve with an r.m.s. detector, which is a different number from the same filter. | dB | Recommendation ITU-R BS.468-4, Table 1 | [Electroacoustics: distortion and frequency response](../devices/electroacoustics/electroacoustics.md) | +| $W_b$, $W_c$, $W_d$, $W_e$, $W_f$, $W_j$, $W_k$, $W_m$ (whole-body) | The whole-body frequency weightings, one parameter row each of the same four-stage filter: $W_k$ for the vertical axis and $W_d$ for the two horizontal ones in health and comfort, with $W_b$, $W_c$, $W_e$, $W_f$, $W_j$ and $W_m$ for ride comfort, the seat back, rotational axes, motion sickness and the head. The weighted acceleration $a_w$ is what comes out of them; the standard that names the curve is not the one that says where to apply it. | dimensionless | ISO 8041-1:2017, 5.6.1, Formulae (1) to (5) and Table 3 | [Human Vibration](../vibration/human/human-vibration.md) | +| $W_h$ (hand-arm) | The hand-arm frequency weighting: one curve, band-limited from 8 Hz to 1 kHz, applied to each of the three axes before they are combined into the vibration total value. Unlike the whole-body case there is no axis multiplier, so the three weighted values enter the total on equal terms. | dimensionless | ISO 8041-1:2017, 5.6.1, Formulae (1) to (5) and Table 3 | [Human Vibration](../vibration/human/human-vibration.md) | + +## Spectral and system analysis + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $G_{xx}$, $G_{xy}$ | One-sided auto- and cross-spectral density: mean-square content per hertz, so the power in a band is the integral over it and not the height of a line. Everything else in this group is a ratio of these: the coherences, the two frequency-response estimators and the coherent output spectrum. | (unit of $x$)²/Hz | Bendat and Piersol (2010), Sections 5.2 and 9.1; no governing standard | [Calibrated spectral analysis](../signals/spectra/spectral-analysis.md) | +| $\gamma^2_{iy}$ (ordinary coherence) | Ordinary coherence: the fraction of the output autospectrum, at each frequency, that a linear time-invariant path from one input accounts for, $\|G_{xy}\|^2/(G_{xx}G_{yy})$. It is one where the pair is noiselessly linearly related, and with additive output noise it settles at $\mathrm{SNR}/(1+\mathrm{SNR})$ — so it reads as a quality figure, not as a cause. | dimensionless | Bendat and Piersol (2010), Equation (7.109); no governing standard | [Multiple and partial coherence](../signals/spectra/miso-coherence.md) | +| $\gamma^2_{y:x}$ (multiple coherence) | Multiple coherence: the fraction of the output that all the measured inputs together account for, one minus the residual spectrum over the total. It is the ceiling the partial coherences are apportioned under, and what is left of it is the part of the output no measured input explains. | dimensionless | Bendat and Piersol (2010), Equation (7.35); no governing standard | [Multiple and partial coherence](../signals/spectra/miso-coherence.md) | +| $\gamma^2_{iy\cdot(i-1)!}$ (partial coherence) | Partial coherence: the coherence of one input with the output after the inputs ranked before it have been conditioned out. It is what separates a genuine source from one that merely correlates with a genuine source, and it depends on the conditioning order, so the order has to be reported with the number. | dimensionless | Bendat and Piersol (2010), Equation (7.87); no governing standard | [Multiple and partial coherence](../signals/spectra/miso-coherence.md) | +| $H_1$, $H_2$ (FRF estimators) | The two averaged estimates of a frequency response function: $H_1 = G_{xy}/G_{xx}$, unbiased when the noise is on the output, and $H_2 = G_{yy}/G_{yx}$, unbiased when it is on the input. Their ratio is exactly the ordinary coherence, so they agree only where the measurement is clean, and the gap between them is a measure of how far it is not. | output per input | Bendat and Piersol (2010), Section 6.1; no governing standard | [Electroacoustics: distortion and frequency response](../devices/electroacoustics/electroacoustics.md) | +| ENBW | Equivalent noise bandwidth of an analysis window: the width of the ideal rectangular filter that would pass the same broadband noise power. It is exactly 1 bin for a rectangular window and 1,5 for a Hann, and it is the factor that turns a windowed line spectrum into a density — a broadband level read off the lines sits $10\log_{10}(\mathrm{ENBW})$ dB high without it. | bins (or Hz) | Harris (1978), Table 1; no governing standard | [Calibrated spectral analysis](../signals/spectra/spectral-analysis.md) | +| Cepstrum and quefrency | Cepstrum: the inverse transform of the logarithmic spectrum, in which the periodic ripple an echo or a harmonic family leaves across the spectrum collapses onto a single peak. Quefrency is its independent variable, a time in seconds, at which that peak stands at the echo's own delay — which is why a bearing report quotes a quefrency and not a frequency. | quefrency in s | Havelock, Kuwano and Vorländer (2008), Chapter 27; no governing standard | [Cepstrum, echoes and the envelope spectrum](../signals/spectra/cepstrum-echoes.md) | +| Crest factor | Crest factor: the modulus of the ratio of the peak to the r.m.s. value over the measurement period. It decides whether an r.m.s. description is honest — above 9 the standard says the basic evaluation method is not sufficient and dose measures have to be reported beside it — and for a test signal it decides whether a device clips before the signal has delivered its energy. | dimensionless | ISO 2631-1:1997, 6.2.1 | [Human Vibration](../vibration/human/human-vibration.md) | + +## Room acoustics + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $T_{20}$ | Reverberation time extrapolated to a 60 dB decay from a least-squares fit over −5 dB to −25 dB of the Schroeder curve. | s | ISO 3382-2:2008, Clause 6 and Annex C | [Room Acoustics](../buildings/rooms/room-acoustics.md) | +| $T_{30}$ | The same extrapolation from a fit over −5 dB to −35 dB, the usual choice when the decay range allows it. | s | ISO 3382-2:2008, Clause 6 and Annex C | [Room Acoustics](../buildings/rooms/room-acoustics.md) | +| $T_{60}$, RT | Reverberation time as such: the time for the sound energy to fall by 60 dB. Measured in practice as $T_{20}$ or $T_{30}$. | s | ISO 3382-1:2009 | [Room Acoustics](../buildings/rooms/room-acoustics.md) | +| EDT | Early decay time: the same slope taken over the first 10 dB of decay, which tracks perceived reverberance rather than the tail. | s | ISO 3382-1:2009 (just-noticeable difference in Table A.1) | [Room Acoustics](../buildings/rooms/room-acoustics.md) | +| $C_{50}$ | Clarity for speech: the energy ratio between the first 50 ms of the impulse response and everything after it. | dB | ISO 3382-1:2009 | [Room Acoustics](../buildings/rooms/room-acoustics.md) | +| $C_{80}$ | Clarity for music: the same ratio with the boundary at 80 ms. | dB | ISO 3382-1:2009 (just-noticeable difference in Table A.1) | [Room Acoustics](../buildings/rooms/room-acoustics.md) | +| $D_{50}$ | Definition, or Deutlichkeit: the fraction of the total energy arriving in the first 50 ms. | dimensionless | ISO 3382-1:2009 (just-noticeable difference in Table A.1) | [Room Acoustics](../buildings/rooms/room-acoustics.md) | +| $T_s$ (centre time) | Centre time: the centre of gravity of the squared impulse response in time, a boundary-free alternative to the clarity indices. It runs to tens of milliseconds in a room; the building-prediction guides write $T_s$ for something else entirely, the structural reverberation time of a plate, which is seconds. | s | ISO 3382-1:2009, Equation (A.13) | [Room Acoustics](../buildings/rooms/room-acoustics.md) | +| $A$ | Equivalent sound absorption area of a room: the area of a perfectly absorbing surface that would give the same reverberation time. | m² | ISO 354:2003, Equations (5) and (7) | [Sound Absorption Measurement and Rating](../materials/absorbers/absorption-measurement.md) | +| NC | Noise criteria rating of a background spectrum: the speech interference level selects the curve, and the tangency method rates the spectrum when a band exceeds it. | dB (index) | ANSI/ASA S12.2-2019, 5.2.2 and 5.2.3 (curves in Table 1) | [Room-noise criteria (NC / RC Mark II)](../buildings/rooms/room-noise.md) | +| SIL | Speech interference level: the average of the 500, 1000, 2000 and 4000 Hz octave-band levels. | dB | ANSI/ASA S12.2-2019, clause 3.2 | [Room-noise criteria (NC / RC Mark II)](../buildings/rooms/room-noise.md) | +| RC | Room criteria Mark II rating: the average of the 500, 1000 and 2000 Hz levels, with a rumble, hiss or neutral spectral tag. | dB (index) | ANSI/ASA S12.2-2019, Annex D (clauses D.3 and D.4) | [Room-noise criteria (NC / RC Mark II)](../buildings/rooms/room-noise.md) | +| NR (curve family) | Noise rating, the European counterpart curve family of NC. Discussed for comparison and deliberately not implemented. Not the NR of the noise-control guides, which is a level drop. | dB (index) | Kosten and van Os (1962); no governing standard | [Room-noise criteria (NC / RC Mark II)](../buildings/rooms/room-noise.md) | +| $D_{2,S}$ | Spatial decay rate of speech: the drop in A-weighted speech level per doubling of distance along a line of workstations, taken from the regression of level against the logarithm of distance over positions between 2 m and 16 m. It is a slope only — it says how fast speech dies away, not how loud it starts. | dB | ISO 3382-3:2012, 3.2 | [Open-Plan Office Acoustics (ISO 3382-3)](../buildings/rooms/open-plan-acoustics.md) | +| $L_{p,A,S,4m}$ | A-weighted speech level at 4 m: the nominal level of normal speech four metres from the talker, read off the same regression line rather than measured at that distance. It fixes the absolute height of the decay curve that $D_{2,S}$ only gives the slope of, which is why the two are always reported together. | dB | ISO 3382-3:2012, 3.3 | [Open-Plan Office Acoustics (ISO 3382-3)](../buildings/rooms/open-plan-acoustics.md) | +| $r_D$ | Distraction distance: the distance from the talker at which the speech transmission index falls below 0,50, beyond which concentration and privacy start to improve rapidly. It is the single number an open-plan office is usually specified on, and the only rating in the corpus that is a distance rather than a level. | m | ISO 3382-3:2012, 3.6 | [Open-Plan Office Acoustics (ISO 3382-3)](../buildings/rooms/open-plan-acoustics.md) | +| $r_P$ | Privacy distance: the distance at which the speech transmission index falls below 0,20, beyond which speech is as private as it would be between separate rooms. In offices with small volume or poor privacy it can be out of reach entirely. | m | ISO 3382-3:2012, 3.7 | [Open-Plan Office Acoustics (ISO 3382-3)](../buildings/rooms/open-plan-acoustics.md) | + +## Speech and intelligibility + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $m(F)$ | Modulation transfer function: the fraction of the speech envelope modulation depth at modulation frequency $F$ that survives the transmission path. | dimensionless | IEC 60268-16:2020 | [Speech Transmission Index (STI)](../perception/speech/speech-transmission.md) | +| STI | Speech transmission index: the modulation transfer matrix converted to effective signal-to-noise ratios and weighted into a single value on 0 to 1. | dimensionless | IEC 60268-16:2020, A.5.2 to A.5.6 | [Speech Transmission Index (STI)](../perception/speech/speech-transmission.md) | +| STIPA | The direct STI measurement, made by playing a standardised two-modulation-per-band test signal through the real chain. | dimensionless | IEC 60268-16:2020, clause 6.3 and Table 3 (direct method, Annex B) | [Speech Transmission Index (STI)](../perception/speech/speech-transmission.md) | +| SII | Speech intelligibility index: the band-importance-weighted audibility of the speech spectrum against noise and the listener's threshold. | dimensionless | ANSI S3.5-1997, clause 6 (procedure in clause 5, importance function in Table 3) | [Speech Intelligibility Index](../perception/speech/speech-intelligibility.md) | +| STOI | Short-time objective intelligibility: the clipped per-band envelope correlation between clean and degraded speech. | dimensionless | Taal et al. (2011), Equations 5 and 6; no governing standard | [Objective Intelligibility (STOI & ESTOI)](../perception/speech/objective-intelligibility.md) | +| ESTOI | The extended measure, row- and column-normalised so that it tracks modulated maskers. | dimensionless | Jensen and Taal (2016), Equation 8; no governing standard | [Objective Intelligibility (STOI & ESTOI)](../perception/speech/objective-intelligibility.md) | + +## Sound insulation + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| NR (level drop) | Noise reduction: the sound pressure level in the source room minus the level in the receiving room, $L_{p1} - L_{p2}$. It is not the transmission loss of the partition: the two differ by a term set by the partition area against the receiving room's absorption, so a small partition into a well-absorbing room delivers more noise reduction than its transmission loss, and a large one into a hard room delivers less. | dB | Norton and Karczub (2003), Equation (4.101) | [Room to Room: Partition, Receiving Room, Criterion](../devices/noise-control/room-to-room.md) | +| $D$ | Level difference: the energy-averaged source-room level minus the receiving-room level, with no normalisation. | dB | ISO 16283-1:2014, 3.12 to 3.15 | [Field Insulation Measurement (ISO 16283)](../buildings/insulation/insulation-field.md) | +| $D_{nT}$ | Standardized level difference: the level difference referred to a reference reverberation time, 0.5 s for dwellings. | dB | ISO 16283-1:2014, 3.12 to 3.15 | [Field Insulation Measurement (ISO 16283)](../buildings/insulation/insulation-field.md) | +| $D_n$ | Normalized level difference: the level difference referred to a reference absorption area of 10 m². | dB | ISO 10052:2021 | [Sound Insulation Survey Method (ISO 10052)](../buildings/insulation/insulation-survey.md) | +| $D_{n,e}$ | Element-normalized level difference of a small element or air path, referred to a reference area of 10 m². | dB | EN 12354-3:2000 | [Predicting Sound Insulation (EN 12354)](../buildings/design/insulation-prediction.md) | +| $R$ | Sound reduction index: the level difference corrected by the partition area over the receiving-room absorption area, measured in the laboratory with flanking suppressed. | dB | ISO 10140-2:2010 | [Laboratory Insulation Measurement](../buildings/insulation/insulation-lab.md) | +| $R'$ | Apparent sound reduction index: the same construction measured in the building, so it includes every flanking path. The prime is the lab-versus-field marker. | dB | ISO 16283-1:2014, 3.12 to 3.15 | [Field Insulation Measurement (ISO 16283)](../buildings/insulation/insulation-field.md) | +| TL (panel) | Transmission loss: the airborne insulation of a partition predicted from its physical properties, ten times the base-10 logarithm of the reciprocal transmission factor, the same quantity as $R$ in a prediction context. | dB | Bies, Hansen and Howard (2017), Section 7.2; no governing standard | [Predicting Panel Sound Insulation](../buildings/design/panel-sound-insulation.md) | +| TL (duct element) | Transmission loss of a duct element: ten times the base-10 logarithm of the incident plane-wave power over the power transmitted into an anechoic termination, computed from the four-pole transfer matrix and the two port impedances. The anechoic termination is part of the definition, which is why this transmission loss describes the element alone and is not the noise reduction the same silencer delivers once it is installed between a real source and a real outlet. | dB | Bies, Hansen and Howard (2017), Sections 8.8-8.9; no governing standard | [Silencers](../devices/noise-control/silencers.md) | +| IL | Insertion loss: the level at a receiver before an element is inserted minus the level after, for a silencer the drop in radiated sound power level when a length of duct is replaced by it. Unlike a transmission loss it depends on the source and the termination as well as on the element, which is what makes it the number a client can hear and the transmission loss the number a catalogue can print. | dB | Bies, Hansen and Howard (2017), Section 8.2, Equation (8.1); no governing standard | [Silencers](../devices/noise-control/silencers.md) | +| $\tau$ | Transmission factor, or transmission coefficient: the fraction of the incident sound power a partition passes on. It is the quantity the whole group is a logarithm of, since $R = -10\log_{10}\tau$ and the transmission loss is the same logarithm; a $\tau$ of $10^{-5}$ is a 50 dB partition. Transmission factors of parallel paths add, which is why a prediction sums the direct, flanking and indirect airborne factors and only then takes the logarithm. | dimensionless | ISO 12354-1:2017, Formula (1) | [Detailed Per-Band Prediction (ISO 12354)](../buildings/design/detailed-prediction.md) | +| $R_w$, $R'_w$, $D_{nT,w}$ | The weighted single-number ratings: a fixed reference curve is shifted toward the measured spectrum until the unfavourable deviations reach their allowed sum, and the shifted curve is read at 500 Hz. | dB | ISO 717-1:2020 | [Insulation Ratings (ISO 717)](../buildings/insulation/insulation-ratings.md) | +| $D_{n,e,w}$ | The same reference-curve rating applied to the element-normalized level difference. | dB | ISO 717-1:2020 | [Predicting Sound Insulation (EN 12354)](../buildings/design/insulation-prediction.md) | +| $C$, $C_{tr}$ | Spectrum adaptation terms: the corrections that re-rate the measured curve against A-weighted pink noise ($C$) and against A-weighted urban road traffic ($C_{tr}$). | dB | ISO 717-1:2020, Annex A | [Insulation Ratings (ISO 717)](../buildings/insulation/insulation-ratings.md) | +| $L_n$ | Normalized impact sound pressure level: the receiving-room level under the standard tapping machine, referred to a 10 m² absorption area. | dB re 20 µPa | ISO 10140-3:2010 | [Laboratory Insulation Measurement](../buildings/insulation/insulation-lab.md) | +| $L'_{nT}$ | Standardized impact sound pressure level, referred to a reference reverberation time. Note the sign: more reverberation lowers it, the opposite of $D_{nT}$. | dB re 20 µPa | ISO 16283-2:2015 | [Field Insulation Measurement (ISO 16283)](../buildings/insulation/insulation-field.md) | +| $L_{n,w}$, $L'_{nT,w}$ | The weighted impact ratings. The reference curve is shifted the same way, but an unfavourable deviation is now one where the measurement exceeds the reference. | dB | ISO 717-2:2020 | [Insulation Ratings (ISO 717)](../buildings/insulation/insulation-ratings.md) | +| $C_I$ | Impact spectrum adaptation term, from the energetic sum over 100 Hz to 2500 Hz. The enlarged-range $C_{I,50\text{–}2500}$ extends it down to 50 Hz. | dB | ISO 717-2:2020 (enlarged range in A.2.1 NOTE) | [Insulation Ratings (ISO 717)](../buildings/insulation/insulation-ratings.md) | +| $\Delta L_w$ | Weighted reduction of impact sound pressure level given by a floor covering, measured as the improvement over the bare reference floor. | dB | ISO 717-2:2020 (measurement in ISO 16251-1:2014, Formulae (3) and (4)) | [Floor-Covering Impact Improvement (ISO 16251-1)](../buildings/design/impact-improvement.md) | +| $\Delta R_w$ | Weighted improvement of airborne insulation contributed by a lining or additional layer, added to the element rating in the prediction. | dB | EN 12354-1:2000, Formulae 27 and 28a | [Predicting Sound Insulation (EN 12354)](../buildings/design/insulation-prediction.md) | +| $K_{ij}$ | Vibration reduction index of a junction: the direction-averaged velocity level difference corrected by the junction length and the equivalent absorption lengths. | dB | ISO 10848-1:2006, Formula (13) | [Laboratory Flanking Transmission (ISO 10848)](../buildings/insulation/flanking-lab.md) | +| $f_c$ | Critical frequency: the frequency at which the bending wavelength of a panel equals the wavelength in air, where the coincidence dip appears. | Hz | Bies, Hansen and Howard (2017), Equation 7.3; no governing standard | [Predicting Panel Sound Insulation](../buildings/design/panel-sound-insulation.md) | +| $\sigma$ | Radiation efficiency of a plate: the airborne power radiated per unit mean-square surface velocity, normalised by the plane-wave value. | dimensionless | Hopkins (2007), Equations 2.227 to 2.230; no governing standard | [Predicting Panel Sound Insulation](../buildings/design/panel-sound-insulation.md) | +| $D_{2m,nT}$ | Standardized facade level difference: the level 2 m in front of the facade minus the indoor level, standardized to a reference reverberation time of 0,5 s for dwellings. The 2 m position sits in the field the facade itself reflects, so it is not a free-field level, and the notation records the source — $D_{tr,2m,nT}$ for road traffic, $D_{ls,2m,nT}$ for a loudspeaker. | dB | ISO 16283-3:2016, 3.15 | [Façade Sound Insulation](../buildings/insulation/facade-insulation.md) | +| $D_{ls,2m,nT,w}$ | The weighted facade rating: $D_{2m,nT}$ measured with a loudspeaker put through the ISO 717-1 reference-curve procedure. The `ls` subscript is not decoration — it records that the source was a loudspeaker at 45 degrees rather than real road traffic, and a facade rated with one source is not interchangeable with the same facade rated with the other. | dB | ISO 717-1:2020 | [Façade Sound Insulation](../buildings/insulation/facade-insulation.md) | +| $R'_{45°}$ | Apparent sound reduction index of a facade element under loudspeaker sound at 45 degrees: the level difference corrected by the specimen area over the receiving-room absorption area, with a further $-1{,}5$ dB that carries the single-angle geometry. It is apparent, so flanking and any other component of the facade are inside the number. | dB | ISO 16283-3:2016, 3.12 | [Façade Sound Insulation](../buildings/insulation/facade-insulation.md) | +| $R_A$, $R_{A,tr}$ | Global airborne index: the A-weighted level a partition transmits when it is excited by a normalised spectrum — pink noise for $R_A$, road traffic for $R_{A,tr}$ — summed energetically over eighteen one-third-octave bands from 100 Hz to 5 kHz. It is a close relative of $R_w + C$ and $R_w + C_{tr}$ but is computed directly, not by shifting a reference curve, and it uses two bands the ISO 717-1 range does not. | dBA | CTE DB-HR, Annex A, Formulae (A.5) and (A.6) | [Spanish Building Code (CTE DB-HR)](../buildings/insulation/spanish-building-code.md) | +| $D_{nT,A}$, $D_{2m,nT,Atr}$ | The same global index applied to a standardized level difference: between two rooms ($D_{nT,A}$, pink noise) and between the outside and a protected room ($D_{2m,nT,Atr}$, road traffic or aircraft). These are the quantities the DB-HR requirement tables are written against, so a project is checked in them and not in the ISO 717-1 ratings. | dBA | CTE DB-HR, Annex A, Formulae (A.5) and (A.6); requirements in clause 2 | [Spanish Building Code (CTE DB-HR)](../buildings/insulation/spanish-building-code.md) | +| $R_I$ | Intensity sound reduction index: the source-room level minus the intensity level scanned over the radiating face, so the transmitted power is measured directly instead of inferred from the receiving room. It is the method of choice where flanking is strong; add the $K_c$ adaptation to get $R_{I,M}$, the value the ISO 10140 pressure method would have produced. | dB | ISO 15186-1:2000, 3.8, Equation (7) | [Sound Insulation by Intensity (ISO 15186)](../buildings/insulation/insulation-intensity.md) | +| $D_{I,n,e}$ | Intensity element-normalized level difference: the small-element counterpart of $D_{n,e}$, measured by scanning the element and normalised to a reference absorption area of 10 m². It is rated through the same ISO 717-1 procedure, as $D_{I,n,e,w}$, so a ventilator or a transit sealing system can be compared with a wall on one scale. | dB | ISO 15186-2:2003, Formula (12) | [Sound Insulation by Intensity (ISO 15186)](../buildings/insulation/insulation-intensity.md) | + +## Materials and surfaces + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $\alpha$ | Sound absorption coefficient at normal incidence: the fraction of incident energy not returned by the surface, obtained in the impedance tube from the reflection factor. | dimensionless | ISO 10534-2:1998, Equations (17) to (19) | [Impedance Tube](../materials/absorbers/impedance-tube.md) | +| $\alpha_s$ | Random-incidence sound absorption coefficient measured in a reverberation room, from the change in equivalent absorption area with and without the specimen. | dimensionless | ISO 354:2003, Equations (8) and (9) | [Sound Absorption Measurement and Rating](../materials/absorbers/absorption-measurement.md) | +| $\alpha_p$ | Practical sound absorption coefficient: the one-third-octave data grouped into octave bands and rounded to steps of 0.05. | dimensionless | ISO 11654:1997, Clause 4.1 | [Sound Absorption Measurement and Rating](../materials/absorbers/absorption-measurement.md) | +| $\alpha_w$ | Weighted sound absorption coefficient: the fixed reference curve shifted toward the practical values and read at 500 Hz. | dimensionless | ISO 11654:1997, Clause 4.2 | [Sound Absorption Measurement and Rating](../materials/absorbers/absorption-measurement.md) | +| Absorption class | The A to E letter class the weighted coefficient maps to, or "not classified". | class letter | ISO 11654:1997, Table B.1 | [Sound Absorption Measurement and Rating](../materials/absorbers/absorption-measurement.md) | +| $R$ | Airflow resistance: the pressure difference across a specimen divided by the volumetric airflow rate through it. | Pa·s/m³ | ISO 9053-1:2018, Clause 3 | [Airflow Resistance](../materials/absorbers/airflow-resistance.md) | +| $R_s$ | Specific airflow resistance: the airflow resistance referred to the specimen face area. | Pa·s/m | ISO 9053-1:2018, Clause 3 | [Airflow Resistance](../materials/absorbers/airflow-resistance.md) | +| $\sigma$ | Airflow resistivity: the specific airflow resistance per unit thickness, the primary input to every empirical porous model. | Pa·s/m² | ISO 9053-1:2018, Clause 3 | [Airflow Resistance](../materials/absorbers/airflow-resistance.md) | +| $Z$ | Surface impedance: the complex ratio of sound pressure to particle velocity at the face of the sample, usually reported normalised by the characteristic impedance of air. | Pa·s/m | ISO 10534-2:1998, Equations (17) to (19) | [Impedance Tube](../materials/absorbers/impedance-tube.md) | +| $s$ | Scattering coefficient: the fraction of reflected energy that is not returned specularly, measured at random incidence on a turntable in a reverberation room. | dimensionless | ISO 17497-1:2004+A1:2014, Formula (5) | [Diffusers and Their Coefficients](../materials/diffusers/diffusers.md) | +| $d$ | Diffusion coefficient: the uniformity of the polar response of a surface, from the autocorrelation of the free-field goniometer measurement. | dimensionless | ISO 17497-2:2012, Formula (5) (normalised form in Formula (7)) | [Diffusers and Their Coefficients](../materials/diffusers/diffusers.md) | +| $s'$ | Dynamic stiffness per unit area of a resilient layer: a dynamic force per unit area divided by the resulting change in thickness. | MN/m³ | EN 29052-1:1992 (ISO 9052-1:1989), Formula 1 | [Dynamic stiffness of resilient materials](../materials/resilient/dynamic-stiffness.md) | +| $\phi$ (porosity) | Open porosity: the fraction of the material's volume that is air connected to the outside, $\phi = V_a/V_T$. A closed bubble counts as frame, not as pore, because sound cannot enter it; for most fibrous materials and foams $\phi$ lies very close to one, which is why a one-parameter model that assumes so can still work. | dimensionless | Allard and Atalla (2009), Equation (2.25); no governing standard | [Porous and Multilayer Absorbers](../materials/absorbers/porous-absorbers.md) | +| $\alpha_\infty$ (tortuosity) | Tortuosity: how much longer the winding path through the pores is than the straight line, squared — exactly $1/\cos^2\varphi$ for pores inclined at an angle $\varphi$, and one for straight cylindrical pores. It sets the high-frequency limit of the effective density, and despite the $\alpha$ it is not an absorption coefficient of any kind. | dimensionless | Allard and Atalla (2009), Equation (4.143); no governing standard | [Porous and Multilayer Absorbers](../materials/absorbers/porous-absorbers.md) | +| $\Lambda$, $\Lambda'$ | The two pore sizes the Johnson-Champoux-Allard model needs: $\Lambda$ weights the pore surface by the squared flow velocity, so it is set by the narrow constrictions where the viscous losses happen, and $\Lambda'$ is the plain surface-to-volume length that governs the thermal exchange with the frame. $\Lambda'$ is normally the larger, and the two are equal only for identical straight cylindrical pores. | m | Allard and Atalla (2009), Equations (5.24) and (5.27); no governing standard | [Porous and Multilayer Absorbers](../materials/absorbers/porous-absorbers.md) | +| $Z_c$, $k$ | Characteristic impedance and complex wavenumber: the pair that describes a porous medium as an equivalent fluid — the ratio of pressure to particle velocity in a travelling wave inside it, and the wavenumber whose imaginary part is the attenuation per metre. Every empirical or semi-phenomenological model produces this pair, and it is what the transfer-matrix method stacks layer by layer. | Pa·s/m and 1/m | Allard and Atalla (2009), Chapter 5; no governing standard | [Porous and Multilayer Absorbers](../materials/absorbers/porous-absorbers.md) | + +## Vibration and structure-borne sound + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $Y$ | Mobility: the complex ratio of a velocity response to the force that produces it. | m/(N·s) | ISO 7626-1:2011, 3.1.2 and Table 1 | [Mechanical mobility and the FRF family (ISO 7626-1)](../vibration/structural/mechanical-mobility.md) | +| $Z$ | Mechanical impedance: the reciprocal of mobility, force per unit velocity. | N·s/m | ISO 7626-1:2011, Table 1 | [Mechanical mobility and the FRF family (ISO 7626-1)](../vibration/structural/mechanical-mobility.md) | +| $H$ (receptance) | Receptance, or dynamic compliance: displacement response per unit force, the pivot the whole family converts through. | m/N | ISO 7626-1:2011, Table 1 | [Mechanical mobility and the FRF family (ISO 7626-1)](../vibration/structural/mechanical-mobility.md) | +| $A$ | Accelerance, or inertance: acceleration response per unit force. Its reciprocal is the apparent mass. | 1/kg | ISO 7626-1:2011, Table 1 | [Mechanical mobility and the FRF family (ISO 7626-1)](../vibration/structural/mechanical-mobility.md) | +| $k_{21}$ | Dynamic transfer stiffness of a resilient element: the blocking force on the output side divided by the displacement on the input side. | N/m | ISO 10846-1:2008, 3.7 | [Transfer stiffness of resilient elements (ISO 10846)](../vibration/structural/transfer-stiffness.md) | +| $L_k$ | Level of the dynamic transfer stiffness, referred to 1 N/m. | dB re 1 N/m | ISO 10846-2:2008 and ISO 10846-3:2002, 3.17 | [Transfer stiffness of resilient elements (ISO 10846)](../vibration/structural/transfer-stiffness.md) | +| $\eta$ (resilient element) | Loss factor of a resilient element: the tangent of the phase angle of its dynamic transfer stiffness. | dimensionless | ISO 10846-1:2008, 3.8 | [Transfer stiffness of resilient elements (ISO 10846)](../vibration/structural/transfer-stiffness.md) | +| $\eta_{int}$ (internal) | Internal loss factor of a building element: the fraction of its vibrational energy dissipated per radian inside the material itself, before anything is radiated or leaves through the junctions. It is an input to the prediction, not a measured output: Table B.3 of the same standard gives 0,005 for concrete and about 0,01 for most masonry. | dimensionless | ISO 12354-1:2017, Annex C, Formula (C.1) | [Detailed Per-Band Prediction (ISO 12354)](../buildings/design/detailed-prediction.md) | +| $\eta_{tot}$ (total, in situ) | Total loss factor of an element as built in: the internal loss factor plus the losses radiated into the air and absorbed at the perimeter junctions. It is what damps the resonant transmission above the critical frequency, and it fixes the structural reverberation time through $T_s = 2{,}2/(f\,\eta_{tot})$ — so a laboratory value measured in a heavy test frame does not transfer to the building unchanged. | dimensionless | ISO 12354-1:2017, Annex C, Formula (C.1) | [Detailed Per-Band Prediction (ISO 12354)](../buildings/design/detailed-prediction.md) | +| $a_w$ | Frequency-weighted acceleration: the root sum of squares of the band accelerations after the human-response weightings. | m/s² | ISO 2631-1:1997, Equation (9) | [Human Vibration](../vibration/human/human-vibration.md) | +| $A(8)$ | Daily vibration exposure: the exposure magnitude normalised to a reference 8 h day, combined over the operations of the day. | m/s² | ISO 5349-1:2001, Equations (2) and (3) | [Human Vibration](../vibration/human/human-vibration.md) | +| VDV | Vibration dose value: the fourth-power time integral of the weighted acceleration, which weights shocks far more heavily than an r.m.s. does. | m/s^1.75 | ISO 2631-1:1997, Equation (5) | [Human Vibration](../vibration/human/human-vibration.md) | +| MTVV | Maximum transient vibration value: the largest 1 s running r.m.s. of the weighted acceleration. | m/s² | ISO 2631-1:1997, Equation (4) | [Human Vibration](../vibration/human/human-vibration.md) | +| $R$ | Cumulative stress variable of the multiple-shock model: the daily compressive stresses accumulated over the years of exposure, which the lumbar injury probability is read from. | dimensionless | ISO 2631-5:2018, Annex C (Formulae C.1 and C.3 to C.5) | [Multiple-shock whole-body vibration (ISO 2631-5)](../vibration/human/multiple-shock-vibration.md) | +| $L_v$ | Velocity level: twenty times the base-10 logarithm of the surface velocity over the reference velocity. | dB re 50 nm/s | ISO/TS 7849-1:2009, Formula 3 | [Sound power from surface vibration (ISO/TS 7849)](../devices/emission/vibration-sound-power.md) | +| $\varepsilon$ | Radiation factor, or radiation efficiency, of a vibrating machine surface: the airborne power radiated per unit mean-square velocity and area. | dimensionless | ISO/TS 7849-1:2009 and ISO/TS 7849-2:2009 | [Sound power from surface vibration (ISO/TS 7849)](../devices/emission/vibration-sound-power.md) | +| $L_{Ws}$ | Structure-borne sound power level injected by equipment into a reception plate. | dB re 1 pW | EN 15657:2018, Formula 14 | [Structure-borne sound power of equipment (EN 15657)](../buildings/design/structure-borne-power.md) | +| $\eta_{ij}$ | Coupling loss factor: the fraction of energy per radian that a statistical energy analysis subsystem loses into a neighbouring one across a junction. | dimensionless | Hopkins (2007), Equation 2.154; no governing standard | [Bending-wave transmission at plate junctions](../vibration/structural/junction-transmission.md) | +| $\tau_{ij}$ (junction) | Junction transmission coefficient: the fraction of the bending-wave power arriving at a junction from plate $i$ that continues into plate $j$, angle by angle and then averaged over a diffuse field. Both the coupling loss factor $\eta_{ij}$ and the vibration reduction index $K_{ij}$ are derived from it, so it is the wave-approach quantity the junction family bottoms out in. | dimensionless | Hopkins (2007), Equations 5.12 and 5.13; no governing standard | [Bending-wave transmission at plate junctions](../vibration/structural/junction-transmission.md) | + +## Psychoacoustics + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $N$ | Loudness: the perceived magnitude of a sound, anchored so that a 1 kHz tone at 40 dB SPL is exactly 1 sone. | sone | ISO 532-1:2017, clause 5 (stationary) and clause 6 (time-varying) | [Loudness](../perception/psychoacoustics/loudness.md) | +| $N'$ | Specific loudness: the loudness density along the critical-band scale, whose integral is $N$. | sone/Bark | ISO 532-1:2017 (sone/Cam form in ISO 532-2:2017, Formula 7) | [Loudness](../perception/psychoacoustics/loudness.md) | +| $L_N$ | Loudness level: the level of the 1 kHz free-field tone judged equally loud as the sound. | phon | ISO 226:2023, Formula (2) (contours in Formula (1)) | [Loudness](../perception/psychoacoustics/loudness.md) | +| $S$ | Sharpness: the position of the centre of gravity of the specific loudness on the critical-band scale, normalised so that the reference narrow-band noise is exactly 1 acum. | acum | DIN 45692:2009, clause 6 | [Sound Quality Metrics](../perception/psychoacoustics/sound-quality.md) | +| $R$ | Roughness: the perceived harshness of fast amplitude modulation, around 70 Hz, normalised so that the reference modulated tone is 1 asper. | asper | ECMA-418-2:2025, clause 7 (Formula 104) | [Sound Quality Metrics](../perception/psychoacoustics/sound-quality.md) | +| $F$ | Fluctuation strength: the perceived slow amplitude modulation, around 4 Hz, normalised so that the reference modulated tone is 1 vacil. | vacil | ECMA-418-2:2025, clause 9 (Formula 163) | [Sound Quality Metrics](../perception/psychoacoustics/sound-quality.md) | +| $T$ | Tonality: the perceived tonal content of a sound, derived from the autocorrelation of the band envelopes. | tu | ECMA-418-2:2025, clause 6 | [Sound Quality Metrics](../perception/psychoacoustics/sound-quality.md) | +| TNR | Tone-to-noise ratio: the level of a discrete tone above the masking noise in the critical band around it. | dB | ECMA-418-1:2024, clause 11 (Formulae 9 to 11) | [Prominent Discrete Tones (ECMA-418-1)](../perception/psychoacoustics/tone-prominence.md) | +| PR | Prominence ratio: the level of the critical band containing the tone above the mean of the two adjacent bands. | dB | ECMA-418-1:2024, clause 12 (Formula 23) | [Prominent Discrete Tones (ECMA-418-1)](../perception/psychoacoustics/tone-prominence.md) | +| $\Delta L$ | Audibility of a tone in noise: the tone level minus the critical-band masking level minus the masking index. | dB | ISO/PAS 20065:2016, Formula 14 | [Objective audibility of tones in noise (ISO/PAS 20065)](../perception/psychoacoustics/tone-audibility.md) | +| PA | Psychoacoustic annoyance: the percentile loudness scaled by sharpness and by a fluctuation-plus-roughness term. | dimensionless | Fastl and Zwicker (2007), Equation 16.2; no governing standard | [Psychoacoustic annoyance and fluctuation strength](../perception/psychoacoustics/psychoacoustic-annoyance.md) | +| Critical band | Critical band: the frequency span within which the ear sums energy as one event, about 100 Hz wide below 500 Hz and roughly a fifth of the centre frequency above it. Masking, sharpness and the two tone-prominence ratios are all computed band by band on this scale, which is why none of them can be read off a fixed fractional-octave spectrum. | Hz | Fastl and Zwicker (2007), Sections 6.1 and 6.2; no governing standard | [Loudness](../perception/psychoacoustics/loudness.md) | +| $z$ (critical-band rate) | Critical-band rate: the auditory frequency scale on which one unit is one critical band, running 0 to 24 Bark over the audible range. Specific loudness is a density along it, which is why its unit is sone/Bark and why a loudness pattern is plotted against $z$ rather than against frequency. | Bark | Fastl and Zwicker (2007), Section 6.2, Table 6.1; no governing standard | [Loudness](../perception/psychoacoustics/loudness.md) | +| $ERB_N$ (Cam scale) | Equivalent rectangular bandwidth of the auditory filter, and the Cam scale built from it by counting one unit per $ERB_N$: about 132 Hz at 1 kHz, so the step from 934 Hz to 1066 Hz is one Cam. It is narrower than the Bark band at low frequencies, and it is the scale ISO 532-2 and ISO 532-3 compute specific loudness on, so a sone/Cam density is not numerically a sone/Bark one. | Hz (scale in Cam) | ISO 532-2:2017, 3.13 and 3.14 | [Advanced Loudness (ISO 532-2/-3, ECMA-418-2)](../perception/psychoacoustics/advanced-loudness.md) | +| $N_5$ | Percentile loudness: the loudness exceeded 5 % of the time, read off the time-varying loudness of the ISO 532-1 model. It is the stationary stand-in for a fluctuating sound that psychoacoustic annoyance is built on, and it is a loudness in sone, not a loudness level in phon. | sone | Fastl and Zwicker (2007), Equation 16.2; no governing standard | [Psychoacoustic annoyance and fluctuation strength](../perception/psychoacoustics/psychoacoustic-annoyance.md) | +| Short-term and long-term loudness | The two smoothed loudness time series of the Moore-Glasberg-Schlittenlacher model: short-term loudness is the loudness of a brief segment — a syllable, a single note, typically up to 500 ms — and long-term loudness that of a longer one, a whole sentence or musical phrase, typically up to 5 s. The loudness of a sound lasting two or three seconds is predicted by the maximum of the long-term series, not by its average. | sone | ISO 532-3:2023, 3.10 and 3.11 | [Advanced Loudness (ISO 532-2/-3, ECMA-418-2)](../perception/psychoacoustics/advanced-loudness.md) | + +## Electroacoustics and programme loudness + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| THD | Total harmonic distortion: the harmonic content of the output relative to the fundamental ($\mathrm{THD}_F$) or to the total signal ($\mathrm{THD}_R$). | % or dB | IEC 60268-3:2013, 14.12.2 to 14.12.11 (the R form in 14.12.3.2) | [Electroacoustics: distortion and frequency response](../devices/electroacoustics/electroacoustics.md) | +| THD+N | Total harmonic distortion plus noise: everything left after notching out the fundamental, within the standard measurement bandwidth. | % or dB | AES17-2015, clause 6.3.1 (notch and bandwidth in 5.2.5 and 5.2.8) | [Electroacoustics: distortion and frequency response](../devices/electroacoustics/electroacoustics.md) | +| SINAD | Signal to noise and distortion ratio, the reciprocal expression of THD+N. | dB | AES17-2015, clause 6.3.1 | [Electroacoustics: distortion and frequency response](../devices/electroacoustics/electroacoustics.md) | +| IMD, $d_{m,n}$ (modulation) | Modulation intermodulation distortion: the sidebands a strong low-frequency tone produces around a weak high-frequency one. IEC 60268-3 defines several intermodulation families with different test signals, so a bare "IMD" has to say which one it is, and the single number an SMPTE-type analyzer prints combines the modulation sidebands in r.m.s. and is none of them. | % | IEC 60268-3:2013, 14.12.7 | [Electroacoustics: distortion and frequency response](../devices/electroacoustics/electroacoustics.md) | +| $d_{d,n}$ (difference frequency) | Difference-frequency intermodulation distortion: the products two closely spaced high-frequency tones of equal amplitude create at their difference and its multiples, referred to the fundamentals. Its test signal and its products are both different from the modulation form, so the two numbers are not comparable. | % | IEC 60268-3:2013, 14.12.8 | [Electroacoustics: distortion and frequency response](../devices/electroacoustics/electroacoustics.md) | +| TDFD | Total difference-frequency distortion: the second- and third-order difference products of the two-tone test combined into one figure and referred to the sum of the two fundamentals, the single number the difference-frequency family reports. | % | IEC 60268-3:2013, 14.12.10 | [Electroacoustics: distortion and frequency response](../devices/electroacoustics/electroacoustics.md) | +| $H_n$ (harmonic order $n$) | Harmonic transfer function of order $n$: the impulse response that an exponential-sweep deconvolution places $L\ln n$ seconds *before* the linear one, so a single sweep separates the linear response and every harmonic order into its own window. The distortion of order $n$ at excitation frequency $f$ is then read as $\|H_n(nf)\|/\|H_1(f)\|$. | output per input | Farina (2000), no governing standard | [Swept-sine distortion and phase utilities](../devices/electroacoustics/swept-sine-distortion.md) | +| DIM | Dynamic intermodulation distortion, measured with a 15 kHz sine against a filtered 3.15 kHz square wave. | % | IEC 60268-3:2013, 14.12.9 | [Electroacoustics: distortion and frequency response](../devices/electroacoustics/electroacoustics.md) | +| $L_K$, LUFS | Programme loudness: the channel-weighted sum of K-weighted mean-square powers, gated in 400 ms blocks. LUFS and LKFS name the same unit. | LUFS | ITU-R BS.1770-5, Formula 2 (gating in Formulae 3 to 7) | [Programme loudness and true peak (BS.1770 / EBU R 128)](../devices/broadcast/program-loudness.md) | +| LRA | Loudness range: the spread between the 10th and 95th percentiles of the gated short-term loudness distribution. | LU | EBU Tech 3342 | [Programme loudness and true peak (BS.1770 / EBU R 128)](../devices/broadcast/program-loudness.md) | +| dBTP | True peak level: the peak of the signal reconstructed by oversampling, which catches the inter-sample peaks a sample-domain maximum misses. | dBTP | ITU-R BS.1770-5, Annex 2 | [Programme loudness and true peak (BS.1770 / EBU R 128)](../devices/broadcast/program-loudness.md) | + +## Aircraft and airport noise + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| PNL | Perceived noise level: the 24 one-third-octave band levels converted to noisiness in noys and recombined. | PNdB | ICAO Annex 16, Vol. I, Appendix 2 (noisiness law in Table A2-3) | [Aircraft noise: Effective Perceived Noise Level](../aircraft/aircraft-noise.md) | +| PNLT | Tone-corrected perceived noise level: PNL plus the penalty for spectral irregularities such as fan and turbine tones. | PNdB | ICAO Annex 16, Vol. I, Appendix 2 | [Aircraft noise: Effective Perceived Noise Level](../aircraft/aircraft-noise.md) | +| EPNL | Effective perceived noise level: the maximum PNLT plus the duration correction over the 10 dB-down window, the noise-certification metric. | EPNdB | ICAO Annex 16, Vol. I, Appendix 2 | [Aircraft noise: Effective Perceived Noise Level](../aircraft/aircraft-noise.md) | +| PNLTM | Maximum tone-corrected perceived noise level: the largest PNLT of the half-second time history, after the bandsharing adjustment. It is the peak the certification metric is built on, since $\mathrm{EPNL} = \mathrm{PNLTM} + D$ and the 10 dB-down integration window is measured down from it. | PNdB | ICAO Annex 16, Vol. I, Appendix 2, 4.4 | [Aircraft noise: Effective Perceived Noise Level](../aircraft/aircraft-noise.md) | +| NPD | Noise-power-distance table: the event level of one aircraft — $L_{Amax}$ or SEL — tabulated against distance for a handful of engine power settings, measured in steady flight along a notionally infinite straight path at a reference speed. A calculation interpolates it linearly in power and logarithmically in distance, then corrects that baseline segment by segment. | dB | ECAC Doc 29, 4th ed., Volume 2, section 4.2 | [Airport Noise (ECAC Doc 29)](../aircraft/airport-noise.md) | +| ANP database | Aircraft Noise and Performance database: the international collection of NPD tables, aircraft and engine performance coefficients and default departure and approach profiles, supplied mostly by the manufacturers, that an airport-noise calculation is normally run from. | | ECAC Doc 29, 4th ed., Volume 2, Appendix G | [The ANP fleet database](../aircraft/anp-fleet.md) | +| $d_p$ | Slant distance: the perpendicular distance from the receiver to the flight-path segment, which is the abscissa of every NPD table. It is not the distance along the ground and not the aircraft's altitude, and to the side of the track it is the minimum distance to the segment rather than to the whole path. | m | ECAC Doc 29, 4th ed., Volume 2, section 4.5.2 | [Airport Noise (ECAC Doc 29)](../aircraft/airport-noise.md) | +| $L_{Amax}$ | Maximum A-weighted level of a single event: the largest instantaneous value $L_A(t)$ reaches while the aircraft passes, the simpler of the two event metrics an NPD table carries. Doc 29 reads $L_A$ on the Slow sound-level-meter scale, so the time weighting is part of the quantity; it is not the peak level, which has no time weighting at all. | dB re 20 µPa | ECAC Doc 29, 4th ed., Volume 2, section 4.1 | [Airport Noise (ECAC Doc 29)](../aircraft/airport-noise.md) | + +## Underwater acoustics + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $L_p$ (underwater) | Underwater sound pressure level, referred to 1 µPa rather than 20 µPa. An airborne level never converts to it by subtraction alone. | dB re 1 µPa | ISO 18405:2017 (mean-square level in ISO 18406:2017, Formula 7) | [Underwater acoustics: radiated noise and pile driving](../underwater/underwater-acoustics.md) | +| SEL (underwater) | Underwater sound exposure level, the time integral of squared pressure referred to 1 µPa²·s. | dB re 1 µPa²·s | ISO 18405:2017 | [Underwater acoustics: radiated noise and pile driving](../underwater/underwater-acoustics.md) | +| $L_{RN}$ | Radiated noise level of a ship: the level of the product of the far-field r.m.s. pressure and the source distance. | dB re 1 µPa·m | ISO 17208-1:2016 | [Underwater acoustics: radiated noise and pile driving](../underwater/underwater-acoustics.md) | +| $L_s$ | Equivalent monopole source level: the radiated noise level after the Lloyd's-mirror surface correction, so that one number describes the source itself. | dB re 1 µPa·m | ISO 17208-2:2019, Formula 3 | [Underwater acoustics: radiated noise and pile driving](../underwater/underwater-acoustics.md) | +| TL (underwater) | Transmission loss as the sonar equation uses it: the drop between the source level and the level at the receiver, a geometrical spreading law plus the volume absorption $\alpha R$. Strictly, ISO 18405 calls that quantity propagation loss, $N_{PL} = L_S - L_p(x)$, keeps the name transmission loss for the reduction in level between two stated points, and deprecates using one as a synonym of the other. | dB | ISO 18405:2017, 3.4.1.3 and 3.4.1.4 | [Underwater sound propagation](../underwater/underwater-propagation.md) | +| SL, $L_S$ | Source level: the level of the source factor, equal to the level 1 m from a hypothetical point source radiating into an infinite lossless medium, so it is back-projected from a measurement made much further away and never measured at 1 m. The reference value carries a squared metre, which is why the widespread "dB re 1 µPa at 1 m" is the same number written loosely. | dB re 1 µPa²m² | ISO 18405:2017, 3.3.2.1 | [Underwater sound propagation](../underwater/underwater-propagation.md) | +| NL, $L_N$ | Sonar noise level: the background the signal has to be detected against, in the band of interest, from wind, thermal agitation, distant shipping and the platform's own self-noise. It has to be quoted over the same bandwidth as the source level, since an ambient spectrum level and a broadband level differ by $10\log_{10}B$. | dB re 1 µPa | ISO 18405:2017, 3.6.2.5 | [Underwater sound propagation](../underwater/underwater-propagation.md) | +| DI (receiving array) | Directivity index of a receiving array: the array gain in the special case the sonar equation assumes, a plane-wave signal in isotropic background noise. It is the signal-to-noise ratio the beam buys over a single omnidirectional hydrophone, and it enters the equation as a credit against the noise level. | dB | ISO 18405:2017, 3.6.2.4 (Note 4) | [Underwater sound propagation](../underwater/underwater-propagation.md) | +| DT | Detection threshold: ten times the base-10 logarithm of the signal-to-noise ratio at which a signal counts as just detectable, for a stated probability of detection — often 0,5 — and probability of false alarm. It is where the processing gain and the operator's tolerance for false alarms enter the sonar equation. | dB | ISO 18405:2017, 3.6.2.1 | [Underwater sound propagation](../underwater/underwater-propagation.md) | +| TS, $N_{TS}$ | Target strength: the level of the target's differential scattering cross section, the free-field ratio of what it scatters back to what is incident on it. It is the one term that separates the active sonar equation from the passive one, and it depends on both the incidence and the scattering direction, so a backscattering value is the monostatic special case. | dB re 1 m²/sr | ISO 18405:2017, 3.6.2.8 | [Underwater sound propagation](../underwater/underwater-propagation.md) | +| SE, $\Delta L_{SE}$ | Signal excess: the amount by which the signal-to-noise ratio at the processor output exceeds the detection threshold. It is what the sonar equation returns; the target is detectable where it is positive, and the range at which it crosses zero is the detection range. | dB | ISO 18405:2017, 3.6.2.2 | [Underwater sound propagation](../underwater/underwater-propagation.md) | +| FOM | Figure of merit: the propagation loss at which the probability of detection falls to 50 %, that is, the loss a passive system can afford before the signal excess reaches zero. Inverting any loss law at $TL = \mathrm{FOM}$ gives the detection range directly, which is why it is quoted instead of the whole curve. | dB (re 1 m² as a propagation factor) | Ainslie (2010), Equations (3.48) and (3.111); no governing standard | [Underwater sound propagation](../underwater/underwater-propagation.md) | +| $W(f)$ | Auditory weighting function: a generic band-pass filter shaped to one hearing group's susceptibility to noise-induced hearing loss, with its gain chosen so the flat central part sits at 0 dB. It is applied to the spectrum before an exposure is summed, so the same physical sound weighs differently for a porpoise and for a baleen whale. | dB | NMFS (2024) v3.0, Equation 1 (parameters in Table 5); no governing standard | [Marine-mammal noise exposure](../underwater/marine-mammal-exposure.md) | +| TTS onset | Onset of temporary threshold shift: the exposure at which a recoverable loss of hearing sensitivity begins, published per hearing group as a weighted sound exposure level and, for impulsive sound, together with an unweighted peak level. Both metrics have to be tested; whichever is reached first decides. | dB | NMFS (2024) v3.0, Table 8; no governing standard | [Marine-mammal noise exposure](../underwater/marine-mammal-exposure.md) | +| AUD INJ onset (PTS onset) | Onset of auditory injury, the 2024 guidance's name for what earlier versions called permanent threshold shift onset: the exposure above which the shift no longer recovers. For non-impulsive sound it is the TTS onset plus 20 dB for every group; for impulsive sound the guidance sets it 15 dB above in exposure and 6 dB above in peak level. | dB | NMFS (2024) v3.0, Table ES3; no governing standard | [Marine-mammal noise exposure](../underwater/marine-mammal-exposure.md) | +| $SEL_{cum}$ | Cumulative sound exposure level: the weighted sound exposure of every event of an activity — every strike of a piling campaign, say — summed over its whole duration. The onset criteria are written against this accumulated quantity, not against a single event, so halving the strike energy and doubling the strike count changes nothing. | dB re 1 µPa²·s | NMFS (2024) v3.0, Table ES3; no governing standard | [Marine-mammal noise exposure](../underwater/marine-mammal-exposure.md) | + +## Numerical simulation + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $C_N$ (the cfl argument) | Courant number: how far a wavefront travels in one time step, measured in grid cells, $c\,\Delta t\sqrt{1/\Delta x^2 + 1/\Delta y^2}$. An explicit scheme is stable only up to one and meaningless above it, so it is the number the time step is chosen from rather than the other way round; the library defaults to 0,6. | dimensionless | Attenborough and Van Renterghem (2021), Equations (4.13) and (4.14); no governing standard | [2D FDTD wave simulation](../simulation/fdtd-simulation.md) | +| Numerical dispersion | Numerical dispersion: the error the discrete scheme makes in the propagation speed, which grows with frequency and depends on the direction of travel — largest along a coordinate axis, and zero along the diagonal of square cells at a Courant number of one. It is why ten cells per shortest wavelength is the working rule, and why an FDTD arrival time drifts if the grid is too coarse. | % (speed error) | Attenborough and Van Renterghem (2021), Equation (4.15); no governing standard | [2D FDTD wave simulation](../simulation/fdtd-simulation.md) | +| PML (perfectly matched layer) | Perfectly matched layer: a boundary region whose absorption is graded so that, in principle, it reflects nothing at any angle or frequency, which is what lets a finite grid stand in for open space. What this library ships is the graded sponge layer, its simple precursor, so a grazing-incidence residue at the edge is expected rather than a bug. | | Attenborough and Van Renterghem (2021), Section 4.2.3; no governing standard | [2D FDTD wave simulation](../simulation/fdtd-simulation.md) | + +## Measurement uncertainty + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $u(y)$ | Combined standard uncertainty of a result, propagated from the standard uncertainties of its inputs by the law of propagation of uncertainty. | unit of the result | ISO/IEC Guide 98-3:2008 (JCGM 100:2008), clause 5 | [Measurement uncertainty (GUM and Monte Carlo)](../signals/metrology/gum-uncertainty.md) | +| $U$ | Expanded uncertainty: the combined standard uncertainty multiplied by a coverage factor, which defines a coverage interval. | unit of the result | ISO/IEC Guide 98-3:2008 (JCGM 100:2008), clause 6 and Annex G | [Measurement uncertainty (GUM and Monte Carlo)](../signals/metrology/gum-uncertainty.md) | +| $\sigma_R$ | Reproducibility standard deviation of a sound-insulation quantity: the standard uncertainty ISO 12999-1 assigns to situation A, the widest of the three. The same clause assigns $\sigma_{situ}$ to situation B and the repeatability $\sigma_r$ to situation C — for $R'_w$, 1,2 dB against 0,9 and 0,4 — so the situation has to be stated with the number. | dB | ISO 12999-1:2020, Clause 5.2 (coverage factors in Table 8) | [Field Insulation Measurement (ISO 16283)](../buildings/insulation/insulation-field.md) | diff --git a/docs/reference/theory/index.md b/docs/reference/theory/index.md index d644b13e9..af7229c87 100644 --- a/docs/reference/theory/index.md +++ b/docs/reference/theory/index.md @@ -2,7 +2,9 @@ # Theoretical Background -The theory reference explains the standards, the mathematics and the design decisions behind every phonometry module. It is split into six domain pages, listed below with the sections each one hosts. Theory for the underwater modules lives with its guides: [Underwater Acoustics](../../underwater/underwater-acoustics.md), [Underwater Propagation](../../underwater/underwater-propagation.md) and [Underwater Propagation Solvers](../../underwater/underwater-solvers.md). +The theory reference collects the derivations, clause references and design decisions for the areas whose mathematics is **shared across many guides**. A theory page maps an implemented method back to the clause, equation and table of the standard or textbook it comes from, states the physics behind each correction term and the assumptions that bound it, and gives the reference values the validation suite checks against. It does not show workflows: that is what the guides are for. + +Several areas keep their theory **inside their guides** instead, because the derivation and the single method it serves would otherwise be separated for nothing: the underwater modules ([Underwater Acoustics](../../underwater/underwater-acoustics.md), [Underwater Propagation](../../underwater/underwater-propagation.md), [Underwater Propagation Solvers](../../underwater/underwater-solvers.md) and [Marine-Mammal Noise Exposure](../../underwater/marine-mammal-exposure.md)), the aircraft certification and contour methods ([Aircraft noise](../../aircraft/index.md)), the CNOSSOS-EU road and railway emission models ([Environment and transport](../../environment/index.md)), the IEC 60268 electroacoustic measurements, the BS.1770 broadcast chain and the noise-control models ([Sources and devices](../../devices/index.md)), and the FDTD and elastic solvers ([Wave simulation](../../simulation/index.md)). Everything below is listed with the sections each domain page hosts. ## [Signal Analysis](signal-analysis.md) @@ -49,3 +51,5 @@ The theory reference explains the standards, the mathematics and the design deci ## [Vibration](vibration.md) - [Human vibration (ISO 8041-1, ISO 2631-1/2, ISO 5349-1/2, Directive 2002/44/EC)](vibration.md#human-vibration-iso-8041-1-iso-2631-12-iso-5349-12-directive-200244ec) +- [Multiple shocks (ISO 2631-5)](vibration.md#multiple-shocks-iso-2631-5) +- [Point mobilities and radiation efficiency (Cremer 5, Hopkins 2.9)](vibration.md#point-mobilities-and-radiation-efficiency-cremer-5-hopkins-29) diff --git a/docs/signals/filters/index.md b/docs/signals/filters/index.md index ab42a65ba..e266830f7 100644 --- a/docs/signals/filters/index.md +++ b/docs/signals/filters/index.md @@ -57,3 +57,21 @@ parameters) consumes the band signals or band levels these pages produce. workflows with carried filter state. - [Multichannel and Performance](multichannel.md): vectorized multichannel analysis and performance notes. + +## What this section does not cover + +`verify_filter_class` checks a designed digital response against Table 1 of +IEC 61260-1. The standard's conformance tests for the physical filter — overload +recovery, linearity, the environmental influence quantities — apply to an +instrument and are not implemented, so a class verdict here is a statement about +the design and not about a device. Near Nyquist the bilinear transform warps +the frequency axis and the bank carries no correction for it, unlike the +`high_accuracy` option of the weighting filters: the stopband beyond the +processing Nyquist is reported as `range_limited` rather than verified, so keep +the top band edge comfortably below Nyquist or raise `fs`. Two operations do +not stream: zero-phase forward-backward filtering needs the whole signal, and +rank statistics such as L90 have to be computed once on the pooled +envelope. And the per-channel path never mixes channels — delay between two +microphones, or how much of one channel a second explains, is +[Correlation and delay](../spectra/correlation-delay.md) and +[Multiple and partial coherence](../spectra/miso-coherence.md). diff --git a/docs/signals/index.md b/docs/signals/index.md index ff592f017..6d7f35b8e 100644 --- a/docs/signals/index.md +++ b/docs/signals/index.md @@ -11,9 +11,6 @@ in effect, a sound level meter decomposed into composable functions, and every other section of the documentation builds on it: a loudness model consumes calibrated band levels, a room parameter starts from a filtered impulse response, an environmental rating is an adjusted Leq. -[Build a sound level meter](sound-level-meter.md) assembles -that chain end to end on a single runnable page; it is the best starting point -if you want to see the whole area at work before opening the deep guides. Around the level chain sit the general signal-analysis tools: **calibrated spectral estimates** (Welch PSD and cross-spectral density with @@ -25,13 +22,40 @@ calibrator tone (dB SPL), or stay in digital full scale (dBFS). **Measurement un supplement) qualifies any result computed from uncertain inputs, which is what makes a number defensible in a report. -If you are new to the library, read -[Filter Banks](filters/filter-banks.md) first: it introduces the band -decomposition every other page assumes. Then -[Integrated and Statistical Levels](levels/levels.md) shows the -metrics most measurements end in, and -[Calibration and dBFS](metrology/calibration.md) anchors them to -physical units. +Three conventions run through every page below, and every snippet on the site +assumes them. A signal is a NumPy array of sound pressure with **time on the +last axis**, so one channel is `(n,)` and several parallel channels are +`(channels, samples)`. The sample rate always travels as an explicit `fs` +argument: nothing is read from a file header, because the library never opens +the file. And the array is expected to hold **pascals**, which is why a level +function applied to raw soundcard samples returns a number whose reference is +arbitrary, and why every level function also accepts a `calibration_factor` in +pascals per digital unit or the `dbfs=True` escape hatch. Simple metrics come +back as floats and arrays; the richer ones come back as frozen result objects +that expose `.plot()`. [Calibration and +dBFS](metrology/calibration.md) resolves the third convention +in full, and [Multichannel and +Performance](filters/multichannel.md) the first. + +Two ways in. To see the whole chain working at once, run [Build a sound level +meter](sound-level-meter.md): it calibrates against a +calibrator tone, applies the frequency and time weightings, integrates into +Leq, SEL and percentile levels, splits the signal into octave bands and checks +the class of every stage, on one runnable page. To learn the pieces in +dependency order, start at [Filter +Banks](filters/filter-banks.md), which introduces the band +decomposition every other page assumes, then [Integrated and Statistical +Levels](levels/levels.md) for the metrics most measurements +end in, and [Calibration and dBFS](metrology/calibration.md) +to anchor them to pascals. + +## [Build a sound level meter](sound-level-meter.md) + +- [Build a sound level meter](sound-level-meter.md): the whole + chain assembled on one runnable page — calibration, frequency and time + weighting, the integrated and statistical levels, the band decomposition and + the class verdict of each stage — as the worked introduction to the four + subsections below. ## [Octave filtering](filters/index.md) @@ -104,8 +128,9 @@ and carrying its statistical quality. the comb filter that describes it in the frequency domain, the square-root noise-reduction law, and the choice of the number of averages that places a comb node on an interfering order (McFadden 1987). -- [Machine fault frequencies](../vibration/machinery/machine-diagnostics.md): - the kinematic fault-frequency families of rotating machinery (Norton & +- [Machine fault frequencies](../vibration/machinery/machine-diagnostics.md) + (in the vibration section): the kinematic fault-frequency families of + rotating machinery (Norton & Karczub Section 8.4) drawn on top of a measured envelope spectrum: bearing BPFO, BPFI, BSF and cage frequencies, gear-mesh sidebands, induction-motor slip, pole-pass and rotor-slot harmonics, and blade-passing tones. @@ -135,3 +160,36 @@ What the numbers mean and how much to trust them. - [Data qualification](metrology/data-qualification.md): the reverse arrangement and runs stationarity tests on segment statistics, and the Rice level-crossing and peak statistics with the irregularity factor. + +## What this section does not cover + +Four things a reader reasonably expects here are absent, and each guide says so +in its own "Not covered" block. **No instrument is verified.** +`verify_filter_class` and `verify_weighting_class` check a designed digital +response against the tolerance tables of IEC 61260-1 and IEC 61672-1; the +IEC 61672-3 pattern-evaluation tests a physical meter needs for type approval, +and the IEC 60942 conformance tests of the calibrator itself, are not run, so a +class verdict here describes the algorithm and not a built device. **No file is +opened.** Nothing in the library decodes WAV, FLAC or any other container: +every function takes an array you have already read, which is why `fs` is +always an argument. **No array processing.** Correlation and time delay model +one common path between exactly two sensors and report the single largest peak; +there is no multi-sensor TDOA solver, no beamformer and no source localisation. +**No perceptual features.** The cepstrum here is the plain linear-frequency +one, with no mel warping or MFCC variant, and loudness as a sensation belongs +to [Psychoacoustics](../perception/psychoacoustics/index.md), not to the +energy metrics of this section. + +## Before and after these pages + +The derivations behind these pages are in [Signal analysis +theory](../reference/theory/signal-analysis.md): the band grid, the weighting curves, +the time integration, the intensity approximation and the uncertainty +framework. If you have not run anything yet, [Getting +Started](../start/getting-started.md) installs the library and +calibrates a first analysis. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. diff --git a/docs/signals/levels/index.md b/docs/signals/levels/index.md index 85f4ec1b4..48e871ee6 100644 --- a/docs/signals/levels/index.md +++ b/docs/signals/levels/index.md @@ -71,3 +71,22 @@ Pages elsewhere on the site that this section leans on: - [Spanish Noise Regulation (RD 1367/2007)](../../environment/assessment/spanish-noise-regulation.md): the corrected level LKeq, the Kt/Kf/Ki corrections, the evaluation periods and noise phases, and the limit tables. + +## What this section does not cover + +These pages implement the signal processing of a sound level meter, not the +meter. The rest of IEC 61672-1 — level ranges, overload indication, the +self-generated noise floor, the directional response and the IEC 61672-3 +periodic tests — is not implemented anywhere in the library, so nothing here +assigns a class to a physical instrument; [Build a sound level +meter](../sound-level-meter.md) states exactly what a class +verdict from the library does and does not mean. Two curves come without a +verdict of any kind: ISO 7196 defines a single ±1 dB tolerance for G with no +class structure, and the withdrawn IEC 537 left no tolerance table behind for +D, so both curves filter a signal but neither reaches +`verify_weighting_class`, and they are pinned against their published tables in +the conformance report instead. The noise dose is the 1993 +first edition of IEC 61252 only, not the 2025 revision. And a dose is a +quantity, not a verdict: the exposure strategies, the sampling plan and the +limits that decide whether a worker is over-exposed are [Occupational exposure +(ISO 9612)](../../perception/hearing/occupational-exposure.md). diff --git a/docs/signals/metrology/index.md b/docs/signals/metrology/index.md index f1cc8a904..7260073aa 100644 --- a/docs/signals/metrology/index.md +++ b/docs/signals/metrology/index.md @@ -2,18 +2,19 @@ # Calibration and uncertainty -A level printed by software is not yet a measurement. Two things separate the -one from the other: knowing what the digital samples mean **physically**, and -knowing how much the result could reasonably be **wrong**. This section covers -both, and they apply transversally to every other page of the documentation. - -[Calibration and dBFS](calibration.md) handles the first. -phonometry works in two reference frames: physical **dB SPL**, established -either from a recorded calibrator tone (the IEC 60942 field ritual) or from a -known microphone sensitivity, and digital **dBFS**, levels relative to full -scale, appropriate when no physical reference exists or when characterising -the digital chain itself. The page explains how each mode is set up and, just -as important, which quantities are meaningful in which frame. +A level printed by software is not yet a measurement. Three things separate +the one from the other: knowing that the record deserves to be **averaged at +all**, knowing what the digital samples mean **physically**, and knowing how +much the result could reasonably be **wrong**. This section covers all three, +and they apply transversally to every other page of the documentation. + +[Calibration and dBFS](calibration.md) handles the +physical meaning. phonometry works in two reference frames: physical **dB +SPL**, established from a recorded calibrator tone (the IEC 60942 field +ritual), and digital **dBFS**, levels relative to full scale, appropriate when +no physical reference exists or when characterising the digital chain itself. +The page explains how each mode is set up and, just as important, which +quantities are meaningful in which frame. [Measurement uncertainty (GUM and Monte Carlo)](gum-uncertainty.md) handles the second, implementing the *Guide to the Expression of Uncertainty @@ -49,11 +50,29 @@ budgets that are specialisations of the GUM machinery described here. ## Pages in this section - [Calibration and dBFS](calibration.md): physical SPL - calibration from a calibrator tone or a known sensitivity, and the digital - full-scale mode. + calibration from a calibrator tone, the stability check it applies to that + recording, and the digital full-scale mode. - [Measurement uncertainty (GUM and Monte Carlo)](gum-uncertainty.md): the law of propagation of uncertainty and the Monte Carlo method, expanded uncertainty and coverage intervals. - [Data qualification](data-qualification.md): the reverse arrangement and runs stationarity tests on segment statistics, and the Rice level-crossing and peak statistics with the irregularity factor. + +## What this section does not cover + +Nothing here checks an instrument or a calibrator. The IEC 60942 conformance +tests of the calibrator itself — generated level, frequency, distortion, and +the corrections for static pressure and temperature — are not implemented, so +pass an already corrected `target_spl` when the manual asks for one, and the +IEC 61672-3 periodic tests are cited as laboratory practice rather than run. +The dBFS half of the calibration page sits outside any standard and makes no +physical claim: it is a reference frame, not a measurement. Data qualification +implements the quantitative core of Bendat & Piersol's section 10.3 only — +classifying a record's type, validating it against physical limits and editing +out glitches remain manual steps, as the book describes them. And an +uncertainty budget is a model of *your* measurement: the library propagates +whatever you declare, and never invents the terms. Where a standard publishes +its own budget the guides say so, as ISO 9612 does for [occupational +exposure](../../perception/hearing/occupational-exposure.md) and ISO 12999-1 +for [sound insulation](../../buildings/insulation/index.md). diff --git a/docs/signals/spectra/index.md b/docs/signals/spectra/index.md index 86349076c..1e0459cba 100644 --- a/docs/signals/spectra/index.md +++ b/docs/signals/spectra/index.md @@ -11,8 +11,37 @@ same dB SPL / dBFS reference frames as the rest of the library) and carries its **statistical quality**, so a spectrum is not just a curve but a curve with a confidence interval. -[Calibrated spectral analysis](spectral-analysis.md) is the -frequency-domain half. The Welch power and cross-spectral density estimators +Eight pages sit under that discipline, in six families: the frequency-domain +estimators ([spectral +analysis](spectral-analysis.md), [multiple and +partial coherence](miso-coherence.md)), the +time-frequency middle ground +([spectrograms](time-frequency.md)), the +spectrum-shape methods +([cepstrum](cepstrum-echoes.md)), the period-domain +methods ([synchronous +averaging](synchronous-averaging.md)), the +time-domain estimators ([correlation and +delay](correlation-delay.md)), and the stimulus and +system toolbox ([test +signals](test-signals.md), [system +measurement](system-measurement.md)). + +They differ in what they estimate and share two decisions. The first is the +**segment length**. It fixes the resolution bandwidth of a PSD, the cell shape +of a spectrogram, the number of averages behind every confidence interval, the +longest delay a generalized cross-correlation can see and the degrees of +freedom a conditioned MISO estimate has left, so choosing it once and keeping +it is what makes a PSD, a coherence and a delay computed from the same record +mutually consistent. The second is **stationarity**. Every average on these +pages, and every error formula quoted beside it, assumes the process did not +drift while it was being recorded, which is exactly what the [data +qualification](../metrology/data-qualification.md) tests decide; +when a record fails them, the honest tools are the short-time views rather than +the averaged ones. + +[Calibrated spectral analysis](spectral-analysis.md) is where +the frequency-domain family starts. The Welch power and cross-spectral density estimators report their effective number of averages, normalized random errors and chi-square confidence intervals; the coherent output spectrum splits a measured output into the part explained by an input and the part that is @@ -45,7 +74,7 @@ root of the number of averages, and choosing that number to place a comb node on an interfering order rejects it far better than the habitual power of two. [Correlation, time delay and envelope](correlation-delay.md) -is the time-domain half. Auto- and cross-correlation come with the +is where its time-domain counterpart starts. Auto- and cross-correlation come with the Bendat & Piersol normalizations and random errors; time-delay estimation offers the direct correlator, the cross-spectrum phase slope and the Knapp & Carter generalized cross-correlation weightings (Roth, SCOT, PHAT, @@ -54,12 +83,16 @@ sub-sample precision; and the Hilbert transform yields the envelope with instantaneous phase and frequency. [Test signals and sample-rate tools](test-signals.md) is -the toolbox the other two lean on: tone bursts with the exact gating of -IEC 60268-1 (zero-crossing start, integral full periods, repetitive trains), -polyphase resampling behind an explicit anti-alias specification whose -designed filter travels with the result, and band-limited fractional delay -with a linear or circular boundary, sharing its kernel with the sub-sample -alignment of impulse responses. +the toolbox underneath the rest: tone bursts with the exact gating of +IEC 60268-1 (zero-crossing start, integral full periods, repetitive trains) +that exercise detector ballistics, polyphase resampling behind an explicit +anti-alias specification whose designed filter travels with the result and +which every cross-rate comparison needs, and band-limited fractional delay +with a linear or circular boundary, whose kernel is shared by the +impulse-response alignment of +[Correlation, time delay and envelope](correlation-delay.md) +and the non-integer period alignment of +[Time synchronous averaging](synchronous-averaging.md). [System measurement](system-measurement.md) turns the toolbox toward measuring systems themselves: complementary Golay pairs @@ -123,3 +156,22 @@ Pages elsewhere on the site that this section leans on: Karczub Section 8.4) drawn on top of a measured envelope spectrum: bearing BPFO, BPFI, BSF and cage frequencies, gear-mesh sidebands, induction-motor slip, pole-pass and rotor-slot harmonics, and blade-passing tones. + +## What this section does not cover + +These are Bendat & Piersol's textbook estimators, not a certification method: +no page here carries clause numbers or acceptance limits, and no result is a +compliance verdict. Three capabilities a reader looks for are genuinely absent. +**Multiple arrivals are not separated.** `time_delay` and `echo_detection` +report the single largest peak, so a record with a direct path plus several +reflections needs manual peak-picking or repeated calls on narrowed bands. +**There is no multi-sensor geometry.** Delay estimation is pairwise; there is +no built-in TDOA solver, no beamformer and no source localisation, and a +multiple-output system needs one `miso_coherence` call per output. +**There are no perceptual features.** The cepstrum is the plain +linear-frequency one, with no mel warping and no MFCC variant. Two estimators +that share this section's Welch core are documented where they are used +instead: the transfer function and ordinary coherence on +[Electroacoustics](../../devices/electroacoustics/electroacoustics.md), and +the two-microphone intensity probe on [Sound +intensity](../../devices/emission/intensity.md). diff --git a/docs/simulation/index.md b/docs/simulation/index.md index 0dfbfd494..ea60c9b37 100644 --- a/docs/simulation/index.md +++ b/docs/simulation/index.md @@ -12,6 +12,14 @@ bit-identical outputs on the same platform), validated against analytic oracles, and double as a cross-check engine for the closed-form models of the other sections. +The 2D domain is a **cross-section**, and that has one consequence worth +settling before any number leaves the solver: a point in the plane is +physically an infinite line source, so amplitudes fall as the inverse square +root of distance, about 3 dB per doubling instead of 6. Interference and +diffraction patterns, arrival times and modal frequencies are faithful; +absolute levels and decay rates belong to that geometry and not to a 3D room. +A quantitative 3D claim needs a closed form or a 3D solver behind it. + The section splits along the media it simulates. The acoustic page explains the numerical method (the staggered leapfrog scheme and its Courant stability bound), the building blocks (sources, probes, obstacles and @@ -61,8 +69,34 @@ The elastic solver adds two: the bending packet entering an L-junction, on and the coincidence plate, on panel sound insulation. Both also appear on the elastic page below, where the solver that produced them is explained. +Several of those guides do more than illustrate: they run a **whole +standardised measurement inside the domain**. The impedance-tube guide performs +the ISO 10534-2 and ASTM E2611 reductions on a simulated tube and recovers the +sample's analytic absorption and transmission loss; the diffuser and +metadiffuser guides drive meshed panels with a plane wave and transform the near +field into a polar response; the panel-insulation and plate-junction guides +launch bending waves into a plate and watch coincidence and junction splitting +happen. In each case the solver is standing in for the laboratory, which is +what makes the closed-form comparison a real test rather than a demonstration. + +Setting up a run is a chain, and each link fixes the next. The highest frequency +you need and the **slowest** sound speed anywhere in the domain fix the cell +size, through the cells-per-wavelength rule that numerical dispersion sets. The +cell size and the **fastest** speed then fix the time step, through the Courant +stability bound. The domain has to hold the geometry plus clearance for the +absorbing layers, which are themselves sized by the **lowest** frequency. The +run must last long enough for the field to cross the domain, and for a +steady-state answer long enough for the transient to leave before the analysis +window opens. The cost is cells times steps, so halving the cell size costs +eight times more in 2D — a factor of four in cells and a factor of two in steps. +The acoustic page gives the numbers for each link, and the elastic page adds the +extra sampling that free surfaces and interface waves demand. + ## Pages in this section +Read the acoustic page first: the elastic page assumes its vocabulary and says +so in its own opening. + - [2D FDTD wave simulation](fdtd-simulation.md): the staggered-grid pressure-velocity FDTD method following Attenborough & Van Renterghem (2021) chapter 4, its sources, probes, obstacles and boundary @@ -73,3 +107,39 @@ elastic page below, where the solver that produced them is explained. grid, with stress-imaging free surfaces, Rayleigh waves, mode conversion, Scholte interface waves and immersed-plate transmission, each validated against its exact closed form. + +## What this section does not cover + +**Two dimensions, and no way around it.** Everything a 2D cross-section cannot +say about a 3D room, neither solver says, and the cylindrical spreading above is +only the most visible consequence. The open boundary is a quadratic-ramp +absorbing layer — the simple precursor of a perfectly matched layer, not a PML — +so grazing incidence is absorbed less cleanly than normal incidence, and the +elastic solver has no elastic PML at all, which shows most on grazing Rayleigh +waves. The medium is non-moving: **wind and flow advection are not modelled**, +so a refraction study here comes from a height-dependent sound-speed profile and +not from a flow field. The only impedance boundary is a frequency-independent +real one, so a porous absorber has to be meshed rather than declared. On the +elastic side the solid is isotropic and purely elastic: no anisotropy, and no +viscoelastic damping beyond the bulk decay rate, so a material loss factor +cannot be entered. + +And nothing here is a room-acoustics package. There is no geometry importer, no +material library, no ray tracer, no auralisation and no 3D solver: obstacles are +rasterised onto the grid from shapes you define, and the output is a field you +analyse yourself. + +## Before and after these pages + +The fields these solvers produce are read back with the same tools as a +measurement: the filtering, weighting and level functions of [Signal +analysis](../signals/index.md), with [Build a sound level +meter](../signals/sound-level-meter.md) running that chain end to end on +one runnable page. There is no theory-reference page for the solvers; the +derivations, the stability conditions and the analytic oracles stay inside the +two guides above. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. diff --git a/docs/start/index.md b/docs/start/index.md index b2e27835b..97f79db39 100644 --- a/docs/start/index.md +++ b/docs/start/index.md @@ -2,18 +2,33 @@ # Start -Four short pages, meant to be read once before anything else. Each answers one +phonometry computes acoustic quantities from the text of the standards that +define them — ISO, IEC, ANSI and ASTM, the CNOSSOS-EU annex to Directive +2002/49/EC, and the ICAO and ECAC aircraft documents — and every metric names +the clause it implements. What that buys you, and how it is checked, is +[Why phonometry](why-phonometry.md). + +Five short pages, meant to be read once before anything else. Each answers one question, and they are in the order the questions arrive. **Can I install it and get a number out?** -[Getting Started](getting-started.md) installs the library and -runs a first one-third-octave analysis, on a synthetic signal and then on a WAV -file, and states what a recording must satisfy before those numbers mean -anything physical. It stops short of a calibrated measurement on purpose: -[Calibration and dBFS](../signals/metrology/calibration.md) is the next -step, the one that turns band levels into pascals, and -[Build a sound level meter](../signals/sound-level-meter.md) runs the -whole chain end to end. +[Getting Started](getting-started.md) installs the library, +runs a first one-third-octave analysis on a synthetic signal, then anchors that +analysis to a calibrator tone so the levels are decibels re 20 µPa rather than +decibels re nothing, reduces them to one A-weighted level, and states what a +recording must satisfy for any of it to hold. It stops one stage short of a +meter: the Fast and Slow ballistics, $L_{AE}$, $L_{Cpeak}$ and the percentile +levels are in [Build a sound level +meter](../signals/sound-level-meter.md), which runs the whole chain end +to end on one page, and [Calibration and +dBFS](../signals/metrology/calibration.md) is the deep guide behind the +one step that matters most. + +**I have a job, not a subject. Which page is it?** +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes the library by +the task instead of the topic: measure a reverberation time, check a wall +against a building code, rate a machine's sound power, decide whether a worker +is over the exposure limit. **Where is the thing I came for?** [All guides](https://jmrplens.github.io/phonometry/start/guides/) is the map: every guide in the library, @@ -28,8 +43,52 @@ tone-burst check worked through against the acceptance limits. [About](https://jmrplens.github.io/phonometry/start/about/) states who maintains it, how to cite it and under what licence. +## Two things to settle before any guide works + +**Which reference frame a level is in.** A level is either *physical*, in +dB SPL, anchored by a recorded calibrator tone or by a known microphone +sensitivity, or *digital*, in dBFS relative to full scale. The two are not +interchangeable, and most guides assume the first: a level function handed raw +soundcard samples returns a number whose reference is arbitrary, which looks +exactly like a valid answer. [Calibration and +dBFS](../signals/metrology/calibration.md) settles it. + +**That almost everything downstream consumes bands.** Below the raw signal +there is one decomposition: fractional-octave bands whose −3 dB edges sit on +the ANSI S1.11 / IEC 61260-1 nominal frequencies. A loudness model, a room +parameter and an environmental rating all start from it, which is why the +band-filtering page is the one prerequisite that turns up everywhere: [Filter +Banks](../signals/filters/filter-banks.md). + +## What a guide looks like + +Worth knowing before opening one, because it is what lets you decide in thirty +seconds whether a page answers your question. Every guide opens with the +standard it implements, the quantities that standard defines and the +assumptions the implementation makes; then comes runnable code and the figure +it draws; and it closes with a "What this guide covers" block that states +plainly which clauses, annexes and methods are implemented and which are not. +The last of those is the part a reviewer asks about, and it is deliberately the +part written most bluntly. + +## If you already know what you need + +- A first measurement carried end to end: [Build a sound level meter](../signals/sound-level-meter.md). +- The whole inventory, by topic: [All guides](https://jmrplens.github.io/phonometry/start/guides/). +- A symbol you have but cannot name: the [glossary](../reference/glossary.md), with its unit, its defining clause and the guide that computes it. +- Evidence that a number is defensible: the [conformance report](https://jmrplens.github.io/phonometry/reference/conformance/), which prints each standard's own expected value beside the computed one. +- A printed expected value that disagrees with the library: the [errata registry](https://jmrplens.github.io/phonometry/reference/errata/), which says which of the two is wrong and why. + The assumed starting point is Python 3.13 or newer with working NumPy and SciPy, and enough acoustics to know what a one-third-octave band and a sound -pressure level are. Any symbol the guides use without introducing is in the -[glossary](https://jmrplens.github.io/phonometry/reference/glossary/), with its unit, its defining clause -and the guide that computes it. +pressure level are. + +## What Start is not + +This is not a tutorial series, and it is not the API. Function signatures and +argument types are in the generated API reference. The derivations, the +numerical conformance report, the errata register for defects found in the +published standards themselves, the glossary of symbols and the bibliography +are all in [Reference](https://jmrplens.github.io/phonometry/reference/). And the acoustics itself is +assumed rather than taught: the guides explain the method a standard +prescribes and why it is written that way, not what a decibel is. diff --git a/docs/underwater/index.md b/docs/underwater/index.md index 14df5fc3f..5ad001fcc 100644 --- a/docs/underwater/index.md +++ b/docs/underwater/index.md @@ -9,7 +9,20 @@ depth-dependent sound speed, refracts sound into channels that carry it for kilometres. This section covers the discipline along the source-path-receiver chain of the rest of the library. -The **source** half, in +That reference difference is the commonest trap for a reader arriving from +airborne acoustics, and it is worth settling before anything else. The same +pressure expressed re 1 µPa is **26 dB larger** than expressed re 20 µPa, which +is arithmetic. On top of that, the same pressure in water carries far less +intensity than in air, because sea water's characteristic impedance is some +3 700 times that of air. An underwater 120 dB and an airborne 120 dB therefore +describe entirely different physical situations, and the two must never be +compared. The rule this section follows is simple: every level carries its +reference explicitly, a conversion between the two conventions is pure +re-referencing and never an energy equivalence, and the only place the airborne +reference appears here at all is for the two in-air carnivore hearing groups on +the exposure page. + +The **source** stage, in [Underwater acoustics: radiated noise and pile driving](underwater-acoustics.md), sets up the ISO 18405 terminology (SPL, SEL and peak levels and their references) and applies it to two regulated measurement cases: ships, with @@ -18,7 +31,7 @@ level of ISO 17208-2 via the Lloyd's-mirror surface correction, and percussive pile driving, with the single-strike, peak and cumulative sound exposure of ISO 18406. -The **path** half now spans two pages. +The **path** stage spans two pages. [Underwater sound propagation](underwater-propagation.md) predicts what the sea does to that sound in closed form: geometrical spreading plus volume absorption (Francois-Garrison, Ainslie-McColm or @@ -32,7 +45,7 @@ computes the field instead: the normal-mode expansion, ray tracing and the split-step Fourier parabolic equation, with the guidance for choosing between them and the closed forms. -A **receiver** half closes the loop. +A **receiver** stage closes the loop. [Marine-mammal noise exposure](marine-mammal-exposure.md) takes the level a source and a path produce and asks what it does to the animals that hear it: the group audiograms of Southall et al., the regulatory @@ -61,3 +74,51 @@ lives inline with the guides rather than in the theory reference. group audiograms, the regulatory auditory weighting functions with the guidance version selectable, the TTS and injury onset criteria, and a worked pile-driving assessment. + +## What this section does not cover + +**The measurement discipline is not implemented, only its arithmetic.** ISO +17208-1's four-run, three-hydrophone averaging, its closest-point-of-approach +and water-depth geometry checks, its ±30° data-window scoring and its +background-noise correction are the operator's; the library supplies the +closed-form radiated-noise and monopole source levels that follow. ISO 18406 +itself excludes vibro- and sheet-piling from its scope, so continuous +pile-driving noise has no closed form here or anywhere in the library. + +**The seabed is thin.** The closed-form page models it as a lossless +fluid-fluid Rayleigh reflection, so sediment attenuation is out of scope, and +all three solvers assume a **range-independent** water column with no absorbing +or elastic bottom and no real bathymetry — which rules out range-dependent +problems entirely. The ray solver returns paths and travel times but not +amplitudes (no ray-tube intensity, no caustic correction), and the parabolic +equation is the standard small-angle Tappert form rather than a wide-angle Padé +variant. For the elastic seabed physics these fluid solvers leave out, the +[elastic wave solver](../simulation/elastic-waves.md) is the nearest +thing the library has. + +**The exposure page rates hearing, not behaviour.** Only the auditory-effect +criteria are implemented; behavioural-disturbance thresholds, the ones a +harassment take estimate turns on, are out of scope. Nothing chooses a hearing +group or an accumulation period for you, and nothing models the animal moving +relative to the source, so the cumulative exposure reported is the +stationary-receiver worst case. There is no audiogram for low-frequency +cetaceans, because the source publication does not print one of its parameters. + +Two smaller boundaries: the ambient-noise spectrum leaves out the low-frequency +turbulence band and has no built-in distant-shipping model — supply a shipping +spectrum yourself — and the active sonar equation is monostatic only. + +## Before and after these pages + +Every level here is a level re 1 µPa computed from a hydrophone record, so the +calibration, weighting and spectral estimation behind it are in [Signal +analysis](../signals/index.md), and [Build a sound level +meter](../signals/sound-level-meter.md) runs that chain end to end on +one runnable page, in air but with the same functions. The underwater theory is +deliberately not in the theory reference: it lives inline with the four guides +above, where the quantity system of ISO 18405 is introduced with them. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. diff --git a/docs/vibration/human/index.md b/docs/vibration/human/index.md index 3bdc2e607..08e7b4eb3 100644 --- a/docs/vibration/human/index.md +++ b/docs/vibration/human/index.md @@ -13,7 +13,8 @@ of this section cover the general chain and the special case that breaks it. It covers the whole-body and hand-arm frequency weightings of **ISO 8041-1**, the weighted r.m.s. acceleration and the running and dose measures of **ISO 2631-1** (MTVV, VDV, MSDV, crest factor) that flag shocks a plain -r.m.s. would hide, vibration in buildings per ISO 2631-2, the hand-arm +r.m.s. would hide, the direction-independent `Wm` weighting that **ISO 2631-2** +prescribes for building occupants on every axis, the hand-arm vibration total value and daily exposure A(8) of **ISO 5349-1/-2**, and the exposure action and limit values of **Directive 2002/44/EC** that make A(8) legally meaningful. @@ -26,14 +27,16 @@ which load the lumbar spine far beyond what their energy average suggests. a dose from the response peaks, and converts it into compressive stress on the vertebral endplates and a probability of lumbar injury over a working life. -Use ISO 2631-1 metrics first; when the crest factor or the VDV warns that -shocks dominate, ISO 2631-5 is the dedicated follow-up: its clause 5 model, -implemented here, covers severe shocks with possible loss of contact with -the seat, while less severe exposures in which the occupant stays seated -belong to its Annex A finite-element model. The -measurement front-end (weighting filters, band analysis) is shared with the -[core signal analysis](../../signals/index.md) -section. +Use the ISO 2631-1 metrics first, and let two numbers decide when to move on. A +**crest factor above 9** says the basic weighted r.m.s. method is no longer +adequate for that record, which is the ISO 2631-1 trigger for reaching for the +running and dose measures. A **band-limited vertical peak acceleration above +9.81 m/s²** — 1 g, the free-fall threshold — puts the exposure in ISO 2631-5's +clause 5 regime, the severe shocks with possible loss of contact with the seat +that this library implements, rather than in its Annex A finite-element model +for exposures in which the occupant stays seated. The measurement front-end +(weighting filters, band analysis) is shared with the [core signal +analysis](../../signals/index.md) section. ## Pages in this section @@ -43,3 +46,27 @@ section. - [Multiple-shock whole-body vibration (ISO 2631-5)](multiple-shock-vibration.md): the spinal-response model, acceleration dose and probability of lumbar injury. + +## What this section does not cover + +**No meter is type-tested.** ISO 8041-1's own subject — the design and +type-testing of general-purpose human-vibration meters — is not implemented; +only its frequency-weighting definitions are taken from it, so nothing here +assigns a class to an instrument. + +**Building vibration stops at the weighting.** Of ISO 2631-2 the library +implements the direction-independent `Wm` curve and nothing else, and that is +closer to the standard than it looks: the 2003 edition deliberately deleted its +predecessor's guidance values, so there are no acceptable magnitudes for +building vibration to compare against. A reader looking for a limit will not +find one here, and will not find one in the standard either. + +**Of ISO 2631-5, the clause 5 model only.** The Annex A finite-element model +for less severe seated exposures is distributed separately by ISO and is not +implemented, which is what makes the 1 g delineation above a routing decision +rather than a preference. + +And no exposure verdict is issued. The action and limit values of Directive +2002/44/EC are stated so that an A(8) can be read against them, but the +library applies no national implementation of the directive, and a +risk-assessment conclusion is not a number this section produces. diff --git a/docs/vibration/index.md b/docs/vibration/index.md index e52ee2bfa..18f51cc9a 100644 --- a/docs/vibration/index.md +++ b/docs/vibration/index.md @@ -2,23 +2,28 @@ # Vibration and structure-borne sound -Vibration matters to acoustics twice. First as a **source of sound**: a pump -or fan bolted to a building injects structure-borne power that travels through -walls and floors and re-radiates as audible noise rooms away. Second as a -**human exposure** in its own right: vibration transmitted to a standing, -seated or hand-gripping person is measured, weighted and limited much like -noise, with its own metrics and legal action values. +Vibration matters to acoustics three times over. First as a **source of +sound**: a pump or fan bolted to a building injects structure-borne power that +travels through walls and floors and re-radiates as audible noise rooms away. +Second as a **human exposure** in its own right: vibration transmitted to a +standing, seated or hand-gripping person is measured, weighted and limited much +like noise, with its own metrics and legal action values. Third as a +**diagnosis of the machine itself**: the same spectrum that feeds the first two +questions also names the bearing, gear or blade that produced it, because every +periodicity in it belongs to something that turns, meshes or passes, at a +frequency fixed by the geometry. The **structure-borne sources** pages follow the source chain in order. The frequency-response-function family of ISO 7626 (receptance, mobility, -accelerance) is the vocabulary; the transfer stiffness of ISO 10846 -characterises the resilient elements that interrupt the path; ISO/TS 7849 -estimates the airborne power a vibrating surface radiates directly; EN 15657 -measures the structure-borne power a machine injects into a reception plate; -and EN 12354-5 assembles all of it into the sound pressure level predicted in -a receiving room. That final prediction is also where this section hands over -to the [sound insulation](../buildings/insulation/index.md) models -of the buildings section. +accelerance) is the vocabulary; the wave-approach transmission coefficients of +a plate junction describe the structure the power then runs through; the +transfer stiffness of ISO 10846 characterises the resilient elements that +interrupt that path; ISO/TS 7849 estimates the airborne power a vibrating +surface radiates directly; EN 15657 measures the structure-borne power a +machine injects into a reception plate; and EN 12354-5 assembles all of it into +the sound pressure level predicted in a receiving room. That final prediction +is also where this section hands over to the [sound +insulation](../buildings/insulation/index.md) models of the buildings section. The **human vibration** pages share the measurement philosophy of a sound level meter, applied to acceleration: frequency weightings that reflect body @@ -28,9 +33,11 @@ dedicated spinal-response model for vibration containing repeated shocks. Start with [Mechanical mobility and the FRF family](structural/mechanical-mobility.md) -if you care about machines and buildings, or with -[Human Vibration](human/human-vibration.md) if you care about -people. +if you care about the noise a machine causes in a building, with +[Human Vibration](human/human-vibration.md) if you care +about the dose a person receives, or with [Machine fault +frequencies](machinery/machine-diagnostics.md) if you care +about the condition of the machine itself. ## [Structure-borne sources](structural/index.md) @@ -73,3 +80,49 @@ Turning a vibration spectrum into a diagnosis of the machine that made it. - [Machine fault frequencies](machinery/machine-diagnostics.md): the characteristic bearing, gear and shaft frequencies, and the envelope analysis that finds them under the broadband noise of a running machine. + +## What this section does not cover + +**No instrument is type-tested.** ISO 8041-1's own subject, the design and +type-testing of human-vibration meters, is not implemented: only its frequency +weightings are taken from it, so a class verdict for a hand-held meter is not +something this library can give. + +**No severity verdict is issued for a machine.** The machinery pages predict +*where* a line would be, never whether it is present or whether the machine is +in trouble: the amplitude criteria that turn a present line into an assessment +— crest-factor and kurtosis trending, and the velocity severity bands of +ISO 10816 / ISO 20816 — are outside the library, as are rotor balancing +(ISO 21940) and order tracking. + +**Nor is one issued for a building.** The 2003 edition of ISO 2631-2 deleted +its predecessor's guidance values on purpose, so there are no acceptable +magnitudes for building vibration to compare against; what the library gives is +the weighted magnitude, and the judgement stays with the assessor and the +national code. + +Two structural predictions are idealisations rather than measurements. The +junction transmission coefficients are a closed-form result for a rigid, simply +supported junction — the *measured* vibration reduction index of ISO 10848 is +[Laboratory flanking transmission](../buildings/insulation/flanking-lab.md) +— and the FRF page returns element-wise free reciprocals, correct for a +driving-point or single-path use but not a full FRF matrix, with no +impact-hammer processing (ISO 7626-5) and no blocked matrix quantities. On the +isolator page, parts 4 and 5 of ISO 10846 are not implemented, and two of the +standard's validity checks (the blocking-mass inequality and the clause 7.6 +linearity criterion) are described but not computed for you. + +## Before and after these pages + +Every quantity here starts from an acceleration record and a spectral estimate, +so the filtering, the weighting curves and the spectral estimators behind them +are in [Signal analysis](../signals/index.md), and [Spectral +analysis](../signals/spectra/spectral-analysis.md) is the page the +machinery diagnostics build on. The derivations are in [Vibration +theory](../reference/theory/vibration.md): the human-vibration weightings, the ISO 2631-5 +shock model and the point mobilities and radiation efficiency. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. diff --git a/docs/vibration/machinery/index.md b/docs/vibration/machinery/index.md index 5b620238a..213d8d0cb 100644 --- a/docs/vibration/machinery/index.md +++ b/docs/vibration/machinery/index.md @@ -2,11 +2,71 @@ # Machinery -A rotating machine writes its own state into its vibration spectrum. Each -defect has a frequency that follows from the geometry, and finding one under -the broadband noise of a running machine is a signal-processing problem with a -standard answer. +A rotating machine has a **kinematic signature**. Every periodicity in its +vibration belongs to something that turns, meshes or passes, and the geometry +fixes the frequency before any measurement is made: a bearing with fifteen +elements running at a given shaft speed has an outer-race pass frequency that +can be written down, not searched for. Three families cover most machines. For a +**rolling-contact bearing**, the outer-race and inner-race element-pass +frequencies, the cage rate and the rolling-element spin rate, all scaling with +the shaft speed and set by the element and pitch diameters and the contact +angle; their sum is exactly the element count times the shaft rate, which +catches a mistyped geometry instantly. For a **gear pair**, the mesh frequency +and the sideband families that separate a chipped tooth from an eccentric +wheel. For **motors and bladed rotors**, the supply, slip, pole-pass and +rotor-slot lines of an induction motor and the blade-passing tones of fans, +blowers and pumps, with the lobed interaction patterns of a ducted axial fan. + +The standard answer to finding one of those lines under the broadband noise of +a running machine is **envelope analysis**, and it is three steps in three +places. Band-pass the record around the high-frequency housing resonance that +the impacts ring, take the envelope spectrum so the repetition rate of the +impacts becomes a discrete line — that step is [Cepstrum, echoes and the +envelope spectrum](../../signals/spectra/cepstrum-echoes.md), one section +away — and overlay the kinematic families, coloured by origin, so a shaft +harmonic can never be misread as bearing evidence. When two shafts have to be +separated before their sidebands can be read, [Time synchronous +averaging](../../signals/spectra/synchronous-averaging.md) does it first. [Machine fault frequencies](machine-diagnostics.md) -computes the bearing, gear and shaft frequencies from the geometry and runs the -envelope analysis that brings a bearing defect out of the noise floor. +computes the families and draws them on a measured envelope spectrum. + +## Pages in this section + +- [Machine fault frequencies](machine-diagnostics.md): + the rolling-contact bearing frequencies, the gear-mesh frequency and its + sidebands, the induction-motor supply, slip, pole-pass and rotor-slot + harmonics, and the blade-passing tones of fans, blowers and pumps, all from + the geometry and the shaft speed (Norton & Karczub, Section 8.4). + +## See also + +Pages elsewhere on the site that this section leans on: + +- [Cepstrum, echoes and the envelope spectrum](../../signals/spectra/cepstrum-echoes.md): + the envelope spectrum this section's workflow depends on, and the cepstrum + that reads periodic ripple in the spectrum itself. +- [Time synchronous averaging](../../signals/spectra/synchronous-averaging.md): + extracting one shaft's contribution before its sidebands are read. +- [Mechanical mobility and the FRF family (ISO 7626-1)](../structural/mechanical-mobility.md): + the frequency-response vocabulary behind the housing resonance the envelope + method rings. +- [Bending-wave transmission at plate junctions](../structural/junction-transmission.md): + where the machine's vibration goes once it has left the machine. + +## What this section does not cover + +These are **predictions, not detections**. Nothing here decides whether a line +is present, only where it would be if it were: the overlay is a set of +expectations to read a measured spectrum against, and the reading is yours. A +loaded bearing slips a little, so expect the measured peak within a per cent or +two of the prediction rather than exactly on it. + +Nor is there a severity verdict. The amplitude criteria that turn a present +line into an assessment — crest-factor and kurtosis trending, and the velocity +severity bands of ISO 10816 / ISO 20816 — are outside this module, and rotor +balancing (ISO 21940) and order tracking are absent from the library +altogether. One published convention differs between sources and is flagged on +the guide rather than hidden: the pole-pass frequency is standard +condition-monitoring practice rather than Norton's, who gives the slip frequency +itself as the broken-bar sideband spacing. diff --git a/docs/vibration/structural/index.md b/docs/vibration/structural/index.md index 9c5d6f106..933c68dfa 100644 --- a/docs/vibration/structural/index.md +++ b/docs/vibration/structural/index.md @@ -4,9 +4,10 @@ A machine fixed to a building radiates sound twice: directly from its own vibrating surface, and indirectly by injecting **structure-borne power** into -the structure, which carries it away and re-radiates it in distant rooms. The -six pages of this section cover both paths: one estimates the direct -radiation from the surface vibration itself, and the other five characterise +the structure, which carries it away and re-radiates it in distant rooms. Six +pages cover both paths, three of them here and three elsewhere on the site: one +estimates the direct radiation from the surface vibration itself, and the other +five characterise the second, sneakier structure-borne path end to end, from describing the vibration and characterising the isolators to quantifying the power and predicting the level a listener finally hears. @@ -65,3 +66,27 @@ Pages elsewhere on the site that this section leans on: the reception-plate method and plate-independent source quantities. - [Installed structure-borne sound (EN 12354-5)](../../buildings/design/installed-structure-borne.md): the predicted receiving-room level from installed equipment. + +## What this section does not cover + +The junction coefficients are a **closed-form idealisation** for a rigid, +simply supported junction between homogeneous plates, not a measurement: the +empirical vibration reduction index obtained from a direction-averaged velocity +level difference is ISO 10848, in [Laboratory flanking +transmission](../../buildings/insulation/flanking-lab.md). The +straight-section coefficient is undefined for the T and L geometries, which +have no collinear third plate, so only the corner path applies there. + +The FRF page implements ISO 7626-1 and the ISO 7626-2 acceptance criteria for +an attached exciter; **impact-hammer excitation (ISO 7626-5) is named for +context only**, with nothing that synthesises or processes an impact spectrum, +and the conversions return element-wise *free* reciprocals — correct for a +driving-point or single-path use, not for a full FRF matrix, whose blocked +matrix quantities are not built. + +On the isolator page, parts 4 and 5 of ISO 10846 are not implemented, and two +of the standard's own validity checks are described rather than computed: the +rigid blocking-mass inequality, and the clause 7.6 linearity criterion (two +input spectra 10 dB apart agreeing within 1.5 dB). Finally, nothing here +designs an isolator or a floating base: the pages characterise elements and +predict transmission, and the sizing decision stays yours. diff --git a/llms-full.txt b/llms-full.txt index 46491d33e..34d93b121 100644 --- a/llms-full.txt +++ b/llms-full.txt @@ -122,9 +122,9 @@ If you are an AI assistant setting this up for a user: install from PyPI (no sys - [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) - [Open-Plan Office Acoustics (ISO 3382-3)](https://jmrplens.github.io/phonometry/buildings/rooms/open-plan-acoustics/) - [Image sources and the steady-state room field (Kuttruff / Vorländer / Bies)](https://jmrplens.github.io/phonometry/buildings/rooms/room-image-sources/) +- [Room-noise criteria (NC / RC Mark II)](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/) - [Reverberation-time prediction (Sabine · Eyring · Fitzroy · Arau-Puchades)](https://jmrplens.github.io/phonometry/buildings/rooms/reverberation-prediction/) - [Sound absorption in enclosed spaces (EN 12354-6)](https://jmrplens.github.io/phonometry/buildings/rooms/enclosed-space-absorption/) -- [Room-noise criteria (NC / RC Mark II)](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/) ### Sound insulation @@ -208,8 +208,8 @@ If you are an AI assistant setting this up for a user: install from PyPI (no sys ### Assessment and regulation - [Overview](https://jmrplens.github.io/phonometry/environment/assessment/) · [full text](https://jmrplens.github.io/phonometry/llms/llms-environment-assessment.txt) -- [Impulsive-sound prominence (NT ACOU 112)](https://jmrplens.github.io/phonometry/environment/assessment/impulsive-sound/) - [Environmental Levels (ISO 1996-1/-2)](https://jmrplens.github.io/phonometry/environment/assessment/environmental-levels/) +- [Impulsive-sound prominence (NT ACOU 112)](https://jmrplens.github.io/phonometry/environment/assessment/impulsive-sound/) - [Spanish Noise Regulation (RD 1367/2007)](https://jmrplens.github.io/phonometry/environment/assessment/spanish-noise-regulation/) ### Outdoor sound @@ -253,8 +253,8 @@ If you are an AI assistant setting this up for a user: install from PyPI (no sys - [Sound Power by Pressure Methods (ISO 3744 / ISO 3746 / ISO 3745)](https://jmrplens.github.io/phonometry/devices/emission/sound-power-pressure/) - [Sound Power in the Reverberation Room (ISO 3741)](https://jmrplens.github.io/phonometry/devices/emission/sound-power-reverberation/) - [Sound Power by Intensity Scanning (ISO 9614-2 / ISO 9614-3)](https://jmrplens.github.io/phonometry/devices/emission/sound-power-intensity/) -- [Sound Intensity (p-p method)](https://jmrplens.github.io/phonometry/devices/emission/intensity/) - [Sound power from surface vibration (ISO/TS 7849)](https://jmrplens.github.io/phonometry/devices/emission/vibration-sound-power/) +- [Sound Intensity (p-p method)](https://jmrplens.github.io/phonometry/devices/emission/intensity/) ### Electroacoustics @@ -272,10 +272,10 @@ If you are an AI assistant setting this up for a user: install from PyPI (no sys ### Noise control - [Overview](https://jmrplens.github.io/phonometry/devices/noise-control/) · [full text](https://jmrplens.github.io/phonometry/llms/llms-devices-noise-control.txt) -- [Silencers](https://jmrplens.github.io/phonometry/devices/noise-control/silencers/) -- [Industrial noise control: HVAC and enclosures](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/) - [Duct-borne noise: fan to room](https://jmrplens.github.io/phonometry/devices/noise-control/duct-path/) - [Room to room: partition, receiving room, criterion](https://jmrplens.github.io/phonometry/devices/noise-control/room-to-room/) +- [Silencers](https://jmrplens.github.io/phonometry/devices/noise-control/silencers/) +- [Industrial noise control: HVAC and enclosures](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/) ## Wave simulation @@ -289,6 +289,7 @@ The theory pages travel in the Start shard (https://jmrplens.github.io/phonometr - [API Reference](https://jmrplens.github.io/phonometry/reference/api/) - [Bibliography](https://jmrplens.github.io/phonometry/reference/bibliography/) +- [Glossary](https://jmrplens.github.io/phonometry/reference/glossary/) - [Theoretical Background](https://jmrplens.github.io/phonometry/reference/theory/) - [Theory: Environment and Transport](https://jmrplens.github.io/phonometry/reference/theory/environment-transport/) - [Theory: Materials and Surfaces](https://jmrplens.github.io/phonometry/reference/theory/materials-surfaces/) @@ -1311,10 +1312,7 @@ be read first if helicopters are what you came for. The three metrics are not interchangeable. EPNL is a *certification* metric of one aeroplane at one prescribed point; SEL and LASmax are *single-event* assessment metrics at an arbitrary receiver; neither is the long-term index a -land-use study is finally judged on. And the boundary: this section does not -compute cumulative multi-event indices, does not synthesise NPD tables from -engine data, does not model hover, idle or taxi rotorcraft operations, and does -not touch sonic boom. +land-use study is finally judged on. ## Pages in this section @@ -1330,6 +1328,47 @@ not touch sonic boom. noise-power-distance curves and default trajectories that run the Doc 29 chain for a real aircraft type. +## What this section does not cover + +**Single events only.** The Doc 29 chain builds single-event contours; it does +not assemble the cumulative multi-event indices — an Lden-style sum over a full +flight schedule — that a complete noise-contour study needs on top of them. That +last step is where a land-use decision is actually made, and it is not here. + +**No aircraft is modelled from first principles.** NPD tables and noise +hemispheres are *inputs*: the library interpolates the tables published for a +type and does not synthesise them from engine data, and the ANP database is read +and never written (version 2.3 ships as-is). Of the ANP entries, only those with +fixed-point profiles have a ready-to-use trajectory, because turning a +procedural-step departure into a flight path needs the ICAO Doc 9911 +flight-mechanics performance model, which is not implemented. + +**Three specific gaps.** Rotorcraft hover, idle and taxi operations are outside +the hemisphere source model, which assumes a flyover. The measurement-system +verifier checks IEC 61265:1995 and not the superseding 2018 edition. And sonic +boom is not touched anywhere in the library. + +Finally, the CNOSSOS-EU aircraft source of sections 2.6 and 2.7 is **not** +implemented: aircraft noise here is the ICAO and ECAC family, which is a +different set of models from the road and rail sources of [Environmental +sources](https://jmrplens.github.io/phonometry/environment/sources/), and the two must not be mixed inside +one strategic map without saying so. + +## Before and after these pages + +Every level on these pages is built from band levels, so the filtering, +weighting and calibration that produce them are in [Signal +analysis](https://jmrplens.github.io/phonometry/signals/), and [Build a sound level +meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) runs that chain end to end on +one runnable page. The derivations for aircraft noise are not in the theory +reference: they stay inside the guides above, beside the flight geometry that +motivates them. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. + --- @@ -2466,6 +2505,17 @@ laboratory element and junction data are converted to their in-situ values, every path is formed per band, and the result shows which path dominates each band rather than only whether the room passes. +**Which of the two do you run?** Run the simplified model when what you have is +catalogue weighted ratings — $R_w$, $\Delta L_w$, a mass per unit area — and the +question is whether the partition meets a limit. Run the detailed one when you +have per-band element and junction spectra, or the material properties the +standard can calculate them from, and the question is *which path to fix in +which band*. The choice is not about accuracy on the rating: on the standard's +own worked building the two agree well inside their stated spread, and the +detailed airborne model carries no bias error and a standard deviation of 1,5 dB +to 2,5 dB (Clause 5) against about 2 dB for the simplified one. What the +detailed model buys is the spectrum behind the single number. + [Predicting Panel Sound Insulation](https://jmrplens.github.io/phonometry/buildings/design/panel-sound-insulation/) goes one level deeper, to where the element $R$ itself comes from: the mass law and the coincidence dip of a single panel, the mass-spring-mass behaviour of a @@ -2510,6 +2560,19 @@ follow the 2000 text — including the tabulated flanking correction $K$ that th follows the 2017 text. Check which edition your regulation calls up before quoting a correction from either. +Every prediction here starts from measured data that came from somewhere else, +and the design report has to say where. The element $R$ and $L_n$ come from +ISO 10140-2 and -3, together with the laboratory structural reverberation time +printed in the same report, because the in-situ conversion needs it. The +junction indices $K_{ij}$ come from an ISO 10848 measurement or from the +EN 12354-1 Annex E catalogue of junction types. The floor-covering improvement +$\Delta L_w$ comes from ISO 16251-1 or from a full-size ISO 10140-3 test. The +resilient layer's $s'$ comes from EN 29052-1. And for service equipment, the +characteristic structure-borne power comes from the EN 15657 reception plate. +Two of the pages in this section are themselves such measurements, feeding the +others; the built result is finally checked against the ISO 16283 field +measurement in [Sound insulation](https://jmrplens.github.io/phonometry/buildings/insulation/). + ## Pages in this section - [Predicting Sound Insulation (EN 12354)](https://jmrplens.github.io/phonometry/buildings/design/insulation-prediction/): @@ -2545,6 +2608,34 @@ Pages elsewhere on the site that this section leans on: the load-plate resonance measurement, the enclosed-gas term and the floating-floor natural frequency. +## What this section does not cover + +**A prediction is only as good as the element data you feed it, and the library +takes that data as given.** The element ratings, the junction indices, the +covering improvement and the structure-to-airborne adjustment terms of +EN 12354-5 Annexes D and F are inputs you supply from measurement or from the +standards' own annexes; none of them is derived here. The simplified prediction +page stops at the weighted single numbers by design, and the detailed page is +where the per-band models live. + +Every panel model carries a validity range it does not extend past, and the +guides flag each: Sharp's single-panel method is not valid below about 1.5 +times the panel's first resonance, Gomperts' slit model holds only while the +slit is narrow against the wavelength, only Leppington's method no. 1 is +implemented for radiation efficiency, and the orthotropic routes are +infinite-panel models that miss the dip real ribbed cladding shows between 2 and +4 kHz. On the resilient-layer side, the tapping-machine force model assumes a +frequency-independent driving-point impedance, so a joisted or battened +lightweight floor is outside it; soft coverings are treated as linear springs; +there is no per-band prediction of a lining's improvement, because Annex D is a +single-number method; and heavy impact sources such as the rubber ball are not +covered by any of these models at all — their rating is +[Heavy and Soft Impact Sources](https://jmrplens.github.io/phonometry/buildings/insulation/heavy-impact-sources/). + +Two edition boundaries: only the 2009 edition of EN 12354-5 is implemented, not +the 2023 revision, and the simplified and detailed pages follow different +editions of the 12354 family, as the note above says. + --- @@ -4682,7 +4773,9 @@ and [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room- the first acquires and the parameters the second derives are the vocabulary the rest of the section speaks. If your interest is insulation, read [Field Insulation Measurement (ISO 16283)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-field/) -next; if it is design-stage prediction, go to +next, and note that impact sources other than the tapping machine have their own +page, since ISO 16283-2 is the clause a field engineer usually arrives with; if +it is design-stage prediction, go to [Reverberation-time prediction (Sabine, Eyring, Arau)](https://jmrplens.github.io/phonometry/buildings/rooms/reverberation-prediction/) and [Predicting Sound Insulation (EN 12354)](https://jmrplens.github.io/phonometry/buildings/design/insulation-prediction/). @@ -4723,6 +4816,9 @@ laboratory, and predicted from element data. the direct-power route to the same indices when flanking is high. - [Sound Insulation Survey Method (ISO 10052)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-survey/): the octave-band control method and its reverberation index. +- [Heavy and Soft Impact Sources (ISO 16283-2)](https://jmrplens.github.io/phonometry/buildings/insulation/heavy-impact-sources/): + the rubber ball and the bang machine, the impact force exposure level that + specifies them and the ISO 717-2 Annex D single number. - [Laboratory Flanking Transmission (ISO 10848)](https://jmrplens.github.io/phonometry/buildings/insulation/flanking-lab/): the measured junction vibration reduction index and the flanking descriptors. - [Insulation Ratings (ISO 717)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-ratings/): the @@ -4757,6 +4853,46 @@ and from the physics of the element itself. - [Dynamic stiffness of resilient materials (EN 29052-1)](https://jmrplens.github.io/phonometry/materials/resilient/dynamic-stiffness/): the load-plate resonance measurement behind every floating-floor prediction. +## What this section does not cover + +**The library starts after the microphone and stops before the geometry.** On +the measurement side, every function takes band levels already averaged over +positions and already corrected for background noise: the position counts, the +low-frequency procedures, the signal-to-background floors and the test-facility +qualifications of ISO 16283, ISO 10140 and ISO 3382 are the operator's job, and +nothing here checks that they were done. On the prediction side, the element +ratings, the junction indices and the covering improvements are inputs you +supply from measurement or from a standard's own annex; none is derived from a +drawing. + +**Nothing here is a wave solver or a room model.** There is no geometry +importer, no material database, no ray tracer and no auralisation: the room +pages take dimensions, absorption coefficients and impulse responses and give +back parameters, and the image-source model is specular only. An actual +low-frequency field in a real shape is [wave +simulation](https://jmrplens.github.io/phonometry/simulation/). + +**And a prediction is not a verdict.** The single-number ratings and the +national indices are computed here, but the limit values they are judged +against are national — the Spanish code is implemented as a worked example of +one such framework, not as the rule everywhere — and the requirement always +comes from your regulation. + +## Before and after these pages + +Every quantity on these pages starts from band levels or from a filtered +impulse response, so the calibration, weighting and fractional-octave +filtering behind them are in [Signal analysis](https://jmrplens.github.io/phonometry/signals/), and +[Build a sound level meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) runs that +chain end to end on one runnable page. The derivations sit in [Rooms and +buildings theory](https://jmrplens.github.io/phonometry/reference/theory/rooms-buildings/), from the Schroeder integration +to the EN 12354 path sums. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. + --- @@ -6139,6 +6275,37 @@ related EN 12354-5, lives in the DB-HR global indices RA, RA,tr, DnT,A and D2m,nT,Atr, the clause 2 requirements and the window-size correction. +## What this section does not cover + +**The library starts after the microphone.** Every function here takes band +levels that were already energy-averaged over positions and already corrected +for background noise, and nothing verifies how the measurement was made: not the +number and placement of source and microphone positions, not the low-frequency +procedures of ISO 16283-1/-2, not the 6 dB signal-to-background floor, and not +the test-facility and mounting requirements of ISO 10140-1. Those are the +operator's responsibility and the report's, and they are what makes the numbers +here mean something. Two consequences worth naming: the field and laboratory +background corrections are *different* rules, so a laboratory helper must not be +applied to field data; and the intensity route takes both the pressure and the +intensity level as inputs, with the scanning probe and its phase-mismatch +calibration outside the library. + +**Coverage inside the standards is partial in two places.** Of ISO 10848 only +the Part 1 formulae are implemented generically, plus the Part 4 modal-overlap +validity check, not the facility-specific setups of Parts 2, 3 and 4. Of the +Spanish code, only the verification indices are implemented: the simplified +option's solution tables of clause 3, the execution conditions of clause 5 and +the maintenance conditions of clause 6 are out of scope, and the general +option's calculation route is +[Predicting Sound Insulation](https://jmrplens.github.io/phonometry/buildings/design/insulation-prediction/). + +**And there is no heavy-impact prediction at all.** A floor construction can be +carried to a tapping-machine level by the models in [Insulation +design](https://jmrplens.github.io/phonometry/buildings/design/); nothing does the same for the rubber +ball, because the complexity of the input force and the use of a time-weighted +maximum leave no simple counterpart. The heavy-impact page rates a measurement, +and only a measurement. + --- @@ -8522,6 +8689,14 @@ measurement chain built on the first, the prediction chain built on the second, and the rating of the background noise that occupies the room in between. +One boundary runs through all of it: the **Schroeder frequency**. Above it a +room has so many overlapping modes that a statistical description is the honest +one, and every reverberation formula and decay parameter on these pages lives +there. Below it the modes are discrete and separable, and no statistical model +applies — which is why the measurement and prediction pages alike carry validity +caveats at their lowest bands. A reader chasing a low-frequency problem should +start from the modal treatment rather than from the decay parameters. + The measurement chain starts in [Measuring the Room Impulse Response](https://jmrplens.github.io/phonometry/buildings/rooms/room-impulse-response/): the deterministic excitation signals of ISO 18233, the sweep deconvolution @@ -8535,9 +8710,20 @@ intelligible across an open floor, through the spatial decay rate and the distraction and privacy distances. [Image sources and the steady-state room field](https://jmrplens.github.io/phonometry/buildings/rooms/room-image-sources/) approaches the same room deterministically, building its impulse response from -mirrored sources and its steady-state level from the room constant. +mirrored sources, its steady-state level from the room constant, and, below the +Schroeder frequency where both of those give out, the discrete normal modes of +the shoebox itself. + +Before the two prediction pages, one page answers a different question about the +same room. +[Room-noise criteria (NC / RC Mark II)](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/) +asks whether its steady background noise (ventilation, distant traffic) is +acceptable for its use, rated against the ANSI/ASA S12.2 criterion curves, with +the RC Mark II rumble/hiss tag diagnosing *why* a spectrum fails. -Prediction gets two pages because two traditions coexist. +Prediction gets two pages because two traditions coexist. Both are diffuse-field +statistical models fed by the same laboratory absorption coefficients, so they +are not rival physics; they differ in what they are admissible for. [Reverberation-time prediction (Sabine, Eyring, Arau)](https://jmrplens.github.io/phonometry/buildings/rooms/reverberation-prediction/) covers the classical statistical formulae (Sabine, Eyring, Millington-Sette, Fitzroy and Arau-Puchades), including the models that handle a non-uniform @@ -8548,11 +8734,19 @@ equivalent absorption area assembled from surfaces, objects and air, and the reverberation time that follows from it, as a standard a design report can cite. -[Room-noise criteria (NC / RC Mark II)](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/) -answers a different question about the same room: whether its steady -background noise (ventilation, distant traffic) is acceptable for its use, -rated against the ANSI/ASA S12.2 criterion curves, with the RC Mark II -rumble/hiss tag diagnosing *why* a spectrum fails. +**Which one?** Cite EN 12354-6 when the deliverable is a design report under a +European building-acoustics framework, when the room is an ordinary building +space inside the clause 4.6 validity limits, and when the receiving-room +absorption has to feed an EN 12354 insulation prediction. Use the classical +family when the room falls outside that scope — a hall, a theatre, an +industrial space, or a room whose absorption is concentrated on one axis so that +an axial model is needed — or when a *band* of predictions rather than a single +normative value is what the situation deserves. Both share one failure mode, the +loss of diffusivity, and they fail in the same direction: the measured +reverberation time comes out longer than predicted, by up to a factor of two in +the low-diffusivity rooms the standard's own accuracy clause records. And +neither replaces a measurement — the measured counterpart is +[Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/). Related pages elsewhere: the absorption coefficient the prediction chain consumes is measured in @@ -8573,9 +8767,11 @@ speech intelligibility a room affords is quantified by the - [Open-Plan Office Acoustics (ISO 3382-3)](https://jmrplens.github.io/phonometry/buildings/rooms/open-plan-acoustics/): the spatial decay rate of speech and the distraction and privacy distances. - [Image sources and the steady-state room field](https://jmrplens.github.io/phonometry/buildings/rooms/room-image-sources/): - the deterministic image-source room impulse response (Kuttruff/Vorländer) and + the deterministic image-source room impulse response (Kuttruff/Vorländer), the statistical steady-state level with the room constant, critical distance - and Schroeder frequency (Bies). + and Schroeder frequency (Bies), and the rectangular-room normal modes with + their axial, tangential and oblique families, mode count and modal density + (Long). - [Room-noise criteria (NC / RC Mark II)](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/): the ANSI/ASA S12.2-2019 NC tangency and RC Mark II ratings. - [Reverberation-time prediction (Sabine, Eyring, Arau)](https://jmrplens.github.io/phonometry/buildings/rooms/reverberation-prediction/): @@ -8583,6 +8779,32 @@ speech intelligibility a room affords is quantified by the - [Sound absorption in enclosed spaces (EN 12354-6)](https://jmrplens.github.io/phonometry/buildings/rooms/enclosed-space-absorption/): the normative equivalent-absorption-area and reverberation-time prediction. +## What this section does not cover + +**Nothing here is a wave solver.** The image-source model is specular only: it +carries no diffraction, no scattering off a diffuser and no finite-impedance +boundary, and it stops when the reflection order runs out rather than when the +sound does. Below the Schroeder frequency, where the statistical models give +out, what this section offers is the mode *positions* of a rigid rectangular +box — not the field of a real room at low frequency. For that, the +[wave simulation](https://jmrplens.github.io/phonometry/simulation/) section runs an FDTD solver on the +actual geometry. + +**No auralisation, no ray tracer, no room model.** There is no geometry +importer, no material database and no renderer: the pages take dimensions, +coefficients and impulse responses as inputs, and give back parameters. The +absorption coefficients themselves come from +[Materials and surfaces](https://jmrplens.github.io/phonometry/materials/absorbers/), and the model errs +optimistically when the room is not diffuse — outside the EN 12354-6 clause 4.6 +limits (no dimension more than five times another, opposite surfaces within a +factor of three in absorption, object fraction below 0.2) the measured +reverberation time can reach twice the predicted one. + +Two coverage boundaries follow the standards. Only the normative clause 4 model +of EN 12354-6 is implemented, not its informative Annex D method for irregular +spaces. And nothing in this section measures insulation *between* rooms: that is +[Sound insulation](https://jmrplens.github.io/phonometry/buildings/insulation/). + --- @@ -10806,9 +11028,67 @@ Broadcasting solved the loudness problem with a measurement rather than a compressor: one number per programme, gated so that silence does not dilute it, and a range that says how much the programme moves. -[Programme loudness (EBU R 128)](https://jmrplens.github.io/phonometry/devices/broadcast/program-loudness/) -implements the ITU-R BS.1770 K-weighted chain with the EBU Tech 3341 gating and -the Tech 3342 loudness range, checked against the EBU's own test set. +The word *loudness* carries two meanings on this site, and they are not versions +of each other. Here it is an **energy measure**: a K-weighted mean square over +the whole programme, gated, reported in LUFS, designed so that two programmes +normalised to the same number feel equally loud on the same playback chain. In +[Psychoacoustics](https://jmrplens.github.io/phonometry/perception/psychoacoustics/loudness/) it is a +**perceptual magnitude in sones**, computed by an auditory model with masking +and compression. A broadcast deliverable is specified in LUFS; a product-noise +sensation is specified in sones. Reaching for the wrong one is the commonest +mistake in this area. + +The quantities are few. **Loudness** is reported in LUFS by the EBU and in LKFS +by the ITU — identical units — and **1 LU is 1 dB**, so a loudness difference +and a level difference are the same size. **EBU R 128** sets the delivery +target at **−23.0 LUFS** with a true-peak ceiling of **−1 dBTP**. The **loudness +range**, in LU, says how far the programme moves between its quiet and loud +passages, which is what decides whether it needs dynamic treatment before +normalisation. + +Four documents own four different things, and the section is easier to read once +that is clear. **ITU-R BS.1770** defines the algorithm: the K-weighting +pre-filter — a roughly +4 dB spherical-head shelf followed by the RLB high-pass +— the mean square in 400 ms blocks at 75 % overlap, the channel-weighted sum, +and the **two-stage gate** that makes the number usable on real programme (an +absolute gate at −70 LKFS drops digital silence, then a relative gate 10 LU +below the mean of the survivors drops the quiet passages that would otherwise +dilute a dialogue level). **EBU R 128** sets the target and the ceiling. +**EBU Tech 3341** defines the EBU Mode meter — the momentary, short-term and +integrated time scales, and the compliance test set. **EBU Tech 3342** defines +the loudness range. True peak is measured on an oversampled signal because an +inter-sample peak can exceed every sample value, so a file that reads −0.2 dBFS +can still clip a converter. + +## Pages in this section + +- [Programme loudness (EBU R 128)](https://jmrplens.github.io/phonometry/devices/broadcast/program-loudness/): + the ITU-R BS.1770 K-weighting, gated 400 ms blocks and channel-weighted sum, + the EBU R 128 target and ceiling, the Tech 3341 momentary, short-term and + integrated meters, the Tech 3342 loudness range, the Annex 2 oversampled true + peak and the Annex 3 channel weights for advanced sound systems — validated + against the EBU test signals and ending in an EBU R 128 report fiche. + +## See also + +Pages elsewhere on the site that this section leans on: + +- [Loudness](https://jmrplens.github.io/phonometry/perception/psychoacoustics/loudness/) (ISO 532-1): the + other loudness, the perceptual magnitude in sones, for when the question is + how loud something *sounds* rather than how a programme should be delivered. +- [Frequency Weighting (A, C, Z)](https://jmrplens.github.io/phonometry/signals/levels/weighting/): the + weighting family K-weighting sits beside, and does not belong to. + +## What this section does not cover + +BS.1770-5 **Annex 4, object-based audio, is out of scope**, and the library +implements no spatial renderer, so an object-based programme has to be rendered +to a loudspeaker layout before any of this applies. **EBU Tech 3343** is cited +as production practice around these numbers, not as an algorithm: nothing here +runs it. And loudness normalisation itself — the gain change, and any limiting +that follows it — is a production step this library does not perform: it +measures the programme and tells you the offset, and applying it is your +encoder's job. --- @@ -11626,7 +11906,29 @@ families have their own type-test pages: with the radiating-piston model behind a loudspeaker's directivity, and [Microphone Characterisation (IEC 60268-4)](https://jmrplens.github.io/phonometry/devices/electroacoustics/microphones/) with the polar patterns and the inherent-noise conventions, both ending in a -one-page accredited fiche. +one-page report laid out the way an accredited laboratory lays one out, with +the rated-characteristics table beside the response, polar and noise panels +drawn to the IEC 60263 scale conventions. What makes such a sheet a test report +rather than a design study is the measured input data and the declared +standard, and both of those you supply. The loudspeaker page then puts the +characterised device back in a room with an open microphone, where the question +stops being a datasheet number and becomes whether the loop is stable: Long's +gain-before-feedback criterion, the correction for the number of open +microphones and the 10 dB margin an equalised system is designed to are +computed there. If you are designing or diagnosing a sound-reinforcement system +rather than testing a loudspeaker, that is the section to go to. + +The three device pages divide by what is under test, and therefore by what the +bench looks like. An **amplifier** works into its rated load impedance from its +rated supply and source impedance, and IEC 60268-3's standard measuring +conditions (clause 3.1.3) then drop the source e.m.f. 10 dB below the rated +value, so a distortion figure is meaningless without saying which of the two it +was taken at. A **loudspeaker** is measured on its reference axis at a stated +distance in a free or half-space free field, with its mounting declared. A +**microphone** is measured against a calibrated reference. The two type-test +pages start from measured curves rather than telling you how to acquire them, +so the conditions under which those curves were taken travel with every number +in the resulting fiche and belong in it. [Swept-sine distortion and phase utilities](https://jmrplens.github.io/phonometry/devices/electroacoustics/swept-sine-distortion/) extends the bench with the one-sweep alternative: the Farina / Novak harmonic separation that turns a single exponential sweep into the full set @@ -11663,6 +11965,30 @@ are the place to start. harmonic separation and THD(f) from one exponential sweep (Farina / Novak synchronized swept-sine), and minimum phase, group delay and excess phase from a measured response. +- [Broadcast](https://jmrplens.github.io/phonometry/devices/broadcast/): the loudness problem solved + with a measurement rather than a compressor, one gated number per programme + and the range that says how much it moves. +- [Programme loudness and true peak](https://jmrplens.github.io/phonometry/devices/broadcast/program-loudness/): + the ITU-R BS.1770-5 programme loudness and true-peak level with the + EBU R 128 normalisation practice, EBU Mode metering and loudness range. + +## What this section does not cover + +The type-test pages **reduce and report** what a laboratory measured; they do +not acquire it. The free-field response, the polar cuts, the noise spectrum and +the distortion-against-level sweep come in as data, and no procedure here tells +you how to run the anechoic room or the substitution measurement that produced +them. Two implemented editions are pinned rather than current: the distortion +metrics follow AES17-2015 and not the 2020 revision, and the microphone report +follows IEC 60268-4:2014 and not the 2018 one. Thiele-Small parameter +extraction from an impedance curve is not implemented, and the electrical and +mechanical power-handling ratings of IEC 60268-5 clause 17 are stated by the +manufacturer rather than computed. The feedback criterion is level bookkeeping, +not an acoustic model: it consumes two direct-field levels you supply, does not +compute them from a coverage pattern, and predicts neither the ring frequency +nor the effect of an equaliser or frequency shifter. And IEC 60268-16, the +speech transmission index, is not part of this section at all — it is in +[Speech](https://jmrplens.github.io/phonometry/perception/speech/). --- @@ -12831,6 +13157,19 @@ for the direct and comparison methods of ISO 3741, and [Sound Power by Intensity Scanning](https://jmrplens.github.io/phonometry/devices/emission/sound-power-intensity/) for the on-site scanning of ISO 9614-2 and its ISO 9614-3 precision grade. +A fourth route does not measure sound at all. +[Sound power from surface vibration (ISO/TS 7849)](https://jmrplens.github.io/phonometry/devices/emission/vibration-sound-power/) +estimates the radiated power from the surface-averaged velocity level and a +radiation factor, which is what remains when the machine cannot be moved to a +qualified room and its environment is too noisy for an enveloping surface: +Part 1 gives an upper-limit value from the velocity alone, Part 2 an +engineering value once the radiation factor has been estimated properly. It +also answers a slightly different question from the four acoustic routes — it +characterises what the *structure* radiates, and stays blind to sound escaping +through openings, intakes and outlets — and it is the natural bridge to the +structure-borne pages, since the same surface velocity is what +[Vibration and structure-borne sound](https://jmrplens.github.io/phonometry/vibration/) measures. + Behind the intensity-based routes sits **sound intensity** itself: the signed power flux that can localise sources and separate them from background noise, measured with a two-microphone probe per IEC 61043 and qualified by the @@ -12840,10 +13179,12 @@ ISO 9614-1 field indicators, covered in If you are here to measure a machine, start with [Sound Power](https://jmrplens.github.io/phonometry/devices/emission/sound-power/) and let its decision guidance pick the route; read [Sound Intensity (p-p)](https://jmrplens.github.io/phonometry/devices/emission/intensity/) -when that route involves an intensity probe. The determined power level is -what the quieting measures of the -[Noise control](https://jmrplens.github.io/phonometry/devices/noise-control/) pages are judged -against. +when that route involves an intensity probe, and go to +[Sound power from surface vibration](https://jmrplens.github.io/phonometry/devices/emission/vibration-sound-power/) +when the machine cannot leave its installation and the background is too high +for any pressure method. The determined power level is what the quieting +measures of the [Noise control](https://jmrplens.github.io/phonometry/devices/noise-control/) pages are +judged against. ## Pages in this section @@ -12863,6 +13204,29 @@ against. - [Sound Power by Intensity Scanning](https://jmrplens.github.io/phonometry/devices/emission/sound-power-intensity/): the on-site scanning of ISO 9614-2 and the ISO 9614-3 precision grade. +## What this section does not cover + +The determination methods start after the facility and the probe have been +qualified. ISO 3745's free-field qualification of an anechoic or hemi-anechoic +room, ISO 3741's reverberation-room qualification (eigenfrequency counting or a +reference-source comparison) and the IEC 61043 residual-intensity test of a +probe-and-analyser chain are all **assumed, not performed**: the library warns +on the coarse advisory criteria the standards state explicitly — the Table 1 +minimum volume, the position count, an inter-position spread above 1.5 dB, the +ISO 3744 K₂ validity — and grades a residual-intensity index you measured +yourself. The C₃ meteorological correction of ISO 3745 likewise needs an +air-absorption coefficient you supply; it is not computed from ISO 9613-1 here. + +One route is absent by design: **ISO 9614-1's discrete fixed-point power +summation is not implemented at all**, and only its Annex A field indicators +are, reused by the two scanning parts. On the vibration route, the measurement +clauses 5 to 7 of both parts of ISO/TS 7849 are laboratory practice rather than +code, and only the single-machine radiation factor of Formula 8 is implemented, +so a batch or family determination needs an already-averaged value. Finally, +nothing here reduces a machine's emission: quieting a source is [Noise +control](https://jmrplens.github.io/phonometry/devices/noise-control/), and a declared emission value is +the input to that work, not its result. + --- @@ -15173,7 +15537,9 @@ to the room or the distance it is heard at. The **sound power and intensity** pages determine the central emission quantity, the sound power level: the figure that goes on a datasheet, feeds a -room or outdoor prediction and is checked against noise-emission limits. The +room or outdoor prediction and is checked against noise-emission limits — +including the route that reads it off the casing's own vibration when no +microphone can be placed. The **electroacoustics** pages turn to devices that are *supposed* to make sound (amplifiers, loudspeakers and microphones) and to the broadcast programme they carry, and the **noise control** pages hold the path measures that quiet @@ -15181,7 +15547,9 @@ a machine once its emission is known. If you are here to measure a machine, start with [Sound Power](https://jmrplens.github.io/phonometry/devices/emission/sound-power/) and let its decision guidance -pick the route; read [Sound Intensity (p-p)](https://jmrplens.github.io/phonometry/devices/emission/intensity/) +pick the route, which may end on an intensity probe or, when only vibration can +be measured, on the radiating surface itself; read +[Sound Intensity (p-p)](https://jmrplens.github.io/phonometry/devices/emission/intensity/) when that route involves an intensity probe. If you are here to bench-test audio gear, go straight to [Electroacoustics](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/); if you are here to @@ -15203,6 +15571,11 @@ The total acoustic emission of a source, and the power flux it is built on. the direct and comparison methods of ISO 3741. - [Sound Power by Intensity Scanning](https://jmrplens.github.io/phonometry/devices/emission/sound-power-intensity/): the on-site scanning of ISO 9614-2 and the ISO 9614-3 precision grade. +- [Sound power from surface vibration (ISO/TS 7849)](https://jmrplens.github.io/phonometry/devices/emission/vibration-sound-power/): + the radiated power from the surface-averaged velocity level and the radiation + factor, for the case where the machine cannot be moved, the room is not + qualified and only an accelerometer is available: the Part 1 upper limit and + the Part 2 engineering value. ## [Electroacoustics](https://jmrplens.github.io/phonometry/devices/electroacoustics/) @@ -15245,6 +15618,53 @@ it. - [Industrial Noise Control: HVAC and Enclosures](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/): duct attenuation, flow noise and machine-enclosure insertion loss. +## What this section does not cover + +**No facility is qualified here.** ISO 3745's free-field qualification of an +anechoic room, ISO 3741's reverberation-room qualification and IEC 61043's +residual-intensity test of a probe are all assumed to have been done: the +library warns on the coarse advisory criteria a standard states explicitly and +grades a residual index you supply, but it does not certify a room or an +instrument. The same boundary runs through the electroacoustics pages, which +**reduce and report curves the laboratory supplies** rather than telling you how +to acquire them, and through ISO/TS 7849, whose clauses 5 to 7 on +instrumentation, installation and measurement positions are laboratory practice +this library assumes. + +Three specific absences are worth knowing before you plan a job. ISO 9614-1's +discrete fixed-point power summation is **not implemented at all** — only its +field indicators are, reused by the scanning routes. Dissipative duct-lining +silencers are **not modelled from liner properties** anywhere: the reactive +elements are computed exactly, and the lined-elbow and plenum figures are +interpolated installation tables. And no page here predicts a panel's +transmission loss: `enclosure_insertion_loss` combines a value you supply with +the interior correction, and the prediction itself is [Insulation +design](https://jmrplens.github.io/phonometry/buildings/design/). + +Editions are pinned rather than current in two places: the distortion metrics +follow AES17-2015 and not the 2020 revision, and the microphone +rated-characteristics report follows IEC 60268-4:2014 and not the 2018 one. +Object-based audio (BS.1770-5 Annex 4) is out of scope, and the library +implements no spatial renderer, so an object-based programme has to be rendered +to a loudspeaker layout before it can be measured. + +## Before and after these pages + +Every emission quantity here is computed from band levels or from an intensity +pair, so the calibration, weighting and filtering behind them are in [Signal +analysis](https://jmrplens.github.io/phonometry/signals/), and [Build a sound level +meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) runs that chain end to end on +one runnable page. The derivations are split by physics rather than by topic: +[sound power determination](/phonometry/reference/theory/environment-transport/#sound-power-determination-iso-374437453746-iso-3741-iso-9614-23) +is under Environment and transport, and [sound intensity](/phonometry/reference/theory/signal-analysis/#sound-intensity-iec-61043) +under Signal analysis. The electroacoustics and noise-control pages carry their +derivations inline. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. + --- @@ -15992,20 +16412,64 @@ Source: https://jmrplens.github.io/phonometry/devices/noise-control/ # Noise control -Machinery noise is attacked at the source, the path and the receiver in turn, -and this section holds the path measures. - -[Silencers](https://jmrplens.github.io/phonometry/devices/noise-control/silencers/) covers the reactive four-pole -elements (expansion chambers, Helmholtz, quarter-wave and extended-tube -resonators) with their transmission and insertion loss, and the choice -between reflection and dissipation, while -[Industrial Noise Control](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/) keeps the HVAC -duct attenuation and flow noise of an installation and the insertion loss of -a machine enclosure. - -What a quieting measure is judged against is the emission of the machine -itself, and that is determined by the -[Sound power and intensity](https://jmrplens.github.io/phonometry/devices/emission/) pages. +A noise-control problem is a **budget**, not a component choice. Between a +machine and the person who hears it there is a path, and each element on that +path removes a known number of decibels per band; the design question is which +combination closes the gap between what the source emits and what the criterion +allows. Machinery noise is attacked at the source, the path and the receiver in +turn, and this section holds the path — both halves of it: the element models, +and the two composed chains that spend their output against a criterion. + +Everything here is a **prediction** from declared geometry and declared +material data. That matters when a catalogue is open beside the screen: the +figure a supplier publishes for the same device is a *measured* insertion loss, +obtained under the conditions of a measurement standard — ISO 7235 for a ducted +silencer on a laboratory rig with and without airflow, which also gives the +regenerated flow noise and the pressure loss, ISO 11691 for the survey method +without flow, ISO 11820 for a silencer in situ, and ISO 11546-1 and -2 for an +enclosure in the laboratory and in situ. A computed transmission loss and a +catalogue insertion loss are not the same quantity. Neither is wrong; they +answer different questions, and a design that mixes them without saying so is +not defensible. + +[Duct-Borne Noise: Fan to Room](https://jmrplens.github.io/phonometry/devices/noise-control/duct-path/) +follows an airborne path from the fan through the duct run into the room: +attenuation in straight duct, at bends and takeoffs, end reflection at the +terminal, regenerated flow noise added back, the room effect at the receiver, +and the result laid against the room criterion. It also states the limit every +element model in this section shares — the frequency above which higher-order +modes cut on and the plane-wave assumption stops holding. +[Room to Room: Partition, Receiving Room, Criterion](https://jmrplens.github.io/phonometry/devices/noise-control/room-to-room/) +follows the airborne room-to-room path instead: a source-room level built from a +sound power and the room constant, a partition with its transmission loss, a +receiving room with its absorption, the received spectrum and its verdict — and +the inverse problem, the transmission loss a partition or a lined enclosure must +have for the receiving room to meet its criterion, solved backwards. + +The two element pages supply what those chains call. +[Silencers](https://jmrplens.github.io/phonometry/devices/noise-control/silencers/) covers the reactive +four-pole elements (expansion chambers, Helmholtz, quarter-wave and +extended-tube resonators) with their transmission and insertion loss, and the +choice between reflection and dissipation, while +[Industrial Noise Control](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/) +keeps the HVAC duct attenuation and flow noise of an installation and the +insertion loss of a machine enclosure. + +If the noise travels in a duct, start at +[Duct-Borne Noise](https://jmrplens.github.io/phonometry/devices/noise-control/duct-path/); if it travels +through a wall, start at +[Room to Room](https://jmrplens.github.io/phonometry/devices/noise-control/room-to-room/); open the +element pages when a chain asks for a number you do not have. + +Both ends of the problem are settled outside this section, and a path +calculation with either end missing has no verdict. At the **source** end, what +a quieting measure is judged against is the emission of the machine itself, +determined by the [Sound power and intensity](https://jmrplens.github.io/phonometry/devices/emission/) +pages — and reducing it there is almost always cheaper than treating a path. At +the **receiver** end sit the criteria: the NC and RC Mark II families of +[Room noise criteria](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/), plus whatever +occupational limit applies, in [Occupational exposure +(ISO 9612)](https://jmrplens.github.io/phonometry/perception/hearing/occupational-exposure/). ## Pages in this section @@ -16020,6 +16484,25 @@ itself, and that is determined by the - [Industrial Noise Control: HVAC and Enclosures](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/): duct attenuation, flow noise and machine-enclosure insertion loss. +## What this section does not cover + +Nothing here is a measurement: every number is predicted from geometry and +declared data, and the measurement standards named above are cited as the +source of a supplier's figures, not implemented. Within the predictions, three +limits are structural. **Only reactive silencer elements are computed** — +dissipative duct-lining silencers are discussed for selection but are not +modelled from liner properties anywhere in the library, and the lined-elbow and +plenum figures on the HVAC page are interpolated installation tables rather than +a liner model. **Mean flow is outside the element matrices**: convection, +temperature gradients and the flow-dependent impedance of perforates do not +appear, so a silencer carrying significant flow is predicted as though it were +not. And `enclosure_insertion_loss` **never predicts the panel's transmission +loss**: you supply R measured or from another model, and the module combines it +with the interior correction — predicting R itself is [Insulation +design](https://jmrplens.github.io/phonometry/buildings/design/). Above the higher-order-mode cut-on +frequency the plane-wave assumption every duct model rests on stops holding, +which the duct-path page states and which no method here works around. + --- @@ -17552,17 +18035,93 @@ Source: https://jmrplens.github.io/phonometry/environment/assessment/ # Assessment and regulation Propagation says what arrives at the receiver. Assessment says what it counts -as, which is a separate question with its own standards: an indicator averaged -over the right period, adjustments for the character of the sound, and a limit -to compare the result against. +as, which is a separate question with its own standards. It is a chain with +three links: an **indicator** averages the sound over a defined period; +**adjustments** add decibels for character the average does not capture, tone +by tone and impulse by impulse; and a **limit**, always national, decides. +ISO 1996 supplies the first two links, and a national regulation supplies the +third together with its own version of the second. + +[Environmental Levels (ISO +1996-1/-2)](https://jmrplens.github.io/phonometry/environment/assessment/environmental-levels/) is the +indicator and adjustment layer, and the page most readers of this subsection +want. Lden weights the evening by +5 dB and the night by +10 dB over default +12/4/8 h periods, adjustable because Member States define them differently; +Ldn is the day-night variant; and the composite rating level of clause 6.5 +generalises both to arbitrary periods with source and character adjustments, +from +5 dB for regularly impulsive sound to +12 dB for highly impulsive sound. +The ISO 1996-2 half of the page *determines* rather than defines: the Annex C +tonal adjustment, the clause 10.4 correction for residual noise, and the +Annex F uncertainty budget that says how much the rating level is worth. It +starts from period levels you already have; producing those is [Integrated and +Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/). [Impulsive-sound prominence (NT ACOU 112)](https://jmrplens.github.io/phonometry/environment/assessment/impulsive-sound/) is the adjustment for sound whose impulses make it more annoying than its LAeq suggests, in both the Nordtest closed form and the ISO/PAS 1996-3 measurement -chain. The indicators it adjusts are in -[Environmental Levels](https://jmrplens.github.io/phonometry/environment/assessment/environmental-levels/), and the -national application of the whole chain is in -[the Spanish regulation](https://jmrplens.github.io/phonometry/environment/assessment/spanish-noise-regulation/). +chain: from the onset rate and level difference of each impulse it predicts a +prominence and converts it into the graduated adjustment KI added to the +measured LAeq. It is the measurement that replaces an assessor's judgement in +the character-adjustment slot of the chain above, and it ends in a `.report()` +assessment fiche. + +[Spanish Noise Regulation (RD 1367/2007)](https://jmrplens.github.io/phonometry/environment/assessment/spanish-noise-regulation/) +is what the whole chain looks like once a state has legislated it: the +corrected level LKeq with its tonal, low-frequency and impulsive corrections +Kt, Kf and Ki, evaluation periods split into noise phases, and the limit tables +an activity is judged against by land use. Read it as the worked example of a +national layer even if you do not work in Spain — it shows which parts of +ISO 1996 a regulation typically restates, and which it replaces. Kf, the +correction driven by the difference between the C-weighted and the A-weighted +level, has no counterpart in ISO 1996 at all. + +Read Environmental Levels first, then the impulsive-sound page as the +adjustment that feeds it, then the Spanish regulation as the national assembly +of both. + +## Pages in this section + +- [Environmental Levels (ISO 1996-1/-2)](https://jmrplens.github.io/phonometry/environment/assessment/environmental-levels/): + Lden, Ldn and the composite rating level of clause 6.5, the Annex C tonal + adjustment, the clause 10.4 residual-noise correction and the Annex F + uncertainty budget. +- [Impulsive-sound prominence (NT ACOU 112)](https://jmrplens.github.io/phonometry/environment/assessment/impulsive-sound/): + the predicted prominence of impulsive sounds, the graduated LAeq adjustment + KI, the ISO/PAS 1996-3 measurement chain and the assessment fiche. +- [Spanish Noise Regulation (RD 1367/2007)](https://jmrplens.github.io/phonometry/environment/assessment/spanish-noise-regulation/): + the corrected level LKeq, the Kt/Kf/Ki corrections, the evaluation periods + and noise phases, and the immission limit tables. + +## See also + +Pages elsewhere on the site that this section leans on: + +- [Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/): the + LAeq, percentile and event levels of each reference period, which every + indicator here starts from. +- [Objective audibility of tones in noise](https://jmrplens.github.io/phonometry/perception/psychoacoustics/tone-audibility/): + the ISO/PAS 20065 engineering method whose mean audibility the ISO 1996-2 + tonal adjustment maps into decibels. +- [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/): + the path that delivered the sound to the receiver being assessed. + +## What this section does not cover + +The library starts where the sound level meter stops. ISO 1996-2 fixes the +receiver positions and the façade corrections that turn a raw measurement into +the level these functions expect, and those position and correction procedures +are **not implemented** — only the arithmetic that follows once you have +applied them. The same is true nationally: the Annex IV measurement procedures +of RD 1367/2007 (microphone positions, series duration, number of +measurements) are not implemented either, and the acoustic zoning, noise maps +and action plans of Ley 37/2003 are planning instruments rather than +calculations. Two published alternatives are deliberately absent: only the +graduated KI of NT ACOU 112 Formula 2 is implemented, not the flat 5 dB +fallback of its Note 4, and the ISO 1996-1 Table A.1 category adjustments +appear only as the assessor's-judgement baseline the measurement replaces. +Finally, no limit table other than the Spanish one is built in: a limit is +national, and the library gives you the rating level to compare against +whichever one applies. --- @@ -17941,6 +18500,15 @@ consumes is shared with the room and materials pages. Start with [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/); it introduces the source-path-receiver bookkeeping the transport pages reuse. +The three jobs this section is normally used for combine the subsections +differently. A **strategic noise map** is a CNOSSOS source model, a propagation +model and Lden. A **plant or permit assessment** is a measured sound power +(determined in [Sources and devices](https://jmrplens.github.io/phonometry/devices/emission/)), ISO 9613-2 +to the nearest dwelling, and the ISO 1996 rating level with its adjustments. +An **activity inspection** is a sound level meter at a receiver point and +RD 1367/2007, or whichever national regulation applies, with no propagation +model in the chain at all. + ## [Assessment and regulation](https://jmrplens.github.io/phonometry/environment/assessment/) What the received sound is rated against, once it has arrived. @@ -17950,7 +18518,7 @@ What the received sound is rated against, once it has arrived. turn a measured LAeq into an assessed one. - [Spanish Noise Regulation (RD 1367/2007)](https://jmrplens.github.io/phonometry/environment/assessment/spanish-noise-regulation/): the national application of that chain, with its own limits and its own - tonal and impulsive corrections. + tonal, low-frequency and impulsive corrections. - [Impulsive-sound prominence (NT ACOU 112)](https://jmrplens.github.io/phonometry/environment/assessment/impulsive-sound/): the predicted prominence of impulsive sounds and the graduated adjustment added to LAeq. @@ -17962,10 +18530,12 @@ arrives. - [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/): atmospheric absorption (ISO 9613-1) and the ISO 9613-2 general method with - its per-term attenuation breakdown. -- [Ground effect and barriers](https://jmrplens.github.io/phonometry/environment/propagation/ground-barriers/): - the ground attenuation of ISO 9613-2 and the insertion loss a barrier adds - to the path. + its per-term attenuation breakdown, including the tabulated ground term and + the barrier screening term. +- [Spherical ground effect and advanced barriers](https://jmrplens.github.io/phonometry/environment/propagation/ground-barriers/): + the wave acoustics underneath those two fits — the Weyl-Van der Pol + spherical-wave reflection coefficient over finite-impedance ground, and + wave-theoretic screen diffraction. - [Atmospheric refraction](https://jmrplens.github.io/phonometry/environment/propagation/atmospheric-refraction/): how wind and temperature gradients bend a ray into or out of a shadow zone. @@ -17987,6 +18557,45 @@ Aircraft are the other transport source with internationally fixed metrics, and they have a topic of their own: [Aircraft noise](https://jmrplens.github.io/phonometry/aircraft/). +## What this section does not cover + +Only the source side of CNOSSOS-EU Annex II is implemented, and only two of its +four sources. The **industrial source** of section 2.4 and Appendix H, and the +**aircraft source** of sections 2.6 and 2.7, are not implemented; aircraft noise +is covered by the ICAO and ECAC methods in [Aircraft +noise](https://jmrplens.github.io/phonometry/aircraft/), which is a different family of models, and a +non-vehicle machine is characterised as a sound power in [Sources and +devices](https://jmrplens.github.io/phonometry/devices/emission/). The **CNOSSOS propagation method** of +section 2.5 is not implemented either: the path here is ISO 9613-2, a different +model, so a chain built from CNOSSOS sources and this library's propagation is +not a CNOSSOS calculation and should not be reported as one. + +Nothing here is a mapping engine. There is no terrain model, no city geometry +and no GIS layer: the propagation functions take one source, one receiver and +the ground between them, both refraction models assume flat ground at z = 0, +and how a source line is split into point sources is declared out of scope by +CNOSSOS itself. On the assessment side, the library starts where the sound +level meter stops — the ISO 1996-2 receiver positions and façade corrections, +and the RD 1367/2007 Annex IV measurement procedures (microphone positions, +series duration, number of measurements), are not implemented, only the +arithmetic that follows once you have applied them. Acoustic zoning, noise maps +and action plans under Ley 37/2003 are planning instruments, not calculations. + +## Before and after these pages + +Every rating here is an adjusted $L_{eq}$, so the calibration, weighting and +time integration that produce it are in [Signal +analysis](https://jmrplens.github.io/phonometry/signals/), and [Build a sound level +meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) runs that chain end to end on +one runnable page. The derivations are in [Environment and transport +theory](https://jmrplens.github.io/phonometry/reference/theory/environment-transport/): the ISO 1996-1 descriptors, the +NT ACOU 112 prominence criterion and the ISO 9613 attenuation terms. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. + --- @@ -18664,63 +19273,58 @@ Source: https://jmrplens.github.io/phonometry/environment/propagation/ # Outdoor sound -Outdoor sound assessment has two halves: predicting the level a source -delivers to a distant receiver, and judging the character of the sound that -actually arrives. The pages of this section split along that line, with the -prediction half starting one step earlier, at the source itself. +This section is the **path**: what happens to a sound between a source of known +power and a receiver hundreds of metres away. Its three pages go from the +engineering method down to the physics it approximates, and then to the one +thing both of them assume does not happen. [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) is the -prediction half. Starting from a source's **sound power**, the ISO 9613-2 -general method subtracts, octave band by octave band, every mechanism that -attenuates sound on its way: geometrical divergence, atmospheric absorption -(supplied by the pure-tone coefficient of **ISO 9613-1**), the ground effect -and barrier screening, with a meteorological correction for long-term -averages. The page keeps the per-term breakdown visible, so a prediction is -never a black box: you can see exactly which mechanism buys how many decibels -at which frequency. - -[CNOSSOS-EU railway source emission](https://jmrplens.github.io/phonometry/environment/sources/cnossos-rail-emission/) -is the source half for the railway. Section 2.3 of Annex II to Directive -2002/49/EC turns a roughness spectrum, a set of transfer functions and a train -flow into the two equivalent source lines every strategic noise map in the -European Union starts from, at 0,5 m and at 4,0 m above the rail head, with -impact noise, curve squeal, traction, aerodynamic noise above 200 km/h and the -bridge term each allocated to the height it radiates from. +engineering method. Starting from a source's **sound power**, ISO 9613-2 +subtracts, octave band by octave band, every mechanism that attenuates sound on +its way: geometrical divergence, atmospheric absorption (supplied by the +pure-tone coefficient of **ISO 9613-1**), the ground effect and barrier +screening, with a meteorological correction for long-term averages. The page +keeps the per-term breakdown visible, so a prediction is never a black box: you +can see exactly which mechanism buys how many decibels at which frequency. +Start here — the other two pages exist to say when its terms can be trusted. [Spherical ground effect and advanced barriers](https://jmrplens.github.io/phonometry/environment/propagation/ground-barriers/) -goes underneath the ISO 9613-2 fits to the wave acoustics they approximate: the +goes underneath two of those terms to the wave acoustics they fit: the Weyl-Van der Pol spherical-wave reflection coefficient of a finite-impedance ground, and barrier diffraction by the Kurze-Anderson Fresnel number, the exact rigid half-plane, thick barriers and the coherent four-path barrier on the -ground, all resolving the frequency-dependent interference the octave-band terms -smooth away. - -[CNOSSOS-EU road traffic source emission](https://jmrplens.github.io/phonometry/environment/sources/cnossos-road-emission/) -supplies the source power that a prediction starts from, for the one source -that dominates almost every noise map: road traffic. The common EU method of -Annex II to Directive 2002/49/EC builds a rolling and a propulsion sound power -for each vehicle category, corrects the rolling term for pavement, air -temperature and studded tyres and the propulsion term for pavement and road -gradient, applies the junction correction to both, and delivers a directional -sound power per metre of source line. - -[Impulsive-sound prominence (NT ACOU 112)](https://jmrplens.github.io/phonometry/environment/assessment/impulsive-sound/) -is the assessment half. Noise containing distinct impulses (hammering, -riveting, pile driving) annoys more than a steady sound of the same LAeq, and -the Nordtest method quantifies that: from the onset rate and level difference -of each impulse it computes a predicted **prominence**, and converts it into -the graduated adjustment KI that is added to the measured LAeq in a rating -level. - -The surrounding machinery lives nearby: the rating levels and Lden that -assessments end in are covered in -[Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/), the tonal -counterpart of the impulsive adjustment in -[Objective audibility of tones in noise](https://jmrplens.github.io/phonometry/perception/psychoacoustics/tone-audibility/), -and the sources that feed a propagation calculation in the -[Sound power and intensity](https://jmrplens.github.io/phonometry/devices/emission/) and -[Aircraft and wind energy](https://jmrplens.github.io/phonometry/aircraft/) -sections. +ground. What it resolves is the frequency-dependent interference the +octave-band terms smooth away: a ground dip is a cancellation between a direct +and a reflected path, at a frequency that depends on the geometry and the +ground impedance, and a tabulated correction cannot know where it falls. Open +this page when the answer is dominated by the ground or by a screen, or when +the octave-band result has to be defended against a measurement. + +[Atmospheric refraction: rays and the GFPE](https://jmrplens.github.io/phonometry/environment/propagation/atmospheric-refraction/) +removes the assumption both pages above are built on. Sound speed changes with +height, so rays are curved rather than straight, and whether that matters is +mostly a question of range: a representative surface-layer gradient bends rays +on a radius of about 3.4 km, so over the first hundred metres the homogeneous +models are accurate, and beyond a few hundred the geometry takes over. Downwind +or under a nocturnal inversion the rays close over the ground and hold the +level up; upwind the same profile opens an acoustic shadow into which the level +collapses by 20 dB or more. That asymmetry — the same machine at the same +distance, tens of decibels apart depending on which side you stand — is what +ISO 9613-2 fixes by decree in its favourable-propagation convention and +compresses into the scalar meteorological correction. This page computes it, +with curved rays and closed-form shadow-zone distances, and with the Green's +function parabolic equation as the reference field. + +Read them in that order. The rating that a predicted level ends in is not here: +the period levels come from [Integrated and Statistical +Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/), and Lden, Ldn and the rating level +from [Environmental Levels (ISO +1996-1/-2)](https://jmrplens.github.io/phonometry/environment/assessment/environmental-levels/) in the +[assessment](https://jmrplens.github.io/phonometry/environment/assessment/) subsection. The source +strengths a prediction starts from are in +[Environmental sources](https://jmrplens.github.io/phonometry/environment/sources/) for road, rail and +wind turbines, in [Sound power and intensity](https://jmrplens.github.io/phonometry/devices/emission/) +for a machine, and in [Aircraft noise](https://jmrplens.github.io/phonometry/aircraft/) for aircraft. ## Pages in this section @@ -18739,16 +19343,34 @@ sections. Pages elsewhere on the site that this section leans on: -- [CNOSSOS-EU railway source emission](https://jmrplens.github.io/phonometry/environment/sources/cnossos-rail-emission/): - the common EU railway emission method, from rail and wheel roughness to the - directional sound power per metre of the two equivalent source lines. -- [CNOSSOS-EU road traffic source emission](https://jmrplens.github.io/phonometry/environment/sources/cnossos-road-emission/): - the road source of Annex II to Directive 2002/49/EC: rolling and propulsion - sound power per vehicle category with the Appendix F database, and the - directional sound power per metre of source line. -- [Impulsive-sound prominence (NT ACOU 112)](https://jmrplens.github.io/phonometry/environment/assessment/impulsive-sound/): - the predicted prominence of impulsive sounds and the graduated LAeq - adjustment KI. +- [CNOSSOS-EU road traffic source emission](https://jmrplens.github.io/phonometry/environment/sources/cnossos-road-emission/) + and [CNOSSOS-EU railway source emission](https://jmrplens.github.io/phonometry/environment/sources/cnossos-rail-emission/), + both in [Environmental sources](https://jmrplens.github.io/phonometry/environment/sources/): the + directional sound power per metre of source line that a prediction starts + from. +- [Impulsive-sound prominence (NT ACOU 112)](https://jmrplens.github.io/phonometry/environment/assessment/impulsive-sound/), + in [Assessment and regulation](https://jmrplens.github.io/phonometry/environment/assessment/): the + character adjustment applied to the level once it has arrived. + +## What this section does not cover + +These are point-to-point models, not a mapping engine. Each call takes one +source, one receiver and the ground between them; there is no terrain +elevation profile, no building geometry and no GIS layer, both refraction +models assume flat ground at height zero and a profile that varies with height +alone rather than along the path, and how a source line is broken into point +sources is declared out of scope by CNOSSOS itself. The **CNOSSOS-EU +propagation method of section 2.5 is not implemented**: it is a different model +from ISO 9613-2, so a calculation that pairs CNOSSOS source powers with the +path here is not a CNOSSOS calculation. The coherent barrier-on-ground model +weights its four diffracted paths with a single reflection coefficient computed +over the overall geometry, so it is coherent and reciprocal but is not a +boundary-element solution, and no model here computes turbulent scattering: +ISO 9613-2 absorbs it into the fixed caps on its screening term, and the +wave-acoustic and refraction pages assume a non-turbulent atmosphere +outright. Nothing on these pages produces a rating: no Lden, +no limit value and no verdict — those are +[Assessment and regulation](https://jmrplens.github.io/phonometry/environment/assessment/). --- @@ -20193,16 +20815,95 @@ Source: https://jmrplens.github.io/phonometry/environment/sources/ # Environmental sources -Before anything propagates there has to be a source, described in the terms the -propagation model expects: a line power per octave band for traffic, an -apparent sound power level for a turbine. +A propagation model does not accept a machine; it accepts a **source +descriptor** with a fixed geometry. For traffic that means an incoherent source +line carrying a sound power per metre at a standardised height; for a turbine it +means an apparent sound power referred to an equivalent point source at the +rotor centre. The height, the band range and the directivity are part of the +definition, not details of the measurement, which is why an emission method is +a standard in its own right and not a preliminary step. What every page here +produces is that descriptor, in the form +[Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) +consumes. + +[CNOSSOS-EU road traffic source emission](https://jmrplens.github.io/phonometry/environment/sources/cnossos-road-emission/) +implements section 2.2 of Annex II to Directive 2002/49/EC in its consolidated +text: Directive (EU) 2015/996 as corrected by the OJ L 5 corrigendum of 2018, +which restores the 63 Hz to 8 kHz octave range the original clause contradicted, +and amended by Delegated Directive (EU) 2021/1226, which replaces Tables F-1 and +F-4 outright and makes the current source some 2,5 to 3,5 dB(A) louder than the +2015 one — so any comparison with pre-2021 literature carries that offset. Each +vehicle is a point source 0,05 m above the pavement, with the first pavement +reflection already inside its power. Per category (light, medium heavy, heavy, +mopeds, motorcycles) a rolling and a propulsion term are energy-summed, +corrected for pavement, air temperature, studded tyres and gradient, adjusted +near junctions, and turned into a directional power per metre of source line. + +[CNOSSOS-EU railway source emission](https://jmrplens.github.io/phonometry/environment/sources/cnossos-rail-emission/) +implements section 2.3 on the same pattern, but with **two** equivalent source +lines, at 0,5 m and at 4,0 m above the rail head, because the physical sources +radiate from different heights. It starts one step further back than the road +method: from wheel and rail roughness spectra, passed through the contact filter +and the vehicle and track transfer functions, with the wavelength-to-frequency +conversion at the train speed that makes rail arithmetic different from road +arithmetic. Impact noise at joints and switches, curve squeal, traction, +aerodynamic noise above 200 km/h and a bridge term are each allocated to the +height they radiate from. + +[Wind-turbine noise: sound power and tonal audibility](https://jmrplens.github.io/phonometry/environment/sources/wind-turbine-noise/) +is IEC 61400-11, where the descriptor is **measured** rather than tabulated. +With the microphone on a ground board at the horizontal distance R0 = H + D/2, +the apparent sound power per band follows from the measured pressure level and +the slant distance to the rotor centre, the −6 dB in the formula accounting for +the pressure doubling on the board; results are binned by standardised wind +speed. The same page carries the tonal audibility that decides whether a +blade-passing, gearbox or generator tone stands above its masking noise, and +ends in a `.report()` assessment fiche. + +Read the road page first even for a railway job: it introduces the source-line +bookkeeping and the Annex II layering that the rail page reuses. The turbine +page is independent of both. + +## Pages in this section + +- [CNOSSOS-EU road traffic source emission](https://jmrplens.github.io/phonometry/environment/sources/cnossos-road-emission/): + the rolling and propulsion sound power per vehicle category, its pavement, + temperature, studded-tyre, gradient and junction corrections, and the + directional power per metre of source line. +- [CNOSSOS-EU railway source emission](https://jmrplens.github.io/phonometry/environment/sources/cnossos-rail-emission/): + roughness and transfer functions to the two equivalent source lines at 0,5 m + and 4,0 m, with the impact, squeal, traction, aerodynamic and bridge terms. +- [Wind-turbine noise: sound power and tonal audibility](https://jmrplens.github.io/phonometry/environment/sources/wind-turbine-noise/): + the IEC 61400-11 apparent sound power referred to the rotor centre, its + wind-speed binning and the tonal-audibility chain, with the assessment fiche. + +## See also + +Pages elsewhere on the site that this section leans on: -[CNOSSOS-EU road traffic](https://jmrplens.github.io/phonometry/environment/sources/cnossos-road-emission/) -and [CNOSSOS-EU railways](https://jmrplens.github.io/phonometry/environment/sources/cnossos-rail-emission/) -are the emission halves of the European method, the ones a strategic noise map -is built on. [Wind-turbine noise](https://jmrplens.github.io/phonometry/environment/sources/wind-turbine-noise/) -is IEC 61400-11, where the source descriptor and its tonal audibility are -measured rather than tabulated. +- [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/): + the path model every descriptor here is built to feed. +- [Sound power and intensity](https://jmrplens.github.io/phonometry/devices/emission/): how a machine + that is not a vehicle is characterised. + +## What this section does not cover + +Two of the four CNOSSOS sources are missing, by omission rather than oversight: +the **industrial source** of section 2.4 and Appendix H is not implemented, and +neither is the **aircraft source** of sections 2.6 and 2.7 — aircraft noise is +covered by the ICAO and ECAC methods in [Aircraft +noise](https://jmrplens.github.io/phonometry/aircraft/), which is a different family of models entirely. +Neither is the **CNOSSOS propagation method** of section 2.5: it differs from +the ISO 9613-2 model this library implements, so pairing these source powers +with [Outdoor Sound +Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) does not +give a CNOSSOS result. Inside the two methods that are here, three gaps come +from the source documents themselves: the open vehicle category 5 has no +coefficients in Appendix F and is not modelled, rail roughness classes N and B +carry no spectrum in Appendix G and must be supplied by the Member State, and +how a source line is split into point sources is declared out of scope by the +method. Depots, stations and loudspeakers are railway sources under 2.3.3 but +are treated by the industrial method, so they are not here either. --- @@ -21900,10 +22601,12 @@ Source: https://jmrplens.github.io/phonometry/materials/absorbers/ # Absorbers An absorber can be characterised at three scales, and this subsection walks -them in order: the finished product in a reverberation room, the small sample -in an impedance tube, and the raw material in a flow rig, with the prediction -models that tie the three together and the metamaterial designs that push -them past the classical thickness rules. +them from the finished product inwards: the mounted product in a reverberation +room, the raw material in a flow rig, and the small sample in an impedance +tube — the flow rig before the tube because the resistivity it measures is the +single parameter every model the tube is fitted against starts from. Then come +the prediction models that tie the three together, and the metamaterial designs +that push them past the classical thickness rules. [Sound Absorption Measurement and Rating](https://jmrplens.github.io/phonometry/materials/absorbers/absorption-measurement/) is the product scale: the ISO 354 reverberation-room measurement of the @@ -21956,6 +22659,23 @@ meshed cell. critical-coupling condition and the slow-sound slit panel with its design solver. +## What this section does not cover + +None of these pages qualifies a laboratory. ISO 354's room requirements of +Annex A — the number of loudspeaker and microphone positions, the diffusing +elements — are not checked; the functions convert an +already-measured decay pair and only warn when the room volume or sample area +falls outside the clause 6 limits. Two editions are cited but not implemented: +the code follows the 1998/2001 transfer-function method of ISO 10534-2, not the +2023 edition, and ASTM E2611-19, not E2611-24. The probe-traverse refinements of +ISO 10534-1 (extrapolating the minima to the sample face, probe-body +corrections) are described but not automated. The prediction models are +forward-only: they turn a resistivity into an impedance, and no inverse solver +recovers the material parameters from a measured curve. And no measurement +standard governs the metamaterial designs at all — a built panel is verified in +the impedance tube or the reverberation room like any other absorber, which is +why that page states a prediction and not a rating. + --- @@ -23831,8 +24551,9 @@ Source: https://jmrplens.github.io/phonometry/materials/diffusers/ Where the [Absorbers](https://jmrplens.github.io/phonometry/materials/absorbers/) subsection asks how much energy a material removes from the field, this one asks what a *surface* does with the sound it returns: how much it throws off the specular -direction, how evenly it spreads it, and, out on a pavement, how much it -absorbs where no laboratory can follow. Three guides walk that ground. +direction and how evenly it spreads it. Two guides walk that ground, and a +third family of surface measurements — pavements characterised where they lie — +has its own subsection nested inside this group. [Diffusers and Their Coefficients](https://jmrplens.github.io/phonometry/materials/diffusers/diffusers/) is the measurement and design core: the random-incidence **scattering coefficient** @@ -23849,12 +24570,10 @@ deep, with critical coupling supplying the perfectly absorbing `0` state that ternary sequences need. The published quadratic-residue design is evaluated end to end, transfer-matrix chain to FDTD cross-check. -[In-situ Road-Surface Absorption](https://jmrplens.github.io/phonometry/materials/surfaces/road-absorption/) takes -the absorption question outdoors: the ISO 13472-1 subtraction technique -separates the incident and road-reflected components of an impulse with the -Adrienne window, and the ISO 13472-2 spot tube presses a portable -impedance tube onto the pavement for reflective surfaces, with the choice -between the two methods spelled out. +[Surfaces measured in place](https://jmrplens.github.io/phonometry/materials/surfaces/) takes the +absorption question outdoors, to the surfaces that have no sample: it covers +the ISO 13472-1 subtraction technique and the ISO 13472-2 spot tube, and the +decision between them. The neighbours are close: the diffuser panels are surface relatives of the [metamaterial absorbers](https://jmrplens.github.io/phonometry/materials/absorbers/metamaterial-absorbers/) built @@ -23877,9 +24596,27 @@ methods serve the outdoor-noise interest of Pages elsewhere on the site that this section leans on: -- [In-situ Road-Surface Absorption](https://jmrplens.github.io/phonometry/materials/surfaces/road-absorption/): +- [Surfaces measured in place](https://jmrplens.github.io/phonometry/materials/surfaces/) and its guide + [In-situ Road-Surface Absorption](https://jmrplens.github.io/phonometry/materials/surfaces/road-absorption/): the ISO 13472-1 subtraction technique and the ISO 13472-2 spot method. +## What this section does not cover + +Both prediction models here are **design estimates, not measurements**. The +Fraunhofer far field the diffuser and metadiffuser pages share loses accuracy +at low frequency, at grazing angles and over strongly absorbing surfaces, and +it ignores edge diffraction, so it grades a well-depth sequence before it is +built and does not replace an ISO 17497-2 measurement; the metadiffuser model +is locally reacting on top of that, with no coupling between wells. Only the +quadratic-residue depth sequence has a dedicated helper — primitive-root and +modulated arrangements are discussed as design guidance and enter through the +explicit depth or reflection arguments. The inverse problem, solving resonator +geometries for a target phase profile, is not automated: the workflow matches +phases by evaluation. On the measurement side the library reduces the data but +does not run the rig: the ISO 17497-1 turntable and the ISO 17497-2 goniometer +supply the reverberation times and the polar response, and what is implemented +is the arithmetic that turns them into a coefficient. + --- @@ -24227,20 +24964,41 @@ coefficient** (ISO 17497-1) and the **diffusion coefficient** (ISO 17497-2), together with Schroeder diffuser design and its far-field prediction. [Metadiffusers](https://jmrplens.github.io/phonometry/materials/diffusers/metadiffusers/) rebuilds the Schroeder diffuser from resonator-loaded slits, one to two orders of magnitude thinner. -And [In-situ Road-Surface Absorption](https://jmrplens.github.io/phonometry/materials/surfaces/road-absorption/) -measures the absorption of a pavement where it lies, by the ISO 13472-1 -subtraction technique over an extended surface or the ISO 13472-2 spot tube. + +Nested inside that group is **Surfaces measured in place**, for the surfaces +that have no sample. A pavement cannot be cut out and carried indoors without +destroying the connected pore structure that governs its absorption, so the +laboratory geometry is replaced by a time window over an extended surface, or +by a tube pressed onto the road. +[In-situ Road-Surface Absorption](https://jmrplens.github.io/phonometry/materials/surfaces/road-absorption/) +measures it where it lies, by the ISO 13472-1 subtraction technique or the +ISO 13472-2 spot tube, and says which of the two a given pavement allows. + +The **Resilient layers** subsection covers the one material property here that +is mechanical rather than acoustic: a resilient layer is characterised not by +what it does to airborne sound but by how softly it supports a mass, so its +measurement is a resonance and not an absorption. A floating floor is a +mass-spring system, the screed is the mass and the layer is the spring, and the +dynamic stiffness per unit area s' of the layer sets the resonance above which +the floor starts working. +[Dynamic stiffness of resilient materials (EN 29052-1)](https://jmrplens.github.io/phonometry/materials/resilient/dynamic-stiffness/) +is the load-plate resonance measurement that produces s', with the enclosed-gas +term that makes an air-permeable layer stiffer than its frame alone. The consumers of these numbers are spread across the site: absorption coefficients feed the reverberation predictions in -[Room acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/), dynamic -stiffness (measured by a related load-plate method) feeds the floating-floor -model in [Sound insulation](https://jmrplens.github.io/phonometry/buildings/insulation/), +[Room acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/); the dynamic stiffness measured +here feeds the floating-floor model of +[Sound insulation](https://jmrplens.github.io/phonometry/buildings/insulation/) through +[Predicting resilient-layer performance](https://jmrplens.github.io/phonometry/buildings/design/resilient-layers/); and the road-surface methods connect to the outdoor-noise interest of the [Environment and transport](https://jmrplens.github.io/phonometry/environment/) section. -## Pages in this section +## [Absorbers](https://jmrplens.github.io/phonometry/materials/absorbers/) + +How much energy a material takes out of the field, one instrument or model +family per guide. - [Absorbers overview](https://jmrplens.github.io/phonometry/materials/absorbers/): the measurement chain from reverberation room to flow rig to impedance tube, @@ -24259,9 +25017,15 @@ section. and the random-incidence Paris integral. - [Metamaterial Absorbers](https://jmrplens.github.io/phonometry/materials/absorbers/metamaterial-absorbers/): critical coupling and the slow-sound slit panel with its design solver. + +## [Diffusers and surfaces](https://jmrplens.github.io/phonometry/materials/diffusers/) + +Where a surface sends what it reflects, and the surfaces that can only be +measured in place. + - [Diffusers and surfaces overview](https://jmrplens.github.io/phonometry/materials/diffusers/): what a surface does with the sound it returns, from coefficients to - metamaterial panels to pavements. + metamaterial panels. - [Diffusers and Their Coefficients](https://jmrplens.github.io/phonometry/materials/diffusers/diffusers/): ISO 17497-1/2 scattering and diffusion coefficients, Schroeder design and the far-field prediction. @@ -24271,6 +25035,11 @@ section. surfaces that cannot be taken to a laboratory, characterised where they lie. - [In-situ Road-Surface Absorption](https://jmrplens.github.io/phonometry/materials/surfaces/road-absorption/): ISO 13472-1/-2 in-situ road-surface absorption. + +## [Resilient layers](https://jmrplens.github.io/phonometry/materials/resilient/) + +The mechanical property a floating floor is designed around. + - [Resilient layers overview](https://jmrplens.github.io/phonometry/materials/resilient/): what a resilient layer does under a floating floor, and the dynamic stiffness that sets it. @@ -24279,6 +25048,41 @@ section. floating floor, and the apparent stiffness the insulation design chapter asks it for. +## What this section does not cover + +Everything here characterises a **material or a surface**, never a +construction. The transmission loss of a wall, the impact improvement of a +floor and the flanking paths of a junction are +[Sound insulation](https://jmrplens.github.io/phonometry/buildings/insulation/) and +[Insulation design](https://jmrplens.github.io/phonometry/buildings/design/); this section supplies the +coefficients they consume. Two boundaries inside the measurements themselves +are worth knowing before you start. The in-situ road methods implement +ISO 13472-1:2002 and ISO 13472-2:2010; **their 2022 and 2025 revisions are not +implemented**. And the resilient-layer measurement expects a resonant frequency +that has already been extrapolated to zero force amplitude by clause 7 of +EN 29052-1, a procedure that is not implemented, and an airflow resistivity +supplied as an input rather than measured in place. Nothing in this section +predicts a material from its chemistry or its manufacture: the models run +forwards from measured macroscopic parameters — flow resistivity, porosity, +tortuosity — to an impedance, and there is no inverse solver that recovers +those parameters from a measured impedance curve. + +## Before and after these pages + +Every coefficient on these pages is derived from band levels or from a +transfer function between microphones, so the filtering, weighting and +calibration that produce them are in [Signal analysis](https://jmrplens.github.io/phonometry/signals/), +and [Build a sound level meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) runs +that chain end to end on one runnable page. The derivations are in [Materials +and surfaces theory](https://jmrplens.github.io/phonometry/reference/theory/materials-surfaces/): the characterisation +quantities, the in-situ subtraction and the scattering and diffusion +coefficients. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. + --- @@ -24526,15 +25330,68 @@ Source: https://jmrplens.github.io/phonometry/materials/resilient/ # Resilient layers -A floating floor works because a soft layer decouples it from the structure -below, and how well it works is set by one number: the dynamic stiffness per -unit area of that layer. +A floating floor is a mass-spring system: the screed is the mass, the resilient +layer is the spring, and the impact improvement the pair buys begins above the +resonance they set. That resonance is fixed by the mass per unit area m' of the +slab, in kg/m², and by the **dynamic stiffness per unit area** s' of the layer, +in MN/m³ — the dynamic force per unit area divided by the change in thickness it +produces. A 120 kg/m² screed on a 10 MN/m³ layer resonates near 46 Hz; halving +the stiffness moves that down by a factor of the square root of two, and +everything the floor achieves in the rated bands follows from where the +resonance sits. This is why s' is the one number a resilient-layer datasheet +must carry, and why it is a *dynamic* stiffness: a static compression test +describes neither the audio frequency range nor the working preload. [Dynamic stiffness of resilient materials (EN 29052-1)](https://jmrplens.github.io/phonometry/materials/resilient/dynamic-stiffness/) -is the resonance measurement that gives it, with the enclosed-gas term that -makes a porous layer stiffer than its frame alone and the natural frequency the -finished floor ends up with. What the insulation design chapter does with that -number is in [Predicting resilient-layer performance](https://jmrplens.github.io/phonometry/buildings/design/resilient-layers/). +is the measurement that produces it. A 200 mm × 200 mm specimen carries an 8 kg +load plate — 200 kg/m² in total, which reproduces the roughly 2 kPa static +preload of a real floating floor — and a vertical exciter with an accelerometer +gives the fundamental resonance of the plate-on-specimen system, from which the +apparent stiffness follows directly. For an air-permeable material the pore air +is a second spring in parallel with the frame, and the standard adds it back +through an enclosed-gas term that depends on the loaded thickness: the installed +stiffness therefore depends on how the layer will be sealed and on its lateral +airflow resistivity, which is what the clause 8.2 regimes decide. The guide +chains all of it and renders the clause 9 test-report fiche. + +Two inputs come from outside this subsection. The resonant frequency has to be +extrapolated to zero force amplitude by the clause 7 procedure, and the airflow +resistivity is measured by ISO 9053 in +[Airflow Resistance](https://jmrplens.github.io/phonometry/materials/absorbers/airflow-resistance/) — note +that ISO 9053 reports it in Pa·s/m² while this page's argument is in kPa·s/m². +What the design side does with s' is +[Predicting resilient-layer performance](https://jmrplens.github.io/phonometry/buildings/design/resilient-layers/), +which turns it into the floating-floor improvement and the ISO 12354-1 Annex D +lining rating. + +## Pages in this section + +- [Dynamic stiffness of resilient materials (EN 29052-1)](https://jmrplens.github.io/phonometry/materials/resilient/dynamic-stiffness/): + the load-plate resonance method, the apparent stiffness it yields, the + enclosed-gas term for air-permeable layers, the airflow-resistivity regimes + of clause 8.2 and the clause 9 test-report fiche. + +## See also + +Pages elsewhere on the site that this section leans on: + +- [Airflow Resistance](https://jmrplens.github.io/phonometry/materials/absorbers/airflow-resistance/): the + ISO 9053 measurement of the lateral resistivity the regime rule needs. +- [Predicting resilient-layer performance](https://jmrplens.github.io/phonometry/buildings/design/resilient-layers/): + the consumer, where s' becomes a floating-floor improvement. + +## What this section does not cover + +The measurement starts one step after the signal. Clause 7's extraction of the +resonant frequency from the raw excitation-response record — by sinusoidal, +white-noise or pulse excitation — and its extrapolation to zero force amplitude +are **not implemented**: pass a resonant frequency that has already been +extrapolated. The lateral airflow resistivity is an input, not a measurement. +Clause 6's specimen-selection requirement of at least three 200 mm × 200 mm +specimens is not enforced, so nothing here objects if you characterise a +material from one. And the layer's other properties — creep under long-term +load, compressive strength, thermal performance — are outside the standard and +outside the library. --- @@ -24544,14 +25401,73 @@ Source: https://jmrplens.github.io/phonometry/materials/surfaces/ # Surfaces measured in place -Some surfaces cannot be cut into a sample and carried to a reverberation room. -A road pavement is the standing case: it is characterised where it lies, with a -source and a microphone above it and a time window that separates the reflection -from everything else. +A reverberation-room or impedance-tube coefficient describes a *sample*. Some +surfaces have no sample. A pavement cannot be cut out and carried to a +laboratory without destroying the very thing that governs its absorption — the +connected pore structure of the laid and compacted layer — and a core taken from +it is no longer the surface a tyre rolls on. In-situ methods answer the question +where the surface is, and they pay for it with a geometry problem: the +microphone hears the direct sound and the surface reflection together, so the +method is built around separating them in **time** rather than in space. [In-situ road-surface absorption](https://jmrplens.github.io/phonometry/materials/surfaces/road-absorption/) -implements both ISO 13472 methods, with the Adrienne window the standard -prescribes and the geometry corrections the measurement needs. +implements both parts of ISO 13472 and, more usefully, states which one a given +pavement allows. The **subtraction technique** of Part 1 puts a source and a +microphone above the surface, subtracts a free-field reference measurement and +applies the Adrienne window to keep the reflection and discard everything after +it. It handles the full range from reflective to highly absorbing pavements, +covers 250 Hz to 4 kHz, and averages over a patch metres across — a 5 ms window +gives a maximum sampled-area radius of about 1.34 m, roughly 5.6 m² of road, so +it sees texture and joints rather than one spot. The **spot method** of Part 2 +seals a short portable tube onto the pavement and reads it with the two-microphone +transfer-function routine. It needs only a flat, sealable patch and minutes per +point, so it can sit in a wheel track or on a narrow strip, but it is scoped to +reflective surfaces, is declared unreliable once the measured absorption exceeds +0.15, and stops at 1600 Hz — which matters, because the tyre-road noise the +measurement usually serves peaks around 1 kHz and has content beyond that +ceiling. + +They are complements, not competitors: Part 2's own introduction expects the two +to agree between 315 Hz and 1600 Hz, and both report the same quantity, the +normal-incidence absorption coefficient in one-third-octave bands. A +low-absorption lane can therefore be surveyed with the tube and anchored with a +subtraction measurement at a few positions. That number is what a low-noise +pavement specification is written against, and what the ground term of an +outdoor propagation model consumes. + +## Pages in this section + +- [In-situ road-surface absorption](https://jmrplens.github.io/phonometry/materials/surfaces/road-absorption/): + the ISO 13472-1 subtraction technique with the Adrienne window and its + geometry and validity helpers, the ISO 13472-2 spot tube with its + applicability limits, and the comparison that decides between them. + +## See also + +Pages elsewhere on the site that this section leans on: + +- [Impedance Tube](https://jmrplens.github.io/phonometry/materials/absorbers/impedance-tube/): the + ISO 10534-2 two-microphone reduction the spot method reuses unchanged. +- [Sound Absorption Measurement and Rating](https://jmrplens.github.io/phonometry/materials/absorbers/absorption-measurement/): + the laboratory route, for materials that can be brought indoors. +- [Environment and transport](https://jmrplens.github.io/phonometry/environment/): where a road's + absorption is consumed, as the ground term of an outdoor prediction. + +## What this section does not cover + +**Edition status matters here more than anywhere else in this area.** The +implementation follows ISO 13472-1:2002 and ISO 13472-2:2010; both have since +been revised — 2022 and 2025 respectively — and those revisions are **not** +implemented, so a report that cites the current edition cannot cite these +functions without qualification. The spot method's own signal processing is not +duplicated either: only its geometry, validity and correction helpers live here, +and the two-microphone transfer-function reduction is the ISO 10534-2 routine of +[Impedance Tube](https://jmrplens.github.io/phonometry/materials/absorbers/impedance-tube/). Nothing in +this subsection measures the noise a surface *generates* — the tyre-road source +term is CNOSSOS territory, in [Environmental +sources](https://jmrplens.github.io/phonometry/environment/sources/) — and no in-situ method is provided +for any surface other than a road: a wall or a ceiling measured in place is +outside both parts of ISO 13472. --- @@ -25146,17 +26062,52 @@ statistics. The perceptual consequences of a shifted threshold, such as reduced speech intelligibility, are picked up by the SII in the [Speech section](https://jmrplens.github.io/phonometry/perception/speech/). +**Three pages, three different decibels**, and keeping them apart is most of the +work. A **hearing threshold level** is in dB HL, measured relative to the +audiometric zero, so 0 dB HL is a *different* sound pressure at every frequency +— exactly what ISO 389-7 tabulates. A **daily exposure level** is in +A-weighted decibels normalised to eight hours: an energy dose of the sound +outside the ear, with no listener in it. A **threshold shift** is a difference +of two dB HL values, so it may be added to a hearing level and never to a sound +pressure level. The chain between them runs one way only: ISO 9612 delivers a +single A-weighted LEX,8h into the ISO 1999 formulae, which return dB HL. The +only bridge back from hearing level to physical sound pressure is the ISO 389-7 +reference threshold on the threshold page — which is also what the SII needs +when a raised threshold is used as an input. + ## Pages in this section -- [Hearing threshold (age and reference zero)](https://jmrplens.github.io/phonometry/perception/hearing/hearing-threshold/): +In the order the chain runs. + +- **Baseline** — [Hearing threshold (age and reference zero)](https://jmrplens.github.io/phonometry/perception/hearing/hearing-threshold/): the ISO 7029:2017 age-related threshold distribution and the ISO 389-7:2005 reference threshold of hearing. -- [Noise-induced hearing loss (ISO 1999)](https://jmrplens.github.io/phonometry/perception/hearing/noise-induced-hearing-loss/): - NIPTS and its population distribution, and the combination with age into - HTLAN. -- [Occupational Noise Exposure (ISO 9612)](https://jmrplens.github.io/phonometry/perception/hearing/occupational-exposure/): +- **Exposure** — [Occupational Noise Exposure (ISO 9612)](https://jmrplens.github.io/phonometry/perception/hearing/occupational-exposure/): the three measurement strategies for LEX,8h with the Annex C uncertainty budget. +- **Damage** — [Noise-induced hearing loss (ISO 1999)](https://jmrplens.github.io/phonometry/perception/hearing/noise-induced-hearing-loss/): + NIPTS and its population distribution, and the combination with age into + HTLAN. + +## What this section does not cover + +**Nothing here is a verdict about a person.** ISO 1999 does not define a hearing +handicap or a compensable fence — that line is set by national regulation, and +the library applies none of it, so you supply and check the criterion yourself. +The same is true of the exposure action values: the LEX,8h and its one-sided +95 % upper limit come out of ISO 9612, and the numbers they are compared against +are in your jurisdiction's directive, not here. + +Two implementation boundaries follow the standards. Only **database A** is +implemented for ISO 1999: `htlan` always draws its age component from +ISO 7029:2017, and substituting a nationally measured control population +(clauses 6.2.3 and 6.2.4) means computing that database elsewhere and passing it +in. Of ISO 389-7, only the Table 1 reference values are implemented, not the +procedures by which they were established. + +And no audiometry happens here. Nothing generates a test tone, drives an +audiometer or corrects for an earphone coupler: the pages consume and produce +threshold levels as data. --- @@ -25679,7 +26630,45 @@ hearing-damage model of ISO 1999. A good entry point is [Loudness](https://jmrplens.github.io/phonometry/perception/psychoacoustics/loudness/): it introduces the perceptual scale (the sone) and the auditory models that most other -metrics in this section reuse or extend. +metrics in this section reuse or extend. The derivations behind these methods — +the critical-band and excitation-pattern models, the masking formulations and +the modulation-transfer chain — are gathered on the [perception theory +page](https://jmrplens.github.io/phonometry/reference/theory/perception/), which the individual guides +cite clause by clause. + +### Reading the numbers + +Almost every perceptual scale in this section is defined by a **reference +sound** rather than by a physical unit, so the first thing to learn about each +is its anchor: the sound that reads exactly 1. + +| Quantity | Unit | The sound that reads 1 | Criterion? | Page | +|---|---|---|---|---| +| Loudness | sone | 1 kHz tone at 40 dB SPL (also 40 phon) | none | [Loudness](https://jmrplens.github.io/phonometry/perception/psychoacoustics/loudness/) | +| Sharpness | acum | critical-band-wide noise at 1 kHz, 60 dB SPL | none | [Sound Quality Metrics](https://jmrplens.github.io/phonometry/perception/psychoacoustics/sound-quality/) | +| Roughness | asper | 1 kHz tone at 60 dB, fully modulated at 70 Hz | 0.2 asper (informative) | [Sound Quality Metrics](https://jmrplens.github.io/phonometry/perception/psychoacoustics/sound-quality/) | +| Fluctuation strength | vacil | the same carrier modulated at 4 Hz | 0.2 vacil (informative) | [Sound Quality Metrics](https://jmrplens.github.io/phonometry/perception/psychoacoustics/sound-quality/) | +| Tonality | tu_HMS | 1 kHz tone at 40 dB SPL | 0.4 tu_HMS (informative) | [Sound Quality Metrics](https://jmrplens.github.io/phonometry/perception/psychoacoustics/sound-quality/) | +| Tone audibility | dB | — (a level difference above masking) | ISO 1996-2 adjustment | [Tone audibility](https://jmrplens.github.io/phonometry/perception/psychoacoustics/tone-audibility/) | +| STI | 0 to 1 | — | Annex F letters, U to A+ | [Speech Transmission Index](https://jmrplens.github.io/phonometry/perception/speech/speech-transmission/) | +| SII | 0 to 1 | — | none standardised | [Speech Intelligibility Index](https://jmrplens.github.io/phonometry/perception/speech/speech-intelligibility/) | +| Threshold shift | dB HL | — (a difference of two hearing levels) | ISO 1999 statistics | [Noise-induced hearing loss](https://jmrplens.github.io/phonometry/perception/hearing/noise-induced-hearing-loss/) | + +Loudness, sharpness, roughness and fluctuation strength are **ratio scales +with no pass/fail line**: twice the number means twice the sensation, so a +20-sone appliance is heard as about twice as loud as a 10-sone one, which is +why appliance declarations set limits in sones rather than in decibels. The +tonal metrics and the speech indices do carry criteria, which is why the tone +pages end in a verdict and the loudness pages do not. + +The three speech numbers all live in [0, 1] and are **not the same number**. An +STI of 0.6 falls in Annex F band D, typical of a good lecture room; an SII of +0.6 means roughly 60 % of the importance-weighted speech spectrum is audible; +and a STOI of 0.6 has no absolute meaning at all, because the mapping from +index to words understood is fitted per listening-test corpus, so STOI is only +ever read as a difference between two processors on the same material. Never +substitute one for another in a specification, and when a requirement quotes a +number, check which standard it belongs to before computing anything. ## [Psychoacoustics](https://jmrplens.github.io/phonometry/perception/psychoacoustics/) @@ -25733,6 +26722,49 @@ The hearing threshold, what noise does to it, and how exposure is measured. the task-based, job-based and full-day strategies for LEX,8h with the Annex C uncertainty budget. +## What this section does not cover + +**No listener is tested here, and no verdict about a person is issued.** Every +model on these pages predicts what a population, or a standard listener, would +perceive from a calibrated signal: none of them runs an audiometric session, +none diagnoses a hearing loss, and ISO 1999 explicitly declines to define a +hearing handicap or a compensable fence — that line is national regulation, and +nothing here applies one. Every prominence and audibility verdict is likewise +the numeric criterion only: ECMA-418-1 also requires aural confirmation of a +prominent tone, and that stays with you. + +**Everything is monaural.** The binaural combinations of ECMA-418-2 are not +implemented, so a two-channel recording is analysed one ear at a time, and +nothing here models localisation, spatial release from masking or binaural +loudness summation. + +**No listening test is replaced.** STOI returns the correlation-based index and +not a percentage of words understood, because that mapping is fitted per +listening-test corpus; the SII returns an audibility fraction and not a score; +and no page predicts annoyance in a community, which is a social-survey +quantity rather than a psychoacoustic one — the community indicators are +[Environment and transport](https://jmrplens.github.io/phonometry/environment/). + +Finally, these models start from a **calibrated** signal or spectrum in +pascals, because every one of them is level-dependent. Feeding them raw +soundcard samples produces a number with an arbitrary reference, which is a +different failure from a wrong answer: it looks plausible. + +## Before and after these pages + +Every model here consumes a calibrated signal or a calibrated spectrum, so the +calibration and weighting that produce one are in [Signal +analysis](https://jmrplens.github.io/phonometry/signals/), and [Build a sound level +meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) runs that chain end to end on +one runnable page. The derivations are in [Perception and hearing +theory](https://jmrplens.github.io/phonometry/reference/theory/perception/), from the equal-loudness contours to the +modulation transfer function. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. + --- @@ -26152,6 +27184,25 @@ emphasis), tonality (audible discrete tones), roughness (fast modulation) and fluctuation strength (slow modulation). And on top sits a combined **annoyance** metric that weighs loudness, sharpness, roughness and fluctuation strength into a single scalar. +Every metric here is a magnitude fixed by a **reference sound** rather than by a +physical unit, and knowing the anchor is what makes a number readable: 1 sone is +a 1 kHz tone at 40 dB SPL, 1 acum a critical-band-wide noise at 1 kHz and 60 dB, +1 asper a 1 kHz carrier fully modulated at 70 Hz at 60 dB, 1 vacil the same +carrier modulated at 4 Hz, and 1 tu_HMS a 1 kHz tone at 40 dB. They are +tabulated together, beside the speech and hearing scales, under "Reading the +numbers" on the [section overview](https://jmrplens.github.io/phonometry/perception/). + +The two families of pages differ in purpose, and that difference decides what +you can conclude. Loudness, sharpness, roughness and fluctuation strength are +**open-ended magnitudes** for comparing designs: there is no pass mark, and the +useful statement is always a comparison. The two tonal pages end in a **verdict +against a criterion**, because they exist to justify a declaration or a penalty. +ECMA-418-2 sits between the two: it attaches informative prominence criteria to +its tonality (0.4 tu_HMS on a band), roughness (0.2 asper) and fluctuation +strength (0.2 vacil_HMS), which is the closest thing to a pass mark in the +magnitude family. All of them share one prerequisite: an absolutely calibrated +signal in pascals, because every metric here is level-dependent. + [Loudness](https://jmrplens.github.io/phonometry/perception/psychoacoustics/loudness/) is the foundation page: the Zwicker reference method of ISO 532-1 with its one-page fiche, together with the ISO 226:2023 equal-loudness contours that anchor the perceptual scale for pure @@ -26200,6 +27251,37 @@ normative model of the same sensation, under a different unit name. the Fastl & Zwicker annoyance model and the fluctuation-strength models it consumes. +## What this section does not cover + +**Everything here is monaural.** The binaural combinations ECMA-418-2 defines +for loudness, roughness and fluctuation strength are not implemented, so a +stereo or binaural recording is analysed one channel at a time, and no model +here accounts for localisation or for spatial release from masking. Two +optional refinements are also left out: the entropy weighting of clause 7.1.6, +which needs an external rotational-speed signal, and the small adjustment +footnote 47 permits. + +**A verdict is never complete.** The `prominent` flag the tone-prominence +functions return is the numeric criterion alone; ECMA-418-1 also requires aural +confirmation and a lower-threshold-of-hearing screen, both of which stay with +the caller. The tone-audibility module is weighting-agnostic and does **not** +apply the A-weighting clause 5.3.2 requires, so A-weight the spectrum before +passing it, and it takes an already-computed narrow-band spectrum rather than +building one from a recording. + +Two documented deviations are worth knowing. ISO 532-3 prescribes resampling to +32 kHz before the running FFT; this implementation works at the native rate, a +deviation that stays inside the standard's expanded uncertainty but that you +should undo by resampling first if strict clause-by-clause conformance matters. +And the Osses 2016 fluctuation-strength signal model is validated for +amplitude-modulated stimuli only, with a documented floor — a steady 1 kHz tone +reads about 0.09 vacil rather than 0. + +Finally, none of these metrics is a community response: annoyance here is a +laboratory sensation computed from a signal, while the annoyance a +neighbourhood reports is a social-survey quantity handled through the +indicators of [Environment and transport](https://jmrplens.github.io/phonometry/environment/). + --- @@ -27812,6 +28894,21 @@ rates a *listening condition*: this speech spectrum, in this noise, heard by this listener. A reverberant lecture hall is an STI problem; a hearing-aid fitting or a cockpit warning heard over engine noise is an SII problem. +The shared [0, 1] range is a coincidence of normalisation, not a common scale, +and 0.6 means three different things on the three. An **STI** of 0.6 falls in +band D of the IEC 60268-16 Annex F qualification ladder, whose eleven letters +run from U below 0.36 to A+ at 0.76 and above; that is a good lecture room, and +a voice-alarm specification typically sets its minimum a couple of bands lower. +An **SII** of 0.6 means roughly 60 % of the importance-weighted speech spectrum +is audible to that listener in that noise; the index is a fraction by +construction and carries no standardised qualification ladder at all. A +**STOI** of 0.6 has no absolute meaning: the mapping from the index to a +percentage of words understood is fitted per listening-test corpus and is +deliberately not implemented, so STOI is only ever read as a difference between +two processors on the same material. Never substitute one index for another in +a specification, and when a requirement quotes a number, check which standard +it belongs to before computing anything. + The physical difference sits in what each index models. STI (**IEC 60268-16**) works on the speech *envelope*: intelligibility degrades when reverberation and noise flatten the slow intensity modulations of speech, @@ -27838,11 +28935,16 @@ speech, how intelligible is the result? They rate the processing itself, which is why they are the standard yardstick for noise reduction and source separation. -The two connect back to the rest of the library naturally: the STI consumes -the impulse responses of +The two standardised indices connect back to the rest of the library naturally: +the STI consumes the impulse responses of [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/), and the SII consumes the hearing thresholds quantified in -[Hearing threshold](https://jmrplens.github.io/phonometry/perception/hearing/hearing-threshold/). +[Hearing threshold](https://jmrplens.github.io/phonometry/perception/hearing/hearing-threshold/). STOI and +ESTOI have an upstream too, but a different kind of one: they take waveforms, +so what feeds them is whatever produced the clean and the degraded recording — +which is why they sit beside the signal-processing tools of [Signals and +spectra](https://jmrplens.github.io/phonometry/signals/spectra/) rather than beside a measurement +standard. ## Pages in this section @@ -27856,6 +28958,27 @@ hearing thresholds quantified in the correlation-based measures for time-frequency weighted noisy speech, from a clean/degraded pair. +## What this section does not cover + +**No listener is tested, and no score is predicted.** STOI returns the +correlation index and not the percentage of words understood, because the +logistic mapping is fitted per listening-test corpus; the SII returns an +audibility fraction rather than a score; and no page here reproduces a +subjective intelligibility test. **No signal is acquired either**: the STI page +implements the STIPA direct signal and the indirect computation from an impulse +response, but the full 14-modulation-frequency direct measurement of clause 6.3 +is not implemented, so a chain with severe distortion needs measuring equipment +rather than this library. + +Two coverage limits inside the SII are worth checking before use: the raised, +loud and shouted speech spectra are carried for the one-third-octave procedure +only, and the tabulated band-importance functions are each table's +average-speech compromise, with Annex B's material-specific alternatives left to +you through the `band_importance=` argument. There is no resampling between the +four band procedures — each is fed spectra on its own bands. And the female +speech option is not missing from the STI: Edition 5 of IEC 60268-16 removed it, +so there is nothing left to implement. + --- @@ -31583,6 +32706,360 @@ it; the list grows as guides gain their References sections. --- + +Source: https://jmrplens.github.io/phonometry/reference/glossary/ + +# Glossary + +The guides each open with the standard they implement, so a quantity is always +defined where it is used. This page is the other direction: you have a symbol, +from a report, a specification or a colleague's email, and you want to know +what it is, what it is measured in, which document defines it and where in this +documentation it is computed. A quantity that is not here is still defined +where it is computed: every guide states its quantities before its code. + +Two conventions govern the line that says where a quantity is defined, and both +matter more than they seem to. +Where a clause, formula or table number appears, it is the one the +implementation cites, taken from the standard the guide implements. Where only +a designation appears, the standard is established but the defining clause is +not stated anywhere in this documentation, and inventing a plausible one would +be worse than leaving it out. A handful of quantities have no governing +standard at all; their source is the paper or book the model comes from, named +as such. + +A third convention governs the unit, and it is the one most often lost between +a measurement and a report. A decibel is always a ratio, so an entry whose unit +reads *re* something — dB re 20 µPa in air, dB re 1 µPa in water, dB re 1 pW +for power, dB re 1 pW/m² for intensity, dB re 50 nm/s for a velocity level — is +an **absolute level**, and the reference quantity is part of the unit. An entry +whose unit is a bare dB is a **level difference or a rating**: $D$, $R$, $R_w$, +$C$, $C_{tr}$, $\Delta L_w$, $K_{ij}$, where the reference cancels and no +reference applies. Two numbers can only be added or subtracted when they are of +the same kind, and the commonest error in a report is subtracting two levels +referred to different quantities, or adding a rating to a level. + +## Symbols that collide + +Symbols collide across domains, and the glossary does not pretend otherwise. +Some collisions are harmless because the two quantities never meet in one +calculation; others change a number by tens of decibels, or by a whole rating +step, and those are the ones below. Where two entries share a symbol, the +qualifier in brackets after the notation says which one you are reading, and on +the site a symbol index above the cards lists every meaning of a letter side by +side — the answer for a reader who has the symbol and not the domain, which is +the one case the grouping by domain cannot serve. + +| Symbol | Meanings that are not the same quantity | +| :--- | :--- | +| $C$ | The **decay curvature** $100\,(T_{30}/T_{20} - 1)$ in per cent, and the ISO 717-1 **spectrum adaptation term** in decibels. Both are defined on one page, [Rooms and buildings](https://jmrplens.github.io/phonometry/reference/theory/rooms-buildings/), a couple of sections apart. | +| TL | A partition's **transmission loss**, a duct element's **transmission loss** (a different measurement, with an anechoic termination in the definition) and the underwater **propagation loss** of the sonar equation. Three domains, three unrelated calculations. | +| NR | The **noise rating** curve family of a room criterion, and the **noise reduction** $L_{p1} - L_{p2}$ between two rooms in noise control. | +| $\alpha$ | The **absorption coefficient** of a surface, the **atmospheric attenuation coefficient** per unit length (dB/m here, dB/km in ISO 9613-2), the **volume absorption coefficient** of sea water (dB/km), and the **tortuosity** $\alpha_\infty$ of a porous model, which is not an absorption at all. | +| $A$ | An **equivalent absorption area** in m², an **accelerance** in 1/kg, and the **total attenuation** of ISO 9613-2 in dB. | +| $D$ | A **level difference**, the definition $D_{50}$, the withdrawn **D-weighting**, the directivity correction $D_c$ and barrier screening $D_z$ of ISO 9613-2, the spatial decay rate $D_{2,S}$ of an open-plan office, and a microphone's **directivity index** $D = 20\log_{10}(M_0/M_\mathrm{diff})$. | +| $H$ | The **receptance** of ISO 7626-1, the **frequency response estimators** $H_1$ and $H_2$, and the **harmonic transfer functions** $H_n$ of a swept-sine measurement — where $H_2$ is the second harmonic, not the noise-on-input estimator. | +| $\eta$ | The **loss factor** of a resilient element, the **coupling loss factor** $\eta_{ij}$ of a junction, and the **internal** and **total** loss factors of a building element. | +| $\tau$ | The **transmission factor** of a partition, the **time constant** of a detector, the **lag** of a correlation, and the **air temperature** in CNOSSOS-EU. | +| $T_s$ | The ISO 3382-1 **centre time** of a room impulse response, typically tens of milliseconds; the **structural reverberation time** of a plate, which is seconds; and the number of **months per year that studded tyres are fitted** in CNOSSOS-EU. | +| $R$ | The **sound reduction index** in building acoustics, the **airflow resistance** in materials, the **roughness** in psychoacoustics, and the **cumulative stress variable** of ISO 2631-5. | +| $\sigma$ | The **airflow resistivity** of a porous material, the **radiation efficiency** of a plate, and the **standard deviation** $\sigma_R$ of a building-acoustics measurement situation. | +| $L_N$, $L_n$ | $L_N$ is a **percentile level** in environmental noise, a **loudness level** in phon, and the level equivalent to a microphone's **inherent noise**; $L_n$, with a lower-case subscript, is the **normalized impact sound pressure level** of ISO 10140-3. In building acoustics the case of the subscript is the whole difference. | +| $v_0$ | A **reference velocity** of 1 nm/s in EN 15657 and EN 12354-5, and of 50 nm/s in ISO/TS 7849 and ISO 9611 — 34 dB apart, in one section of one area. | +| $F_0$ | A **reference force** of 1 N in ISO 16283-2, and of 1 µN in EN 15657 — 120 dB apart. | +| $K_1$ | The ISO 3744 **background noise correction** in dB, and a CNOSSOS-EU **temperature coefficient** in dB/°C. | +| $F$ | **Fluctuation strength** in vacil, the **Fast** time weighting, and the **modulation frequency** in $m(F)$ — all three on this page. | + +Where two meanings meet inside one navigation section, the guide says so at +first use; this table is the site-wide list. + +For the source of each definition rather than the definition itself, the +[bibliography](https://jmrplens.github.io/phonometry/reference/bibliography/) lists every cited work with +a DOI or publisher link, and the +[conformance report](https://jmrplens.github.io/phonometry/reference/conformance/) shows the numerical +check that pins each quantity to its standard's own expected value. + +## Sound pressure, power and intensity levels + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $L_p$ | Sound pressure level: twenty times the base-10 logarithm of the r.m.s. sound pressure over the reference pressure. | dB re 20 µPa | IEC 61672-1:2013 | [Calibration and dBFS](https://jmrplens.github.io/phonometry/signals/metrology/calibration/) | +| $L_{eq}$ | Equivalent continuous sound pressure level: the level of the steady sound carrying the same mean-square pressure over the interval. | dB re 20 µPa | IEC 61672-1:2013 | [Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/) | +| $L_{Aeq}$ | The same integral applied to the A-weighted signal, the default descriptor of environmental and occupational noise. | dB re 20 µPa | IEC 61672-1:2013 | [Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/) | +| $L_{AE}$, SEL | Sound exposure level: the whole A-weighted energy of a single event normalised to one second. | dB re (20 µPa)²·s | IEC 61672-1:2013, Equation 8 (Table 4) | [Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/) | +| $L_{Cpeak}$ | C-weighted peak sound level: the absolute maximum of the C-weighted pressure, not a time-weighted maximum. | dB re 20 µPa | IEC 61672-1:2013, subclause 5.13 | [Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/) | +| $L_N$ ($L_{10}$, $L_{50}$, $L_{90}$) | Percentile level: the level exceeded $N$ % of the measurement time, read off the time-weighted level distribution. | dB re 20 µPa | ISO 1996-2:2017 (Annex I uses $L_{90}$ as the residual level) | [Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/) | +| $L_W$, SWL | Sound power level: the power a source radiates, referred to 1 pW. | dB re 1 pW | ISO 3745:2012, Clause 8 | [Sound Power](https://jmrplens.github.io/phonometry/devices/emission/sound-power/) | +| $L_I$ | Sound intensity level: the magnitude of the intensity vector referred to 1 pW/m², with the flow direction reported separately as a sign. | dB re 1 pW/m² | IEC 61043:1993 | [Sound Intensity (p-p)](https://jmrplens.github.io/phonometry/devices/emission/intensity/) | +| $L_p - L_I$ | Pressure-intensity index: the difference between the pressure and intensity levels at a position, the field indicator that qualifies an intensity measurement. | dB | ISO 9614-1:1993, Equation (A.3) | [Sound Intensity (p-p)](https://jmrplens.github.io/phonometry/devices/emission/intensity/) | +| $K_1$ | Background noise correction: what is subtracted from the surface level to remove the background's own contribution, $-10\log_{10}(1 - 10^{-0,1\Delta L_p})$ from the source-on minus source-off margin. It is a cliff rather than a slope: above a 15 dB margin it is taken as zero, between 6 and 15 dB it is computed, and below 6 dB the standard caps it at 1,3 dB and warns that the result has lost accuracy. | dB | ISO 3744:2010, 3.16 and Equation (16) | [Sound Power by Pressure Methods](https://jmrplens.github.io/phonometry/devices/emission/sound-power-pressure/) | +| $K_2$ | Environmental correction: what is subtracted to remove the energy the test room reflects back onto the measurement surface, $10\log_{10}(1 + 4S/A)$ from the surface area and the room's equivalent absorption area. Its ceiling is the grade of accuracy rather than a preference: an engineering-grade result is only valid where $K_{2A} \le 4$ dB, the survey method allows 7 dB, and a qualified hemi-anechoic room gives zero. | dB | ISO 3744:2010, 3.17 and Formula (A.2) | [Sound Power by Pressure Methods](https://jmrplens.github.io/phonometry/devices/emission/sound-power-pressure/) | +| $L_{WAd}$, $K_{WA}$ | The declared noise emission of a machine: either the dual-number form, the measured $L_{WA}$ and its uncertainty $K_{WA}$ stated separately, or the single-number form $L_{WAd} = L_{WA} + K_{WA}$, both rounded to the nearest whole decibel. The declared value is an upper limit a verification measurement is unlikely to exceed, not a best estimate, so it is never the number to feed into a propagation calculation. | dB re 1 pW | ISO 4871:1996, 3.15 and 3.16 | [Sound Power](https://jmrplens.github.io/phonometry/devices/emission/sound-power/) | +| $L_{WA}$ (apparent, wind turbine) | Apparent sound power level of a wind turbine: the A-weighted level of a point source at the rotor centre that would radiate the same downwind emission as the machine measured. It is written like a sound power level but is not one in the usual sense: the ground-board measurement builds a downwind reflection into it, so feeding it to a propagation model that adds a ground effect counts that reflection twice. | dB re 1 pW | IEC 61400-11:2012+AMD1:2018, 3.1 and Formula (26) | [Wind-turbine noise: sound power and tonal audibility](https://jmrplens.github.io/phonometry/environment/sources/wind-turbine-noise/) | + +## Environmental and occupational descriptors + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $L_{den}$ | Day-evening-night level: the energy mean of the three periods with 5 dB added to the evening and 10 dB to the night. | dB re 20 µPa | ISO 1996-1:2016, 3.6.4 | [Environmental Levels (ISO 1996-1/-2)](https://jmrplens.github.io/phonometry/environment/assessment/environmental-levels/) | +| $L_{dn}$ | Day-night level: the same construction with the 10 dB night penalty only. | dB re 20 µPa | ISO 1996-1:2016, 3.6.5 | [Environmental Levels (ISO 1996-1/-2)](https://jmrplens.github.io/phonometry/environment/assessment/environmental-levels/) | +| $L_r$ | Rating level: the whole-day composite level after the source-character and time-of-day adjustments. | dB re 20 µPa | ISO 1996-1:2016, clause 6.5 (Formulae 5 and 6) | [Environmental Levels (ISO 1996-1/-2)](https://jmrplens.github.io/phonometry/environment/assessment/environmental-levels/) | +| $L_{Ar,T}$ | Rating level of an impulsive source over a reference interval, $L_{Aeq}$ plus the graduated impulse adjustment. | dB re 20 µPa | NT ACOU 112:2002, clause 8 | [Impulsive-sound prominence (NT ACOU 112)](https://jmrplens.github.io/phonometry/environment/assessment/impulsive-sound/) | +| $K_I$ | Impulse adjustment added to $L_{Aeq}$, graduated by the predicted prominence of the impulses. | dB | NT ACOU 112:2002, clause 8 | [Impulsive-sound prominence (NT ACOU 112)](https://jmrplens.github.io/phonometry/environment/assessment/impulsive-sound/) | +| $E$ | Sound exposure: the time integral of the squared A-weighted sound pressure over the exposure period. | Pa²h | IEC 61252:1993, 3.1 | [Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/) | +| $L_{EX,8h}$, $L_{EP,d}$ | Daily noise exposure level: the steady level that, sustained over a nominal 8 h day, carries the same A-weighted sound exposure as the measured one. | dB re 20 µPa | IEC 61252:1993, 3.3 | [Occupational Noise Exposure (ISO 9612)](https://jmrplens.github.io/phonometry/perception/hearing/occupational-exposure/) | +| $L_{p,A,eqT}$ | A-weighted equivalent continuous level of a task, a job sample or a full day, the building block $L_{EX,8h}$ is assembled from. | dB re 20 µPa | ISO 9612:2009, clauses 9 to 11 | [Occupational Noise Exposure (ISO 9612)](https://jmrplens.github.io/phonometry/perception/hearing/occupational-exposure/) | +| NIPTS | Noise-induced permanent threshold shift: the median hearing loss attributable to a stated exposure level, duration and audiometric frequency. | dB | ISO 1999:2013 | [Noise-induced hearing loss (ISO 1999)](https://jmrplens.github.io/phonometry/perception/hearing/noise-induced-hearing-loss/) | +| HTLAN | Hearing threshold level associated with age and noise: the NIPTS combined with the age component. | dB | ISO 1999:2013 | [Noise-induced hearing loss (ISO 1999)](https://jmrplens.github.io/phonometry/perception/hearing/noise-induced-hearing-loss/) | +| $L_{Keq,T}$ | Corrected equivalent level: the A-weighted equivalent level of the interval plus the three penalties for tonal, low-frequency and impulsive character, $L_{Aeq,T} + K_t + K_f + K_i$. It is the quantity the Spanish immission limits are written against, so an activity is judged on it and not on the bare $L_{Aeq}$. | dB re 20 µPa | RD 1367/2007 (Spain), Annex I A.2 c | [Spanish Noise Regulation (RD 1367/2007)](https://jmrplens.github.io/phonometry/environment/assessment/spanish-noise-regulation/) | +| $K_t$, $K_f$, $K_i$ | The three character penalties added to $L_{Aeq,T}$: $K_t$ for emergent tonal components, read from an unweighted one-third-octave spectrum against the arithmetic mean of the two adjacent bands; $K_f$ for low-frequency content, from $L_{Ceq} - L_{Aeq}$; and $K_i$ for impulsive content, from $L_{AIeq} - L_{Aeq}$. They are stepped, not continuous, so a spectrum just short of a threshold scores nothing. | dB | RD 1367/2007 (Spain), Annex IV A.3.3 | [Spanish Noise Regulation (RD 1367/2007)](https://jmrplens.github.io/phonometry/environment/assessment/spanish-noise-regulation/) | + +## Outdoor propagation + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $A$ (octave-band attenuation) | Total octave-band attenuation between an outdoor point source and a downwind receiver: the sum $A_{div} + A_{atm} + A_{gr} + A_{bar} + A_{misc}$ subtracted from the sound power level and the directivity correction. Everything the method knows about the path between source and receiver is in this one term. | dB | ISO 9613-2:1996, Equations (3) and (4) | [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) | +| $A_{div}$ | Geometrical divergence: $20\log_{10}(d/d_0) + 11$ dB, the spreading of a point source radiating into free space with $d_0 = 1$ m. The 11 dB constant is what refers the level to a sound power level rather than to a level measured at one metre. | dB | ISO 9613-2:1996, Equation (7) | [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) | +| $A_{atm}$ | Atmospheric absorption: the attenuation coefficient of the air times the path length. It is the term that removes the high bands over long distances, and it depends strongly on frequency, temperature and humidity — which is why a long-range prediction has to state the weather it assumed. | dB | ISO 9613-2:1996, Equation (8) | [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) | +| $\alpha$ (atmospheric) | Atmospheric attenuation coefficient: the excess loss per unit path length from classical absorption and the nitrogen and oxygen relaxation processes, a function of frequency, temperature, humidity and pressure. Watch the length unit: the library returns decibels per metre while ISO 9613-2 Table 2 tabulates decibels per kilometre, a factor of a thousand. | dB/m (ISO 9613-2 tabulates dB/km) | ISO 9613-1:1993, Equation (5) | [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) | +| $A_{gr}$ | Ground effect: the interference between the direct path and the path reflected off the ground, split into a source region, a receiver region and the middle between them. Over hard ground it comes out negative — a net gain, not a loss — which is why it cannot be treated as an attenuation that is merely optional. | dB | ISO 9613-2:1996, Equation (9) | [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) | +| $A_{bar}$ | Barrier attenuation: the screening $D_z$ of the diffracting edge minus the ground effect the barrier removes, floored at zero. The subtraction is the point: a barrier over soft ground buys much less than its raw screening, because the ground was already doing part of the work. | dB | ISO 9613-2:1996, Equation (12) | [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) | +| $C_{met}$ | Meteorological correction: what is subtracted from the downwind level to obtain a long-term average over many wind directions, driven by the local factor $C_0$ and by the source and receiver heights against the distance. It is zero close to the source and grows only where the path is long compared with the heights. | dB | ISO 9613-2:1996, Equations (21) and (22) | [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) | +| $D_c$ | Directivity correction: how far the level from the point source in the chosen direction departs from that of an omnidirectional source of the same sound power. It is the directivity index of the source plus an index for radiation into less than the full sphere, and it is 0 dB for an omnidirectional source in free space. | dB | ISO 9613-2:1996, Equation (3) | [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) | +| $N$ (Fresnel number) | Fresnel number of a screen: twice the extra path length the sound has to travel over the edge, divided by the wavelength. It is the single geometric parameter of the Kurze-Anderson insertion loss, which is why a barrier that works at 1 kHz can be worth almost nothing two octaves lower for the same geometry. | dimensionless | Bies, Hansen and Howard (2017), Equation 5.134; no governing standard | [Spherical ground effect and advanced barriers](https://jmrplens.github.io/phonometry/environment/propagation/ground-barriers/) | + +## Frequency and time weighting + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| A, C, Z | The normative frequency weightings: the ear-response curves applied before integration, Z being the flat reference. | dB | IEC 61672-1:2013, Annex E (acceptance limits in Table 3) | [Frequency Weighting (A, C, Z)](https://jmrplens.github.io/phonometry/signals/levels/weighting/) | +| G | Infrasound weighting, defined by its poles and zeros for the 0.25 Hz to 315 Hz range. | dB | ISO 7196:1995, Table 1 (nominal responses in Table 2) | [Special Weightings (G, B, D, AU)](https://jmrplens.github.io/phonometry/signals/levels/special-weightings/) | +| B | Historical mid-level weighting, withdrawn from the current meter standard. | dB | ANSI S1.4-1983, Appendix C (Formula C2) | [Special Weightings (G, B, D, AU)](https://jmrplens.github.io/phonometry/signals/levels/special-weightings/) | +| D | Historical aircraft-noise weighting, derived from the 40-noy perceived-noisiness contour. | dB | IEC 537:1976 (withdrawn) | [Special Weightings (G, B, D, AU)](https://jmrplens.github.io/phonometry/signals/levels/special-weightings/) | +| AU | Weighting for audible sound measured in the presence of ultrasound. | dB | IEC 61012:1990, subclause 2.2 (Tables 1 and 2) | [Special Weightings (G, B, D, AU)](https://jmrplens.github.io/phonometry/signals/levels/special-weightings/) | +| F, S, I | Fast, Slow and Impulse exponential time weightings: the detector ballistics that produce a displayed level. | s (time constant) | IEC 61672-1:2013 | [Time Weighting](https://jmrplens.github.io/phonometry/signals/levels/time-weighting/) | +| Performance class (0, 1, 2) | Performance class of a filter or an instrument: the width of the tolerance corridor its response has to stay inside, band by band. Class 1 and class 2 share the same design goals and differ in the acceptance limits and in the operating temperature range, class 2 being the looser; class 0, the laboratory reference grade, comes from the withdrawn IEC 61260:1995 and ANSI S1.11-2004 and the current edition no longer defines it. A class is a property of the response, not of the result: a class 2 bank does not make a measurement wrong, it makes its band levels less certain. | dB (tolerance) | IEC 61260-1:2014, 1.2 and Table 1 | [Filter Class Verification (IEC 61260-1)](https://jmrplens.github.io/phonometry/signals/filters/filter-compliance/) | +| K | K-weighting: the programme-loudness curve, a two-stage pre-filter that models the high-frequency boost a spherical head gives and then applies the revised low-frequency B-curve high-pass. It is applied per channel before the channel mean squares are summed and gated, and the LKFS designation records it. | dB | ITU-R BS.1770-5, Annex 1 | [Programme loudness and true peak (BS.1770 / EBU R 128)](https://jmrplens.github.io/phonometry/devices/broadcast/program-loudness/) | +| ITU-R 468 weighting | The broadcast noise weighting: zero at 1 kHz, peaking at $+12{,}2$ dB at 6,3 kHz and falling to $-29{,}9$ dB at 31,5 Hz, shaped to how audible a noise is rather than how loud a tone is. The Recommendation pairs it with a quasi-peak detector and quotes results as dB(468); AES17 reuses the same curve with an r.m.s. detector, which is a different number from the same filter. | dB | Recommendation ITU-R BS.468-4, Table 1 | [Electroacoustics: distortion and frequency response](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/) | +| $W_b$, $W_c$, $W_d$, $W_e$, $W_f$, $W_j$, $W_k$, $W_m$ (whole-body) | The whole-body frequency weightings, one parameter row each of the same four-stage filter: $W_k$ for the vertical axis and $W_d$ for the two horizontal ones in health and comfort, with $W_b$, $W_c$, $W_e$, $W_f$, $W_j$ and $W_m$ for ride comfort, the seat back, rotational axes, motion sickness and the head. The weighted acceleration $a_w$ is what comes out of them; the standard that names the curve is not the one that says where to apply it. | dimensionless | ISO 8041-1:2017, 5.6.1, Formulae (1) to (5) and Table 3 | [Human Vibration](https://jmrplens.github.io/phonometry/vibration/human/human-vibration/) | +| $W_h$ (hand-arm) | The hand-arm frequency weighting: one curve, band-limited from 8 Hz to 1 kHz, applied to each of the three axes before they are combined into the vibration total value. Unlike the whole-body case there is no axis multiplier, so the three weighted values enter the total on equal terms. | dimensionless | ISO 8041-1:2017, 5.6.1, Formulae (1) to (5) and Table 3 | [Human Vibration](https://jmrplens.github.io/phonometry/vibration/human/human-vibration/) | + +## Spectral and system analysis + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $G_{xx}$, $G_{xy}$ | One-sided auto- and cross-spectral density: mean-square content per hertz, so the power in a band is the integral over it and not the height of a line. Everything else in this group is a ratio of these: the coherences, the two frequency-response estimators and the coherent output spectrum. | (unit of $x$)²/Hz | Bendat and Piersol (2010), Sections 5.2 and 9.1; no governing standard | [Calibrated spectral analysis](https://jmrplens.github.io/phonometry/signals/spectra/spectral-analysis/) | +| $\gamma^2_{iy}$ (ordinary coherence) | Ordinary coherence: the fraction of the output autospectrum, at each frequency, that a linear time-invariant path from one input accounts for, $\|G_{xy}\|^2/(G_{xx}G_{yy})$. It is one where the pair is noiselessly linearly related, and with additive output noise it settles at $\mathrm{SNR}/(1+\mathrm{SNR})$ — so it reads as a quality figure, not as a cause. | dimensionless | Bendat and Piersol (2010), Equation (7.109); no governing standard | [Multiple and partial coherence](https://jmrplens.github.io/phonometry/signals/spectra/miso-coherence/) | +| $\gamma^2_{y:x}$ (multiple coherence) | Multiple coherence: the fraction of the output that all the measured inputs together account for, one minus the residual spectrum over the total. It is the ceiling the partial coherences are apportioned under, and what is left of it is the part of the output no measured input explains. | dimensionless | Bendat and Piersol (2010), Equation (7.35); no governing standard | [Multiple and partial coherence](https://jmrplens.github.io/phonometry/signals/spectra/miso-coherence/) | +| $\gamma^2_{iy\cdot(i-1)!}$ (partial coherence) | Partial coherence: the coherence of one input with the output after the inputs ranked before it have been conditioned out. It is what separates a genuine source from one that merely correlates with a genuine source, and it depends on the conditioning order, so the order has to be reported with the number. | dimensionless | Bendat and Piersol (2010), Equation (7.87); no governing standard | [Multiple and partial coherence](https://jmrplens.github.io/phonometry/signals/spectra/miso-coherence/) | +| $H_1$, $H_2$ (FRF estimators) | The two averaged estimates of a frequency response function: $H_1 = G_{xy}/G_{xx}$, unbiased when the noise is on the output, and $H_2 = G_{yy}/G_{yx}$, unbiased when it is on the input. Their ratio is exactly the ordinary coherence, so they agree only where the measurement is clean, and the gap between them is a measure of how far it is not. | output per input | Bendat and Piersol (2010), Section 6.1; no governing standard | [Electroacoustics: distortion and frequency response](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/) | +| ENBW | Equivalent noise bandwidth of an analysis window: the width of the ideal rectangular filter that would pass the same broadband noise power. It is exactly 1 bin for a rectangular window and 1,5 for a Hann, and it is the factor that turns a windowed line spectrum into a density — a broadband level read off the lines sits $10\log_{10}(\mathrm{ENBW})$ dB high without it. | bins (or Hz) | Harris (1978), Table 1; no governing standard | [Calibrated spectral analysis](https://jmrplens.github.io/phonometry/signals/spectra/spectral-analysis/) | +| Cepstrum and quefrency | Cepstrum: the inverse transform of the logarithmic spectrum, in which the periodic ripple an echo or a harmonic family leaves across the spectrum collapses onto a single peak. Quefrency is its independent variable, a time in seconds, at which that peak stands at the echo's own delay — which is why a bearing report quotes a quefrency and not a frequency. | quefrency in s | Havelock, Kuwano and Vorländer (2008), Chapter 27; no governing standard | [Cepstrum, echoes and the envelope spectrum](https://jmrplens.github.io/phonometry/signals/spectra/cepstrum-echoes/) | +| Crest factor | Crest factor: the modulus of the ratio of the peak to the r.m.s. value over the measurement period. It decides whether an r.m.s. description is honest — above 9 the standard says the basic evaluation method is not sufficient and dose measures have to be reported beside it — and for a test signal it decides whether a device clips before the signal has delivered its energy. | dimensionless | ISO 2631-1:1997, 6.2.1 | [Human Vibration](https://jmrplens.github.io/phonometry/vibration/human/human-vibration/) | + +## Room acoustics + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $T_{20}$ | Reverberation time extrapolated to a 60 dB decay from a least-squares fit over −5 dB to −25 dB of the Schroeder curve. | s | ISO 3382-2:2008, Clause 6 and Annex C | [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) | +| $T_{30}$ | The same extrapolation from a fit over −5 dB to −35 dB, the usual choice when the decay range allows it. | s | ISO 3382-2:2008, Clause 6 and Annex C | [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) | +| $T_{60}$, RT | Reverberation time as such: the time for the sound energy to fall by 60 dB. Measured in practice as $T_{20}$ or $T_{30}$. | s | ISO 3382-1:2009 | [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) | +| EDT | Early decay time: the same slope taken over the first 10 dB of decay, which tracks perceived reverberance rather than the tail. | s | ISO 3382-1:2009 (just-noticeable difference in Table A.1) | [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) | +| $C_{50}$ | Clarity for speech: the energy ratio between the first 50 ms of the impulse response and everything after it. | dB | ISO 3382-1:2009 | [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) | +| $C_{80}$ | Clarity for music: the same ratio with the boundary at 80 ms. | dB | ISO 3382-1:2009 (just-noticeable difference in Table A.1) | [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) | +| $D_{50}$ | Definition, or Deutlichkeit: the fraction of the total energy arriving in the first 50 ms. | dimensionless | ISO 3382-1:2009 (just-noticeable difference in Table A.1) | [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) | +| $T_s$ (centre time) | Centre time: the centre of gravity of the squared impulse response in time, a boundary-free alternative to the clarity indices. It runs to tens of milliseconds in a room; the building-prediction guides write $T_s$ for something else entirely, the structural reverberation time of a plate, which is seconds. | s | ISO 3382-1:2009, Equation (A.13) | [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) | +| $A$ | Equivalent sound absorption area of a room: the area of a perfectly absorbing surface that would give the same reverberation time. | m² | ISO 354:2003, Equations (5) and (7) | [Sound Absorption Measurement and Rating](https://jmrplens.github.io/phonometry/materials/absorbers/absorption-measurement/) | +| NC | Noise criteria rating of a background spectrum: the speech interference level selects the curve, and the tangency method rates the spectrum when a band exceeds it. | dB (index) | ANSI/ASA S12.2-2019, 5.2.2 and 5.2.3 (curves in Table 1) | [Room-noise criteria (NC / RC Mark II)](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/) | +| SIL | Speech interference level: the average of the 500, 1000, 2000 and 4000 Hz octave-band levels. | dB | ANSI/ASA S12.2-2019, clause 3.2 | [Room-noise criteria (NC / RC Mark II)](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/) | +| RC | Room criteria Mark II rating: the average of the 500, 1000 and 2000 Hz levels, with a rumble, hiss or neutral spectral tag. | dB (index) | ANSI/ASA S12.2-2019, Annex D (clauses D.3 and D.4) | [Room-noise criteria (NC / RC Mark II)](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/) | +| NR (curve family) | Noise rating, the European counterpart curve family of NC. Discussed for comparison and deliberately not implemented. Not the NR of the noise-control guides, which is a level drop. | dB (index) | Kosten and van Os (1962); no governing standard | [Room-noise criteria (NC / RC Mark II)](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/) | +| $D_{2,S}$ | Spatial decay rate of speech: the drop in A-weighted speech level per doubling of distance along a line of workstations, taken from the regression of level against the logarithm of distance over positions between 2 m and 16 m. It is a slope only — it says how fast speech dies away, not how loud it starts. | dB | ISO 3382-3:2012, 3.2 | [Open-Plan Office Acoustics (ISO 3382-3)](https://jmrplens.github.io/phonometry/buildings/rooms/open-plan-acoustics/) | +| $L_{p,A,S,4m}$ | A-weighted speech level at 4 m: the nominal level of normal speech four metres from the talker, read off the same regression line rather than measured at that distance. It fixes the absolute height of the decay curve that $D_{2,S}$ only gives the slope of, which is why the two are always reported together. | dB | ISO 3382-3:2012, 3.3 | [Open-Plan Office Acoustics (ISO 3382-3)](https://jmrplens.github.io/phonometry/buildings/rooms/open-plan-acoustics/) | +| $r_D$ | Distraction distance: the distance from the talker at which the speech transmission index falls below 0,50, beyond which concentration and privacy start to improve rapidly. It is the single number an open-plan office is usually specified on, and the only rating in the corpus that is a distance rather than a level. | m | ISO 3382-3:2012, 3.6 | [Open-Plan Office Acoustics (ISO 3382-3)](https://jmrplens.github.io/phonometry/buildings/rooms/open-plan-acoustics/) | +| $r_P$ | Privacy distance: the distance at which the speech transmission index falls below 0,20, beyond which speech is as private as it would be between separate rooms. In offices with small volume or poor privacy it can be out of reach entirely. | m | ISO 3382-3:2012, 3.7 | [Open-Plan Office Acoustics (ISO 3382-3)](https://jmrplens.github.io/phonometry/buildings/rooms/open-plan-acoustics/) | + +## Speech and intelligibility + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $m(F)$ | Modulation transfer function: the fraction of the speech envelope modulation depth at modulation frequency $F$ that survives the transmission path. | dimensionless | IEC 60268-16:2020 | [Speech Transmission Index (STI)](https://jmrplens.github.io/phonometry/perception/speech/speech-transmission/) | +| STI | Speech transmission index: the modulation transfer matrix converted to effective signal-to-noise ratios and weighted into a single value on 0 to 1. | dimensionless | IEC 60268-16:2020, A.5.2 to A.5.6 | [Speech Transmission Index (STI)](https://jmrplens.github.io/phonometry/perception/speech/speech-transmission/) | +| STIPA | The direct STI measurement, made by playing a standardised two-modulation-per-band test signal through the real chain. | dimensionless | IEC 60268-16:2020, clause 6.3 and Table 3 (direct method, Annex B) | [Speech Transmission Index (STI)](https://jmrplens.github.io/phonometry/perception/speech/speech-transmission/) | +| SII | Speech intelligibility index: the band-importance-weighted audibility of the speech spectrum against noise and the listener's threshold. | dimensionless | ANSI S3.5-1997, clause 6 (procedure in clause 5, importance function in Table 3) | [Speech Intelligibility Index](https://jmrplens.github.io/phonometry/perception/speech/speech-intelligibility/) | +| STOI | Short-time objective intelligibility: the clipped per-band envelope correlation between clean and degraded speech. | dimensionless | Taal et al. (2011), Equations 5 and 6; no governing standard | [Objective Intelligibility (STOI & ESTOI)](https://jmrplens.github.io/phonometry/perception/speech/objective-intelligibility/) | +| ESTOI | The extended measure, row- and column-normalised so that it tracks modulated maskers. | dimensionless | Jensen and Taal (2016), Equation 8; no governing standard | [Objective Intelligibility (STOI & ESTOI)](https://jmrplens.github.io/phonometry/perception/speech/objective-intelligibility/) | + +## Sound insulation + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| NR (level drop) | Noise reduction: the sound pressure level in the source room minus the level in the receiving room, $L_{p1} - L_{p2}$. It is not the transmission loss of the partition: the two differ by a term set by the partition area against the receiving room's absorption, so a small partition into a well-absorbing room delivers more noise reduction than its transmission loss, and a large one into a hard room delivers less. | dB | Norton and Karczub (2003), Equation (4.101) | [Room to Room: Partition, Receiving Room, Criterion](https://jmrplens.github.io/phonometry/devices/noise-control/room-to-room/) | +| $D$ | Level difference: the energy-averaged source-room level minus the receiving-room level, with no normalisation. | dB | ISO 16283-1:2014, 3.12 to 3.15 | [Field Insulation Measurement (ISO 16283)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-field/) | +| $D_{nT}$ | Standardized level difference: the level difference referred to a reference reverberation time, 0.5 s for dwellings. | dB | ISO 16283-1:2014, 3.12 to 3.15 | [Field Insulation Measurement (ISO 16283)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-field/) | +| $D_n$ | Normalized level difference: the level difference referred to a reference absorption area of 10 m². | dB | ISO 10052:2021 | [Sound Insulation Survey Method (ISO 10052)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-survey/) | +| $D_{n,e}$ | Element-normalized level difference of a small element or air path, referred to a reference area of 10 m². | dB | EN 12354-3:2000 | [Predicting Sound Insulation (EN 12354)](https://jmrplens.github.io/phonometry/buildings/design/insulation-prediction/) | +| $R$ | Sound reduction index: the level difference corrected by the partition area over the receiving-room absorption area, measured in the laboratory with flanking suppressed. | dB | ISO 10140-2:2010 | [Laboratory Insulation Measurement](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-lab/) | +| $R'$ | Apparent sound reduction index: the same construction measured in the building, so it includes every flanking path. The prime is the lab-versus-field marker. | dB | ISO 16283-1:2014, 3.12 to 3.15 | [Field Insulation Measurement (ISO 16283)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-field/) | +| TL (panel) | Transmission loss: the airborne insulation of a partition predicted from its physical properties, ten times the base-10 logarithm of the reciprocal transmission factor, the same quantity as $R$ in a prediction context. | dB | Bies, Hansen and Howard (2017), Section 7.2; no governing standard | [Predicting Panel Sound Insulation](https://jmrplens.github.io/phonometry/buildings/design/panel-sound-insulation/) | +| TL (duct element) | Transmission loss of a duct element: ten times the base-10 logarithm of the incident plane-wave power over the power transmitted into an anechoic termination, computed from the four-pole transfer matrix and the two port impedances. The anechoic termination is part of the definition, which is why this transmission loss describes the element alone and is not the noise reduction the same silencer delivers once it is installed between a real source and a real outlet. | dB | Bies, Hansen and Howard (2017), Sections 8.8-8.9; no governing standard | [Silencers](https://jmrplens.github.io/phonometry/devices/noise-control/silencers/) | +| IL | Insertion loss: the level at a receiver before an element is inserted minus the level after, for a silencer the drop in radiated sound power level when a length of duct is replaced by it. Unlike a transmission loss it depends on the source and the termination as well as on the element, which is what makes it the number a client can hear and the transmission loss the number a catalogue can print. | dB | Bies, Hansen and Howard (2017), Section 8.2, Equation (8.1); no governing standard | [Silencers](https://jmrplens.github.io/phonometry/devices/noise-control/silencers/) | +| $\tau$ | Transmission factor, or transmission coefficient: the fraction of the incident sound power a partition passes on. It is the quantity the whole group is a logarithm of, since $R = -10\log_{10}\tau$ and the transmission loss is the same logarithm; a $\tau$ of $10^{-5}$ is a 50 dB partition. Transmission factors of parallel paths add, which is why a prediction sums the direct, flanking and indirect airborne factors and only then takes the logarithm. | dimensionless | ISO 12354-1:2017, Formula (1) | [Detailed Per-Band Prediction (ISO 12354)](https://jmrplens.github.io/phonometry/buildings/design/detailed-prediction/) | +| $R_w$, $R'_w$, $D_{nT,w}$ | The weighted single-number ratings: a fixed reference curve is shifted toward the measured spectrum until the unfavourable deviations reach their allowed sum, and the shifted curve is read at 500 Hz. | dB | ISO 717-1:2020 | [Insulation Ratings (ISO 717)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-ratings/) | +| $D_{n,e,w}$ | The same reference-curve rating applied to the element-normalized level difference. | dB | ISO 717-1:2020 | [Predicting Sound Insulation (EN 12354)](https://jmrplens.github.io/phonometry/buildings/design/insulation-prediction/) | +| $C$, $C_{tr}$ | Spectrum adaptation terms: the corrections that re-rate the measured curve against A-weighted pink noise ($C$) and against A-weighted urban road traffic ($C_{tr}$). | dB | ISO 717-1:2020, Annex A | [Insulation Ratings (ISO 717)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-ratings/) | +| $L_n$ | Normalized impact sound pressure level: the receiving-room level under the standard tapping machine, referred to a 10 m² absorption area. | dB re 20 µPa | ISO 10140-3:2010 | [Laboratory Insulation Measurement](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-lab/) | +| $L'_{nT}$ | Standardized impact sound pressure level, referred to a reference reverberation time. Note the sign: more reverberation lowers it, the opposite of $D_{nT}$. | dB re 20 µPa | ISO 16283-2:2015 | [Field Insulation Measurement (ISO 16283)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-field/) | +| $L_{n,w}$, $L'_{nT,w}$ | The weighted impact ratings. The reference curve is shifted the same way, but an unfavourable deviation is now one where the measurement exceeds the reference. | dB | ISO 717-2:2020 | [Insulation Ratings (ISO 717)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-ratings/) | +| $C_I$ | Impact spectrum adaptation term, from the energetic sum over 100 Hz to 2500 Hz. The enlarged-range $C_{I,50\text{–}2500}$ extends it down to 50 Hz. | dB | ISO 717-2:2020 (enlarged range in A.2.1 NOTE) | [Insulation Ratings (ISO 717)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-ratings/) | +| $\Delta L_w$ | Weighted reduction of impact sound pressure level given by a floor covering, measured as the improvement over the bare reference floor. | dB | ISO 717-2:2020 (measurement in ISO 16251-1:2014, Formulae (3) and (4)) | [Floor-Covering Impact Improvement (ISO 16251-1)](https://jmrplens.github.io/phonometry/buildings/design/impact-improvement/) | +| $\Delta R_w$ | Weighted improvement of airborne insulation contributed by a lining or additional layer, added to the element rating in the prediction. | dB | EN 12354-1:2000, Formulae 27 and 28a | [Predicting Sound Insulation (EN 12354)](https://jmrplens.github.io/phonometry/buildings/design/insulation-prediction/) | +| $K_{ij}$ | Vibration reduction index of a junction: the direction-averaged velocity level difference corrected by the junction length and the equivalent absorption lengths. | dB | ISO 10848-1:2006, Formula (13) | [Laboratory Flanking Transmission (ISO 10848)](https://jmrplens.github.io/phonometry/buildings/insulation/flanking-lab/) | +| $f_c$ | Critical frequency: the frequency at which the bending wavelength of a panel equals the wavelength in air, where the coincidence dip appears. | Hz | Bies, Hansen and Howard (2017), Equation 7.3; no governing standard | [Predicting Panel Sound Insulation](https://jmrplens.github.io/phonometry/buildings/design/panel-sound-insulation/) | +| $\sigma$ | Radiation efficiency of a plate: the airborne power radiated per unit mean-square surface velocity, normalised by the plane-wave value. | dimensionless | Hopkins (2007), Equations 2.227 to 2.230; no governing standard | [Predicting Panel Sound Insulation](https://jmrplens.github.io/phonometry/buildings/design/panel-sound-insulation/) | +| $D_{2m,nT}$ | Standardized facade level difference: the level 2 m in front of the facade minus the indoor level, standardized to a reference reverberation time of 0,5 s for dwellings. The 2 m position sits in the field the facade itself reflects, so it is not a free-field level, and the notation records the source — $D_{tr,2m,nT}$ for road traffic, $D_{ls,2m,nT}$ for a loudspeaker. | dB | ISO 16283-3:2016, 3.15 | [Façade Sound Insulation](https://jmrplens.github.io/phonometry/buildings/insulation/facade-insulation/) | +| $D_{ls,2m,nT,w}$ | The weighted facade rating: $D_{2m,nT}$ measured with a loudspeaker put through the ISO 717-1 reference-curve procedure. The `ls` subscript is not decoration — it records that the source was a loudspeaker at 45 degrees rather than real road traffic, and a facade rated with one source is not interchangeable with the same facade rated with the other. | dB | ISO 717-1:2020 | [Façade Sound Insulation](https://jmrplens.github.io/phonometry/buildings/insulation/facade-insulation/) | +| $R'_{45°}$ | Apparent sound reduction index of a facade element under loudspeaker sound at 45 degrees: the level difference corrected by the specimen area over the receiving-room absorption area, with a further $-1{,}5$ dB that carries the single-angle geometry. It is apparent, so flanking and any other component of the facade are inside the number. | dB | ISO 16283-3:2016, 3.12 | [Façade Sound Insulation](https://jmrplens.github.io/phonometry/buildings/insulation/facade-insulation/) | +| $R_A$, $R_{A,tr}$ | Global airborne index: the A-weighted level a partition transmits when it is excited by a normalised spectrum — pink noise for $R_A$, road traffic for $R_{A,tr}$ — summed energetically over eighteen one-third-octave bands from 100 Hz to 5 kHz. It is a close relative of $R_w + C$ and $R_w + C_{tr}$ but is computed directly, not by shifting a reference curve, and it uses two bands the ISO 717-1 range does not. | dBA | CTE DB-HR, Annex A, Formulae (A.5) and (A.6) | [Spanish Building Code (CTE DB-HR)](https://jmrplens.github.io/phonometry/buildings/insulation/spanish-building-code/) | +| $D_{nT,A}$, $D_{2m,nT,Atr}$ | The same global index applied to a standardized level difference: between two rooms ($D_{nT,A}$, pink noise) and between the outside and a protected room ($D_{2m,nT,Atr}$, road traffic or aircraft). These are the quantities the DB-HR requirement tables are written against, so a project is checked in them and not in the ISO 717-1 ratings. | dBA | CTE DB-HR, Annex A, Formulae (A.5) and (A.6); requirements in clause 2 | [Spanish Building Code (CTE DB-HR)](https://jmrplens.github.io/phonometry/buildings/insulation/spanish-building-code/) | +| $R_I$ | Intensity sound reduction index: the source-room level minus the intensity level scanned over the radiating face, so the transmitted power is measured directly instead of inferred from the receiving room. It is the method of choice where flanking is strong; add the $K_c$ adaptation to get $R_{I,M}$, the value the ISO 10140 pressure method would have produced. | dB | ISO 15186-1:2000, 3.8, Equation (7) | [Sound Insulation by Intensity (ISO 15186)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-intensity/) | +| $D_{I,n,e}$ | Intensity element-normalized level difference: the small-element counterpart of $D_{n,e}$, measured by scanning the element and normalised to a reference absorption area of 10 m². It is rated through the same ISO 717-1 procedure, as $D_{I,n,e,w}$, so a ventilator or a transit sealing system can be compared with a wall on one scale. | dB | ISO 15186-2:2003, Formula (12) | [Sound Insulation by Intensity (ISO 15186)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-intensity/) | + +## Materials and surfaces + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $\alpha$ | Sound absorption coefficient at normal incidence: the fraction of incident energy not returned by the surface, obtained in the impedance tube from the reflection factor. | dimensionless | ISO 10534-2:1998, Equations (17) to (19) | [Impedance Tube](https://jmrplens.github.io/phonometry/materials/absorbers/impedance-tube/) | +| $\alpha_s$ | Random-incidence sound absorption coefficient measured in a reverberation room, from the change in equivalent absorption area with and without the specimen. | dimensionless | ISO 354:2003, Equations (8) and (9) | [Sound Absorption Measurement and Rating](https://jmrplens.github.io/phonometry/materials/absorbers/absorption-measurement/) | +| $\alpha_p$ | Practical sound absorption coefficient: the one-third-octave data grouped into octave bands and rounded to steps of 0.05. | dimensionless | ISO 11654:1997, Clause 4.1 | [Sound Absorption Measurement and Rating](https://jmrplens.github.io/phonometry/materials/absorbers/absorption-measurement/) | +| $\alpha_w$ | Weighted sound absorption coefficient: the fixed reference curve shifted toward the practical values and read at 500 Hz. | dimensionless | ISO 11654:1997, Clause 4.2 | [Sound Absorption Measurement and Rating](https://jmrplens.github.io/phonometry/materials/absorbers/absorption-measurement/) | +| Absorption class | The A to E letter class the weighted coefficient maps to, or "not classified". | class letter | ISO 11654:1997, Table B.1 | [Sound Absorption Measurement and Rating](https://jmrplens.github.io/phonometry/materials/absorbers/absorption-measurement/) | +| $R$ | Airflow resistance: the pressure difference across a specimen divided by the volumetric airflow rate through it. | Pa·s/m³ | ISO 9053-1:2018, Clause 3 | [Airflow Resistance](https://jmrplens.github.io/phonometry/materials/absorbers/airflow-resistance/) | +| $R_s$ | Specific airflow resistance: the airflow resistance referred to the specimen face area. | Pa·s/m | ISO 9053-1:2018, Clause 3 | [Airflow Resistance](https://jmrplens.github.io/phonometry/materials/absorbers/airflow-resistance/) | +| $\sigma$ | Airflow resistivity: the specific airflow resistance per unit thickness, the primary input to every empirical porous model. | Pa·s/m² | ISO 9053-1:2018, Clause 3 | [Airflow Resistance](https://jmrplens.github.io/phonometry/materials/absorbers/airflow-resistance/) | +| $Z$ | Surface impedance: the complex ratio of sound pressure to particle velocity at the face of the sample, usually reported normalised by the characteristic impedance of air. | Pa·s/m | ISO 10534-2:1998, Equations (17) to (19) | [Impedance Tube](https://jmrplens.github.io/phonometry/materials/absorbers/impedance-tube/) | +| $s$ | Scattering coefficient: the fraction of reflected energy that is not returned specularly, measured at random incidence on a turntable in a reverberation room. | dimensionless | ISO 17497-1:2004+A1:2014, Formula (5) | [Diffusers and Their Coefficients](https://jmrplens.github.io/phonometry/materials/diffusers/diffusers/) | +| $d$ | Diffusion coefficient: the uniformity of the polar response of a surface, from the autocorrelation of the free-field goniometer measurement. | dimensionless | ISO 17497-2:2012, Formula (5) (normalised form in Formula (7)) | [Diffusers and Their Coefficients](https://jmrplens.github.io/phonometry/materials/diffusers/diffusers/) | +| $s'$ | Dynamic stiffness per unit area of a resilient layer: a dynamic force per unit area divided by the resulting change in thickness. | MN/m³ | EN 29052-1:1992 (ISO 9052-1:1989), Formula 1 | [Dynamic stiffness of resilient materials](https://jmrplens.github.io/phonometry/materials/resilient/dynamic-stiffness/) | +| $\phi$ (porosity) | Open porosity: the fraction of the material's volume that is air connected to the outside, $\phi = V_a/V_T$. A closed bubble counts as frame, not as pore, because sound cannot enter it; for most fibrous materials and foams $\phi$ lies very close to one, which is why a one-parameter model that assumes so can still work. | dimensionless | Allard and Atalla (2009), Equation (2.25); no governing standard | [Porous and Multilayer Absorbers](https://jmrplens.github.io/phonometry/materials/absorbers/porous-absorbers/) | +| $\alpha_\infty$ (tortuosity) | Tortuosity: how much longer the winding path through the pores is than the straight line, squared — exactly $1/\cos^2\varphi$ for pores inclined at an angle $\varphi$, and one for straight cylindrical pores. It sets the high-frequency limit of the effective density, and despite the $\alpha$ it is not an absorption coefficient of any kind. | dimensionless | Allard and Atalla (2009), Equation (4.143); no governing standard | [Porous and Multilayer Absorbers](https://jmrplens.github.io/phonometry/materials/absorbers/porous-absorbers/) | +| $\Lambda$, $\Lambda'$ | The two pore sizes the Johnson-Champoux-Allard model needs: $\Lambda$ weights the pore surface by the squared flow velocity, so it is set by the narrow constrictions where the viscous losses happen, and $\Lambda'$ is the plain surface-to-volume length that governs the thermal exchange with the frame. $\Lambda'$ is normally the larger, and the two are equal only for identical straight cylindrical pores. | m | Allard and Atalla (2009), Equations (5.24) and (5.27); no governing standard | [Porous and Multilayer Absorbers](https://jmrplens.github.io/phonometry/materials/absorbers/porous-absorbers/) | +| $Z_c$, $k$ | Characteristic impedance and complex wavenumber: the pair that describes a porous medium as an equivalent fluid — the ratio of pressure to particle velocity in a travelling wave inside it, and the wavenumber whose imaginary part is the attenuation per metre. Every empirical or semi-phenomenological model produces this pair, and it is what the transfer-matrix method stacks layer by layer. | Pa·s/m and 1/m | Allard and Atalla (2009), Chapter 5; no governing standard | [Porous and Multilayer Absorbers](https://jmrplens.github.io/phonometry/materials/absorbers/porous-absorbers/) | + +## Vibration and structure-borne sound + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $Y$ | Mobility: the complex ratio of a velocity response to the force that produces it. | m/(N·s) | ISO 7626-1:2011, 3.1.2 and Table 1 | [Mechanical mobility and the FRF family (ISO 7626-1)](https://jmrplens.github.io/phonometry/vibration/structural/mechanical-mobility/) | +| $Z$ | Mechanical impedance: the reciprocal of mobility, force per unit velocity. | N·s/m | ISO 7626-1:2011, Table 1 | [Mechanical mobility and the FRF family (ISO 7626-1)](https://jmrplens.github.io/phonometry/vibration/structural/mechanical-mobility/) | +| $H$ (receptance) | Receptance, or dynamic compliance: displacement response per unit force, the pivot the whole family converts through. | m/N | ISO 7626-1:2011, Table 1 | [Mechanical mobility and the FRF family (ISO 7626-1)](https://jmrplens.github.io/phonometry/vibration/structural/mechanical-mobility/) | +| $A$ | Accelerance, or inertance: acceleration response per unit force. Its reciprocal is the apparent mass. | 1/kg | ISO 7626-1:2011, Table 1 | [Mechanical mobility and the FRF family (ISO 7626-1)](https://jmrplens.github.io/phonometry/vibration/structural/mechanical-mobility/) | +| $k_{21}$ | Dynamic transfer stiffness of a resilient element: the blocking force on the output side divided by the displacement on the input side. | N/m | ISO 10846-1:2008, 3.7 | [Transfer stiffness of resilient elements (ISO 10846)](https://jmrplens.github.io/phonometry/vibration/structural/transfer-stiffness/) | +| $L_k$ | Level of the dynamic transfer stiffness, referred to 1 N/m. | dB re 1 N/m | ISO 10846-2:2008 and ISO 10846-3:2002, 3.17 | [Transfer stiffness of resilient elements (ISO 10846)](https://jmrplens.github.io/phonometry/vibration/structural/transfer-stiffness/) | +| $\eta$ (resilient element) | Loss factor of a resilient element: the tangent of the phase angle of its dynamic transfer stiffness. | dimensionless | ISO 10846-1:2008, 3.8 | [Transfer stiffness of resilient elements (ISO 10846)](https://jmrplens.github.io/phonometry/vibration/structural/transfer-stiffness/) | +| $\eta_{int}$ (internal) | Internal loss factor of a building element: the fraction of its vibrational energy dissipated per radian inside the material itself, before anything is radiated or leaves through the junctions. It is an input to the prediction, not a measured output: Table B.3 of the same standard gives 0,005 for concrete and about 0,01 for most masonry. | dimensionless | ISO 12354-1:2017, Annex C, Formula (C.1) | [Detailed Per-Band Prediction (ISO 12354)](https://jmrplens.github.io/phonometry/buildings/design/detailed-prediction/) | +| $\eta_{tot}$ (total, in situ) | Total loss factor of an element as built in: the internal loss factor plus the losses radiated into the air and absorbed at the perimeter junctions. It is what damps the resonant transmission above the critical frequency, and it fixes the structural reverberation time through $T_s = 2{,}2/(f\,\eta_{tot})$ — so a laboratory value measured in a heavy test frame does not transfer to the building unchanged. | dimensionless | ISO 12354-1:2017, Annex C, Formula (C.1) | [Detailed Per-Band Prediction (ISO 12354)](https://jmrplens.github.io/phonometry/buildings/design/detailed-prediction/) | +| $a_w$ | Frequency-weighted acceleration: the root sum of squares of the band accelerations after the human-response weightings. | m/s² | ISO 2631-1:1997, Equation (9) | [Human Vibration](https://jmrplens.github.io/phonometry/vibration/human/human-vibration/) | +| $A(8)$ | Daily vibration exposure: the exposure magnitude normalised to a reference 8 h day, combined over the operations of the day. | m/s² | ISO 5349-1:2001, Equations (2) and (3) | [Human Vibration](https://jmrplens.github.io/phonometry/vibration/human/human-vibration/) | +| VDV | Vibration dose value: the fourth-power time integral of the weighted acceleration, which weights shocks far more heavily than an r.m.s. does. | m/s^1.75 | ISO 2631-1:1997, Equation (5) | [Human Vibration](https://jmrplens.github.io/phonometry/vibration/human/human-vibration/) | +| MTVV | Maximum transient vibration value: the largest 1 s running r.m.s. of the weighted acceleration. | m/s² | ISO 2631-1:1997, Equation (4) | [Human Vibration](https://jmrplens.github.io/phonometry/vibration/human/human-vibration/) | +| $R$ | Cumulative stress variable of the multiple-shock model: the daily compressive stresses accumulated over the years of exposure, which the lumbar injury probability is read from. | dimensionless | ISO 2631-5:2018, Annex C (Formulae C.1 and C.3 to C.5) | [Multiple-shock whole-body vibration (ISO 2631-5)](https://jmrplens.github.io/phonometry/vibration/human/multiple-shock-vibration/) | +| $L_v$ | Velocity level: twenty times the base-10 logarithm of the surface velocity over the reference velocity. | dB re 50 nm/s | ISO/TS 7849-1:2009, Formula 3 | [Sound power from surface vibration (ISO/TS 7849)](https://jmrplens.github.io/phonometry/devices/emission/vibration-sound-power/) | +| $\varepsilon$ | Radiation factor, or radiation efficiency, of a vibrating machine surface: the airborne power radiated per unit mean-square velocity and area. | dimensionless | ISO/TS 7849-1:2009 and ISO/TS 7849-2:2009 | [Sound power from surface vibration (ISO/TS 7849)](https://jmrplens.github.io/phonometry/devices/emission/vibration-sound-power/) | +| $L_{Ws}$ | Structure-borne sound power level injected by equipment into a reception plate. | dB re 1 pW | EN 15657:2018, Formula 14 | [Structure-borne sound power of equipment (EN 15657)](https://jmrplens.github.io/phonometry/buildings/design/structure-borne-power/) | +| $\eta_{ij}$ | Coupling loss factor: the fraction of energy per radian that a statistical energy analysis subsystem loses into a neighbouring one across a junction. | dimensionless | Hopkins (2007), Equation 2.154; no governing standard | [Bending-wave transmission at plate junctions](https://jmrplens.github.io/phonometry/vibration/structural/junction-transmission/) | +| $\tau_{ij}$ (junction) | Junction transmission coefficient: the fraction of the bending-wave power arriving at a junction from plate $i$ that continues into plate $j$, angle by angle and then averaged over a diffuse field. Both the coupling loss factor $\eta_{ij}$ and the vibration reduction index $K_{ij}$ are derived from it, so it is the wave-approach quantity the junction family bottoms out in. | dimensionless | Hopkins (2007), Equations 5.12 and 5.13; no governing standard | [Bending-wave transmission at plate junctions](https://jmrplens.github.io/phonometry/vibration/structural/junction-transmission/) | + +## Psychoacoustics + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $N$ | Loudness: the perceived magnitude of a sound, anchored so that a 1 kHz tone at 40 dB SPL is exactly 1 sone. | sone | ISO 532-1:2017, clause 5 (stationary) and clause 6 (time-varying) | [Loudness](https://jmrplens.github.io/phonometry/perception/psychoacoustics/loudness/) | +| $N'$ | Specific loudness: the loudness density along the critical-band scale, whose integral is $N$. | sone/Bark | ISO 532-1:2017 (sone/Cam form in ISO 532-2:2017, Formula 7) | [Loudness](https://jmrplens.github.io/phonometry/perception/psychoacoustics/loudness/) | +| $L_N$ | Loudness level: the level of the 1 kHz free-field tone judged equally loud as the sound. | phon | ISO 226:2023, Formula (2) (contours in Formula (1)) | [Loudness](https://jmrplens.github.io/phonometry/perception/psychoacoustics/loudness/) | +| $S$ | Sharpness: the position of the centre of gravity of the specific loudness on the critical-band scale, normalised so that the reference narrow-band noise is exactly 1 acum. | acum | DIN 45692:2009, clause 6 | [Sound Quality Metrics](https://jmrplens.github.io/phonometry/perception/psychoacoustics/sound-quality/) | +| $R$ | Roughness: the perceived harshness of fast amplitude modulation, around 70 Hz, normalised so that the reference modulated tone is 1 asper. | asper | ECMA-418-2:2025, clause 7 (Formula 104) | [Sound Quality Metrics](https://jmrplens.github.io/phonometry/perception/psychoacoustics/sound-quality/) | +| $F$ | Fluctuation strength: the perceived slow amplitude modulation, around 4 Hz, normalised so that the reference modulated tone is 1 vacil. | vacil | ECMA-418-2:2025, clause 9 (Formula 163) | [Sound Quality Metrics](https://jmrplens.github.io/phonometry/perception/psychoacoustics/sound-quality/) | +| $T$ | Tonality: the perceived tonal content of a sound, derived from the autocorrelation of the band envelopes. | tu | ECMA-418-2:2025, clause 6 | [Sound Quality Metrics](https://jmrplens.github.io/phonometry/perception/psychoacoustics/sound-quality/) | +| TNR | Tone-to-noise ratio: the level of a discrete tone above the masking noise in the critical band around it. | dB | ECMA-418-1:2024, clause 11 (Formulae 9 to 11) | [Prominent Discrete Tones (ECMA-418-1)](https://jmrplens.github.io/phonometry/perception/psychoacoustics/tone-prominence/) | +| PR | Prominence ratio: the level of the critical band containing the tone above the mean of the two adjacent bands. | dB | ECMA-418-1:2024, clause 12 (Formula 23) | [Prominent Discrete Tones (ECMA-418-1)](https://jmrplens.github.io/phonometry/perception/psychoacoustics/tone-prominence/) | +| $\Delta L$ | Audibility of a tone in noise: the tone level minus the critical-band masking level minus the masking index. | dB | ISO/PAS 20065:2016, Formula 14 | [Objective audibility of tones in noise (ISO/PAS 20065)](https://jmrplens.github.io/phonometry/perception/psychoacoustics/tone-audibility/) | +| PA | Psychoacoustic annoyance: the percentile loudness scaled by sharpness and by a fluctuation-plus-roughness term. | dimensionless | Fastl and Zwicker (2007), Equation 16.2; no governing standard | [Psychoacoustic annoyance and fluctuation strength](https://jmrplens.github.io/phonometry/perception/psychoacoustics/psychoacoustic-annoyance/) | +| Critical band | Critical band: the frequency span within which the ear sums energy as one event, about 100 Hz wide below 500 Hz and roughly a fifth of the centre frequency above it. Masking, sharpness and the two tone-prominence ratios are all computed band by band on this scale, which is why none of them can be read off a fixed fractional-octave spectrum. | Hz | Fastl and Zwicker (2007), Sections 6.1 and 6.2; no governing standard | [Loudness](https://jmrplens.github.io/phonometry/perception/psychoacoustics/loudness/) | +| $z$ (critical-band rate) | Critical-band rate: the auditory frequency scale on which one unit is one critical band, running 0 to 24 Bark over the audible range. Specific loudness is a density along it, which is why its unit is sone/Bark and why a loudness pattern is plotted against $z$ rather than against frequency. | Bark | Fastl and Zwicker (2007), Section 6.2, Table 6.1; no governing standard | [Loudness](https://jmrplens.github.io/phonometry/perception/psychoacoustics/loudness/) | +| $ERB_N$ (Cam scale) | Equivalent rectangular bandwidth of the auditory filter, and the Cam scale built from it by counting one unit per $ERB_N$: about 132 Hz at 1 kHz, so the step from 934 Hz to 1066 Hz is one Cam. It is narrower than the Bark band at low frequencies, and it is the scale ISO 532-2 and ISO 532-3 compute specific loudness on, so a sone/Cam density is not numerically a sone/Bark one. | Hz (scale in Cam) | ISO 532-2:2017, 3.13 and 3.14 | [Advanced Loudness (ISO 532-2/-3, ECMA-418-2)](https://jmrplens.github.io/phonometry/perception/psychoacoustics/advanced-loudness/) | +| $N_5$ | Percentile loudness: the loudness exceeded 5 % of the time, read off the time-varying loudness of the ISO 532-1 model. It is the stationary stand-in for a fluctuating sound that psychoacoustic annoyance is built on, and it is a loudness in sone, not a loudness level in phon. | sone | Fastl and Zwicker (2007), Equation 16.2; no governing standard | [Psychoacoustic annoyance and fluctuation strength](https://jmrplens.github.io/phonometry/perception/psychoacoustics/psychoacoustic-annoyance/) | +| Short-term and long-term loudness | The two smoothed loudness time series of the Moore-Glasberg-Schlittenlacher model: short-term loudness is the loudness of a brief segment — a syllable, a single note, typically up to 500 ms — and long-term loudness that of a longer one, a whole sentence or musical phrase, typically up to 5 s. The loudness of a sound lasting two or three seconds is predicted by the maximum of the long-term series, not by its average. | sone | ISO 532-3:2023, 3.10 and 3.11 | [Advanced Loudness (ISO 532-2/-3, ECMA-418-2)](https://jmrplens.github.io/phonometry/perception/psychoacoustics/advanced-loudness/) | + +## Electroacoustics and programme loudness + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| THD | Total harmonic distortion: the harmonic content of the output relative to the fundamental ($\mathrm{THD}_F$) or to the total signal ($\mathrm{THD}_R$). | % or dB | IEC 60268-3:2013, 14.12.2 to 14.12.11 (the R form in 14.12.3.2) | [Electroacoustics: distortion and frequency response](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/) | +| THD+N | Total harmonic distortion plus noise: everything left after notching out the fundamental, within the standard measurement bandwidth. | % or dB | AES17-2015, clause 6.3.1 (notch and bandwidth in 5.2.5 and 5.2.8) | [Electroacoustics: distortion and frequency response](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/) | +| SINAD | Signal to noise and distortion ratio, the reciprocal expression of THD+N. | dB | AES17-2015, clause 6.3.1 | [Electroacoustics: distortion and frequency response](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/) | +| IMD, $d_{m,n}$ (modulation) | Modulation intermodulation distortion: the sidebands a strong low-frequency tone produces around a weak high-frequency one. IEC 60268-3 defines several intermodulation families with different test signals, so a bare "IMD" has to say which one it is, and the single number an SMPTE-type analyzer prints combines the modulation sidebands in r.m.s. and is none of them. | % | IEC 60268-3:2013, 14.12.7 | [Electroacoustics: distortion and frequency response](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/) | +| $d_{d,n}$ (difference frequency) | Difference-frequency intermodulation distortion: the products two closely spaced high-frequency tones of equal amplitude create at their difference and its multiples, referred to the fundamentals. Its test signal and its products are both different from the modulation form, so the two numbers are not comparable. | % | IEC 60268-3:2013, 14.12.8 | [Electroacoustics: distortion and frequency response](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/) | +| TDFD | Total difference-frequency distortion: the second- and third-order difference products of the two-tone test combined into one figure and referred to the sum of the two fundamentals, the single number the difference-frequency family reports. | % | IEC 60268-3:2013, 14.12.10 | [Electroacoustics: distortion and frequency response](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/) | +| $H_n$ (harmonic order $n$) | Harmonic transfer function of order $n$: the impulse response that an exponential-sweep deconvolution places $L\ln n$ seconds *before* the linear one, so a single sweep separates the linear response and every harmonic order into its own window. The distortion of order $n$ at excitation frequency $f$ is then read as $\|H_n(nf)\|/\|H_1(f)\|$. | output per input | Farina (2000), no governing standard | [Swept-sine distortion and phase utilities](https://jmrplens.github.io/phonometry/devices/electroacoustics/swept-sine-distortion/) | +| DIM | Dynamic intermodulation distortion, measured with a 15 kHz sine against a filtered 3.15 kHz square wave. | % | IEC 60268-3:2013, 14.12.9 | [Electroacoustics: distortion and frequency response](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/) | +| $L_K$, LUFS | Programme loudness: the channel-weighted sum of K-weighted mean-square powers, gated in 400 ms blocks. LUFS and LKFS name the same unit. | LUFS | ITU-R BS.1770-5, Formula 2 (gating in Formulae 3 to 7) | [Programme loudness and true peak (BS.1770 / EBU R 128)](https://jmrplens.github.io/phonometry/devices/broadcast/program-loudness/) | +| LRA | Loudness range: the spread between the 10th and 95th percentiles of the gated short-term loudness distribution. | LU | EBU Tech 3342 | [Programme loudness and true peak (BS.1770 / EBU R 128)](https://jmrplens.github.io/phonometry/devices/broadcast/program-loudness/) | +| dBTP | True peak level: the peak of the signal reconstructed by oversampling, which catches the inter-sample peaks a sample-domain maximum misses. | dBTP | ITU-R BS.1770-5, Annex 2 | [Programme loudness and true peak (BS.1770 / EBU R 128)](https://jmrplens.github.io/phonometry/devices/broadcast/program-loudness/) | + +## Aircraft and airport noise + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| PNL | Perceived noise level: the 24 one-third-octave band levels converted to noisiness in noys and recombined. | PNdB | ICAO Annex 16, Vol. I, Appendix 2 (noisiness law in Table A2-3) | [Aircraft noise: Effective Perceived Noise Level](https://jmrplens.github.io/phonometry/aircraft/aircraft-noise/) | +| PNLT | Tone-corrected perceived noise level: PNL plus the penalty for spectral irregularities such as fan and turbine tones. | PNdB | ICAO Annex 16, Vol. I, Appendix 2 | [Aircraft noise: Effective Perceived Noise Level](https://jmrplens.github.io/phonometry/aircraft/aircraft-noise/) | +| EPNL | Effective perceived noise level: the maximum PNLT plus the duration correction over the 10 dB-down window, the noise-certification metric. | EPNdB | ICAO Annex 16, Vol. I, Appendix 2 | [Aircraft noise: Effective Perceived Noise Level](https://jmrplens.github.io/phonometry/aircraft/aircraft-noise/) | +| PNLTM | Maximum tone-corrected perceived noise level: the largest PNLT of the half-second time history, after the bandsharing adjustment. It is the peak the certification metric is built on, since $\mathrm{EPNL} = \mathrm{PNLTM} + D$ and the 10 dB-down integration window is measured down from it. | PNdB | ICAO Annex 16, Vol. I, Appendix 2, 4.4 | [Aircraft noise: Effective Perceived Noise Level](https://jmrplens.github.io/phonometry/aircraft/aircraft-noise/) | +| NPD | Noise-power-distance table: the event level of one aircraft — $L_{Amax}$ or SEL — tabulated against distance for a handful of engine power settings, measured in steady flight along a notionally infinite straight path at a reference speed. A calculation interpolates it linearly in power and logarithmically in distance, then corrects that baseline segment by segment. | dB | ECAC Doc 29, 4th ed., Volume 2, section 4.2 | [Airport Noise (ECAC Doc 29)](https://jmrplens.github.io/phonometry/aircraft/airport-noise/) | +| ANP database | Aircraft Noise and Performance database: the international collection of NPD tables, aircraft and engine performance coefficients and default departure and approach profiles, supplied mostly by the manufacturers, that an airport-noise calculation is normally run from. | | ECAC Doc 29, 4th ed., Volume 2, Appendix G | [The ANP fleet database](https://jmrplens.github.io/phonometry/aircraft/anp-fleet/) | +| $d_p$ | Slant distance: the perpendicular distance from the receiver to the flight-path segment, which is the abscissa of every NPD table. It is not the distance along the ground and not the aircraft's altitude, and to the side of the track it is the minimum distance to the segment rather than to the whole path. | m | ECAC Doc 29, 4th ed., Volume 2, section 4.5.2 | [Airport Noise (ECAC Doc 29)](https://jmrplens.github.io/phonometry/aircraft/airport-noise/) | +| $L_{Amax}$ | Maximum A-weighted level of a single event: the largest instantaneous value $L_A(t)$ reaches while the aircraft passes, the simpler of the two event metrics an NPD table carries. Doc 29 reads $L_A$ on the Slow sound-level-meter scale, so the time weighting is part of the quantity; it is not the peak level, which has no time weighting at all. | dB re 20 µPa | ECAC Doc 29, 4th ed., Volume 2, section 4.1 | [Airport Noise (ECAC Doc 29)](https://jmrplens.github.io/phonometry/aircraft/airport-noise/) | + +## Underwater acoustics + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $L_p$ (underwater) | Underwater sound pressure level, referred to 1 µPa rather than 20 µPa. An airborne level never converts to it by subtraction alone. | dB re 1 µPa | ISO 18405:2017 (mean-square level in ISO 18406:2017, Formula 7) | [Underwater acoustics: radiated noise and pile driving](https://jmrplens.github.io/phonometry/underwater/underwater-acoustics/) | +| SEL (underwater) | Underwater sound exposure level, the time integral of squared pressure referred to 1 µPa²·s. | dB re 1 µPa²·s | ISO 18405:2017 | [Underwater acoustics: radiated noise and pile driving](https://jmrplens.github.io/phonometry/underwater/underwater-acoustics/) | +| $L_{RN}$ | Radiated noise level of a ship: the level of the product of the far-field r.m.s. pressure and the source distance. | dB re 1 µPa·m | ISO 17208-1:2016 | [Underwater acoustics: radiated noise and pile driving](https://jmrplens.github.io/phonometry/underwater/underwater-acoustics/) | +| $L_s$ | Equivalent monopole source level: the radiated noise level after the Lloyd's-mirror surface correction, so that one number describes the source itself. | dB re 1 µPa·m | ISO 17208-2:2019, Formula 3 | [Underwater acoustics: radiated noise and pile driving](https://jmrplens.github.io/phonometry/underwater/underwater-acoustics/) | +| TL (underwater) | Transmission loss as the sonar equation uses it: the drop between the source level and the level at the receiver, a geometrical spreading law plus the volume absorption $\alpha R$. Strictly, ISO 18405 calls that quantity propagation loss, $N_{PL} = L_S - L_p(x)$, keeps the name transmission loss for the reduction in level between two stated points, and deprecates using one as a synonym of the other. | dB | ISO 18405:2017, 3.4.1.3 and 3.4.1.4 | [Underwater sound propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/) | +| SL, $L_S$ | Source level: the level of the source factor, equal to the level 1 m from a hypothetical point source radiating into an infinite lossless medium, so it is back-projected from a measurement made much further away and never measured at 1 m. The reference value carries a squared metre, which is why the widespread "dB re 1 µPa at 1 m" is the same number written loosely. | dB re 1 µPa²m² | ISO 18405:2017, 3.3.2.1 | [Underwater sound propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/) | +| NL, $L_N$ | Sonar noise level: the background the signal has to be detected against, in the band of interest, from wind, thermal agitation, distant shipping and the platform's own self-noise. It has to be quoted over the same bandwidth as the source level, since an ambient spectrum level and a broadband level differ by $10\log_{10}B$. | dB re 1 µPa | ISO 18405:2017, 3.6.2.5 | [Underwater sound propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/) | +| DI (receiving array) | Directivity index of a receiving array: the array gain in the special case the sonar equation assumes, a plane-wave signal in isotropic background noise. It is the signal-to-noise ratio the beam buys over a single omnidirectional hydrophone, and it enters the equation as a credit against the noise level. | dB | ISO 18405:2017, 3.6.2.4 (Note 4) | [Underwater sound propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/) | +| DT | Detection threshold: ten times the base-10 logarithm of the signal-to-noise ratio at which a signal counts as just detectable, for a stated probability of detection — often 0,5 — and probability of false alarm. It is where the processing gain and the operator's tolerance for false alarms enter the sonar equation. | dB | ISO 18405:2017, 3.6.2.1 | [Underwater sound propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/) | +| TS, $N_{TS}$ | Target strength: the level of the target's differential scattering cross section, the free-field ratio of what it scatters back to what is incident on it. It is the one term that separates the active sonar equation from the passive one, and it depends on both the incidence and the scattering direction, so a backscattering value is the monostatic special case. | dB re 1 m²/sr | ISO 18405:2017, 3.6.2.8 | [Underwater sound propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/) | +| SE, $\Delta L_{SE}$ | Signal excess: the amount by which the signal-to-noise ratio at the processor output exceeds the detection threshold. It is what the sonar equation returns; the target is detectable where it is positive, and the range at which it crosses zero is the detection range. | dB | ISO 18405:2017, 3.6.2.2 | [Underwater sound propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/) | +| FOM | Figure of merit: the propagation loss at which the probability of detection falls to 50 %, that is, the loss a passive system can afford before the signal excess reaches zero. Inverting any loss law at $TL = \mathrm{FOM}$ gives the detection range directly, which is why it is quoted instead of the whole curve. | dB (re 1 m² as a propagation factor) | Ainslie (2010), Equations (3.48) and (3.111); no governing standard | [Underwater sound propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/) | +| $W(f)$ | Auditory weighting function: a generic band-pass filter shaped to one hearing group's susceptibility to noise-induced hearing loss, with its gain chosen so the flat central part sits at 0 dB. It is applied to the spectrum before an exposure is summed, so the same physical sound weighs differently for a porpoise and for a baleen whale. | dB | NMFS (2024) v3.0, Equation 1 (parameters in Table 5); no governing standard | [Marine-mammal noise exposure](https://jmrplens.github.io/phonometry/underwater/marine-mammal-exposure/) | +| TTS onset | Onset of temporary threshold shift: the exposure at which a recoverable loss of hearing sensitivity begins, published per hearing group as a weighted sound exposure level and, for impulsive sound, together with an unweighted peak level. Both metrics have to be tested; whichever is reached first decides. | dB | NMFS (2024) v3.0, Table 8; no governing standard | [Marine-mammal noise exposure](https://jmrplens.github.io/phonometry/underwater/marine-mammal-exposure/) | +| AUD INJ onset (PTS onset) | Onset of auditory injury, the 2024 guidance's name for what earlier versions called permanent threshold shift onset: the exposure above which the shift no longer recovers. For non-impulsive sound it is the TTS onset plus 20 dB for every group; for impulsive sound the guidance sets it 15 dB above in exposure and 6 dB above in peak level. | dB | NMFS (2024) v3.0, Table ES3; no governing standard | [Marine-mammal noise exposure](https://jmrplens.github.io/phonometry/underwater/marine-mammal-exposure/) | +| $SEL_{cum}$ | Cumulative sound exposure level: the weighted sound exposure of every event of an activity — every strike of a piling campaign, say — summed over its whole duration. The onset criteria are written against this accumulated quantity, not against a single event, so halving the strike energy and doubling the strike count changes nothing. | dB re 1 µPa²·s | NMFS (2024) v3.0, Table ES3; no governing standard | [Marine-mammal noise exposure](https://jmrplens.github.io/phonometry/underwater/marine-mammal-exposure/) | + +## Numerical simulation + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $C_N$ (the cfl argument) | Courant number: how far a wavefront travels in one time step, measured in grid cells, $c\,\Delta t\sqrt{1/\Delta x^2 + 1/\Delta y^2}$. An explicit scheme is stable only up to one and meaningless above it, so it is the number the time step is chosen from rather than the other way round; the library defaults to 0,6. | dimensionless | Attenborough and Van Renterghem (2021), Equations (4.13) and (4.14); no governing standard | [2D FDTD wave simulation](https://jmrplens.github.io/phonometry/simulation/fdtd-simulation/) | +| Numerical dispersion | Numerical dispersion: the error the discrete scheme makes in the propagation speed, which grows with frequency and depends on the direction of travel — largest along a coordinate axis, and zero along the diagonal of square cells at a Courant number of one. It is why ten cells per shortest wavelength is the working rule, and why an FDTD arrival time drifts if the grid is too coarse. | % (speed error) | Attenborough and Van Renterghem (2021), Equation (4.15); no governing standard | [2D FDTD wave simulation](https://jmrplens.github.io/phonometry/simulation/fdtd-simulation/) | +| PML (perfectly matched layer) | Perfectly matched layer: a boundary region whose absorption is graded so that, in principle, it reflects nothing at any angle or frequency, which is what lets a finite grid stand in for open space. What this library ships is the graded sponge layer, its simple precursor, so a grazing-incidence residue at the edge is expected rather than a bug. | | Attenborough and Van Renterghem (2021), Section 4.2.3; no governing standard | [2D FDTD wave simulation](https://jmrplens.github.io/phonometry/simulation/fdtd-simulation/) | + +## Measurement uncertainty + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $u(y)$ | Combined standard uncertainty of a result, propagated from the standard uncertainties of its inputs by the law of propagation of uncertainty. | unit of the result | ISO/IEC Guide 98-3:2008 (JCGM 100:2008), clause 5 | [Measurement uncertainty (GUM and Monte Carlo)](https://jmrplens.github.io/phonometry/signals/metrology/gum-uncertainty/) | +| $U$ | Expanded uncertainty: the combined standard uncertainty multiplied by a coverage factor, which defines a coverage interval. | unit of the result | ISO/IEC Guide 98-3:2008 (JCGM 100:2008), clause 6 and Annex G | [Measurement uncertainty (GUM and Monte Carlo)](https://jmrplens.github.io/phonometry/signals/metrology/gum-uncertainty/) | +| $\sigma_R$ | Reproducibility standard deviation of a sound-insulation quantity: the standard uncertainty ISO 12999-1 assigns to situation A, the widest of the three. The same clause assigns $\sigma_{situ}$ to situation B and the repeatability $\sigma_r$ to situation C — for $R'_w$, 1,2 dB against 0,9 and 0,4 — so the situation has to be stated with the number. | dB | ISO 12999-1:2020, Clause 5.2 (coverage factors in Table 8) | [Field Insulation Measurement (ISO 16283)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-field/) | + +--- + + Source: https://jmrplens.github.io/phonometry/reference/theory/environment-transport/ @@ -31981,7 +33458,9 @@ Source: https://jmrplens.github.io/phonometry/reference/theory/ # Theoretical Background -The theory reference explains the standards, the mathematics and the design decisions behind every phonometry module. It is split into six domain pages, listed below with the sections each one hosts. Theory for the underwater modules lives with its guides: [Underwater Acoustics](https://jmrplens.github.io/phonometry/underwater/underwater-acoustics/), [Underwater Propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/) and [Underwater Propagation Solvers](https://jmrplens.github.io/phonometry/underwater/underwater-solvers/). +The theory reference collects the derivations, clause references and design decisions for the areas whose mathematics is **shared across many guides**. A theory page maps an implemented method back to the clause, equation and table of the standard or textbook it comes from, states the physics behind each correction term and the assumptions that bound it, and gives the reference values the validation suite checks against. It does not show workflows: that is what the guides are for. + +Several areas keep their theory **inside their guides** instead, because the derivation and the single method it serves would otherwise be separated for nothing: the underwater modules ([Underwater Acoustics](https://jmrplens.github.io/phonometry/underwater/underwater-acoustics/), [Underwater Propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/), [Underwater Propagation Solvers](https://jmrplens.github.io/phonometry/underwater/underwater-solvers/) and [Marine-Mammal Noise Exposure](https://jmrplens.github.io/phonometry/underwater/marine-mammal-exposure/)), the aircraft certification and contour methods ([Aircraft noise](https://jmrplens.github.io/phonometry/aircraft/)), the CNOSSOS-EU road and railway emission models ([Environment and transport](https://jmrplens.github.io/phonometry/environment/)), the IEC 60268 electroacoustic measurements, the BS.1770 broadcast chain and the noise-control models ([Sources and devices](https://jmrplens.github.io/phonometry/devices/)), and the FDTD and elastic solvers ([Wave simulation](https://jmrplens.github.io/phonometry/simulation/)). Everything below is listed with the sections each domain page hosts. ## [Signal Analysis](https://jmrplens.github.io/phonometry/reference/theory/signal-analysis/) @@ -32028,6 +33507,8 @@ The theory reference explains the standards, the mathematics and the design deci ## [Vibration](https://jmrplens.github.io/phonometry/reference/theory/vibration/) - [Human vibration (ISO 8041-1, ISO 2631-1/2, ISO 5349-1/2, Directive 2002/44/EC)](https://jmrplens.github.io/phonometry/reference/theory/vibration/#human-vibration-iso-8041-1-iso-2631-12-iso-5349-12-directive-200244ec) +- [Multiple shocks (ISO 2631-5)](https://jmrplens.github.io/phonometry/reference/theory/vibration/#multiple-shocks-iso-2631-5) +- [Point mobilities and radiation efficiency (Cremer 5, Hopkins 2.9)](https://jmrplens.github.io/phonometry/reference/theory/vibration/#point-mobilities-and-radiation-efficiency-cremer-5-hopkins-29) --- @@ -35121,6 +36602,24 @@ parameters) consumes the band signals or band levels these pages produce. - [Multichannel and Performance](https://jmrplens.github.io/phonometry/signals/filters/multichannel/): vectorized multichannel analysis and performance notes. +## What this section does not cover + +`verify_filter_class` checks a designed digital response against Table 1 of +IEC 61260-1. The standard's conformance tests for the physical filter — overload +recovery, linearity, the environmental influence quantities — apply to an +instrument and are not implemented, so a class verdict here is a statement about +the design and not about a device. Near Nyquist the bilinear transform warps +the frequency axis and the bank carries no correction for it, unlike the +`high_accuracy` option of the weighting filters: the stopband beyond the +processing Nyquist is reported as `range_limited` rather than verified, so keep +the top band edge comfortably below Nyquist or raise `fs`. Two operations do +not stream: zero-phase forward-backward filtering needs the whole signal, and +rank statistics such as L90 have to be computed once on the pooled +envelope. And the per-channel path never mixes channels — delay between two +microphones, or how much of one channel a second explains, is +[Correlation and delay](https://jmrplens.github.io/phonometry/signals/spectra/correlation-delay/) and +[Multiple and partial coherence](https://jmrplens.github.io/phonometry/signals/spectra/miso-coherence/). + --- @@ -35353,9 +36852,6 @@ in effect, a sound level meter decomposed into composable functions, and every other section of the documentation builds on it: a loudness model consumes calibrated band levels, a room parameter starts from a filtered impulse response, an environmental rating is an adjusted Leq. -[Build a sound level meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) assembles -that chain end to end on a single runnable page; it is the best starting point -if you want to see the whole area at work before opening the deep guides. Around the level chain sit the general signal-analysis tools: **calibrated spectral estimates** (Welch PSD and cross-spectral density with @@ -35367,13 +36863,40 @@ calibrator tone (dB SPL), or stay in digital full scale (dBFS). **Measurement un supplement) qualifies any result computed from uncertain inputs, which is what makes a number defensible in a report. -If you are new to the library, read -[Filter Banks](https://jmrplens.github.io/phonometry/signals/filters/filter-banks/) first: it introduces the band -decomposition every other page assumes. Then -[Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/) shows the -metrics most measurements end in, and -[Calibration and dBFS](https://jmrplens.github.io/phonometry/signals/metrology/calibration/) anchors them to -physical units. +Three conventions run through every page below, and every snippet on the site +assumes them. A signal is a NumPy array of sound pressure with **time on the +last axis**, so one channel is `(n,)` and several parallel channels are +`(channels, samples)`. The sample rate always travels as an explicit `fs` +argument: nothing is read from a file header, because the library never opens +the file. And the array is expected to hold **pascals**, which is why a level +function applied to raw soundcard samples returns a number whose reference is +arbitrary, and why every level function also accepts a `calibration_factor` in +pascals per digital unit or the `dbfs=True` escape hatch. Simple metrics come +back as floats and arrays; the richer ones come back as frozen result objects +that expose `.plot()`. [Calibration and +dBFS](https://jmrplens.github.io/phonometry/signals/metrology/calibration/) resolves the third convention +in full, and [Multichannel and +Performance](https://jmrplens.github.io/phonometry/signals/filters/multichannel/) the first. + +Two ways in. To see the whole chain working at once, run [Build a sound level +meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/): it calibrates against a +calibrator tone, applies the frequency and time weightings, integrates into +Leq, SEL and percentile levels, splits the signal into octave bands and checks +the class of every stage, on one runnable page. To learn the pieces in +dependency order, start at [Filter +Banks](https://jmrplens.github.io/phonometry/signals/filters/filter-banks/), which introduces the band +decomposition every other page assumes, then [Integrated and Statistical +Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/) for the metrics most measurements +end in, and [Calibration and dBFS](https://jmrplens.github.io/phonometry/signals/metrology/calibration/) +to anchor them to pascals. + +## [Build a sound level meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) + +- [Build a sound level meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/): the whole + chain assembled on one runnable page — calibration, frequency and time + weighting, the integrated and statistical levels, the band decomposition and + the class verdict of each stage — as the worked introduction to the four + subsections below. ## [Octave filtering](https://jmrplens.github.io/phonometry/signals/filters/) @@ -35446,8 +36969,9 @@ and carrying its statistical quality. the comb filter that describes it in the frequency domain, the square-root noise-reduction law, and the choice of the number of averages that places a comb node on an interfering order (McFadden 1987). -- [Machine fault frequencies](https://jmrplens.github.io/phonometry/vibration/machinery/machine-diagnostics/): - the kinematic fault-frequency families of rotating machinery (Norton & +- [Machine fault frequencies](https://jmrplens.github.io/phonometry/vibration/machinery/machine-diagnostics/) + (in the vibration section): the kinematic fault-frequency families of + rotating machinery (Norton & Karczub Section 8.4) drawn on top of a measured envelope spectrum: bearing BPFO, BPFI, BSF and cage frequencies, gear-mesh sidebands, induction-motor slip, pole-pass and rotor-slot harmonics, and blade-passing tones. @@ -35478,6 +37002,39 @@ What the numbers mean and how much to trust them. arrangement and runs stationarity tests on segment statistics, and the Rice level-crossing and peak statistics with the irregularity factor. +## What this section does not cover + +Four things a reader reasonably expects here are absent, and each guide says so +in its own "Not covered" block. **No instrument is verified.** +`verify_filter_class` and `verify_weighting_class` check a designed digital +response against the tolerance tables of IEC 61260-1 and IEC 61672-1; the +IEC 61672-3 pattern-evaluation tests a physical meter needs for type approval, +and the IEC 60942 conformance tests of the calibrator itself, are not run, so a +class verdict here describes the algorithm and not a built device. **No file is +opened.** Nothing in the library decodes WAV, FLAC or any other container: +every function takes an array you have already read, which is why `fs` is +always an argument. **No array processing.** Correlation and time delay model +one common path between exactly two sensors and report the single largest peak; +there is no multi-sensor TDOA solver, no beamformer and no source localisation. +**No perceptual features.** The cepstrum here is the plain linear-frequency +one, with no mel warping or MFCC variant, and loudness as a sensation belongs +to [Psychoacoustics](https://jmrplens.github.io/phonometry/perception/psychoacoustics/), not to the +energy metrics of this section. + +## Before and after these pages + +The derivations behind these pages are in [Signal analysis +theory](https://jmrplens.github.io/phonometry/reference/theory/signal-analysis/): the band grid, the weighting curves, +the time integration, the intensity approximation and the uncertainty +framework. If you have not run anything yet, [Getting +Started](https://jmrplens.github.io/phonometry/start/getting-started/) installs the library and +calibrates a first analysis. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. + --- @@ -35556,6 +37113,25 @@ Pages elsewhere on the site that this section leans on: the corrected level LKeq, the Kt/Kf/Ki corrections, the evaluation periods and noise phases, and the limit tables. +## What this section does not cover + +These pages implement the signal processing of a sound level meter, not the +meter. The rest of IEC 61672-1 — level ranges, overload indication, the +self-generated noise floor, the directional response and the IEC 61672-3 +periodic tests — is not implemented anywhere in the library, so nothing here +assigns a class to a physical instrument; [Build a sound level +meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) states exactly what a class +verdict from the library does and does not mean. Two curves come without a +verdict of any kind: ISO 7196 defines a single ±1 dB tolerance for G with no +class structure, and the withdrawn IEC 537 left no tolerance table behind for +D, so both curves filter a signal but neither reaches +`verify_weighting_class`, and they are pinned against their published tables in +the conformance report instead. The noise dose is the 1993 +first edition of IEC 61252 only, not the 2025 revision. And a dose is a +quantity, not a verdict: the exposure strategies, the sampling plan and the +limits that decide whether a worker is over-exposed are [Occupational exposure +(ISO 9612)](https://jmrplens.github.io/phonometry/perception/hearing/occupational-exposure/). + --- @@ -38005,18 +39581,19 @@ Source: https://jmrplens.github.io/phonometry/signals/metrology/ # Calibration and uncertainty -A level printed by software is not yet a measurement. Two things separate the -one from the other: knowing what the digital samples mean **physically**, and -knowing how much the result could reasonably be **wrong**. This section covers -both, and they apply transversally to every other page of the documentation. +A level printed by software is not yet a measurement. Three things separate +the one from the other: knowing that the record deserves to be **averaged at +all**, knowing what the digital samples mean **physically**, and knowing how +much the result could reasonably be **wrong**. This section covers all three, +and they apply transversally to every other page of the documentation. -[Calibration and dBFS](https://jmrplens.github.io/phonometry/signals/metrology/calibration/) handles the first. -phonometry works in two reference frames: physical **dB SPL**, established -either from a recorded calibrator tone (the IEC 60942 field ritual) or from a -known microphone sensitivity, and digital **dBFS**, levels relative to full -scale, appropriate when no physical reference exists or when characterising -the digital chain itself. The page explains how each mode is set up and, just -as important, which quantities are meaningful in which frame. +[Calibration and dBFS](https://jmrplens.github.io/phonometry/signals/metrology/calibration/) handles the +physical meaning. phonometry works in two reference frames: physical **dB +SPL**, established from a recorded calibrator tone (the IEC 60942 field +ritual), and digital **dBFS**, levels relative to full scale, appropriate when +no physical reference exists or when characterising the digital chain itself. +The page explains how each mode is set up and, just as important, which +quantities are meaningful in which frame. [Measurement uncertainty (GUM and Monte Carlo)](https://jmrplens.github.io/phonometry/signals/metrology/gum-uncertainty/) handles the second, implementing the *Guide to the Expression of Uncertainty @@ -38052,8 +39629,8 @@ budgets that are specialisations of the GUM machinery described here. ## Pages in this section - [Calibration and dBFS](https://jmrplens.github.io/phonometry/signals/metrology/calibration/): physical SPL - calibration from a calibrator tone or a known sensitivity, and the digital - full-scale mode. + calibration from a calibrator tone, the stability check it applies to that + recording, and the digital full-scale mode. - [Measurement uncertainty (GUM and Monte Carlo)](https://jmrplens.github.io/phonometry/signals/metrology/gum-uncertainty/): the law of propagation of uncertainty and the Monte Carlo method, expanded uncertainty and coverage intervals. @@ -38061,6 +39638,24 @@ budgets that are specialisations of the GUM machinery described here. arrangement and runs stationarity tests on segment statistics, and the Rice level-crossing and peak statistics with the irregularity factor. +## What this section does not cover + +Nothing here checks an instrument or a calibrator. The IEC 60942 conformance +tests of the calibrator itself — generated level, frequency, distortion, and +the corrections for static pressure and temperature — are not implemented, so +pass an already corrected `target_spl` when the manual asks for one, and the +IEC 61672-3 periodic tests are cited as laboratory practice rather than run. +The dBFS half of the calibration page sits outside any standard and makes no +physical claim: it is a reference frame, not a measurement. Data qualification +implements the quantitative core of Bendat & Piersol's section 10.3 only — +classifying a record's type, validating it against physical limits and editing +out glitches remain manual steps, as the book describes them. And an +uncertainty budget is a model of *your* measurement: the library propagates +whatever you declare, and never invents the terms. Where a standard publishes +its own budget the guides say so, as ISO 9612 does for [occupational +exposure](https://jmrplens.github.io/phonometry/perception/hearing/occupational-exposure/) and ISO 12999-1 +for [sound insulation](https://jmrplens.github.io/phonometry/buildings/insulation/). + --- @@ -39120,8 +40715,37 @@ same dB SPL / dBFS reference frames as the rest of the library) and carries its **statistical quality**, so a spectrum is not just a curve but a curve with a confidence interval. -[Calibrated spectral analysis](https://jmrplens.github.io/phonometry/signals/spectra/spectral-analysis/) is the -frequency-domain half. The Welch power and cross-spectral density estimators +Eight pages sit under that discipline, in six families: the frequency-domain +estimators ([spectral +analysis](https://jmrplens.github.io/phonometry/signals/spectra/spectral-analysis/), [multiple and +partial coherence](https://jmrplens.github.io/phonometry/signals/spectra/miso-coherence/)), the +time-frequency middle ground +([spectrograms](https://jmrplens.github.io/phonometry/signals/spectra/time-frequency/)), the +spectrum-shape methods +([cepstrum](https://jmrplens.github.io/phonometry/signals/spectra/cepstrum-echoes/)), the period-domain +methods ([synchronous +averaging](https://jmrplens.github.io/phonometry/signals/spectra/synchronous-averaging/)), the +time-domain estimators ([correlation and +delay](https://jmrplens.github.io/phonometry/signals/spectra/correlation-delay/)), and the stimulus and +system toolbox ([test +signals](https://jmrplens.github.io/phonometry/signals/spectra/test-signals/), [system +measurement](https://jmrplens.github.io/phonometry/signals/spectra/system-measurement/)). + +They differ in what they estimate and share two decisions. The first is the +**segment length**. It fixes the resolution bandwidth of a PSD, the cell shape +of a spectrogram, the number of averages behind every confidence interval, the +longest delay a generalized cross-correlation can see and the degrees of +freedom a conditioned MISO estimate has left, so choosing it once and keeping +it is what makes a PSD, a coherence and a delay computed from the same record +mutually consistent. The second is **stationarity**. Every average on these +pages, and every error formula quoted beside it, assumes the process did not +drift while it was being recorded, which is exactly what the [data +qualification](https://jmrplens.github.io/phonometry/signals/metrology/data-qualification/) tests decide; +when a record fails them, the honest tools are the short-time views rather than +the averaged ones. + +[Calibrated spectral analysis](https://jmrplens.github.io/phonometry/signals/spectra/spectral-analysis/) is where +the frequency-domain family starts. The Welch power and cross-spectral density estimators report their effective number of averages, normalized random errors and chi-square confidence intervals; the coherent output spectrum splits a measured output into the part explained by an input and the part that is @@ -39154,7 +40778,7 @@ root of the number of averages, and choosing that number to place a comb node on an interfering order rejects it far better than the habitual power of two. [Correlation, time delay and envelope](https://jmrplens.github.io/phonometry/signals/spectra/correlation-delay/) -is the time-domain half. Auto- and cross-correlation come with the +is where its time-domain counterpart starts. Auto- and cross-correlation come with the Bendat & Piersol normalizations and random errors; time-delay estimation offers the direct correlator, the cross-spectrum phase slope and the Knapp & Carter generalized cross-correlation weightings (Roth, SCOT, PHAT, @@ -39163,12 +40787,16 @@ sub-sample precision; and the Hilbert transform yields the envelope with instantaneous phase and frequency. [Test signals and sample-rate tools](https://jmrplens.github.io/phonometry/signals/spectra/test-signals/) is -the toolbox the other two lean on: tone bursts with the exact gating of -IEC 60268-1 (zero-crossing start, integral full periods, repetitive trains), -polyphase resampling behind an explicit anti-alias specification whose -designed filter travels with the result, and band-limited fractional delay -with a linear or circular boundary, sharing its kernel with the sub-sample -alignment of impulse responses. +the toolbox underneath the rest: tone bursts with the exact gating of +IEC 60268-1 (zero-crossing start, integral full periods, repetitive trains) +that exercise detector ballistics, polyphase resampling behind an explicit +anti-alias specification whose designed filter travels with the result and +which every cross-rate comparison needs, and band-limited fractional delay +with a linear or circular boundary, whose kernel is shared by the +impulse-response alignment of +[Correlation, time delay and envelope](https://jmrplens.github.io/phonometry/signals/spectra/correlation-delay/) +and the non-integer period alignment of +[Time synchronous averaging](https://jmrplens.github.io/phonometry/signals/spectra/synchronous-averaging/). [System measurement](https://jmrplens.github.io/phonometry/signals/spectra/system-measurement/) turns the toolbox toward measuring systems themselves: complementary Golay pairs @@ -39233,6 +40861,25 @@ Pages elsewhere on the site that this section leans on: BPFO, BPFI, BSF and cage frequencies, gear-mesh sidebands, induction-motor slip, pole-pass and rotor-slot harmonics, and blade-passing tones. +## What this section does not cover + +These are Bendat & Piersol's textbook estimators, not a certification method: +no page here carries clause numbers or acceptance limits, and no result is a +compliance verdict. Three capabilities a reader looks for are genuinely absent. +**Multiple arrivals are not separated.** `time_delay` and `echo_detection` +report the single largest peak, so a record with a direct path plus several +reflections needs manual peak-picking or repeated calls on narrowed bands. +**There is no multi-sensor geometry.** Delay estimation is pairwise; there is +no built-in TDOA solver, no beamformer and no source localisation, and a +multiple-output system needs one `miso_coherence` call per output. +**There are no perceptual features.** The cepstrum is the plain +linear-frequency one, with no mel warping and no MFCC variant. Two estimators +that share this section's Welch core are documented where they are used +instead: the transfer function and ordinary coherence on +[Electroacoustics](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/), and +the two-microphone intensity probe on [Sound +intensity](https://jmrplens.github.io/phonometry/devices/emission/intensity/). + --- @@ -42261,6 +43908,14 @@ bit-identical outputs on the same platform), validated against analytic oracles, and double as a cross-check engine for the closed-form models of the other sections. +The 2D domain is a **cross-section**, and that has one consequence worth +settling before any number leaves the solver: a point in the plane is +physically an infinite line source, so amplitudes fall as the inverse square +root of distance, about 3 dB per doubling instead of 6. Interference and +diffraction patterns, arrival times and modal frequencies are faithful; +absolute levels and decay rates belong to that geometry and not to a 3D room. +A quantitative 3D claim needs a closed form or a 3D solver behind it. + The section splits along the media it simulates. The acoustic page explains the numerical method (the staggered leapfrog scheme and its Courant stability bound), the building blocks (sources, probes, obstacles and @@ -42310,8 +43965,34 @@ The elastic solver adds two: the bending packet entering an L-junction, on and the coincidence plate, on panel sound insulation. Both also appear on the elastic page below, where the solver that produced them is explained. +Several of those guides do more than illustrate: they run a **whole +standardised measurement inside the domain**. The impedance-tube guide performs +the ISO 10534-2 and ASTM E2611 reductions on a simulated tube and recovers the +sample's analytic absorption and transmission loss; the diffuser and +metadiffuser guides drive meshed panels with a plane wave and transform the near +field into a polar response; the panel-insulation and plate-junction guides +launch bending waves into a plate and watch coincidence and junction splitting +happen. In each case the solver is standing in for the laboratory, which is +what makes the closed-form comparison a real test rather than a demonstration. + +Setting up a run is a chain, and each link fixes the next. The highest frequency +you need and the **slowest** sound speed anywhere in the domain fix the cell +size, through the cells-per-wavelength rule that numerical dispersion sets. The +cell size and the **fastest** speed then fix the time step, through the Courant +stability bound. The domain has to hold the geometry plus clearance for the +absorbing layers, which are themselves sized by the **lowest** frequency. The +run must last long enough for the field to cross the domain, and for a +steady-state answer long enough for the transient to leave before the analysis +window opens. The cost is cells times steps, so halving the cell size costs +eight times more in 2D — a factor of four in cells and a factor of two in steps. +The acoustic page gives the numbers for each link, and the elastic page adds the +extra sampling that free surfaces and interface waves demand. + ## Pages in this section +Read the acoustic page first: the elastic page assumes its vocabulary and says +so in its own opening. + - [2D FDTD wave simulation](https://jmrplens.github.io/phonometry/simulation/fdtd-simulation/): the staggered-grid pressure-velocity FDTD method following Attenborough & Van Renterghem (2021) chapter 4, its sources, probes, obstacles and boundary @@ -42323,6 +44004,42 @@ elastic page below, where the solver that produced them is explained. Scholte interface waves and immersed-plate transmission, each validated against its exact closed form. +## What this section does not cover + +**Two dimensions, and no way around it.** Everything a 2D cross-section cannot +say about a 3D room, neither solver says, and the cylindrical spreading above is +only the most visible consequence. The open boundary is a quadratic-ramp +absorbing layer — the simple precursor of a perfectly matched layer, not a PML — +so grazing incidence is absorbed less cleanly than normal incidence, and the +elastic solver has no elastic PML at all, which shows most on grazing Rayleigh +waves. The medium is non-moving: **wind and flow advection are not modelled**, +so a refraction study here comes from a height-dependent sound-speed profile and +not from a flow field. The only impedance boundary is a frequency-independent +real one, so a porous absorber has to be meshed rather than declared. On the +elastic side the solid is isotropic and purely elastic: no anisotropy, and no +viscoelastic damping beyond the bulk decay rate, so a material loss factor +cannot be entered. + +And nothing here is a room-acoustics package. There is no geometry importer, no +material library, no ray tracer, no auralisation and no 3D solver: obstacles are +rasterised onto the grid from shapes you define, and the output is a field you +analyse yourself. + +## Before and after these pages + +The fields these solvers produce are read back with the same tools as a +measurement: the filtering, weighting and level functions of [Signal +analysis](https://jmrplens.github.io/phonometry/signals/), with [Build a sound level +meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) running that chain end to end on +one runnable page. There is no theory-reference page for the solvers; the +derivations, the stability conditions and the analytic oracles stay inside the +two guides above. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. + --- @@ -42493,18 +44210,33 @@ Source: https://jmrplens.github.io/phonometry/start/ # Start -Four short pages, meant to be read once before anything else. Each answers one +phonometry computes acoustic quantities from the text of the standards that +define them — ISO, IEC, ANSI and ASTM, the CNOSSOS-EU annex to Directive +2002/49/EC, and the ICAO and ECAC aircraft documents — and every metric names +the clause it implements. What that buys you, and how it is checked, is +[Why phonometry](https://jmrplens.github.io/phonometry/start/why-phonometry/). + +Five short pages, meant to be read once before anything else. Each answers one question, and they are in the order the questions arrive. **Can I install it and get a number out?** -[Getting Started](https://jmrplens.github.io/phonometry/start/getting-started/) installs the library and -runs a first one-third-octave analysis, on a synthetic signal and then on a WAV -file, and states what a recording must satisfy before those numbers mean -anything physical. It stops short of a calibrated measurement on purpose: -[Calibration and dBFS](https://jmrplens.github.io/phonometry/signals/metrology/calibration/) is the next -step, the one that turns band levels into pascals, and -[Build a sound level meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) runs the -whole chain end to end. +[Getting Started](https://jmrplens.github.io/phonometry/start/getting-started/) installs the library, +runs a first one-third-octave analysis on a synthetic signal, then anchors that +analysis to a calibrator tone so the levels are decibels re 20 µPa rather than +decibels re nothing, reduces them to one A-weighted level, and states what a +recording must satisfy for any of it to hold. It stops one stage short of a +meter: the Fast and Slow ballistics, $L_{AE}$, $L_{Cpeak}$ and the percentile +levels are in [Build a sound level +meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/), which runs the whole chain end +to end on one page, and [Calibration and +dBFS](https://jmrplens.github.io/phonometry/signals/metrology/calibration/) is the deep guide behind the +one step that matters most. + +**I have a job, not a subject. Which page is it?** +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes the library by +the task instead of the topic: measure a reverberation time, check a wall +against a building code, rate a machine's sound power, decide whether a worker +is over the exposure limit. **Where is the thing I came for?** [All guides](https://jmrplens.github.io/phonometry/start/guides/) is the map: every guide in the library, @@ -42519,11 +44251,55 @@ tone-burst check worked through against the acceptance limits. [About](https://jmrplens.github.io/phonometry/start/about/) states who maintains it, how to cite it and under what licence. +## Two things to settle before any guide works + +**Which reference frame a level is in.** A level is either *physical*, in +dB SPL, anchored by a recorded calibrator tone or by a known microphone +sensitivity, or *digital*, in dBFS relative to full scale. The two are not +interchangeable, and most guides assume the first: a level function handed raw +soundcard samples returns a number whose reference is arbitrary, which looks +exactly like a valid answer. [Calibration and +dBFS](https://jmrplens.github.io/phonometry/signals/metrology/calibration/) settles it. + +**That almost everything downstream consumes bands.** Below the raw signal +there is one decomposition: fractional-octave bands whose −3 dB edges sit on +the ANSI S1.11 / IEC 61260-1 nominal frequencies. A loudness model, a room +parameter and an environmental rating all start from it, which is why the +band-filtering page is the one prerequisite that turns up everywhere: [Filter +Banks](https://jmrplens.github.io/phonometry/signals/filters/filter-banks/). + +## What a guide looks like + +Worth knowing before opening one, because it is what lets you decide in thirty +seconds whether a page answers your question. Every guide opens with the +standard it implements, the quantities that standard defines and the +assumptions the implementation makes; then comes runnable code and the figure +it draws; and it closes with a "What this guide covers" block that states +plainly which clauses, annexes and methods are implemented and which are not. +The last of those is the part a reviewer asks about, and it is deliberately the +part written most bluntly. + +## If you already know what you need + +- A first measurement carried end to end: [Build a sound level meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/). +- The whole inventory, by topic: [All guides](https://jmrplens.github.io/phonometry/start/guides/). +- A symbol you have but cannot name: the [glossary](https://jmrplens.github.io/phonometry/reference/glossary/), with its unit, its defining clause and the guide that computes it. +- Evidence that a number is defensible: the [conformance report](https://jmrplens.github.io/phonometry/reference/conformance/), which prints each standard's own expected value beside the computed one. +- A printed expected value that disagrees with the library: the [errata registry](https://jmrplens.github.io/phonometry/reference/errata/), which says which of the two is wrong and why. + The assumed starting point is Python 3.13 or newer with working NumPy and SciPy, and enough acoustics to know what a one-third-octave band and a sound -pressure level are. Any symbol the guides use without introducing is in the -[glossary](https://jmrplens.github.io/phonometry/reference/glossary/), with its unit, its defining clause -and the guide that computes it. +pressure level are. + +## What Start is not + +This is not a tutorial series, and it is not the API. Function signatures and +argument types are in the generated API reference. The derivations, the +numerical conformance report, the errata register for defects found in the +published standards themselves, the glossary of symbols and the bibliography +are all in [Reference](https://jmrplens.github.io/phonometry/reference/). And the acoustics itself is +assumed rather than taught: the guides explain the method a standard +prescribes and why it is written that way, not what a decibel is. --- @@ -42763,7 +44539,20 @@ depth-dependent sound speed, refracts sound into channels that carry it for kilometres. This section covers the discipline along the source-path-receiver chain of the rest of the library. -The **source** half, in +That reference difference is the commonest trap for a reader arriving from +airborne acoustics, and it is worth settling before anything else. The same +pressure expressed re 1 µPa is **26 dB larger** than expressed re 20 µPa, which +is arithmetic. On top of that, the same pressure in water carries far less +intensity than in air, because sea water's characteristic impedance is some +3 700 times that of air. An underwater 120 dB and an airborne 120 dB therefore +describe entirely different physical situations, and the two must never be +compared. The rule this section follows is simple: every level carries its +reference explicitly, a conversion between the two conventions is pure +re-referencing and never an energy equivalence, and the only place the airborne +reference appears here at all is for the two in-air carnivore hearing groups on +the exposure page. + +The **source** stage, in [Underwater acoustics: radiated noise and pile driving](https://jmrplens.github.io/phonometry/underwater/underwater-acoustics/), sets up the ISO 18405 terminology (SPL, SEL and peak levels and their references) and applies it to two regulated measurement cases: ships, with @@ -42772,7 +44561,7 @@ level of ISO 17208-2 via the Lloyd's-mirror surface correction, and percussive pile driving, with the single-strike, peak and cumulative sound exposure of ISO 18406. -The **path** half now spans two pages. +The **path** stage spans two pages. [Underwater sound propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/) predicts what the sea does to that sound in closed form: geometrical spreading plus volume absorption (Francois-Garrison, Ainslie-McColm or @@ -42786,7 +44575,7 @@ computes the field instead: the normal-mode expansion, ray tracing and the split-step Fourier parabolic equation, with the guidance for choosing between them and the closed forms. -A **receiver** half closes the loop. +A **receiver** stage closes the loop. [Marine-mammal noise exposure](https://jmrplens.github.io/phonometry/underwater/marine-mammal-exposure/) takes the level a source and a path produce and asks what it does to the animals that hear it: the group audiograms of Southall et al., the regulatory @@ -42816,6 +44605,54 @@ lives inline with the guides rather than in the theory reference. guidance version selectable, the TTS and injury onset criteria, and a worked pile-driving assessment. +## What this section does not cover + +**The measurement discipline is not implemented, only its arithmetic.** ISO +17208-1's four-run, three-hydrophone averaging, its closest-point-of-approach +and water-depth geometry checks, its ±30° data-window scoring and its +background-noise correction are the operator's; the library supplies the +closed-form radiated-noise and monopole source levels that follow. ISO 18406 +itself excludes vibro- and sheet-piling from its scope, so continuous +pile-driving noise has no closed form here or anywhere in the library. + +**The seabed is thin.** The closed-form page models it as a lossless +fluid-fluid Rayleigh reflection, so sediment attenuation is out of scope, and +all three solvers assume a **range-independent** water column with no absorbing +or elastic bottom and no real bathymetry — which rules out range-dependent +problems entirely. The ray solver returns paths and travel times but not +amplitudes (no ray-tube intensity, no caustic correction), and the parabolic +equation is the standard small-angle Tappert form rather than a wide-angle Padé +variant. For the elastic seabed physics these fluid solvers leave out, the +[elastic wave solver](https://jmrplens.github.io/phonometry/simulation/elastic-waves/) is the nearest +thing the library has. + +**The exposure page rates hearing, not behaviour.** Only the auditory-effect +criteria are implemented; behavioural-disturbance thresholds, the ones a +harassment take estimate turns on, are out of scope. Nothing chooses a hearing +group or an accumulation period for you, and nothing models the animal moving +relative to the source, so the cumulative exposure reported is the +stationary-receiver worst case. There is no audiogram for low-frequency +cetaceans, because the source publication does not print one of its parameters. + +Two smaller boundaries: the ambient-noise spectrum leaves out the low-frequency +turbulence band and has no built-in distant-shipping model — supply a shipping +spectrum yourself — and the active sonar equation is monostatic only. + +## Before and after these pages + +Every level here is a level re 1 µPa computed from a hydrophone record, so the +calibration, weighting and spectral estimation behind it are in [Signal +analysis](https://jmrplens.github.io/phonometry/signals/), and [Build a sound level +meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) runs that chain end to end on +one runnable page, in air but with the same functions. The underwater theory is +deliberately not in the theory reference: it lives inline with the four guides +above, where the quantity system of ISO 18405 is introduced with them. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. + --- @@ -44797,7 +46634,8 @@ of this section cover the general chain and the special case that breaks it. It covers the whole-body and hand-arm frequency weightings of **ISO 8041-1**, the weighted r.m.s. acceleration and the running and dose measures of **ISO 2631-1** (MTVV, VDV, MSDV, crest factor) that flag shocks a plain -r.m.s. would hide, vibration in buildings per ISO 2631-2, the hand-arm +r.m.s. would hide, the direction-independent `Wm` weighting that **ISO 2631-2** +prescribes for building occupants on every axis, the hand-arm vibration total value and daily exposure A(8) of **ISO 5349-1/-2**, and the exposure action and limit values of **Directive 2002/44/EC** that make A(8) legally meaningful. @@ -44810,14 +46648,16 @@ which load the lumbar spine far beyond what their energy average suggests. a dose from the response peaks, and converts it into compressive stress on the vertebral endplates and a probability of lumbar injury over a working life. -Use ISO 2631-1 metrics first; when the crest factor or the VDV warns that -shocks dominate, ISO 2631-5 is the dedicated follow-up: its clause 5 model, -implemented here, covers severe shocks with possible loss of contact with -the seat, while less severe exposures in which the occupant stays seated -belong to its Annex A finite-element model. The -measurement front-end (weighting filters, band analysis) is shared with the -[core signal analysis](https://jmrplens.github.io/phonometry/signals/) -section. +Use the ISO 2631-1 metrics first, and let two numbers decide when to move on. A +**crest factor above 9** says the basic weighted r.m.s. method is no longer +adequate for that record, which is the ISO 2631-1 trigger for reaching for the +running and dose measures. A **band-limited vertical peak acceleration above +9.81 m/s²** — 1 g, the free-fall threshold — puts the exposure in ISO 2631-5's +clause 5 regime, the severe shocks with possible loss of contact with the seat +that this library implements, rather than in its Annex A finite-element model +for exposures in which the occupant stays seated. The measurement front-end +(weighting filters, band analysis) is shared with the [core signal +analysis](https://jmrplens.github.io/phonometry/signals/) section. ## Pages in this section @@ -44828,6 +46668,30 @@ section. the spinal-response model, acceleration dose and probability of lumbar injury. +## What this section does not cover + +**No meter is type-tested.** ISO 8041-1's own subject — the design and +type-testing of general-purpose human-vibration meters — is not implemented; +only its frequency-weighting definitions are taken from it, so nothing here +assigns a class to an instrument. + +**Building vibration stops at the weighting.** Of ISO 2631-2 the library +implements the direction-independent `Wm` curve and nothing else, and that is +closer to the standard than it looks: the 2003 edition deliberately deleted its +predecessor's guidance values, so there are no acceptable magnitudes for +building vibration to compare against. A reader looking for a limit will not +find one here, and will not find one in the standard either. + +**Of ISO 2631-5, the clause 5 model only.** The Annex A finite-element model +for less severe seated exposures is distributed separately by ISO and is not +implemented, which is what makes the 1 g delineation above a routing decision +rather than a preference. + +And no exposure verdict is issued. The action and limit values of Directive +2002/44/EC are stated so that an A(8) can be read against them, but the +library applies no national implementation of the directive, and a +risk-assessment conclusion is not a number this section produces. + --- @@ -45089,23 +46953,28 @@ Source: https://jmrplens.github.io/phonometry/vibration/ # Vibration and structure-borne sound -Vibration matters to acoustics twice. First as a **source of sound**: a pump -or fan bolted to a building injects structure-borne power that travels through -walls and floors and re-radiates as audible noise rooms away. Second as a -**human exposure** in its own right: vibration transmitted to a standing, -seated or hand-gripping person is measured, weighted and limited much like -noise, with its own metrics and legal action values. +Vibration matters to acoustics three times over. First as a **source of +sound**: a pump or fan bolted to a building injects structure-borne power that +travels through walls and floors and re-radiates as audible noise rooms away. +Second as a **human exposure** in its own right: vibration transmitted to a +standing, seated or hand-gripping person is measured, weighted and limited much +like noise, with its own metrics and legal action values. Third as a +**diagnosis of the machine itself**: the same spectrum that feeds the first two +questions also names the bearing, gear or blade that produced it, because every +periodicity in it belongs to something that turns, meshes or passes, at a +frequency fixed by the geometry. The **structure-borne sources** pages follow the source chain in order. The frequency-response-function family of ISO 7626 (receptance, mobility, -accelerance) is the vocabulary; the transfer stiffness of ISO 10846 -characterises the resilient elements that interrupt the path; ISO/TS 7849 -estimates the airborne power a vibrating surface radiates directly; EN 15657 -measures the structure-borne power a machine injects into a reception plate; -and EN 12354-5 assembles all of it into the sound pressure level predicted in -a receiving room. That final prediction is also where this section hands over -to the [sound insulation](https://jmrplens.github.io/phonometry/buildings/insulation/) models -of the buildings section. +accelerance) is the vocabulary; the wave-approach transmission coefficients of +a plate junction describe the structure the power then runs through; the +transfer stiffness of ISO 10846 characterises the resilient elements that +interrupt that path; ISO/TS 7849 estimates the airborne power a vibrating +surface radiates directly; EN 15657 measures the structure-borne power a +machine injects into a reception plate; and EN 12354-5 assembles all of it into +the sound pressure level predicted in a receiving room. That final prediction +is also where this section hands over to the [sound +insulation](https://jmrplens.github.io/phonometry/buildings/insulation/) models of the buildings section. The **human vibration** pages share the measurement philosophy of a sound level meter, applied to acceleration: frequency weightings that reflect body @@ -45115,9 +46984,11 @@ dedicated spinal-response model for vibration containing repeated shocks. Start with [Mechanical mobility and the FRF family](https://jmrplens.github.io/phonometry/vibration/structural/mechanical-mobility/) -if you care about machines and buildings, or with -[Human Vibration](https://jmrplens.github.io/phonometry/vibration/human/human-vibration/) if you care about -people. +if you care about the noise a machine causes in a building, with +[Human Vibration](https://jmrplens.github.io/phonometry/vibration/human/human-vibration/) if you care +about the dose a person receives, or with [Machine fault +frequencies](https://jmrplens.github.io/phonometry/vibration/machinery/machine-diagnostics/) if you care +about the condition of the machine itself. ## [Structure-borne sources](https://jmrplens.github.io/phonometry/vibration/structural/) @@ -45161,6 +47032,52 @@ Turning a vibration spectrum into a diagnosis of the machine that made it. the characteristic bearing, gear and shaft frequencies, and the envelope analysis that finds them under the broadband noise of a running machine. +## What this section does not cover + +**No instrument is type-tested.** ISO 8041-1's own subject, the design and +type-testing of human-vibration meters, is not implemented: only its frequency +weightings are taken from it, so a class verdict for a hand-held meter is not +something this library can give. + +**No severity verdict is issued for a machine.** The machinery pages predict +*where* a line would be, never whether it is present or whether the machine is +in trouble: the amplitude criteria that turn a present line into an assessment +— crest-factor and kurtosis trending, and the velocity severity bands of +ISO 10816 / ISO 20816 — are outside the library, as are rotor balancing +(ISO 21940) and order tracking. + +**Nor is one issued for a building.** The 2003 edition of ISO 2631-2 deleted +its predecessor's guidance values on purpose, so there are no acceptable +magnitudes for building vibration to compare against; what the library gives is +the weighted magnitude, and the judgement stays with the assessor and the +national code. + +Two structural predictions are idealisations rather than measurements. The +junction transmission coefficients are a closed-form result for a rigid, simply +supported junction — the *measured* vibration reduction index of ISO 10848 is +[Laboratory flanking transmission](https://jmrplens.github.io/phonometry/buildings/insulation/flanking-lab/) +— and the FRF page returns element-wise free reciprocals, correct for a +driving-point or single-path use but not a full FRF matrix, with no +impact-hammer processing (ISO 7626-5) and no blocked matrix quantities. On the +isolator page, parts 4 and 5 of ISO 10846 are not implemented, and two of the +standard's validity checks (the blocking-mass inequality and the clause 7.6 +linearity criterion) are described but not computed for you. + +## Before and after these pages + +Every quantity here starts from an acceleration record and a spectral estimate, +so the filtering, the weighting curves and the spectral estimators behind them +are in [Signal analysis](https://jmrplens.github.io/phonometry/signals/), and [Spectral +analysis](https://jmrplens.github.io/phonometry/signals/spectra/spectral-analysis/) is the page the +machinery diagnostics build on. The derivations are in [Vibration +theory](https://jmrplens.github.io/phonometry/reference/theory/vibration/): the human-vibration weightings, the ISO 2631-5 +shock model and the point mobilities and radiation efficiency. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. + --- @@ -45169,14 +47086,74 @@ Source: https://jmrplens.github.io/phonometry/vibration/machinery/ # Machinery -A rotating machine writes its own state into its vibration spectrum. Each -defect has a frequency that follows from the geometry, and finding one under -the broadband noise of a running machine is a signal-processing problem with a -standard answer. +A rotating machine has a **kinematic signature**. Every periodicity in its +vibration belongs to something that turns, meshes or passes, and the geometry +fixes the frequency before any measurement is made: a bearing with fifteen +elements running at a given shaft speed has an outer-race pass frequency that +can be written down, not searched for. Three families cover most machines. For a +**rolling-contact bearing**, the outer-race and inner-race element-pass +frequencies, the cage rate and the rolling-element spin rate, all scaling with +the shaft speed and set by the element and pitch diameters and the contact +angle; their sum is exactly the element count times the shaft rate, which +catches a mistyped geometry instantly. For a **gear pair**, the mesh frequency +and the sideband families that separate a chipped tooth from an eccentric +wheel. For **motors and bladed rotors**, the supply, slip, pole-pass and +rotor-slot lines of an induction motor and the blade-passing tones of fans, +blowers and pumps, with the lobed interaction patterns of a ducted axial fan. + +The standard answer to finding one of those lines under the broadband noise of +a running machine is **envelope analysis**, and it is three steps in three +places. Band-pass the record around the high-frequency housing resonance that +the impacts ring, take the envelope spectrum so the repetition rate of the +impacts becomes a discrete line — that step is [Cepstrum, echoes and the +envelope spectrum](https://jmrplens.github.io/phonometry/signals/spectra/cepstrum-echoes/), one section +away — and overlay the kinematic families, coloured by origin, so a shaft +harmonic can never be misread as bearing evidence. When two shafts have to be +separated before their sidebands can be read, [Time synchronous +averaging](https://jmrplens.github.io/phonometry/signals/spectra/synchronous-averaging/) does it first. [Machine fault frequencies](https://jmrplens.github.io/phonometry/vibration/machinery/machine-diagnostics/) -computes the bearing, gear and shaft frequencies from the geometry and runs the -envelope analysis that brings a bearing defect out of the noise floor. +computes the families and draws them on a measured envelope spectrum. + +## Pages in this section + +- [Machine fault frequencies](https://jmrplens.github.io/phonometry/vibration/machinery/machine-diagnostics/): + the rolling-contact bearing frequencies, the gear-mesh frequency and its + sidebands, the induction-motor supply, slip, pole-pass and rotor-slot + harmonics, and the blade-passing tones of fans, blowers and pumps, all from + the geometry and the shaft speed (Norton & Karczub, Section 8.4). + +## See also + +Pages elsewhere on the site that this section leans on: + +- [Cepstrum, echoes and the envelope spectrum](https://jmrplens.github.io/phonometry/signals/spectra/cepstrum-echoes/): + the envelope spectrum this section's workflow depends on, and the cepstrum + that reads periodic ripple in the spectrum itself. +- [Time synchronous averaging](https://jmrplens.github.io/phonometry/signals/spectra/synchronous-averaging/): + extracting one shaft's contribution before its sidebands are read. +- [Mechanical mobility and the FRF family (ISO 7626-1)](https://jmrplens.github.io/phonometry/vibration/structural/mechanical-mobility/): + the frequency-response vocabulary behind the housing resonance the envelope + method rings. +- [Bending-wave transmission at plate junctions](https://jmrplens.github.io/phonometry/vibration/structural/junction-transmission/): + where the machine's vibration goes once it has left the machine. + +## What this section does not cover + +These are **predictions, not detections**. Nothing here decides whether a line +is present, only where it would be if it were: the overlay is a set of +expectations to read a measured spectrum against, and the reading is yours. A +loaded bearing slips a little, so expect the measured peak within a per cent or +two of the prediction rather than exactly on it. + +Nor is there a severity verdict. The amplitude criteria that turn a present +line into an assessment — crest-factor and kurtosis trending, and the velocity +severity bands of ISO 10816 / ISO 20816 — are outside this module, and rotor +balancing (ISO 21940) and order tracking are absent from the library +altogether. One published convention differs between sources and is flagged on +the guide rather than hidden: the pole-pass frequency is standard +condition-monitoring practice rather than Norton's, who gives the slip frequency +itself as the broken-bar sideband spacing. --- @@ -45466,9 +47443,10 @@ Source: https://jmrplens.github.io/phonometry/vibration/structural/ A machine fixed to a building radiates sound twice: directly from its own vibrating surface, and indirectly by injecting **structure-borne power** into -the structure, which carries it away and re-radiates it in distant rooms. The -six pages of this section cover both paths: one estimates the direct -radiation from the surface vibration itself, and the other five characterise +the structure, which carries it away and re-radiates it in distant rooms. Six +pages cover both paths, three of them here and three elsewhere on the site: one +estimates the direct radiation from the surface vibration itself, and the other +five characterise the second, sneakier structure-borne path end to end, from describing the vibration and characterising the isolators to quantifying the power and predicting the level a listener finally hears. @@ -45528,6 +47506,30 @@ Pages elsewhere on the site that this section leans on: - [Installed structure-borne sound (EN 12354-5)](https://jmrplens.github.io/phonometry/buildings/design/installed-structure-borne/): the predicted receiving-room level from installed equipment. +## What this section does not cover + +The junction coefficients are a **closed-form idealisation** for a rigid, +simply supported junction between homogeneous plates, not a measurement: the +empirical vibration reduction index obtained from a direction-averaged velocity +level difference is ISO 10848, in [Laboratory flanking +transmission](https://jmrplens.github.io/phonometry/buildings/insulation/flanking-lab/). The +straight-section coefficient is undefined for the T and L geometries, which +have no collinear third plate, so only the corner path applies there. + +The FRF page implements ISO 7626-1 and the ISO 7626-2 acceptance criteria for +an attached exciter; **impact-hammer excitation (ISO 7626-5) is named for +context only**, with nothing that synthesises or processes an impact spectrum, +and the conversions return element-wise *free* reciprocals — correct for a +driving-point or single-path use, not for a full FRF matrix, whose blocked +matrix quantities are not built. + +On the isolator page, parts 4 and 5 of ISO 10846 are not implemented, and two +of the standard's own validity checks are described rather than computed: the +rigid blocking-mass inequality, and the clause 7.6 linearity criterion (two +input spectra 10 dB apart agreeing within 1.5 dB). Finally, nothing here +designs an isolator or a floating base: the pages characterise elements and +predict transmission, and the sizing decision stays yours. + --- diff --git a/llms.txt b/llms.txt index d88493f21..1c49845db 100644 --- a/llms.txt +++ b/llms.txt @@ -122,9 +122,9 @@ If you are an AI assistant setting this up for a user: install from PyPI (no sys - [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) - [Open-Plan Office Acoustics (ISO 3382-3)](https://jmrplens.github.io/phonometry/buildings/rooms/open-plan-acoustics/) - [Image sources and the steady-state room field (Kuttruff / Vorländer / Bies)](https://jmrplens.github.io/phonometry/buildings/rooms/room-image-sources/) +- [Room-noise criteria (NC / RC Mark II)](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/) - [Reverberation-time prediction (Sabine · Eyring · Fitzroy · Arau-Puchades)](https://jmrplens.github.io/phonometry/buildings/rooms/reverberation-prediction/) - [Sound absorption in enclosed spaces (EN 12354-6)](https://jmrplens.github.io/phonometry/buildings/rooms/enclosed-space-absorption/) -- [Room-noise criteria (NC / RC Mark II)](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/) ### Sound insulation @@ -208,8 +208,8 @@ If you are an AI assistant setting this up for a user: install from PyPI (no sys ### Assessment and regulation - [Overview](https://jmrplens.github.io/phonometry/environment/assessment/) · [full text](https://jmrplens.github.io/phonometry/llms/llms-environment-assessment.txt) -- [Impulsive-sound prominence (NT ACOU 112)](https://jmrplens.github.io/phonometry/environment/assessment/impulsive-sound/) - [Environmental Levels (ISO 1996-1/-2)](https://jmrplens.github.io/phonometry/environment/assessment/environmental-levels/) +- [Impulsive-sound prominence (NT ACOU 112)](https://jmrplens.github.io/phonometry/environment/assessment/impulsive-sound/) - [Spanish Noise Regulation (RD 1367/2007)](https://jmrplens.github.io/phonometry/environment/assessment/spanish-noise-regulation/) ### Outdoor sound @@ -253,8 +253,8 @@ If you are an AI assistant setting this up for a user: install from PyPI (no sys - [Sound Power by Pressure Methods (ISO 3744 / ISO 3746 / ISO 3745)](https://jmrplens.github.io/phonometry/devices/emission/sound-power-pressure/) - [Sound Power in the Reverberation Room (ISO 3741)](https://jmrplens.github.io/phonometry/devices/emission/sound-power-reverberation/) - [Sound Power by Intensity Scanning (ISO 9614-2 / ISO 9614-3)](https://jmrplens.github.io/phonometry/devices/emission/sound-power-intensity/) -- [Sound Intensity (p-p method)](https://jmrplens.github.io/phonometry/devices/emission/intensity/) - [Sound power from surface vibration (ISO/TS 7849)](https://jmrplens.github.io/phonometry/devices/emission/vibration-sound-power/) +- [Sound Intensity (p-p method)](https://jmrplens.github.io/phonometry/devices/emission/intensity/) ### Electroacoustics @@ -272,10 +272,10 @@ If you are an AI assistant setting this up for a user: install from PyPI (no sys ### Noise control - [Overview](https://jmrplens.github.io/phonometry/devices/noise-control/) · [full text](https://jmrplens.github.io/phonometry/llms/llms-devices-noise-control.txt) -- [Silencers](https://jmrplens.github.io/phonometry/devices/noise-control/silencers/) -- [Industrial noise control: HVAC and enclosures](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/) - [Duct-borne noise: fan to room](https://jmrplens.github.io/phonometry/devices/noise-control/duct-path/) - [Room to room: partition, receiving room, criterion](https://jmrplens.github.io/phonometry/devices/noise-control/room-to-room/) +- [Silencers](https://jmrplens.github.io/phonometry/devices/noise-control/silencers/) +- [Industrial noise control: HVAC and enclosures](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/) ## Wave simulation @@ -289,6 +289,7 @@ The theory pages travel in the Start shard (https://jmrplens.github.io/phonometr - [API Reference](https://jmrplens.github.io/phonometry/reference/api/) - [Bibliography](https://jmrplens.github.io/phonometry/reference/bibliography/) +- [Glossary](https://jmrplens.github.io/phonometry/reference/glossary/) - [Theoretical Background](https://jmrplens.github.io/phonometry/reference/theory/) - [Theory: Environment and Transport](https://jmrplens.github.io/phonometry/reference/theory/environment-transport/) - [Theory: Materials and Surfaces](https://jmrplens.github.io/phonometry/reference/theory/materials-surfaces/) diff --git a/scripts/mirror_glossary.py b/scripts/mirror_glossary.py new file mode 100644 index 000000000..46e6539ab --- /dev/null +++ b/scripts/mirror_glossary.py @@ -0,0 +1,227 @@ +"""Mirror the glossary into ``docs/reference/glossary.md``. + +The glossary is the most reusable reference artefact the documentation has: +you hold a symbol from a report or a specification and you want its unit, the +document that defines it and the page that computes it. It existed only on the +website. ``find docs -iname '*glossar*'`` returned nothing, and the llms +artifacts carried a link to the page rather than its text, so the GitHub reader +and every full-text consumer were sent off-site for the one page that +disambiguates two hundred colliding symbols. + +Like the overview mirrors, this file is generated rather than written twice. +The prose above the cards is lifted from ``reference/glossary.mdx`` itself +(site-absolute links become mirror-relative ones where the target has a mirror +page), and the cards come from ``site/src/data/glossary.mjs``, the same array +``Glossary.astro`` renders. A glossary that is copied by hand is exactly what +that data file was created to stop: it had already drifted four ways once. + +The card blocks the site uses are the right shape for a phone and the wrong +shape for a plain-markdown file with no CSS, so the mirror is one five-column +table per group, which is what GitHub renders well. + +Reading ``.mjs`` needs a JavaScript engine, so the data is dumped through +``node`` and consumed here as JSON. Node is present wherever this runs: the +site is built with pnpm and the docs workflow sets both up before this step. + +Run with ``--check`` to compare against the committed file and fail on drift, +which is what CI does; run bare to rewrite it. +""" + +from __future__ import annotations + +import argparse +import json +import os +import re +import shutil +import subprocess +import sys +from pathlib import Path +from typing import Any + +ROOT = Path(__file__).resolve().parents[1] +SITE = ROOT / "site" / "src" / "content" / "docs" +DOCS = ROOT / "docs" +DATA = ROOT / "site" / "src" / "data" / "glossary.mjs" +PAGE = SITE / "reference" / "glossary.mdx" +MIRROR = DOCS / "reference" / "glossary.md" + +SITE_BASE = "https://jmrplens.github.io/phonometry" + +#: Routes that are generated or site-only: a relative link would dangle. +SITE_ONLY_PREFIXES = ("reference/api",) + +#: The dump program, kept here rather than in a file of its own so the schema +#: and its reader stay in one place. It prints the array as JSON on stdout. +_DUMP = "import {glossary} from %s; process.stdout.write(JSON.stringify(glossary));" + + +def _load() -> list[dict[str, Any]]: + """The glossary array, read through node.""" + node = shutil.which("node") + if node is None: + raise SystemExit( + "scripts/mirror_glossary.py needs node to read site/src/data/glossary.mjs" + ) + program = _DUMP % json.dumps(DATA.as_uri()) + # Fixed argv, no shell: the only variable is a path this repo owns. + result = subprocess.run( + [node, "--input-type=module", "-e", program], + capture_output=True, + text=True, + check=False, + ) + if result.returncode != 0: + raise SystemExit(f"could not read {DATA}: {result.stderr.strip()}") + data: list[dict[str, Any]] = json.loads(result.stdout) + return data + + +def _localized(value: Any) -> str: + """A field that is either shared by both languages or given per language.""" + if value is None: + return "" + if isinstance(value, str): + return value + return str(value.get("en", "")) + + +def _relative_link(to_route: str) -> str | None: + """The mirror-relative path from the glossary to another page, if that page + has a mirror file.""" + target = DOCS / f"{to_route}.md" + if not target.exists(): + target = DOCS / to_route / "index.md" + if not target.exists(): + return None + return os.path.relpath(target, MIRROR.parent).replace(os.sep, "/") + + +def _link(to_route: str) -> str: + rel = _relative_link(to_route) + return rel if rel else f"{SITE_BASE}/{to_route}/" + + +def _rewrite_links(body: str) -> str: + """Site-absolute links to mirror-relative ones, where a mirror page exists.""" + + def swap(match: re.Match[str]) -> str: + target = match.group(1).strip("/") + if target.startswith(SITE_ONLY_PREFIXES) or target.startswith("es/"): + return f"({SITE_BASE}/{target}/)" + return f"({_link(target)})" + + return re.sub(r"\(/phonometry/([^)#]+?)/?\)", swap, body) + + +def _prose() -> str: + """The page's own prose: everything between the frontmatter and the card + component, with the component import dropped.""" + text = PAGE.read_text(encoding="utf-8") + match = re.match(r"---\n.*?\n---\n", text, re.DOTALL) + if not match: + raise SystemExit(f"{PAGE}: page without frontmatter") + body = text[match.end() :] + body = re.sub(r"^import .*$", "", body, flags=re.MULTILINE) + body = body.split(" str: + """A table cell: pipes escaped, newlines flattened.""" + return text.replace("|", r"\|").replace("\n", " ").strip() + + +def _row(term: dict[str, Any], titles: dict[str, str]) -> str: + symbol = term.get("symbol") or _localized(term.get("name")) or term["id"] + qualifier = _localized(term.get("qualifier")) + if qualifier: + symbol = f"{symbol} ({qualifier})" + where = ", ".join( + part + for part in (_localized(term.get("standard")), _localized(term.get("clause"))) + if part + ) + guide = term.get("guide") + computed = f"[{titles.get(guide, guide)}]({_link(guide)})" if guide else "" + cells = ( + symbol, + _localized(term.get("definition")), + _localized(term.get("unit")), + where, + computed, + ) + return "| " + " | ".join(_cell(cell) for cell in cells) + " |" + + +def _titles() -> dict[str, str]: + """The title of every English page, by route, so a link carries the name the + site gives the page instead of a hand-kept copy of it.""" + found: dict[str, str] = {} + for page in SITE.rglob("*.md*"): + route = page.relative_to(SITE).with_suffix("").as_posix() + if route.startswith("es/"): + continue + head = re.match( + r"---\n(.*?)\n---\n", page.read_text(encoding="utf-8"), re.DOTALL + ) + if not head: + continue + title = re.search( + r"""^title:\s*(?:"((?:[^"\\]|\\.)*)"|'([^']*)'|(\S.*?))\s*$""", + head.group(1), + re.MULTILINE, + ) + if title: + name = (title.group(1) or title.group(2) or title.group(3)).replace( + '\\"', '"' + ) + found[route] = name + return found + + +def render(glossary: list[dict[str, Any]]) -> str: + titles = _titles() + parts = [ + "← [Documentation index](../README.md)\n", + "# Glossary\n", + _prose(), + "", + ] + for group in glossary: + parts.append(f"## {_localized(group['label'])}\n") + parts.append("| Symbol | Definition | Unit | Defined in | Computed in |") + parts.append("| :--- | :--- | :--- | :--- | :--- |") + parts.extend(_row(term, titles) for term in group["terms"]) + parts.append("") + return "\n".join(parts).rstrip() + "\n" + + +def main() -> int: + parser = argparse.ArgumentParser(description=(__doc__ or "").splitlines()[0]) + parser.add_argument( + "--check", action="store_true", help="fail on drift instead of writing" + ) + args = parser.parse_args() + + glossary = _load() + text = render(glossary) + terms = sum(len(group["terms"]) for group in glossary) + if args.check: + if not MIRROR.exists() or MIRROR.read_text(encoding="utf-8") != text: + print( + f"{MIRROR.relative_to(ROOT)} is stale. " + "Run `python scripts/mirror_glossary.py`.", + file=sys.stderr, + ) + return 1 + print(f"glossary mirror up to date: {terms} quantities.") + return 0 + MIRROR.parent.mkdir(parents=True, exist_ok=True) + MIRROR.write_text(text, encoding="utf-8") + print(f"glossary mirror written: {terms} quantities.") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/site/public/llms/llms-aircraft.txt b/site/public/llms/llms-aircraft.txt index 94e459ec0..4df8f108e 100644 --- a/site/public/llms/llms-aircraft.txt +++ b/site/public/llms/llms-aircraft.txt @@ -68,10 +68,7 @@ be read first if helicopters are what you came for. The three metrics are not interchangeable. EPNL is a *certification* metric of one aeroplane at one prescribed point; SEL and LASmax are *single-event* assessment metrics at an arbitrary receiver; neither is the long-term index a -land-use study is finally judged on. And the boundary: this section does not -compute cumulative multi-event indices, does not synthesise NPD tables from -engine data, does not model hover, idle or taxi rotorcraft operations, and does -not touch sonic boom. +land-use study is finally judged on. ## Pages in this section @@ -87,6 +84,47 @@ not touch sonic boom. noise-power-distance curves and default trajectories that run the Doc 29 chain for a real aircraft type. +## What this section does not cover + +**Single events only.** The Doc 29 chain builds single-event contours; it does +not assemble the cumulative multi-event indices — an Lden-style sum over a full +flight schedule — that a complete noise-contour study needs on top of them. That +last step is where a land-use decision is actually made, and it is not here. + +**No aircraft is modelled from first principles.** NPD tables and noise +hemispheres are *inputs*: the library interpolates the tables published for a +type and does not synthesise them from engine data, and the ANP database is read +and never written (version 2.3 ships as-is). Of the ANP entries, only those with +fixed-point profiles have a ready-to-use trajectory, because turning a +procedural-step departure into a flight path needs the ICAO Doc 9911 +flight-mechanics performance model, which is not implemented. + +**Three specific gaps.** Rotorcraft hover, idle and taxi operations are outside +the hemisphere source model, which assumes a flyover. The measurement-system +verifier checks IEC 61265:1995 and not the superseding 2018 edition. And sonic +boom is not touched anywhere in the library. + +Finally, the CNOSSOS-EU aircraft source of sections 2.6 and 2.7 is **not** +implemented: aircraft noise here is the ICAO and ECAC family, which is a +different set of models from the road and rail sources of [Environmental +sources](https://jmrplens.github.io/phonometry/environment/sources/), and the two must not be mixed inside +one strategic map without saying so. + +## Before and after these pages + +Every level on these pages is built from band levels, so the filtering, +weighting and calibration that produce them are in [Signal +analysis](https://jmrplens.github.io/phonometry/signals/), and [Build a sound level +meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) runs that chain end to end on +one runnable page. The derivations for aircraft noise are not in the theory +reference: they stay inside the guides above, beside the flight geometry that +motivates them. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. + --- diff --git a/site/public/llms/llms-buildings-design.txt b/site/public/llms/llms-buildings-design.txt index 011707079..51d7dc3ad 100644 --- a/site/public/llms/llms-buildings-design.txt +++ b/site/public/llms/llms-buildings-design.txt @@ -32,6 +32,17 @@ laboratory element and junction data are converted to their in-situ values, every path is formed per band, and the result shows which path dominates each band rather than only whether the room passes. +**Which of the two do you run?** Run the simplified model when what you have is +catalogue weighted ratings — $R_w$, $\Delta L_w$, a mass per unit area — and the +question is whether the partition meets a limit. Run the detailed one when you +have per-band element and junction spectra, or the material properties the +standard can calculate them from, and the question is *which path to fix in +which band*. The choice is not about accuracy on the rating: on the standard's +own worked building the two agree well inside their stated spread, and the +detailed airborne model carries no bias error and a standard deviation of 1,5 dB +to 2,5 dB (Clause 5) against about 2 dB for the simplified one. What the +detailed model buys is the spectrum behind the single number. + [Predicting Panel Sound Insulation](https://jmrplens.github.io/phonometry/buildings/design/panel-sound-insulation/) goes one level deeper, to where the element $R$ itself comes from: the mass law and the coincidence dip of a single panel, the mass-spring-mass behaviour of a @@ -76,6 +87,19 @@ follow the 2000 text — including the tabulated flanking correction $K$ that th follows the 2017 text. Check which edition your regulation calls up before quoting a correction from either. +Every prediction here starts from measured data that came from somewhere else, +and the design report has to say where. The element $R$ and $L_n$ come from +ISO 10140-2 and -3, together with the laboratory structural reverberation time +printed in the same report, because the in-situ conversion needs it. The +junction indices $K_{ij}$ come from an ISO 10848 measurement or from the +EN 12354-1 Annex E catalogue of junction types. The floor-covering improvement +$\Delta L_w$ comes from ISO 16251-1 or from a full-size ISO 10140-3 test. The +resilient layer's $s'$ comes from EN 29052-1. And for service equipment, the +characteristic structure-borne power comes from the EN 15657 reception plate. +Two of the pages in this section are themselves such measurements, feeding the +others; the built result is finally checked against the ISO 16283 field +measurement in [Sound insulation](https://jmrplens.github.io/phonometry/buildings/insulation/). + ## Pages in this section - [Predicting Sound Insulation (EN 12354)](https://jmrplens.github.io/phonometry/buildings/design/insulation-prediction/): @@ -111,6 +135,34 @@ Pages elsewhere on the site that this section leans on: the load-plate resonance measurement, the enclosed-gas term and the floating-floor natural frequency. +## What this section does not cover + +**A prediction is only as good as the element data you feed it, and the library +takes that data as given.** The element ratings, the junction indices, the +covering improvement and the structure-to-airborne adjustment terms of +EN 12354-5 Annexes D and F are inputs you supply from measurement or from the +standards' own annexes; none of them is derived here. The simplified prediction +page stops at the weighted single numbers by design, and the detailed page is +where the per-band models live. + +Every panel model carries a validity range it does not extend past, and the +guides flag each: Sharp's single-panel method is not valid below about 1.5 +times the panel's first resonance, Gomperts' slit model holds only while the +slit is narrow against the wavelength, only Leppington's method no. 1 is +implemented for radiation efficiency, and the orthotropic routes are +infinite-panel models that miss the dip real ribbed cladding shows between 2 and +4 kHz. On the resilient-layer side, the tapping-machine force model assumes a +frequency-independent driving-point impedance, so a joisted or battened +lightweight floor is outside it; soft coverings are treated as linear springs; +there is no per-band prediction of a lining's improvement, because Annex D is a +single-number method; and heavy impact sources such as the rubber ball are not +covered by any of these models at all — their rating is +[Heavy and Soft Impact Sources](https://jmrplens.github.io/phonometry/buildings/insulation/heavy-impact-sources/). + +Two edition boundaries: only the 2009 edition of EN 12354-5 is implemented, not +the 2023 revision, and the simplified and detailed pages follow different +editions of the 12354 family, as the note above says. + --- diff --git a/site/public/llms/llms-buildings-insulation.txt b/site/public/llms/llms-buildings-insulation.txt index 0dbb1482b..3598cddbd 100644 --- a/site/public/llms/llms-buildings-insulation.txt +++ b/site/public/llms/llms-buildings-insulation.txt @@ -99,6 +99,37 @@ related EN 12354-5, lives in the DB-HR global indices RA, RA,tr, DnT,A and D2m,nT,Atr, the clause 2 requirements and the window-size correction. +## What this section does not cover + +**The library starts after the microphone.** Every function here takes band +levels that were already energy-averaged over positions and already corrected +for background noise, and nothing verifies how the measurement was made: not the +number and placement of source and microphone positions, not the low-frequency +procedures of ISO 16283-1/-2, not the 6 dB signal-to-background floor, and not +the test-facility and mounting requirements of ISO 10140-1. Those are the +operator's responsibility and the report's, and they are what makes the numbers +here mean something. Two consequences worth naming: the field and laboratory +background corrections are *different* rules, so a laboratory helper must not be +applied to field data; and the intensity route takes both the pressure and the +intensity level as inputs, with the scanning probe and its phase-mismatch +calibration outside the library. + +**Coverage inside the standards is partial in two places.** Of ISO 10848 only +the Part 1 formulae are implemented generically, plus the Part 4 modal-overlap +validity check, not the facility-specific setups of Parts 2, 3 and 4. Of the +Spanish code, only the verification indices are implemented: the simplified +option's solution tables of clause 3, the execution conditions of clause 5 and +the maintenance conditions of clause 6 are out of scope, and the general +option's calculation route is +[Predicting Sound Insulation](https://jmrplens.github.io/phonometry/buildings/design/insulation-prediction/). + +**And there is no heavy-impact prediction at all.** A floor construction can be +carried to a tapping-machine level by the models in [Insulation +design](https://jmrplens.github.io/phonometry/buildings/design/); nothing does the same for the rubber +ball, because the complexity of the input force and the use of a time-weighted +maximum leave no simple counterpart. The heavy-impact page rates a measurement, +and only a measurement. + --- diff --git a/site/public/llms/llms-buildings-rooms.txt b/site/public/llms/llms-buildings-rooms.txt index d4b8990b7..3f19c22b7 100644 --- a/site/public/llms/llms-buildings-rooms.txt +++ b/site/public/llms/llms-buildings-rooms.txt @@ -16,6 +16,14 @@ measurement chain built on the first, the prediction chain built on the second, and the rating of the background noise that occupies the room in between. +One boundary runs through all of it: the **Schroeder frequency**. Above it a +room has so many overlapping modes that a statistical description is the honest +one, and every reverberation formula and decay parameter on these pages lives +there. Below it the modes are discrete and separable, and no statistical model +applies — which is why the measurement and prediction pages alike carry validity +caveats at their lowest bands. A reader chasing a low-frequency problem should +start from the modal treatment rather than from the decay parameters. + The measurement chain starts in [Measuring the Room Impulse Response](https://jmrplens.github.io/phonometry/buildings/rooms/room-impulse-response/): the deterministic excitation signals of ISO 18233, the sweep deconvolution @@ -29,9 +37,20 @@ intelligible across an open floor, through the spatial decay rate and the distraction and privacy distances. [Image sources and the steady-state room field](https://jmrplens.github.io/phonometry/buildings/rooms/room-image-sources/) approaches the same room deterministically, building its impulse response from -mirrored sources and its steady-state level from the room constant. +mirrored sources, its steady-state level from the room constant, and, below the +Schroeder frequency where both of those give out, the discrete normal modes of +the shoebox itself. + +Before the two prediction pages, one page answers a different question about the +same room. +[Room-noise criteria (NC / RC Mark II)](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/) +asks whether its steady background noise (ventilation, distant traffic) is +acceptable for its use, rated against the ANSI/ASA S12.2 criterion curves, with +the RC Mark II rumble/hiss tag diagnosing *why* a spectrum fails. -Prediction gets two pages because two traditions coexist. +Prediction gets two pages because two traditions coexist. Both are diffuse-field +statistical models fed by the same laboratory absorption coefficients, so they +are not rival physics; they differ in what they are admissible for. [Reverberation-time prediction (Sabine, Eyring, Arau)](https://jmrplens.github.io/phonometry/buildings/rooms/reverberation-prediction/) covers the classical statistical formulae (Sabine, Eyring, Millington-Sette, Fitzroy and Arau-Puchades), including the models that handle a non-uniform @@ -42,11 +61,19 @@ equivalent absorption area assembled from surfaces, objects and air, and the reverberation time that follows from it, as a standard a design report can cite. -[Room-noise criteria (NC / RC Mark II)](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/) -answers a different question about the same room: whether its steady -background noise (ventilation, distant traffic) is acceptable for its use, -rated against the ANSI/ASA S12.2 criterion curves, with the RC Mark II -rumble/hiss tag diagnosing *why* a spectrum fails. +**Which one?** Cite EN 12354-6 when the deliverable is a design report under a +European building-acoustics framework, when the room is an ordinary building +space inside the clause 4.6 validity limits, and when the receiving-room +absorption has to feed an EN 12354 insulation prediction. Use the classical +family when the room falls outside that scope — a hall, a theatre, an +industrial space, or a room whose absorption is concentrated on one axis so that +an axial model is needed — or when a *band* of predictions rather than a single +normative value is what the situation deserves. Both share one failure mode, the +loss of diffusivity, and they fail in the same direction: the measured +reverberation time comes out longer than predicted, by up to a factor of two in +the low-diffusivity rooms the standard's own accuracy clause records. And +neither replaces a measurement — the measured counterpart is +[Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/). Related pages elsewhere: the absorption coefficient the prediction chain consumes is measured in @@ -67,9 +94,11 @@ speech intelligibility a room affords is quantified by the - [Open-Plan Office Acoustics (ISO 3382-3)](https://jmrplens.github.io/phonometry/buildings/rooms/open-plan-acoustics/): the spatial decay rate of speech and the distraction and privacy distances. - [Image sources and the steady-state room field](https://jmrplens.github.io/phonometry/buildings/rooms/room-image-sources/): - the deterministic image-source room impulse response (Kuttruff/Vorländer) and + the deterministic image-source room impulse response (Kuttruff/Vorländer), the statistical steady-state level with the room constant, critical distance - and Schroeder frequency (Bies). + and Schroeder frequency (Bies), and the rectangular-room normal modes with + their axial, tangential and oblique families, mode count and modal density + (Long). - [Room-noise criteria (NC / RC Mark II)](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/): the ANSI/ASA S12.2-2019 NC tangency and RC Mark II ratings. - [Reverberation-time prediction (Sabine, Eyring, Arau)](https://jmrplens.github.io/phonometry/buildings/rooms/reverberation-prediction/): @@ -77,6 +106,32 @@ speech intelligibility a room affords is quantified by the - [Sound absorption in enclosed spaces (EN 12354-6)](https://jmrplens.github.io/phonometry/buildings/rooms/enclosed-space-absorption/): the normative equivalent-absorption-area and reverberation-time prediction. +## What this section does not cover + +**Nothing here is a wave solver.** The image-source model is specular only: it +carries no diffraction, no scattering off a diffuser and no finite-impedance +boundary, and it stops when the reflection order runs out rather than when the +sound does. Below the Schroeder frequency, where the statistical models give +out, what this section offers is the mode *positions* of a rigid rectangular +box — not the field of a real room at low frequency. For that, the +[wave simulation](https://jmrplens.github.io/phonometry/simulation/) section runs an FDTD solver on the +actual geometry. + +**No auralisation, no ray tracer, no room model.** There is no geometry +importer, no material database and no renderer: the pages take dimensions, +coefficients and impulse responses as inputs, and give back parameters. The +absorption coefficients themselves come from +[Materials and surfaces](https://jmrplens.github.io/phonometry/materials/absorbers/), and the model errs +optimistically when the room is not diffuse — outside the EN 12354-6 clause 4.6 +limits (no dimension more than five times another, opposite surfaces within a +factor of three in absorption, object fraction below 0.2) the measured +reverberation time can reach twice the predicted one. + +Two coverage boundaries follow the standards. Only the normative clause 4 model +of EN 12354-6 is implemented, not its informative Annex D method for irregular +spaces. And nothing in this section measures insulation *between* rooms: that is +[Sound insulation](https://jmrplens.github.io/phonometry/buildings/insulation/). + --- @@ -1622,925 +1677,925 @@ own numeric anchors (see [CONFORMANCE.md](https://jmrplens.github.io/phonometry/ --- - -Source: https://jmrplens.github.io/phonometry/buildings/rooms/reverberation-prediction/ - -# Reverberation-time prediction (Sabine · Eyring · Fitzroy · Arau-Puchades) - -The **reverberation time** $T$, the time for the sound-energy level to fall by -60 dB after the source stops, is predicted here from a room's **volume**, -**boundary areas** and the **sound-absorption coefficients** of its surfaces, -through the classical statistical-acoustics formulae. This is the design-stage -counterpart of the *measured* reverberation time of -[Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) (ISO 3382) and complements the EN 12354-6 -model of [Sound absorption in enclosed spaces](https://jmrplens.github.io/phonometry/buildings/rooms/enclosed-space-absorption/), -which specialises the same physics to that standard's Clause 4. - -phonometry offers five models, ordered by how much they account for a -**non-uniform** absorption distribution: - -| Model | Absorption term in $T = k\,V / (\text{term} + 4mV)$ | Best for | -|:---|:---|:---| -| **Sabine** | $A = \sum_i S_i\alpha_i$ | low, uniform absorption | -| **Eyring** (Norris-Eyring) | $-S\ln(1-\bar\alpha)$ | strong, uniform absorption | -| **Millington-Sette** | $-\sum_i S_i\ln(1-\alpha_i)$ | a few very absorptive surfaces | -| **Fitzroy** | area-weighted **arithmetic** mean of three axial Eyring times | anisotropic rooms | -| **Arau-Puchades** | area-weighted **geometric** mean of the same three | anisotropic rooms (author-preferred) | - -with the Sabine constant $k = 24\ln 10 / c_0$ (so $k = 0.161$ for -$c_0 = 343\ \mathrm{m/s}$) and the air-absorption term $4mV$. - -Reverberation time per octave band for a 10 by 7 by 3.5 metre room with an absorptive floor and ceiling but hard walls, computed by five models. Fitzroy gives the longest times, Sabine and Eyring the mid-range, Millington-Sette the shortest, and Arau-Puchades sits between Eyring and Sabine - -
-Show the code for this figure - -```python -import matplotlib.pyplot as plt -from phonometry import environment, room + +Source: https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/ -# A 10 x 7 x 3.5 m room: hard end walls, lightly treated side walls and a -# very absorptive floor/ceiling pair (carpet plus an acoustic ceiling). -bands = [125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0] -alpha_x = [0.06, 0.07, 0.08, 0.09, 0.10, 0.10] -alpha_y = [0.12, 0.14, 0.16, 0.18, 0.20, 0.20] -alpha_z = [0.30, 0.50, 0.65, 0.78, 0.82, 0.80] -m = environment.air_attenuation_m(bands, 20.0, 50.0) # air at 20 C / 50 % RH -res = room.reverberation_time_models((10.0, 7.0, 3.5), - (alpha_x, alpha_y, alpha_z), - air_attenuation=m, frequencies=bands) -res.plot() # the five model curves per band -plt.show() -``` +# Room-noise criteria (NC / RC Mark II) -
+Steady background noise in an occupied room (from ventilation, diffusers or +distant traffic) is rated against a family of **octave-band criterion curves**. +**ANSI/ASA S12.2-2019**, *Criteria for Evaluating Room Noise*, defines two +spectrum-in ratings that phonometry implements: the **Noise Criteria (NC)** +rating (the NC-(SIL) designation of clause 5.2.2, with the tangency method +when the spectrum exceeds it), and the **Room Criteria Mark II (RC)** rating +with its rumble/hiss spectral tag. Both work on octave-band sound pressure +levels over the ten bands from 16 Hz to 8000 Hz. -## 1. Sabine, Eyring and Millington-Sette +The two ANSI S12.2 rating methods from one octave-band spectrum: on the left the NC tangency method (from the Table 1 curves, the NC value in each band, then NC equals the highest curve touched, giving NC-NN with a governing band); on the right the RC Mark II method (the mid-frequency average LMF of the 500, 1000 and 2000 Hz levels rounded to give RC-NN, then the spectral tag R for rumble, H for hiss or N for neutral by the clause D.3 deviation rules, giving RC-NN with a tag) -The three statistical models take the room volume and a list of -`(area, absorption_coefficient)` surfaces. **Sabine** is exact only for low, -uniform absorption; **Eyring** replaces the absorption area by -$-S\ln(1-\bar\alpha)$ and is correct where Sabine overestimates $T$ (a live -room with strong absorption); **Millington-Sette** sums the Eyring term surface -by surface, so a single perfectly absorbing surface drives $T$ to zero. +## 1. Noise Criteria: SIL designation and tangency -$$ -T_{\text{Sab}} = \frac{k V}{\sum_i S_i\alpha_i}, \qquad -T_{\text{Eyr}} = \frac{k V}{-S\ln(1-\bar\alpha)}, \qquad -T_{\text{Mil}} = \frac{k V}{-\sum_i S_i\ln(1-\alpha_i)}. -$$ +The **NC curves** (ANSI/ASA S12.2-2019 Table 1) are a family of octave-band +limits, each designated by its value at 1000 Hz (NC-15 up to NC-70). Clause +5.2.2 rates a spectrum in **two steps**. First the **speech interference +level** $\mathrm{SIL}$ (clause 3.2, the average of the 500/1000/2000/4000 Hz +levels) selects the NC-(SIL) curve: if no octave band exceeds it, the +spectrum is simply designated **NC-(SIL)**. Only when the spectrum pokes +above that curve does the **tangency method** (clause 5.2.3) take over: for +each octave band, the NC index whose curve passes through the measured level +is found, and the rating is the maximum across bands. The band where that +maximum occurs, the one that pushes the spectrum up against the curves, is +reported as the **governing band**. ```python +import numpy as np from phonometry import room -# A shoebox 8 x 5 x 3 m (V = 120 m3, S = 158 m2), uniform alpha = 0.2. -surfaces = [(40.0, 0.2), (40.0, 0.2), (24.0, 0.2), - (24.0, 0.2), (15.0, 0.2), (15.0, 0.2)] -print(round(room.sabine_reverberation_time(120.0, surfaces), 3)) # 0.612 s -print(round(room.eyring_reverberation_time(120.0, surfaces), 3)) # 0.548 s -print(round(room.millington_sette_reverberation_time(120.0, surfaces), 3)) # 0.548 s -``` - -For a **uniform** distribution Eyring and Millington-Sette coincide, and both -fall below Sabine; Sabine's over-estimate at high absorption is the reason -Eyring exists. As $\alpha \to 0$, $-S\ln(1-\bar\alpha) \to \sum_i S_i\alpha_i$ -and Eyring reduces to Sabine. Air absorption enters every model through the -power-attenuation coefficient $m$ (in neper per metre, from the ISO 9613-1 -[atmospheric absorption](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/)): - -```python -from phonometry import environment, room +# Octave-band SPL, 16 Hz - 8000 Hz (a ventilation-dominated room). +spl = np.array([62.0, 62.0, 59.0, 57.0, 52.0, 42.0, 35.0, 29.0, 24.0, 19.0]) -m = environment.air_attenuation_m(2000.0, temperature=20.0, relative_humidity=50.0) -surfaces = [(40.0, 0.3), (40.0, 0.3), (24.0, 0.3), - (24.0, 0.3), (15.0, 0.3), (15.0, 0.3)] -print(round(room.eyring_reverberation_time(120.0, surfaces, air_attenuation=m), 3)) +nc = room.noise_criterion(spl) +print(round(nc.sil, 1)) # 32.5 (clause 3.2) +print(nc.method) # 'tangency' (the NC-32 curve is exceeded) +print(round(nc.rating, 1)) # 42.5 +print(nc.governing_frequency) # 250.0 (the tangent band) +print(nc.label) # 'NC-42.5 (250 Hz)' +nc.plot() # the spectrum over the NC curve family (left panel below) ``` -Every statistical model also assumes a **diffuse field**, and low -frequencies break that assumption first: below the Schroeder frequency the -room responds as a set of discrete modes, not as a reverberant mixture. The -2D FDTD simulation below drives a rigid 5 m by 3.5 m room exactly on its -(2,1) mode and then between two modes; the standing-wave pattern that -builds up on resonance is what Sabine and Eyring cannot see. - -Animation: a 2D FDTD simulation of a 5 by 3.5 metre room driven at the 84 Hz (2,1) mode and at an off-mode frequency; on resonance a standing-wave pattern with fixed nodal lines grows to dominate the RMS pressure map, off resonance the forced response stays weak and disorganised +Because a tangency rating interpolates between the tabulated curves it is a +continuous number: an NC rating of $42.5$ sits half-way between NC-40 and +NC-45 (a SIL designation is always an integer). The tangency rating is kept +on `tangency_rating` even when the SIL designation applies. A subset of the +octave bands may be supplied together with their centre frequencies +(`room.noise_criterion(levels, frequencies)`); without the four SIL bands the +tangency rating alone sets the designation. -[Watch the high-resolution video (WebM)](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/anim_fdtd_room_modes.webm) +The Table 1 family ends at NC-70 and NC-15, and the standard defines no +rating beyond it. A spectrum above the NC-70 curve (or entirely below the +NC-15 curve) therefore gets `rating = nan` and an `out_of_range` flag of +`"above"` / `"below"`, with `nc.label` reading `'>NC-70 (63 Hz)'` (the band +with the largest exceedance over NC-70 governs) or `'Two panels for the same ventilation-dominated room spectrum. Left: the measured octave-band levels over the NC curve family, with a red diamond marking the tangent point at 250 Hz that sets the NC-42.5 rating. Right: the same spectrum over the reference RC-35 curve, with the low-frequency bands rising through the shaded rumble tolerance (+5 dB below 500 Hz) so the noise is classified RC-35(R), and the hiss tolerance (+3 dB at and above 1000 Hz) shaded for comparison -`reverberation_time_models` builds the six boundary surfaces of a rectangular -room from its dimensions and the three wall-pair mean absorptions, then -evaluates all five models on a common footing and returns a -`ReverberationModelResult` whose `.plot()` draws the figure above. +
+Show the code for this figure ```python +import numpy as np +import matplotlib.pyplot as plt from phonometry import room -# 10 x 7 x 3.5 m room, absorptive floor/ceiling against harder walls. -res = room.reverberation_time_models( - (10.0, 7.0, 3.5), - ( - [0.06, 0.07, 0.08, 0.09, 0.10, 0.10], # x-pair: hard end walls - [0.12, 0.14, 0.16, 0.18, 0.20, 0.20], # y-pair: lightly treated walls - [0.30, 0.50, 0.65, 0.78, 0.82, 0.80], # z-pair: carpet + acoustic ceiling - ), - frequencies=[125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0], -) -print(res.sabine.round(2)) # [0.74 0.47 0.37 0.31 0.3 0.3 ] -print(res.arau_puchades.round(2)) # [0.79 0.51 0.38 0.29 0.26 0.27] -print(res.fitzroy.round(2)) # [1.02 0.79 0.66 0.57 0.51 0.51] -res.plot() # the five model curves per band (the figure above) -``` +spl = np.array([62.0, 62.0, 59.0, 57.0, 52.0, 42.0, 35.0, 29.0, 24.0, 19.0]) -
-Show the code for this figure +# One line each: +room.noise_criterion(spl).plot() +room.room_criterion(spl).plot() +plt.show() -```python -import matplotlib.pyplot as plt -from phonometry import environment, room +# By hand, mirroring what NCResult.plot() / RCResult.plot() draw: +from phonometry.room.noise_criteria import NC_CURVES, NC_INDICES, OCTAVE_BANDS +nc, rc = room.noise_criterion(spl), room.room_criterion(spl) +fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5)) -m = environment.air_attenuation_m([125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0], 20.0, 50.0) -room.reverberation_time_models( - (10.0, 7.0, 3.5), - ( - [0.06, 0.07, 0.08, 0.09, 0.10, 0.10], - [0.12, 0.14, 0.16, 0.18, 0.20, 0.20], - [0.30, 0.50, 0.65, 0.78, 0.82, 0.80], - ), - air_attenuation=m, - frequencies=[125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0], -).plot() +for row, idx in zip(NC_CURVES, NC_INDICES): + ax1.plot(OCTAVE_BANDS, row, color="#bbbbbb", lw=0.8) +ax1.plot(OCTAVE_BANDS, spl, "o-", label="Measured") +gov = spl[OCTAVE_BANDS == nc.governing_frequency][0] +ax1.plot([nc.governing_frequency], [gov], "D", color="#d62728") +ax1.set_xscale("log"); ax1.set_title(f"NC-{nc.rating:g}") + +ref = rc.reference_curve +low, high = OCTAVE_BANDS <= 500, OCTAVE_BANDS >= 1000 +ax2.plot(OCTAVE_BANDS, ref, "s--", color="#7f7f7f", label=f"Reference RC-{rc.rating}") +ax2.fill_between(OCTAVE_BANDS[low], ref[low], ref[low] + 5, color="#ffbb78", alpha=0.35) +ax2.fill_between(OCTAVE_BANDS[high], ref[high], ref[high] + 3, color="#aec7e8", alpha=0.45) +ax2.plot(OCTAVE_BANDS, spl, "o-", label="Measured") +ax2.set_xscale("log"); ax2.set_title(rc.label) plt.show() ```
-Sabine and Eyring are the two workhorses, and the per-band spread between -them is itself a diagnostic. The diagram runs the room of this section -through both, with the validity boundary every statistical formula shares. - -Block diagram of the reverberation-time prediction: a 10 by 7 by 3.5 metre room with 245 cubic metres, 259 square metres and a mean absorption rising from 0.21 at 125 hertz to 0.51 at 4 kilohertz feeds the Sabine and Eyring formulas, whose per-octave-band table runs from 0.74 to 0.30 seconds for Sabine and 0.66 to 0.22 seconds for Eyring, Eyring reading 11 to 29 percent shorter; a closing note bounds the domain of validity to a diffuse field, excluding bands below the Schroeder frequency, coupled volumes and corridor-like rooms - -## 4. Choosing a model, and when every model fails - -The five formulae are not rivals on a single axis of accuracy; each has a -domain of validity: - -- **Sabine** is the tool for live rooms with low, reasonably even - absorption (mean $\bar\alpha$ up to roughly 0.2): classrooms, halls, - reverberation chambers. It is also the convention wired into measurement - practice, because the ISO 354 absorption coefficient is *defined* through - Sabine's formula, so feeding reverberation-room data back into Sabine is - self-consistent even where the formula is strained. Its structural defect - shows at high absorption: with $\alpha = 1$ on every surface (an opening - in every direction) it still predicts a finite reverberation time. -- **Eyring** is the choice for evenly treated rooms with substantial - absorption: studios, treated offices, listening rooms. It reaches - $T = 0$ for total absorption, and its correction over Sabine grows with - $\bar\alpha$ (about 10 % shorter at $\bar\alpha = 0.2$, 30 % at 0.5). -- **Millington-Sette** handles a mix of very absorptive and hard surfaces - better than a single mean, but it is meant for measured, sub-unity - coefficients: a single surface with $\alpha_i = 1$ drives the whole - prediction to zero. Reverberation-room coefficients at or above 1.0 (a - documented ISO 354 outcome, see the absorption section of - [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/)) lie outside the domain of the - logarithmic term, so phonometry enforces each formula's own domain: - Sabine accepts such coefficients as supplied (its linear - $A = \sum_i S_i\alpha_i$ stays finite); Eyring accepts them as long as - the mean entering $\ln(1-\bar\alpha)$ stays below 1 (Fitzroy and - Arau-Puchades take the wall-pair means themselves as inputs, so each - must already be below 1); Millington-Sette rejects any coefficient at - or above 1. To use Millington anyway, bringing such a - coefficient into $[0, 1)$ is a modelling decision the formula does not - prescribe: whatever adjustment you choose (limiting just below 1 is - common), record it alongside the prediction. -- **Fitzroy** and **Arau-Puchades** target shoebox rooms whose absorption - is concentrated on one axis, the typical office or dwelling with a soft - floor and ceiling between hard walls. Arau's geometric mean tempers - Fitzroy's known over-prediction when one wall pair is very reflective. - -**When every formula fails.** All five inherit the same assumption: a -diffuse field, with sound arriving equally from all directions at every -point, that stays diffuse while it decays. The common breakages: +The `NCResult` carries the `rating`, the `sil`, the `tangency_rating`, the +`method` (`'SIL'` or `'tangency'`), the `governing_frequency`, the +`out_of_range` flag and the measured `levels`, plus a convenience `label` +(`'NC-44'`, `'NC-51 (125 Hz)'`, `'>NC-70 (63 Hz)'`); the `RCResult` carries +the `rating`, the `lmf`, the `classification`, the `reference_curve`, an +`out_of_family` flag (Table D.1 tabulates RC-25 through RC-50 only) and a +convenience `label` in the `RC-NN(A)` form. Clause D.3.5 admits the tags +$N$, $R$, $H$ or $RV$; when both the rumble and hiss deviations fire, the +library reports the combined `RH` as a diagnostic extension. Each result +exposes a `.plot()` that renders its panel above. Clause D.4 expects at +least the 31.5 Hz to 4000 Hz octave bands: a spectrum missing any of them +still rates, but emits a `UserWarning` because the absent bands are skipped +by the tag deviation tests. -- **Below the Schroeder frequency** the band holds a handful of discrete - modes (the animation in §1) and a statistical reverberation time is not - defined at all; each mode decays at its own rate set by the wall - impedances it actually touches. -- **Coupled volumes** (a hall with an open stage house, two rooms through a - doorway) produce double-slope decays; no single $T$ exists, and the - measured T20 and T30 disagree (the curvature diagnostic of - [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/)). -- **Disproportionate rooms** (corridors, low flat halls) with the - absorption on one surface pair keep a grazing sound field parallel to the - hard surfaces that the absorber barely touches; the measured time can be - up to twice any statistical prediction, the practical experience recorded - in EN 12354-6 (see - [Sound absorption in enclosed spaces](https://jmrplens.github.io/phonometry/buildings/rooms/enclosed-space-absorption/)). -- **Focusing geometries** (domes, curved rear walls) concentrate late - energy instead of mixing it, producing position-dependent decays no - single-number formula can represent. +The balanced noise criteria (NCB), the room noise criterion for fluctuating +low-frequency noise (RNC, which needs a time series rather than a single +spectrum), the vibration/rattle tag ($RV$, which needs the Table 6 test) and +the numeric quality-assessment index (QAI, which the standard defers to +external references) are not part of this module. -Scattering objects restore the mixing the models assume: a furnished room -follows the statistical prediction distinctly better than the same room -bare, beyond what the furniture's own absorption area accounts for. The clip -below is that mechanism with the absorption taken out of it, so only the -mixing is left: an 800 Hz wavefront enters a 4 m rigid-walled hall filled -with rigid columns 10 to 17 cm across, a quarter to two fifths of the -42.9 cm wavelength. Every column diffracts the front and sheds a scattered -wavelet, the wavelets interfere, and within a few passes the specular front -has become energy spread over the whole hall with no preferred direction — -which is the assumption Sabine and Eyring both start from, arriving here as -a result rather than as a hypothesis. Nothing in the hall absorbs, so what -you are watching is *only* the redistribution; the decay at the end is the -energy draining out through the two open ends. +## 3. Choosing a criterion: NC, RC Mark II or NR -Animation: an 800 Hz plane wavefront sweeping a 4 metre rigid-walled hall filled with a staggered colonnade of rigid columns, every column shedding a scattered wavelet until the interference of the wavelets fills the hall with structured energy that then drains through the absorbing ends +The two ratings answer different questions, and a third family exists that +this module deliberately does not implement: -[Watch the high-resolution video (WebM)](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/anim_fdtd_pillar_hall.webm) +- **NC** answers *"does the room meet its limit, and which band breaks + it?"*. It is the compliance rating of North-American practice + (specifications, codes, equipment schedules). The clause 5.2.2 SIL step + anchors the designation to speech interference, but the moment any band + exceeds the NC-(SIL) curve the tangency method takes over and is driven + entirely by the single governing band. That is also its blind spot: two + NC-40 rooms can sound completely different, one rumbly and one hissy, + because tangency says nothing about spectral balance. Use NC when a + specification cites it, and always report the governing band with a + tangency rating, since it names the octave any fix must attack first. +- **RC Mark II** answers *"how does the room sound, and what should be + fixed?"*. Its rating tracks speech interference through the + mid-frequency average, and its reference slope of −5 dB per octave is + the spectrum occupants describe as neutral, a bland ventilation + background that is neither boomy nor sharp. The spectral tag then points + at the offending frequency range. Reach for RC Mark II at HVAC design + time, or to diagnose an installation that fails its NC limit. +- **NR (Noise Rating)**, the curve family of Kosten & van Os (1962), is + the European counterpart of NC: the same tangency logic over a + slightly different curve family (more permissive + at low frequency, stricter at high), common in European and + international equipment and building specifications. phonometry does not + implement NR; when a specification cites NR, rate against the NR curves + themselves rather than substituting NC, because the two families diverge + by several decibels away from the mid frequencies. -In practice, quote a *band* of predictions (Sabine and Eyring, or Fitzroy and -Arau-Puchades for axial cases) rather than a single value; where the models -spread, the room is telling you its field is not diffuse. +**Reading the tag.** The RC Mark II tag is a repair hint, not just a label. +A rumble tag (`R`, more than 5 dB over the reference at or below 500 Hz) +points at the air-handling plant: an oversized or starved fan, duct +rumble, or structure-borne vibration re-radiated by walls, and it is the +low-frequency energy that rattles lightweight construction and fatigues +occupants. A hiss tag (`H`, more than 3 dB over at or above 1000 Hz) +points at the terminal end: diffuser and grille face velocities or a +throttled damper close to the outlet, and it is the range that masks +speech. A neutral tag (`N`) means the level can still be wrong, but the +character is right: reduce the whole spectrum rather than reshape it. -## 5. Prediction report (`.report()`) +## 4. Room-noise reports (`.report()`) -`ReverberationModelResult.report(path)` renders a one-page PDF fiche of the -prediction: a basis line marking it a **design-stage prediction** by the five -statistical-acoustics models, an optional metadata header block (client, room, -description, room volume, total surface area, climate), a per-band table with -one reverberation-time column per model beside the model comparison plot -(`.plot()`), and the boxed mid-frequency reverberation time from Arau-Puchades -(the recommended model for a non-uniform absorption distribution) with the -per-model spread alongside. It is a prediction, not a measurement: the five -models bracket the reverberation time likely to occur, so no PASS/FAIL verdict -is emitted. A target reverberation time supplied through the metadata's -`requirement` field is printed as a reference line only, since a room -reverberation time is a target range rather than a strictly -higher/lower-is-better quantity. It uses the same `ReportMetadata` container -(documented under -[Insulation ratings](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-ratings/#report-metadata-reportmetadata)) and -rendering engine as the other fiches; passing `metadata=None` produces a bare -prediction fiche. Rendering needs reportlab and, for the figure the fiche -embeds, matplotlib (`pip install "phonometry[report,plot]"`); only -`engine="reportlab"` is supported. The fiche renders in English by default; pass -`language="es"` for a Spanish fiche (translated fixed strings and a comma +Both ratings render a one-page PDF room-noise assessment fiche. `NCResult.report(path)` +and `RCResult.report(path)` share the same layout: a standard-basis line, an +optional metadata header block, the measured octave-band levels beside the +measured spectrum plotted against the NC/RC curve family (the result's own +`.plot()`), the boxed rating, an optional verdict row and a footer with the +fixed disclaimer. The NC box shows the `NC-nn` designation with the SIL and, +for a tangency rating, its governing band (`>NC-70` / ` -Source: https://jmrplens.github.io/phonometry/buildings/rooms/enclosed-space-absorption/ + +Source: https://jmrplens.github.io/phonometry/buildings/rooms/reverberation-prediction/ -# Sound absorption in enclosed spaces (EN 12354-6) +# Reverberation-time prediction (Sabine · Eyring · Fitzroy · Arau-Puchades) -**EN 12354-6:2003** predicts the **total equivalent sound absorption area** of a -room and its **reverberation time** from the absorption of its surfaces and -objects, the design counterpart of the measured reverberation time. It is the -absorption member of the EN 12354 building-acoustics family (the airborne and -impact insulation members live in -[Predicting Sound Insulation (EN 12354)](https://jmrplens.github.io/phonometry/buildings/design/insulation-prediction/)). -phonometry implements the normative Clause 4 model. (The informative Annex D -method for irregular spaces is out of scope.) +The **reverberation time** $T$, the time for the sound-energy level to fall by +60 dB after the source stops, is predicted here from a room's **volume**, +**boundary areas** and the **sound-absorption coefficients** of its surfaces, +through the classical statistical-acoustics formulae. This is the design-stage +counterpart of the *measured* reverberation time of +[Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) (ISO 3382) and complements the EN 12354-6 +model of [Sound absorption in enclosed spaces](https://jmrplens.github.io/phonometry/buildings/rooms/enclosed-space-absorption/), +which specialises the same physics to that standard's Clause 4. -Flow from the room surfaces (area and absorption per band) and objects (volume, giving an equivalent area Vobj to the two-thirds power) into the total equivalent absorption area A = sum of alpha times S plus the object areas plus air absorption, then the object fraction psi, and finally the reverberation time T = 55.3/c0 times V times (1 minus psi) over A +phonometry offers five models, ordered by how much they account for a +**non-uniform** absorption distribution: -## 1. Equivalent absorption area (clause 4.3) +| Model | Absorption term in $T = k\,V / (\text{term} + 4mV)$ | Best for | +|:---|:---|:---| +| **Sabine** | $A = \sum_i S_i\alpha_i$ | low, uniform absorption | +| **Eyring** (Norris-Eyring) | $-S\ln(1-\bar\alpha)$ | strong, uniform absorption | +| **Millington-Sette** | $-\sum_i S_i\ln(1-\alpha_i)$ | a few very absorptive surfaces | +| **Fitzroy** | area-weighted **arithmetic** mean of three axial Eyring times | anisotropic rooms | +| **Arau-Puchades** | area-weighted **geometric** mean of the same three | anisotropic rooms (author-preferred) | -The total equivalent absorption area sums, over the surfaces $i$, the objects -$j$ and the object arrays $k$, each surface's area times its absorption -coefficient, the equivalent absorption areas of the objects, the object arrays -(groups of identical objects treated as an absorbing surface of area $S_k$), -and the air absorption (Formula 1): +with the Sabine constant $k = 24\ln 10 / c_0$ (so $k = 0.161$ for +$c_0 = 343\ \mathrm{m/s}$) and the air-absorption term $4mV$. + +Reverberation time per octave band for a 10 by 7 by 3.5 metre room with an absorptive floor and ceiling but hard walls, computed by five models. Fitzroy gives the longest times, Sabine and Eyring the mid-range, Millington-Sette the shortest, and Arau-Puchades sits between Eyring and Sabine + +
+Show the code for this figure + +```python +import matplotlib.pyplot as plt +from phonometry import environment, room + +# A 10 x 7 x 3.5 m room: hard end walls, lightly treated side walls and a +# very absorptive floor/ceiling pair (carpet plus an acoustic ceiling). +bands = [125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0] +alpha_x = [0.06, 0.07, 0.08, 0.09, 0.10, 0.10] +alpha_y = [0.12, 0.14, 0.16, 0.18, 0.20, 0.20] +alpha_z = [0.30, 0.50, 0.65, 0.78, 0.82, 0.80] +m = environment.air_attenuation_m(bands, 20.0, 50.0) # air at 20 C / 50 % RH +res = room.reverberation_time_models((10.0, 7.0, 3.5), + (alpha_x, alpha_y, alpha_z), + air_attenuation=m, frequencies=bands) +res.plot() # the five model curves per band +plt.show() +``` + +
+ +## 1. Sabine, Eyring and Millington-Sette + +The three statistical models take the room volume and a list of +`(area, absorption_coefficient)` surfaces. **Sabine** is exact only for low, +uniform absorption; **Eyring** replaces the absorption area by +$-S\ln(1-\bar\alpha)$ and is correct where Sabine overestimates $T$ (a live +room with strong absorption); **Millington-Sette** sums the Eyring term surface +by surface, so a single perfectly absorbing surface drives $T$ to zero. $$ -A = \sum_i \alpha_{s,i}\,S_i + \sum_j A_{\mathrm{obj},j} - + \sum_k \alpha_{s,k}\,S_k + A_{\mathrm{air}}. +T_{\text{Sab}} = \frac{k V}{\sum_i S_i\alpha_i}, \qquad +T_{\text{Eyr}} = \frac{k V}{-S\ln(1-\bar\alpha)}, \qquad +T_{\text{Mil}} = \frac{k V}{-\sum_i S_i\ln(1-\alpha_i)}. $$ -For hard, irregular objects whose absorption is not measured, an empirical -estimate from the volume is used (Formula 4): -$A_{\mathrm{obj}} = V_{\mathrm{obj}}^{2/3}$. - ```python from phonometry import room -# EN 12354-6 Annex E, bare room (29.75 m3), 1000 Hz octave band. -surfaces = [(12.39, 0.05), (12.39, 0.02), (10.90, 0.04), - (10.90, 0.04), (6.55, 0.04), (6.55, 0.04)] -print(round(room.equivalent_absorption_area(surfaces), 2)) # 2.26 m2 -print(round(float(room.hard_object_absorption(0.65)), 3)) # 0.75 m2 +# A shoebox 8 x 5 x 3 m (V = 120 m3, S = 158 m2), uniform alpha = 0.2. +surfaces = [(40.0, 0.2), (40.0, 0.2), (24.0, 0.2), + (24.0, 0.2), (15.0, 0.2), (15.0, 0.2)] +print(round(room.sabine_reverberation_time(120.0, surfaces), 3)) # 0.612 s +print(round(room.eyring_reverberation_time(120.0, surfaces), 3)) # 0.548 s +print(round(room.millington_sette_reverberation_time(120.0, surfaces), 3)) # 0.548 s ``` -Air absorption uses the power attenuation coefficient $m$ (Formula 2): -$A_{\mathrm{air}} = 4\,m\,V\,(1 - \psi)$. Below 1 kHz and for rooms under -200 m³ it can be neglected. +For a **uniform** distribution Eyring and Millington-Sette coincide, and both +fall below Sabine; Sabine's over-estimate at high absorption is the reason +Eyring exists. As $\alpha \to 0$, $-S\ln(1-\bar\alpha) \to \sum_i S_i\alpha_i$ +and Eyring reduces to Sabine. Air absorption enters every model through the +power-attenuation coefficient $m$ (in neper per metre, from the ISO 9613-1 +[atmospheric absorption](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/)): -## 2. Reverberation time (clause 4.4) +```python +from phonometry import environment, room -The reverberation time follows from the absorption area, the volume and the -object fraction $\psi = \sum V_{\mathrm{obj}}/V$ (Formula 5): +m = environment.air_attenuation_m(2000.0, temperature=20.0, relative_humidity=50.0) +surfaces = [(40.0, 0.3), (40.0, 0.3), (24.0, 0.3), + (24.0, 0.3), (15.0, 0.3), (15.0, 0.3)] +print(round(room.eyring_reverberation_time(120.0, surfaces, air_attenuation=m), 3)) +``` + +Every statistical model also assumes a **diffuse field**, and low +frequencies break that assumption first: below the Schroeder frequency the +room responds as a set of discrete modes, not as a reverberant mixture. The +2D FDTD simulation below drives a rigid 5 m by 3.5 m room exactly on its +(2,1) mode and then between two modes; the standing-wave pattern that +builds up on resonance is what Sabine and Eyring cannot see. + +Animation: a 2D FDTD simulation of a 5 by 3.5 metre room driven at the 84 Hz (2,1) mode and at an off-mode frequency; on resonance a standing-wave pattern with fixed nodal lines grows to dominate the RMS pressure map, off resonance the forced response stays weak and disorganised + +[Watch the high-resolution video (WebM)](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/anim_fdtd_room_modes.webm) + +## 2. Fitzroy and Arau-Puchades (anisotropic rooms) + +When the absorption is concentrated on one axis (a carpeted floor and an +acoustic ceiling against otherwise hard walls), a single mean $\bar\alpha$ +misrepresents the field. **Fitzroy** and **Arau-Puchades** split a rectangular +(shoebox) room into the three pairs of opposing walls and combine the *axial* +Eyring reverberation times $T_i$ (each using the whole surface $S$ and the mean +absorption $\bar\alpha_i$ of the wall pair perpendicular to axis $i$): $$ -T = \frac{55.3}{c_0}\,\frac{V\,(1 - \psi)}{A}, +T_{\text{Fitz}} = \sum_i \frac{S_i}{S}\,T_i \quad(\text{arithmetic}), \qquad +T_{\text{Arau}} = \prod_i T_i^{\,S_i/S} \quad(\text{geometric}). $$ -where the speed of sound $c_0 = 345.6\ \text{m/s}$ makes the factor -$55.3/c_0$ the familiar $0.16$. - ```python from phonometry import room -surfaces = [(12.39, 0.05), (12.39, 0.02), (10.90, 0.04), - (10.90, 0.04), (6.55, 0.04), (6.55, 0.04)] -a = room.equivalent_absorption_area(surfaces) -print(round(room.reverberation_time(a, 29.75), 1)) # 2.1 s - -# Annex E case 2: add furniture (hard objects) to the same room. -volumes = [0.15, 0.60, 0.05, 0.05, 0.65, 0.65] -aobj = room.hard_object_absorption(volumes) -psi = room.object_fraction(volumes, 29.75) # 0.072 -a2 = room.equivalent_absorption_area(surfaces, objects=aobj) -print(round(a2, 2), round(room.reverberation_time(a2, 29.75, object_fraction=psi), 1)) -# 5.03 0.9 +# 8 x 5 x 3 m room, absorptive x-wall pair (alpha 0.5), hard elsewhere (0.1). +dims = (8.0, 5.0, 3.0) +absorption = (0.5, 0.1, 0.1) # mean alpha of the (x, y, z) wall pairs +print(round(room.arau_puchades_reverberation_time(dims, absorption), 3)) # 0.812 s +print(round(room.fitzroy_reverberation_time(dims, absorption), 3)) # 0.974 s ``` -Per octave band, one call takes the surfaces (with per-band absorption -coefficients) and the air condition and returns the whole spectrum: +By the arithmetic-geometric-mean inequality the Arau-Puchades time never exceeds +the Fitzroy time; Fitzroy is known to over-predict when one wall pair is very +reflective, which is why Arau-Puchades recommends the geometric mean. Both +reduce exactly to Eyring for a uniform absorption distribution. + +## 3. Comparing the five models per band + +`reverberation_time_models` builds the six boundary surfaces of a rectangular +room from its dimensions and the three wall-pair mean absorptions, then +evaluates all five models on a common footing and returns a +`ReverberationModelResult` whose `.plot()` draws the figure above. ```python from phonometry import room -# Per-band absorption coefficients (125 Hz to 8 kHz) for each surface. -plaster = [0.02, 0.03, 0.03, 0.04, 0.05, 0.05, 0.05] -tile = [0.15, 0.35, 0.65, 0.85, 0.90, 0.90, 0.85] -result = room.enclosed_space_reverberation( - [(54.0, plaster), (20.0, plaster), (20.0, tile)], - volume=60.0, air_condition="20C_50-70", +# 10 x 7 x 3.5 m room, absorptive floor/ceiling against harder walls. +res = room.reverberation_time_models( + (10.0, 7.0, 3.5), + ( + [0.06, 0.07, 0.08, 0.09, 0.10, 0.10], # x-pair: hard end walls + [0.12, 0.14, 0.16, 0.18, 0.20, 0.20], # y-pair: lightly treated walls + [0.30, 0.50, 0.65, 0.78, 0.82, 0.80], # z-pair: carpet + acoustic ceiling + ), + frequencies=[125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0], ) -print(result.reverberation_time.round(2)) -# [2.13 1.03 0.62 0.48 0.43 0.42 0.4 ] -result.plot() # the figure below: A and T per octave band +print(res.sabine.round(2)) # [0.74 0.47 0.37 0.31 0.3 0.3 ] +print(res.arau_puchades.round(2)) # [0.79 0.51 0.38 0.29 0.26 0.27] +print(res.fitzroy.round(2)) # [1.02 0.79 0.66 0.57 0.51 0.51] +res.plot() # the five model curves per band (the figure above) ``` -Two panels for a 60 cubic metre office with a bare versus an acoustically-treated ceiling. Left: the equivalent absorption area per octave band, much higher across mid and high frequencies with the acoustic ceiling. Right: the reverberation time per octave band, falling from around five seconds at low frequency for the bare room to under one second with the acoustic ceiling -
Show the code for this figure ```python import matplotlib.pyplot as plt -from phonometry import room +from phonometry import environment, room -plaster = [0.02, 0.03, 0.03, 0.04, 0.05, 0.05, 0.05] -tile = [0.15, 0.35, 0.65, 0.85, 0.90, 0.90, 0.85] -walls_floor = [(54.0, plaster), (20.0, plaster)] -for ceiling in (plaster, tile): - room.enclosed_space_reverberation( - [*walls_floor, (20.0, ceiling)], 60.0, air_condition="20C_50-70", - ).plot() +m = environment.air_attenuation_m([125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0], 20.0, 50.0) +room.reverberation_time_models( + (10.0, 7.0, 3.5), + ( + [0.06, 0.07, 0.08, 0.09, 0.10, 0.10], + [0.12, 0.14, 0.16, 0.18, 0.20, 0.20], + [0.30, 0.50, 0.65, 0.78, 0.82, 0.80], + ), + air_attenuation=m, + frequencies=[125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0], +).plot() plt.show() ```
-The `ReverberationResult` carries the per-band absorption area and reverberation -time, the volume and the object fraction, and its `.plot()` draws the -reverberation-time spectrum. This is the prediction counterpart of the measured -reverberation time in [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) -(ISO 3382) and of the reverberation-room absorption of -[Sound Absorption Measurement and Rating](https://jmrplens.github.io/phonometry/materials/absorbers/absorption-measurement/) -(ISO 354). +Sabine and Eyring are the two workhorses, and the per-band spread between +them is itself a diagnostic. The diagram runs the room of this section +through both, with the validity boundary every statistical formula shares. -## 3. Where the input data comes from +Block diagram of the reverberation-time prediction: a 10 by 7 by 3.5 metre room with 245 cubic metres, 259 square metres and a mean absorption rising from 0.21 at 125 hertz to 0.51 at 4 kilohertz feeds the Sabine and Eyring formulas, whose per-octave-band table runs from 0.74 to 0.30 seconds for Sabine and 0.66 to 0.22 seconds for Eyring, Eyring reading 11 to 29 percent shorter; a closing note bounds the domain of validity to a diffuse field, excluding bands below the Schroeder frequency, coupled volumes and corridor-like rooms -**Surface coefficients.** The standard expects the $\alpha_{s,i}$ to come -from laboratory measurements to EN ISO 354, the reverberation-room method of -[Sound Absorption Measurement and Rating](https://jmrplens.github.io/phonometry/materials/absorbers/absorption-measurement/); -theoretical, empirical or field -values are admitted as long as the data source is stated. ISO 354 delivers -one-third-octave data, and an octave-band calculation takes the arithmetic -mean of the three thirds as its input. A reverberation-room coefficient can -exceed 1.0 (edge diffraction scatters more energy into the sample than its -flat area intercepts); it enters Formula 1 as measured, without clamping, -because the same diffuse-field convention that produced it is the one the -model assumes. +## 4. Choosing a model, and when every model fails -**Furniture and occupants.** Objects contribute through three routes: -a measured equivalent absorption area $A_{obj}$ when one exists (persons -and seating have tabulated values in the informative Annex C), the -Formula 4 estimate $V_{obj}^{2/3}$ for hard, irregular, unmeasured objects -(furniture, machinery), and object *arrays* rated as an absorbing surface -$\alpha_s S_k$ when many similar objects cover a zone (an audience, a -storage rack). Objects also displace air: their summed volume enters the -object fraction $\psi$ that shortens $T$ in Formula 5 beyond what their -absorption alone would. +The five formulae are not rivals on a single axis of accuracy; each has a +domain of validity: -**Air.** The air term $A_{air} = 4mV(1-\psi)$ uses the power attenuation -coefficient $m$ from the standard's Table 1, resolved by the -`air_condition` strings (temperature and relative-humidity class, derived -from ISO 9613-1); it only matters above 1 kHz and grows with the volume. -The six built-in profiles, `"10C_30-50"` through `"20C_70-90"` (clause 4.3 -recommends `"20C_50-70"` when no conditions are specified), cover the -standard 125 Hz to 8 kHz octave bands only and cannot be combined with a -custom frequency axis; `air_condition=None` (the default) omits the air -term, and for other frequencies or conditions compute $m$ per ISO 9613-1 -and chain `air_absorption_area` into `equivalent_absorption_area`. +- **Sabine** is the tool for live rooms with low, reasonably even + absorption (mean $\bar\alpha$ up to roughly 0.2): classrooms, halls, + reverberation chambers. It is also the convention wired into measurement + practice, because the ISO 354 absorption coefficient is *defined* through + Sabine's formula, so feeding reverberation-room data back into Sabine is + self-consistent even where the formula is strained. Its structural defect + shows at high absorption: with $\alpha = 1$ on every surface (an opening + in every direction) it still predicts a finite reverberation time. +- **Eyring** is the choice for evenly treated rooms with substantial + absorption: studios, treated offices, listening rooms. It reaches + $T = 0$ for total absorption, and its correction over Sabine grows with + $\bar\alpha$ (about 10 % shorter at $\bar\alpha = 0.2$, 30 % at 0.5). +- **Millington-Sette** handles a mix of very absorptive and hard surfaces + better than a single mean, but it is meant for measured, sub-unity + coefficients: a single surface with $\alpha_i = 1$ drives the whole + prediction to zero. Reverberation-room coefficients at or above 1.0 (a + documented ISO 354 outcome, see the absorption section of + [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/)) lie outside the domain of the + logarithmic term, so phonometry enforces each formula's own domain: + Sabine accepts such coefficients as supplied (its linear + $A = \sum_i S_i\alpha_i$ stays finite); Eyring accepts them as long as + the mean entering $\ln(1-\bar\alpha)$ stays below 1 (Fitzroy and + Arau-Puchades take the wall-pair means themselves as inputs, so each + must already be below 1); Millington-Sette rejects any coefficient at + or above 1. To use Millington anyway, bringing such a + coefficient into $[0, 1)$ is a modelling decision the formula does not + prescribe: whatever adjustment you choose (limiting just below 1 is + common), record it alongside the prediction. +- **Fitzroy** and **Arau-Puchades** target shoebox rooms whose absorption + is concentrated on one axis, the typical office or dwelling with a soft + floor and ceiling between hard walls. Arau's geometric mean tempers + Fitzroy's known over-prediction when one wall pair is very reflective. -**Validity limits (clause 4.6).** The model assumes an ordinary, -reasonably diffuse room: no dimension more than 5 times another, opposite -surface pairs whose coefficients differ by less than a factor of 3 (unless -scattering objects are present) and an object fraction below 0.2. Outside -those limits the field is not diffuse and the model errs on the optimistic -side: the standard's own accuracy clause records measured reverberation -times up to twice the prediction in low-diffusivity rooms. The classical -alternatives for those cases live in -[Reverberation-time prediction](https://jmrplens.github.io/phonometry/buildings/rooms/reverberation-prediction/). +**When every formula fails.** All five inherit the same assumption: a +diffuse field, with sound arriving equally from all directions at every +point, that stays diffuse while it decays. The common breakages: -## 4. Enclosed-space report (`.report()`) +- **Below the Schroeder frequency** the band holds a handful of discrete + modes (the animation in §1) and a statistical reverberation time is not + defined at all; each mode decays at its own rate set by the wall + impedances it actually touches. +- **Coupled volumes** (a hall with an open stage house, two rooms through a + doorway) produce double-slope decays; no single $T$ exists, and the + measured T20 and T30 disagree (the curvature diagnostic of + [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/)). +- **Disproportionate rooms** (corridors, low flat halls) with the + absorption on one surface pair keep a grazing sound field parallel to the + hard surfaces that the absorber barely touches; the measured time can be + up to twice any statistical prediction, the practical experience recorded + in EN 12354-6 (see + [Sound absorption in enclosed spaces](https://jmrplens.github.io/phonometry/buildings/rooms/enclosed-space-absorption/)). +- **Focusing geometries** (domes, curved rear walls) concentrate late + energy instead of mixing it, producing position-dependent decays no + single-number formula can represent. -`ReverberationResult.report(path)` renders a one-page PDF fiche characterising -the enclosed space: a basis line naming EN 12354-6:2003, an optional metadata -header block (client, room, description, room volume, object fraction, climate), -a per-band table of the equivalent sound absorption area $A$ and the -reverberation time $T$ beside the reverberation-time plot (`.plot()`), and the -boxed mid-frequency reverberation time with the mid-frequency absorption area -alongside. EN 12354-6 gives a diffuse-field **estimate**, not a measurement, so -no PASS/FAIL verdict is emitted; a target reverberation time supplied through -the metadata's `requirement` field is printed as a reference line only, since a -room reverberation time is a target range rather than a strictly +Scattering objects restore the mixing the models assume: a furnished room +follows the statistical prediction distinctly better than the same room +bare, beyond what the furniture's own absorption area accounts for. The clip +below is that mechanism with the absorption taken out of it, so only the +mixing is left: an 800 Hz wavefront enters a 4 m rigid-walled hall filled +with rigid columns 10 to 17 cm across, a quarter to two fifths of the +42.9 cm wavelength. Every column diffracts the front and sheds a scattered +wavelet, the wavelets interfere, and within a few passes the specular front +has become energy spread over the whole hall with no preferred direction — +which is the assumption Sabine and Eyring both start from, arriving here as +a result rather than as a hypothesis. Nothing in the hall absorbs, so what +you are watching is *only* the redistribution; the decay at the end is the +energy draining out through the two open ends. + +Animation: an 800 Hz plane wavefront sweeping a 4 metre rigid-walled hall filled with a staggered colonnade of rigid columns, every column shedding a scattered wavelet until the interference of the wavelets fills the hall with structured energy that then drains through the absorbing ends + +[Watch the high-resolution video (WebM)](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/anim_fdtd_pillar_hall.webm) + +In practice, quote a *band* of predictions (Sabine and Eyring, or Fitzroy and +Arau-Puchades for axial cases) rather than a single value; where the models +spread, the room is telling you its field is not diffuse. + +## 5. Prediction report (`.report()`) + +`ReverberationModelResult.report(path)` renders a one-page PDF fiche of the +prediction: a basis line marking it a **design-stage prediction** by the five +statistical-acoustics models, an optional metadata header block (client, room, +description, room volume, total surface area, climate), a per-band table with +one reverberation-time column per model beside the model comparison plot +(`.plot()`), and the boxed mid-frequency reverberation time from Arau-Puchades +(the recommended model for a non-uniform absorption distribution) with the +per-model spread alongside. It is a prediction, not a measurement: the five +models bracket the reverberation time likely to occur, so no PASS/FAIL verdict +is emitted. A target reverberation time supplied through the metadata's +`requirement` field is printed as a reference line only, since a room +reverberation time is a target range rather than a strictly higher/lower-is-better quantity. It uses the same `ReportMetadata` container (documented under [Insulation ratings](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-ratings/#report-metadata-reportmetadata)) and rendering engine as the other fiches; passing `metadata=None` produces a bare -characterisation fiche. Rendering needs reportlab and, for the figure the fiche +prediction fiche. Rendering needs reportlab and, for the figure the fiche embeds, matplotlib (`pip install "phonometry[report,plot]"`); only -`engine="reportlab"` is supported. The fiche renders in English by default; pass -`language="es"` for a Spanish fiche (translated fixed strings and a comma -decimal separator). - -```python -from phonometry import ( - enclosed_space_reverberation, hard_object_absorption, object_fraction, - ReportMetadata, -) - -surfaces = [ # per octave band, 125 Hz - 8 kHz - (20.0, [0.05, 0.10, 0.20, 0.30, 0.40, 0.50, 0.55]), # carpeted floor - (20.0, [0.20, 0.40, 0.65, 0.75, 0.80, 0.80, 0.75]), # acoustic ceiling - (45.0, [0.02, 0.02, 0.03, 0.04, 0.05, 0.05, 0.05]), # painted-plaster walls -] -volumes = [0.5, 0.8, 0.3] # furniture, m^3 -result = enclosed_space_reverberation( - surfaces, 50.0, - objects=hard_object_absorption(volumes), - object_fraction=object_fraction(volumes, 50.0), - air_condition="20C_50-70", +`engine="reportlab"` is supported. The fiche renders in English by default; pass +`language="es"` for a Spanish fiche (translated fixed strings and a comma +decimal separator). + +```python +from phonometry import reverberation_time_models, ReportMetadata + +result = reverberation_time_models( + (8.0, 5.0, 3.0), # a shoebox room, one treated wall pair + ([0.10, 0.15, 0.30, 0.45, 0.55, 0.60], # treated wall pair, per octave band + [0.08, 0.10, 0.12, 0.15, 0.18, 0.20], # side walls + [0.05, 0.08, 0.10, 0.12, 0.15, 0.18]),# floor/ceiling + frequencies=[125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0], ) result.report( - "enclosed_space_fiche.pdf", + "reverberation_fiche.pdf", metadata=ReportMetadata( - specimen="Meeting room, furnished", - test_room="Meeting room M2", - measurement_standard="EN 12354-6", - temperature=20.0, relative_humidity=55.0, + specimen="Classroom, one wall lined with a broadband absorber", + test_room="Classroom C1", + temperature=20.0, relative_humidity=50.0, laboratory="Phonometry Reference Laboratory", - requirement=0.6, # printed as a target reference line, no verdict + requirement=0.8, # printed as a target reference line, no verdict ), -) # the per-band A/T table + the boxed T_mid +) # the five-model table + the boxed T_mid ``` The example fiche, regenerated with `make reports`, is kept rendered in the repository. Click the preview to open the PDF: -[![EN 12354-6 enclosed-space example report: a metadata header with the room volume and object fraction, the octave-band table of the equivalent sound absorption area A and the reverberation time T from 125 Hz to 8 kHz beside the reverberation-time plot, and the boxed mid-frequency reverberation time with the mid-frequency absorption area alongside](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/reports/enclosed_space_absorption_example.webp)](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/reports/enclosed_space_absorption_example.pdf) +[![Reverberation-time prediction example report: a metadata header with the room volume and total surface area, the octave-band table with one reverberation-time column per model (Sabine, Eyring, Millington-Sette, Fitzroy and Arau-Puchades from 125 Hz to 4 kHz) beside the five-model comparison plot, the boxed mid-frequency reverberation time from Arau-Puchades with the per-model spread alongside, and a target reverberation-time reference line](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/reports/reverberation_prediction_example.webp)](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/reports/reverberation_prediction_example.pdf) -*Enclosed-space fiche (`ReverberationResult.report`), the per-band $A$/$T$ table and the boxed $T_\text{mid}$.* +*Reverberation-time prediction fiche (`ReverberationModelResult.report`), the five-model table and the boxed $T_\text{mid}$.* ## References -- European Committee for Standardization. (2003). *Building acoustics — - Estimation of acoustic performance of buildings from the performance of - elements — Part 6: Sound absorption in enclosed spaces* - (EN 12354-6:2003). - [BSI Knowledge record (BS EN 12354-6:2003)](https://knowledge.bsigroup.com/products/building-acoustics-estimation-of-acoustic-performance-of-buildings-from-the-performance-of-elements-sound-absorption-in-enclosed-spaces). - The Clause 4 model, its input-data rules and its validity limits. -- International Organization for Standardization. (2003). *Acoustics — - Measurement of sound absorption in a reverberation room* (ISO 354:2003). - [iso.org catalogue](https://www.iso.org/standard/34545.html). - The laboratory measurement the surface and array coefficients come from. +- Sabine, W. C. (1922). *Collected papers on acoustics*. Harvard University + Press. [Free scan at the Internet Archive](https://archive.org/details/collectedpaperso00sabi). + The original reverberation experiments and the $T = 0.161\,V/A$ law of §1. +- Eyring, C. F. (1930). Reverberation time in "dead" rooms. *The Journal of + the Acoustical Society of America*, 1(2A), 217-241. + [doi:10.1121/1.1915175](https://doi.org/10.1121/1.1915175). + The mean-free-path derivation behind the $-S\ln(1-\bar\alpha)$ term of §1. +- Millington, G. (1932). A modified formula for reverberation. *The Journal + of the Acoustical Society of America*, 4(1), 69-82. + [doi:10.1121/1.1915588](https://doi.org/10.1121/1.1915588). + The per-surface logarithmic absorption term of §1. +- Fitzroy, D. (1959). Reverberation formula which seems to be more accurate + with nonuniform distribution of absorption. *The Journal of the + Acoustical Society of America*, 31(7), 893-897. + [doi:10.1121/1.1907814](https://doi.org/10.1121/1.1907814). + The axial split into three wall-pair decays of §2. +- Arau-Puchades, H. (1988). An improved reverberation formula. *Acustica*, + 65(4), 163-180. + [Publisher record at Ingenta](https://www.ingentaconnect.com/content/dav/aaua/1988/00000065/00000004/art00003). + The geometric-mean combination of §2 (its Formula 18). - Kuttruff, H. (2016). *Room acoustics* (6th ed.). CRC Press. [doi:10.1201/9781315372150](https://doi.org/10.1201/9781315372150). - The statistical reverberation theory the standard's formulae specialise. + The diffuse-field theory, its limits and the modern assessment of the + classical formulae behind §4. +- Everest, F. A. (2001). *Master handbook of acoustics* (4th ed.). + McGraw-Hill. ISBN 978-0-07-136097-5. + [Open Library record](https://openlibrary.org/isbn/9780071360975). + The Fig. 7-22 worked example the conformance suite reproduces. +- Carrión Isbert, A. (1998). *Diseño acústico de espacios arquitectónicos*. + Edicions UPC. ISBN 978-84-8301-252-9. + [Open Library record](https://openlibrary.org/books/OL23159935M). + A Spanish-language textbook treatment of the reverberation models and + their use in room design. ## Standards -EN 12354-6:2003, *Building acoustics — Estimation of acoustic -performance of buildings from the performance of elements — Part 6: Sound -absorption in enclosed spaces*: the total equivalent absorption area -(clause 4.3, Formulae 1-4, Table 1) and the reverberation time (clause 4.4, -Formula 5), validated against the three worked cases of Annex E. +The classical reverberation formulae predate the normative +world; they enter it through EN 12354-6:2003, whose Clause 4 model is a +Sabine calculation with object and air terms (see +[Sound absorption in enclosed spaces](https://jmrplens.github.io/phonometry/buildings/rooms/enclosed-space-absorption/)), and +through ISO 354:2003, which defines the measured absorption coefficient via +Sabine's formula. Air absorption follows ISO 9613-1:1993, *Acoustics — +Attenuation of sound during propagation outdoors — Part 1: Calculation of +the absorption of sound by the atmosphere* (see +[Outdoor propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/)). The conformance suite is +anchored on a real worked example, Everest's Fig. 7-22 Example 1 (an +untreated 23.3 × 16 × 10 ft room), whose six printed Sabine reverberation +times the SI implementation reproduces to ≤ 0.02 s, reinforced by +hand-computed closed-form values and the model identities (every model +collapses to Eyring for uniform absorption; Eyring collapses to Sabine as +$\alpha \to 0$), which transitively carry that real-data anchor to the +whole family. --- - -Source: https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/ + +Source: https://jmrplens.github.io/phonometry/buildings/rooms/enclosed-space-absorption/ -# Room-noise criteria (NC / RC Mark II) +# Sound absorption in enclosed spaces (EN 12354-6) -Steady background noise in an occupied room (from ventilation, diffusers or -distant traffic) is rated against a family of **octave-band criterion curves**. -**ANSI/ASA S12.2-2019**, *Criteria for Evaluating Room Noise*, defines two -spectrum-in ratings that phonometry implements: the **Noise Criteria (NC)** -rating (the NC-(SIL) designation of clause 5.2.2, with the tangency method -when the spectrum exceeds it), and the **Room Criteria Mark II (RC)** rating -with its rumble/hiss spectral tag. Both work on octave-band sound pressure -levels over the ten bands from 16 Hz to 8000 Hz. +**EN 12354-6:2003** predicts the **total equivalent sound absorption area** of a +room and its **reverberation time** from the absorption of its surfaces and +objects, the design counterpart of the measured reverberation time. It is the +absorption member of the EN 12354 building-acoustics family (the airborne and +impact insulation members live in +[Predicting Sound Insulation (EN 12354)](https://jmrplens.github.io/phonometry/buildings/design/insulation-prediction/)). +phonometry implements the normative Clause 4 model. (The informative Annex D +method for irregular spaces is out of scope.) -The two ANSI S12.2 rating methods from one octave-band spectrum: on the left the NC tangency method (from the Table 1 curves, the NC value in each band, then NC equals the highest curve touched, giving NC-NN with a governing band); on the right the RC Mark II method (the mid-frequency average LMF of the 500, 1000 and 2000 Hz levels rounded to give RC-NN, then the spectral tag R for rumble, H for hiss or N for neutral by the clause D.3 deviation rules, giving RC-NN with a tag) +Flow from the room surfaces (area and absorption per band) and objects (volume, giving an equivalent area Vobj to the two-thirds power) into the total equivalent absorption area A = sum of alpha times S plus the object areas plus air absorption, then the object fraction psi, and finally the reverberation time T = 55.3/c0 times V times (1 minus psi) over A -## 1. Noise Criteria: SIL designation and tangency +## 1. Equivalent absorption area (clause 4.3) -The **NC curves** (ANSI/ASA S12.2-2019 Table 1) are a family of octave-band -limits, each designated by its value at 1000 Hz (NC-15 up to NC-70). Clause -5.2.2 rates a spectrum in **two steps**. First the **speech interference -level** $\mathrm{SIL}$ (clause 3.2, the average of the 500/1000/2000/4000 Hz -levels) selects the NC-(SIL) curve: if no octave band exceeds it, the -spectrum is simply designated **NC-(SIL)**. Only when the spectrum pokes -above that curve does the **tangency method** (clause 5.2.3) take over: for -each octave band, the NC index whose curve passes through the measured level -is found, and the rating is the maximum across bands. The band where that -maximum occurs, the one that pushes the spectrum up against the curves, is -reported as the **governing band**. +The total equivalent absorption area sums, over the surfaces $i$, the objects +$j$ and the object arrays $k$, each surface's area times its absorption +coefficient, the equivalent absorption areas of the objects, the object arrays +(groups of identical objects treated as an absorbing surface of area $S_k$), +and the air absorption (Formula 1): + +$$ +A = \sum_i \alpha_{s,i}\,S_i + \sum_j A_{\mathrm{obj},j} + + \sum_k \alpha_{s,k}\,S_k + A_{\mathrm{air}}. +$$ + +For hard, irregular objects whose absorption is not measured, an empirical +estimate from the volume is used (Formula 4): +$A_{\mathrm{obj}} = V_{\mathrm{obj}}^{2/3}$. ```python -import numpy as np from phonometry import room -# Octave-band SPL, 16 Hz - 8000 Hz (a ventilation-dominated room). -spl = np.array([62.0, 62.0, 59.0, 57.0, 52.0, 42.0, 35.0, 29.0, 24.0, 19.0]) - -nc = room.noise_criterion(spl) -print(round(nc.sil, 1)) # 32.5 (clause 3.2) -print(nc.method) # 'tangency' (the NC-32 curve is exceeded) -print(round(nc.rating, 1)) # 42.5 -print(nc.governing_frequency) # 250.0 (the tangent band) -print(nc.label) # 'NC-42.5 (250 Hz)' -nc.plot() # the spectrum over the NC curve family (left panel below) +# EN 12354-6 Annex E, bare room (29.75 m3), 1000 Hz octave band. +surfaces = [(12.39, 0.05), (12.39, 0.02), (10.90, 0.04), + (10.90, 0.04), (6.55, 0.04), (6.55, 0.04)] +print(round(room.equivalent_absorption_area(surfaces), 2)) # 2.26 m2 +print(round(float(room.hard_object_absorption(0.65)), 3)) # 0.75 m2 ``` -Because a tangency rating interpolates between the tabulated curves it is a -continuous number: an NC rating of $42.5$ sits half-way between NC-40 and -NC-45 (a SIL designation is always an integer). The tangency rating is kept -on `tangency_rating` even when the SIL designation applies. A subset of the -octave bands may be supplied together with their centre frequencies -(`room.noise_criterion(levels, frequencies)`); without the four SIL bands the -tangency rating alone sets the designation. - -The Table 1 family ends at NC-70 and NC-15, and the standard defines no -rating beyond it. A spectrum above the NC-70 curve (or entirely below the -NC-15 curve) therefore gets `rating = nan` and an `out_of_range` flag of -`"above"` / `"below"`, with `nc.label` reading `'>NC-70 (63 Hz)'` (the band -with the largest exceedance over NC-70 governs) or `'Two panels for the same ventilation-dominated room spectrum. Left: the measured octave-band levels over the NC curve family, with a red diamond marking the tangent point at 250 Hz that sets the NC-42.5 rating. Right: the same spectrum over the reference RC-35 curve, with the low-frequency bands rising through the shaded rumble tolerance (+5 dB below 500 Hz) so the noise is classified RC-35(R), and the hiss tolerance (+3 dB at and above 1000 Hz) shaded for comparison - -
-Show the code for this figure +Per octave band, one call takes the surfaces (with per-band absorption +coefficients) and the air condition and returns the whole spectrum: ```python -import numpy as np -import matplotlib.pyplot as plt from phonometry import room -spl = np.array([62.0, 62.0, 59.0, 57.0, 52.0, 42.0, 35.0, 29.0, 24.0, 19.0]) - -# One line each: -room.noise_criterion(spl).plot() -room.room_criterion(spl).plot() -plt.show() - -# By hand, mirroring what NCResult.plot() / RCResult.plot() draw: -from phonometry.room.noise_criteria import NC_CURVES, NC_INDICES, OCTAVE_BANDS -nc, rc = room.noise_criterion(spl), room.room_criterion(spl) -fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5)) +# Per-band absorption coefficients (125 Hz to 8 kHz) for each surface. +plaster = [0.02, 0.03, 0.03, 0.04, 0.05, 0.05, 0.05] +tile = [0.15, 0.35, 0.65, 0.85, 0.90, 0.90, 0.85] +result = room.enclosed_space_reverberation( + [(54.0, plaster), (20.0, plaster), (20.0, tile)], + volume=60.0, air_condition="20C_50-70", +) +print(result.reverberation_time.round(2)) +# [2.13 1.03 0.62 0.48 0.43 0.42 0.4 ] +result.plot() # the figure below: A and T per octave band +``` -for row, idx in zip(NC_CURVES, NC_INDICES): - ax1.plot(OCTAVE_BANDS, row, color="#bbbbbb", lw=0.8) -ax1.plot(OCTAVE_BANDS, spl, "o-", label="Measured") -gov = spl[OCTAVE_BANDS == nc.governing_frequency][0] -ax1.plot([nc.governing_frequency], [gov], "D", color="#d62728") -ax1.set_xscale("log"); ax1.set_title(f"NC-{nc.rating:g}") +Two panels for a 60 cubic metre office with a bare versus an acoustically-treated ceiling. Left: the equivalent absorption area per octave band, much higher across mid and high frequencies with the acoustic ceiling. Right: the reverberation time per octave band, falling from around five seconds at low frequency for the bare room to under one second with the acoustic ceiling -ref = rc.reference_curve -low, high = OCTAVE_BANDS <= 500, OCTAVE_BANDS >= 1000 -ax2.plot(OCTAVE_BANDS, ref, "s--", color="#7f7f7f", label=f"Reference RC-{rc.rating}") -ax2.fill_between(OCTAVE_BANDS[low], ref[low], ref[low] + 5, color="#ffbb78", alpha=0.35) -ax2.fill_between(OCTAVE_BANDS[high], ref[high], ref[high] + 3, color="#aec7e8", alpha=0.45) -ax2.plot(OCTAVE_BANDS, spl, "o-", label="Measured") -ax2.set_xscale("log"); ax2.set_title(rc.label) +
+Show the code for this figure + +```python +import matplotlib.pyplot as plt +from phonometry import room + +plaster = [0.02, 0.03, 0.03, 0.04, 0.05, 0.05, 0.05] +tile = [0.15, 0.35, 0.65, 0.85, 0.90, 0.90, 0.85] +walls_floor = [(54.0, plaster), (20.0, plaster)] +for ceiling in (plaster, tile): + room.enclosed_space_reverberation( + [*walls_floor, (20.0, ceiling)], 60.0, air_condition="20C_50-70", + ).plot() plt.show() ```
-The `NCResult` carries the `rating`, the `sil`, the `tangency_rating`, the -`method` (`'SIL'` or `'tangency'`), the `governing_frequency`, the -`out_of_range` flag and the measured `levels`, plus a convenience `label` -(`'NC-44'`, `'NC-51 (125 Hz)'`, `'>NC-70 (63 Hz)'`); the `RCResult` carries -the `rating`, the `lmf`, the `classification`, the `reference_curve`, an -`out_of_family` flag (Table D.1 tabulates RC-25 through RC-50 only) and a -convenience `label` in the `RC-NN(A)` form. Clause D.3.5 admits the tags -$N$, $R$, $H$ or $RV$; when both the rumble and hiss deviations fire, the -library reports the combined `RH` as a diagnostic extension. Each result -exposes a `.plot()` that renders its panel above. Clause D.4 expects at -least the 31.5 Hz to 4000 Hz octave bands: a spectrum missing any of them -still rates, but emits a `UserWarning` because the absent bands are skipped -by the tag deviation tests. +The `ReverberationResult` carries the per-band absorption area and reverberation +time, the volume and the object fraction, and its `.plot()` draws the +reverberation-time spectrum. This is the prediction counterpart of the measured +reverberation time in [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) +(ISO 3382) and of the reverberation-room absorption of +[Sound Absorption Measurement and Rating](https://jmrplens.github.io/phonometry/materials/absorbers/absorption-measurement/) +(ISO 354). -The balanced noise criteria (NCB), the room noise criterion for fluctuating -low-frequency noise (RNC, which needs a time series rather than a single -spectrum), the vibration/rattle tag ($RV$, which needs the Table 6 test) and -the numeric quality-assessment index (QAI, which the standard defers to -external references) are not part of this module. +## 3. Where the input data comes from -## 3. Choosing a criterion: NC, RC Mark II or NR +**Surface coefficients.** The standard expects the $\alpha_{s,i}$ to come +from laboratory measurements to EN ISO 354, the reverberation-room method of +[Sound Absorption Measurement and Rating](https://jmrplens.github.io/phonometry/materials/absorbers/absorption-measurement/); +theoretical, empirical or field +values are admitted as long as the data source is stated. ISO 354 delivers +one-third-octave data, and an octave-band calculation takes the arithmetic +mean of the three thirds as its input. A reverberation-room coefficient can +exceed 1.0 (edge diffraction scatters more energy into the sample than its +flat area intercepts); it enters Formula 1 as measured, without clamping, +because the same diffuse-field convention that produced it is the one the +model assumes. -The two ratings answer different questions, and a third family exists that -this module deliberately does not implement: +**Furniture and occupants.** Objects contribute through three routes: +a measured equivalent absorption area $A_{obj}$ when one exists (persons +and seating have tabulated values in the informative Annex C), the +Formula 4 estimate $V_{obj}^{2/3}$ for hard, irregular, unmeasured objects +(furniture, machinery), and object *arrays* rated as an absorbing surface +$\alpha_s S_k$ when many similar objects cover a zone (an audience, a +storage rack). Objects also displace air: their summed volume enters the +object fraction $\psi$ that shortens $T$ in Formula 5 beyond what their +absorption alone would. -- **NC** answers *"does the room meet its limit, and which band breaks - it?"*. It is the compliance rating of North-American practice - (specifications, codes, equipment schedules). The clause 5.2.2 SIL step - anchors the designation to speech interference, but the moment any band - exceeds the NC-(SIL) curve the tangency method takes over and is driven - entirely by the single governing band. That is also its blind spot: two - NC-40 rooms can sound completely different, one rumbly and one hissy, - because tangency says nothing about spectral balance. Use NC when a - specification cites it, and always report the governing band with a - tangency rating, since it names the octave any fix must attack first. -- **RC Mark II** answers *"how does the room sound, and what should be - fixed?"*. Its rating tracks speech interference through the - mid-frequency average, and its reference slope of −5 dB per octave is - the spectrum occupants describe as neutral, a bland ventilation - background that is neither boomy nor sharp. The spectral tag then points - at the offending frequency range. Reach for RC Mark II at HVAC design - time, or to diagnose an installation that fails its NC limit. -- **NR (Noise Rating)**, the curve family of Kosten & van Os (1962), is - the European counterpart of NC: the same tangency logic over a - slightly different curve family (more permissive - at low frequency, stricter at high), common in European and - international equipment and building specifications. phonometry does not - implement NR; when a specification cites NR, rate against the NR curves - themselves rather than substituting NC, because the two families diverge - by several decibels away from the mid frequencies. +**Air.** The air term $A_{air} = 4mV(1-\psi)$ uses the power attenuation +coefficient $m$ from the standard's Table 1, resolved by the +`air_condition` strings (temperature and relative-humidity class, derived +from ISO 9613-1); it only matters above 1 kHz and grows with the volume. +The six built-in profiles, `"10C_30-50"` through `"20C_70-90"` (clause 4.3 +recommends `"20C_50-70"` when no conditions are specified), cover the +standard 125 Hz to 8 kHz octave bands only and cannot be combined with a +custom frequency axis; `air_condition=None` (the default) omits the air +term, and for other frequencies or conditions compute $m$ per ISO 9613-1 +and chain `air_absorption_area` into `equivalent_absorption_area`. -**Reading the tag.** The RC Mark II tag is a repair hint, not just a label. -A rumble tag (`R`, more than 5 dB over the reference at or below 500 Hz) -points at the air-handling plant: an oversized or starved fan, duct -rumble, or structure-borne vibration re-radiated by walls, and it is the -low-frequency energy that rattles lightweight construction and fatigues -occupants. A hiss tag (`H`, more than 3 dB over at or above 1000 Hz) -points at the terminal end: diffuser and grille face velocities or a -throttled damper close to the outlet, and it is the range that masks -speech. A neutral tag (`N`) means the level can still be wrong, but the -character is right: reduce the whole spectrum rather than reshape it. +**Validity limits (clause 4.6).** The model assumes an ordinary, +reasonably diffuse room: no dimension more than 5 times another, opposite +surface pairs whose coefficients differ by less than a factor of 3 (unless +scattering objects are present) and an object fraction below 0.2. Outside +those limits the field is not diffuse and the model errs on the optimistic +side: the standard's own accuracy clause records measured reverberation +times up to twice the prediction in low-diffusivity rooms. The classical +alternatives for those cases live in +[Reverberation-time prediction](https://jmrplens.github.io/phonometry/buildings/rooms/reverberation-prediction/). -## 4. Room-noise reports (`.report()`) +## 4. Enclosed-space report (`.report()`) -Both ratings render a one-page PDF room-noise assessment fiche. `NCResult.report(path)` -and `RCResult.report(path)` share the same layout: a standard-basis line, an -optional metadata header block, the measured octave-band levels beside the -measured spectrum plotted against the NC/RC curve family (the result's own -`.plot()`), the boxed rating, an optional verdict row and a footer with the -fixed disclaimer. The NC box shows the `NC-nn` designation with the SIL and, -for a tangency rating, its governing band (`>NC-70` / ` -Source: https://jmrplens.github.io/phonometry/devices/emission/intensity/ - -# Sound Intensity (p-p method) - -Sound *pressure* tells you how loud a point is; sound **intensity** tells -you where the energy is *going*. It is the acoustic power flux (W/m²), a -signed vector quantity, which is why intensity probes can localize sources, -separate them from background noise and measure sound power in situ -(ISO 9614) where a pressure measurement alone cannot. + +Source: https://jmrplens.github.io/phonometry/devices/emission/vibration-sound-power/ -## The two-microphone principle (IEC 61043) +# Sound power from surface vibration (ISO/TS 7849) -A p-p probe holds two matched microphones a small distance $\Delta r$ apart. The -pressure at the probe center is their mean, and the particle velocity comes -from the pressure *gradient* (Euler's equation, finite-difference form): +The airborne sound power a machine radiates through the structure-borne +vibration of its outer surface can be estimated from the surface vibratory +velocity and a **radiation factor** $\varepsilon$ (the radiation efficiency), +without an +acoustic measurement. The radiated power is (ISO/TS 7849-1, Formula 6) $$ -p = \frac{p_1 + p_2}{2}, \qquad -u = -\frac{1}{\rho_0\ \Delta r}\int (p_2 - p_1)\ dt, \qquad -I = \overline{p\ u} +P = Z_c \, \langle v^2 \rangle \, S \, \varepsilon \quad [\mathrm{W}], $$ -In practice the estimator works in the frequency domain through the -cross-spectrum of the two channels (the standard's equivalent form): +with $Z_c$ the characteristic impedance of air, $\langle v^2 \rangle$ the +mean-square vibratory velocity over the radiating area $S$. Expressed in levels +(velocity level re $v_0 = 5\times10^{-8}\ \text{m/s}$), the A-weighted sound +power level is (Formula 12 / 15) $$ -I(f) = -\ \frac{\mathrm{Im}\lbrace G_{12}(f)\rbrace}{2\pi f\ \rho_0\ \Delta r} +L_W = L_v + 10\log_{10}\frac{S}{S_0} + 10\log_{10}\varepsilon + + 10\log_{10}\frac{Z_{c,n}}{Z_{c,0}}, $$ -Two-microphone p-p intensity probe with the spacer distance and the measurement axis +where $S_0 = 1\ \text{m}^2$, the normalized impedance +$Z_{c,n} = 411\ \text{N·s/m}^3$ and the reference +$Z_{c,0} = 400\ \text{N·s/m}^3$ give the fixed +$10\log_{10}(411/400) = 0.118\ \text{dB}$ +term. This module feeds the structure-borne source and building prediction +standards (ISO 9611, EN 15657, EN 12354-5). -The probe itself is small enough to draw at true scale. -`plot_pp_probe_geometry` puts the classic 12 mm solid spacer between the two -face-to-face capsules, and a computed `IntensityResult` that retained its -`spacing` redraws its own probe with `res.plot_geometry()`. +Before any levels, the radiator itself. The `radiation_efficiency` plate model +that supplies a predicted radiation factor retains its geometry, and +`sigma.plot_geometry()` draws the plate in its baffle to scale, here 1.5 m by +1.25 m and simply supported. -To-scale side view of the face-to-face p-p intensity probe: two blue half-inch microphone capsules on their grey cylindrical bodies facing each other across the light 12 mm solid spacer, the spacing dimensioned below and the intensity axis Ir drawn as a blue arrow to the right +To-scale front view of the plate of the radiation model: a grey 1.5 m by 1.25 m simply supported plate inside its hatched rigid baffle, both side lengths dimensioned and the boundary condition named in the title -*The finite difference at true scale: two half-inch capsules face to face -across 12 mm of solid spacer, and that $\Delta r$ is both the sensitivity of -the gradient estimate and the origin of the high-frequency error.* +*The radiator behind the radiation factor, to scale: the 1.5 m by 1.25 m +simply supported plate in its rigid baffle, whose area $S$ enters $L_W$ +directly while its size decides how far $\varepsilon$ falls below one under +coincidence.*
Show the code for this figure ```python import matplotlib.pyplot as plt -from phonometry import emission +import numpy as np +from phonometry import vibration -# The classic 12 mm solid spacer between two half-inch microphones. -emission.plot_pp_probe_geometry() +# The simply supported 1.5 x 1.25 m plate of the radiation model. +f = np.geomspace(50.0, 5000.0, 200) +sigma = vibration.radiation_efficiency(f, 1.5, 1.25, 2100.0) +sigma.plot_geometry() plt.show() - -# A computed IntensityResult retains its spacing: -# res = emission.sound_intensity(p1, p2, fs, spacing=0.012) -# res.plot_geometry() ```
-```python -import numpy as np -from phonometry import emission - -fs = 48000 -rng = np.random.default_rng(0) -# The two probe-microphone pressures in Pa, p1 closest to the source. -# In a real measurement these are your two calibrated probe recordings; -# synthesized here (p2 = p1 delayed one sample) so the guide runs. -p1 = 0.02 * rng.standard_normal(fs) -p2 = np.concatenate(([0.0], p1[:-1])) # p2 = p1 delayed one sample - -res = emission.sound_intensity(p1, p2, fs, spacing=0.012, fraction=3, - limits=[100, 2500]) -print(res.total_intensity_level, res.total_direction) # LI [dB], ±1 -print(res.frequency, res.intensity_level) # per band -res.plot() # Lp vs LI per band + the pressure-intensity index (needs matplotlib) -``` - -Third-octave pressure and intensity levels for a plane progressive wave versus a standing wave - -*Left: in a plane progressive wave all pressure is transported, so -$L_I \approx L_p$. Right: a standing wave carries (almost) no net energy, so -the pressure is high but the intensity collapses. The gap $L_p - L_I$ is the -**pressure-intensity index**, the fundamental quality indicator of every -intensity measurement.* +Radiated sound power level per octave band of a vibrating surface, comparing the ISO/TS 7849-1 upper limit with a fixed radiation factor of one against the ISO/TS 7849-2 engineering value with a measured radiation factor, with the band-summed totals marked
Show the code for this figure @@ -1625,514 +1638,449 @@ import matplotlib.pyplot as plt import numpy as np from phonometry import emission -fs = 48000 -rng = np.random.default_rng(0) -# The two probe-microphone pressures in Pa, p1 closest to the source. -# In a real measurement these are your two calibrated probe recordings; -# synthesized here (p2 = p1 delayed one sample) so the guide runs. -p1 = 0.02 * rng.standard_normal(fs) -p2 = np.concatenate(([0.0], p1[:-1])) # p2 = p1 delayed one sample -res = emission.sound_intensity(p1, p2, fs, spacing=0.012, fraction=3, - limits=[100, 2500]) +# Surface velocity levels and a measured radiation factor per octave band. +bands = np.array([125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0]) +lv = np.array([78.0, 82.0, 85.0, 83.0, 79.0, 74.0]) +eps = np.array([0.20, 0.45, 0.75, 0.95, 1.00, 1.00]) -# res is the IntensityResult computed in the example above. -# One line — Lp vs LI per band with the pressure-intensity index on a twin axis: +lw_max = emission.radiated_sound_power_level(lv, 1.6) # Part 1, eps = 1 +lw_eng = emission.radiated_sound_power_level(lv, 1.6, radiation_factor=eps) # Part 2 + +# One line — the LW(f) spectrum of one determination as a result object: +res = emission.sound_power_from_vibration(lv, area=1.6, radiation_factor=eps, + frequencies=bands) res.plot() plt.show() -# By hand, from the per-band fields the result carries — mirroring what -# IntensityResult.plot() draws (bar label, merged twin-axis legend, δpI title): +# By hand, comparing the two parts: +x = np.arange(bands.size) fig, ax = plt.subplots() -ax.semilogx(res.frequency, res.pressure_level, "o-", label="Pressure level Lp") -ax.semilogx(res.frequency, res.intensity_level, "s--", label="Intensity level LI") -ax.set_xlabel("Frequency [Hz]") -ax.set_ylabel("Level [dB]") -twin = ax.twinx() -twin.bar(res.frequency, res.pressure_intensity_index, - width=res.frequency * 0.2, color="#2ca02c", alpha=0.25, - label="δpI = Lp − LI") -twin.set_ylabel("Pressure-intensity index δpI [dB]") -# Merge both axes' handles into a single legend, exactly as .plot() does: -lines, labels = ax.get_legend_handles_labels() -tlines, tlabels = twin.get_legend_handles_labels() -ax.legend(lines + tlines, labels + tlabels) -ax.set_title(f"Lp vs LI (total δpI = {res.total_pressure_intensity_index:.1f} dB)") +ax.bar(x - 0.2, lw_max, width=0.4, label="Part 1 upper limit ($\\varepsilon$ = 1)") +ax.bar(x + 0.2, lw_eng, width=0.4, label="Part 2 engineering ($\\varepsilon$ measured)") +ax.set_xticks(x, [f"{b:g}" for b in bands]) +ax.set(xlabel="Frequency [Hz]", ylabel="Sound power level $L_W$ [dB re 1 pW]") +ax.legend() plt.show() ```
-The same contrast plays out dynamically below: the pressure and velocity -phasors of a progressive and a standing wave, with the instantaneous -intensity averaging to a net flow in one case and to zero in the other. - -Animation: a two-microphone p-p probe with rotating pressure and velocity phasors; the instantaneous intensity arrow flips while its running average settles to a net flow for the progressive wave and to zero for the standing wave - -[Watch the high-resolution video (WebM)](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/anim_instantaneous_intensity.webm) - -## Knowing when to trust the number - -Two physical limits bound every p-p measurement, and the result object -carries both: - -- **High frequency**: the finite-difference gradient underestimates $I$ by - $\sin(k\Delta r)/(k\Delta r)$, verified in CI against IEC 61043 Table 3. - `IntensityResult.bias_correction` provides the factor and - `max_valid_frequency` ($\approx 0.1\,c/\Delta r$; 2.9 kHz for a 12 mm - spacer) the - practical ceiling. Larger spacers reach lower frequencies, smaller ones - higher. -- **Reactive fields**: when `pressure_intensity_index` ($F_2$ in ISO 9614-1) - approaches the probe's residual index $\delta_{pI0}$, phase errors dominate. +## 1. The two parts -Before any of that, ISO 9614-1 asks a question about the *field* rather than -the surface: is it steady enough to be scanned at all? In the initial test -(clause 8.2) one typical position is picked on an initial measurement surface -and the normal intensity is sampled there $M$ times with a short averaging -time (Note 9 suggests $M = 10$, and, for periodic signals, 8 s to 12 s per -sample or any whole number of cycles). **$F_1$**, the -temporal variability indicator, is the coefficient of variation of those -samples (equations (A.1)–(A.2)), so it is zero for a perfectly steady field -and grows as the extraneous intensity wanders. Table B.3 asks for action code -(e) above $F_1 > 0.6$: reduce the variability, measure during quieter periods, -or lengthen the averaging time at each position. Annex B also has it evaluated -immediately before and after the measurement on any one surface (B.1.4). +The two parts differ only in the radiation factor. **Part 1 (survey)** assumes +$\varepsilon = 1$ and yields the *upper limit* $L_{W,\max}$, needing only the +velocity level and the area. **Part 2 (engineering)** applies a frequency-band +radiation factor $\varepsilon_j$ determined (per ISO 9614) as +$\varepsilon_j = P_j/(Z_{c,n}\,\langle v_j^2 \rangle\,S)$. ```python +import numpy as np from phonometry import emission -# The M short-time samples of the normal intensity at one fixed position (W/m²). -samples = [1.20e-5, 0.94e-5, 1.51e-5, 1.08e-5, 1.33e-5, - 1.02e-5, 1.44e-5, 1.17e-5, 0.88e-5, 1.29e-5] +bands = np.array([250.0, 500.0, 1000.0, 2000.0]) +lv = np.array([82.0, 85.0, 83.0, 79.0]) # mean velocity level per band [dB] -f1 = emission.temporal_variability_indicator(samples) -print(round(f1, 3)) # 0.177, a steady field +# Part 1 upper limit (epsilon = 1): +upper = emission.sound_power_from_vibration(lv, area=1.6, frequencies=bands) +print(round(upper.total_level, 1)) # e.g. 89.4 dB re 1 pW -# Or carried on the surface result alongside F2/F3/F4, by handing the same -# samples to field_indicators together with the per-position scan below: -fi = emission.field_indicators([74.1, 73.8, 74.5, 73.2], - [1.2e-5, 1.0e-5, 1.4e-5, 0.9e-5], - temporal_intensity=samples) -print(fi.field_is_stationary()) # True (Table B.3 limit 0.6) +# Part 2 engineering value with a measured radiation factor: +eps = np.array([0.45, 0.75, 0.95, 1.00]) +eng = emission.sound_power_from_vibration(lv, area=1.6, radiation_factor=eps, frequencies=bands) +print(np.round(eng.sound_power_level, 1)) # per-band L_W + +eng.plot() # the LW(f) spectrum, as in the figure above (needs matplotlib) ``` -Over a measurement surface, the remaining ISO 9614-1 Annex A field indicators -grade the scan itself. **$F_2$**, the surface pressure-intensity indicator, is the surface -pressure level minus the level of the mean *magnitude* of the normal -intensity: the larger it is, the closer the measurement sits to the probe's -phase-error floor. **$F_3$**, the negative partial power indicator, is the same -difference taken with the *signed* mean intensity: $F_3 - F_2 > 0$ reveals power -flowing inward through parts of the surface. **$F_4$**, the field non-uniformity -indicator, is the normalised spread of the per-position intensities: the -larger it is, the more measurement positions the surface needs. Together with -the dynamic-capability criterion they are available directly: +## 2. Velocity level, calibration and the radiation factor + +The velocity level is $L_v = 20\log_{10}(v/v_0)$ (Formula 3); a sinusoidal +calibration acceleration converts as +$L_v = 20\log_{10}\!\left(\hat{a}/(2\pi f\,v_0\sqrt{2})\right)$ (Formula 8). The +radiation factor comes from an independently measured power: ```python -import numpy as np from phonometry import emission -# Per-position measurements over the ISO 9614-1 measurement surface -pressure_levels = np.array([74.1, 73.8, 74.5, 73.2]) # Lp per position (dB) -normal_intensity = np.array([1.2e-5, 1.0e-5, 1.4e-5, 0.9e-5]) # signed In per position (W/m²) +# The standard's worked calibration EXAMPLE: 9.81 m/s^2 at 100 Hz. +print(round(float(emission.velocity_level_from_acceleration(9.81, 100.0)), 1)) # 106.9 dB -fi = emission.field_indicators(pressure_levels, normal_intensity) -print(round(fi.f2, 2), round(fi.f3, 2), round(fi.f4, 3)) # 3.41 3.41 0.197 -ld = emission.dynamic_capability_index(18.0) # δpI0 = 18 dB → Ld = δpI0 − K -print(ld, ld > fi.f2) # 8.0 True (criterion 1) +# Radiation factor from a measured power (ISO 9614): eps = P / (Zc S). +eps = emission.radiation_factor(3.0e-4, area=2.0, mean_square_velocity=(1e-3)**2) +print(round(float(eps), 3)) # 0.365 ``` -With 2D `(positions, bands)` arrays and the band centres the indicators come -back **per band**, and the result is plottable in one line, the form in which -the criteria are actually checked (each band passes or fails on its own): +Surface velocity levels from several positions are combined with the energetic +mean `mean_velocity_level` (Formula 10) or its area-weighted form (Formula 11), +and the correction `extraneous_velocity_correction` removes extraneous +vibration per Table 2. -```python -fi = emission.field_indicators(lp_bands, in_bands, freqs) # (positions, bands) -fi.plot(dynamic_capability=ld) # F2/F3 per band vs Ld, F4 on a twin axis (needs matplotlib) -``` +Those positions are not free: the standard divides the radiating surface $S$ +into $N$ equal cells and puts one accelerometer at the centre of each. The +area table gives the initial $N$; a strongly non-uniform vibration field can +call for more positions or a redistribution. -ISO 9614-1 field indicators of a ten-position scan over six octave bands: F2 and F3 climb towards low frequency as the field turns reactive, crossing the dashed dynamic-capability line Ld at 125 Hz where F3 also rises above F2, with the field non-uniformity F4 drawn as bars on a twin axis +ISO/TS 7849 surface-velocity method: a machine under test with its vibrating measurement surface of 2.5 by 1.6 metres divided into twenty equal cells, an accelerometer at each cell centre, the radiated airborne sound leaving the surface, the table for the initial number of measurement positions and the survey relation LWA = LvA + 10 lg(S/S0) + 10 lg epsilon -*$F_2$ climbs towards low frequency as the field turns reactive, and at 125 Hz -it crosses the instrument's dynamic capability $L_d = \delta_{pI0} - K$: that -band fails criterion 1, and no averaging will fix it — it calls for a larger -spacer, a different surface or a quieter room. $F_3$ rising above $F_2$ in the -same band reveals inward-flowing (negative) partial intensity, and the $F_4$ -bars set the number of positions the surface needs (criterion 2, -$N > C \cdot F_4^2$).* +## 3. When the radiation-factor assumption breaks -
-Show the code for this figure +The whole method stands on one substitution: replacing the acoustic +measurement by $\varepsilon$. The Part 1 value $\varepsilon = 1$ is close to +the true radiation +factor only above the **critical (coincidence) frequency** of plate-like +parts, where bending waves travel faster than sound and the surface radiates +like a piston. Below coincidence, adjacent zones of the +plate move in antiphase and their radiation largely cancels: $\varepsilon$ +drops far +below one and falls quickly with decreasing frequency, so the survey method +can overstate the low-frequency bands of a large thin casing by 10 dB and +more. The same cancellation makes small sources radiate poorly (the acoustic +short circuit around an unbaffled panel). Two further assumptions are easy +to violate in the field: + +* **The measured vibration must be the machine's own.** Vibration fed in + from neighbouring machinery inflates $\langle v^2 \rangle$; Table 2 + prescribes the + source-off check and `extraneous_velocity_correction` applies it. +* **The surface must be the dominant radiator.** Airborne sound from + openings, intakes or internal sources that bypasses the measured casing is + invisible to a velocity survey; the method characterises the + structure-borne part only. + +Part 2 exists exactly for the radiation-factor problem: it replaces the +fixed $\varepsilon = 1$ +with a band-by-band $\varepsilon_j$ determined from one reference measurement +of the +radiated power (ISO 9614 intensity), after which the velocity survey can be +repeated cheaply on nominally identical machines. + +## 4. The measurement report (`.report()`) + +A determination ends as a *document*. `VibrationSoundPowerResult.report(path)` +writes a one-page PDF fiche laid out like a sound-power test sheet: the +standard-basis line naming the applied method (the ISO/TS 7849-1 survey method +with a fixed radiation factor $\varepsilon = 1$, or the ISO/TS 7849-2 +engineering method +with a determined radiation factor), an optional metadata header (client, +machine/source, test environment, instrumentation, climate, date), a per-band +table (nominal octave/one-third-octave frequency, the surface vibratory +velocity level $L_v$ and the band sound-power level $L_W$), the sound-power +spectrum $L_W(f)$ with a nominal band axis, and a boxed A-weighted sound power +level $L_{WA}$ (dB re 1 pW) with the total $L_W$, the radiating area $S$ and the +applied method alongside. + +The relevant `ReportMetadata` fields are `client`, `specimen` (the +machine/source), `test_room` (the test environment), `instrumentation`, +`temperature`, `relative_humidity`, `pressure`, `test_date` and the footer +identity `laboratory`, `operator`, `report_id` and `notes`; the radiating area +$S$ comes from the result itself. Supplying `requirement` adds a PASS/FAIL +verdict against a declared A-weighted sound-power limit (lower is better). +`verbose=True` adds the radiation factor $\varepsilon$ column, and `language="es"` +renders the Spanish fiche (comma decimals). Rendering needs the optional +`phonometry[report]` extra (reportlab), plus matplotlib for the spectrum. ```python -import matplotlib.pyplot as plt import numpy as np -from phonometry import emission +from phonometry import ReportMetadata, emission -# A 10-position discrete-point scan over six octave bands: the surface -# pressure is nearly uniform, and the normal intensity per band is set so the -# field turns reactive towards low frequency, with two inward-flowing -# positions in the 125 Hz band (rescaled so the band mean keeps its target). -freqs = np.array([125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0]) -delta_pi = np.array([10.5, 8.5, 6.0, 4.5, 3.5, 3.0]) # target Lp − L|In| -rng = np.random.default_rng(9614) -lp_bands = 78.0 + rng.normal(0.0, 0.4, (10, freqs.size)) -i_mean = 10.0 ** ((78.0 - delta_pi) / 10.0) * 1.0e-12 -in_bands = i_mean[None, :] * (1.0 + rng.normal(0.0, 0.18, (10, freqs.size))) -in_bands[:2, 0] = -0.35 * i_mean[0] -in_bands[2:, 0] *= (10.0 * i_mean[0] - in_bands[:2, 0].sum()) / in_bands[2:, 0].sum() +freqs = np.array([125, 250, 500, 1000, 2000, 4000], float) +lv = np.array([78.0, 82, 85, 83, 79, 74]) # surface velocity level [dB] +eps = np.array([0.20, 0.45, 0.75, 0.95, 1.00, 1.00]) # measured radiation factor +res = emission.sound_power_from_vibration( + lv, area=1.6, radiation_factor=eps, frequencies=freqs, +) +res.report( + "vibration_sound_power.pdf", + metadata=ReportMetadata( + client="Example manufacturing plant", + specimen="Gearbox casing (steel panel)", + test_room="Machine hall (source vibration survey)", + instrumentation="Piezoelectric accelerometer (ISO 16063-21 calibration), s/n 0042", + laboratory="Phonometry reference example", + report_id="EXAMPLE-7849", + requirement=90.0, + ), +) # LWA = 88.7 dB(A) re 1 pW -> declared limit 90 dB(A): PASS +``` -fi = emission.field_indicators(lp_bands, in_bands, freqs) -ld = emission.dynamic_capability_index(18.0) # δpI0 = 18 dB, K = 10 dB +The rendered example fiche, regenerated with `make reports`, is kept in the +repository. Click the preview to open the PDF: -# One line — F2/F3 per band against Ld, with F4 on a twin axis: -fi.plot(dynamic_capability=ld) -plt.show() +[![ISO/TS 7849 sound-power-from-vibration example report: a header with the client, the machine/source, the machine-hall test environment and the accelerometer and climate, the octave-band table (125 Hz to 4 kHz) of surface vibratory velocity levels Lv and radiated band sound-power levels LW, the sound-power spectrum LW(f) with a nominal band axis, the boxed A-weighted sound power level LWA = 88.7 dB(A) re 1 pW with the total LW = 90.0 dB, the radiating area S = 1.60 m2 and the engineering method, and a PASS verdict against the declared 90 dB(A) limit](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/reports/iso7849_vibration_power_example.webp)](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/reports/iso7849_vibration_power_example.pdf) -# By hand, from the per-band fields the result carries — mirroring what -# FieldIndicators.plot() draws (Ld step line, merged twin-axis legend): -fig, ax = plt.subplots() -ax.plot(fi.frequency, fi.f2, "o-", label="F2 (surface pressure-intensity)") -ax.plot(fi.frequency, fi.f3, "s--", label="F3 (negative partial power)") -ax.plot(fi.frequency, np.full(fi.frequency.size, ld), ":", - drawstyle="steps-mid", label="Dynamic capability Ld") -ax.set_xlabel("Frequency [Hz]") -ax.set_ylabel("Indicator [dB]") -twin = ax.twinx() -twin.bar(fi.frequency, fi.f4, width=fi.frequency * 0.2, alpha=0.25, - color="#2ca02c", label="F4 (non-uniformity)") -twin.set_ylabel("Field non-uniformity F4") -lines, labels = ax.get_legend_handles_labels() -tlines, tlabels = twin.get_legend_handles_labels() -ax.legend(lines + tlines, labels + tlabels) -plt.show() -``` +*Sound power from vibration fiche (`VibrationSoundPowerResult.report`), an +ISO/TS 7849-2 engineering-method determination with the measured radiation +factor and the boxed LWA.* -
+## References -Animation: a p-p probe traces the serpentine scan over the top face of the measurement box while the normal-intensity arrows appear behind it, and the partial powers of the five faces accumulate into the sound power level L_W +- Cremer, L., Heckl, M., & Petersson, B. A. T. (2005). *Structure-borne + sound: Structural vibrations and sound radiation at audio frequencies* + (3rd ed.). Springer. ISBN 978-3-540-22696-3. + [doi:10.1007/b137728](https://doi.org/10.1007/b137728). + The radiation-efficiency treatment behind section 3: coincidence, the + cancellation below the critical frequency and the radiation of finite + plates. +- International Organization for Standardization. (2009). *Acoustics — + Determination of airborne sound power levels emitted by machinery using + vibration measurement — Part 1: Survey method using a fixed radiation + factor* (ISO/TS 7849-1:2009). + [iso.org catalogue](https://www.iso.org/standard/40537.html). + The upper-limit method with $\varepsilon = 1$. +- International Organization for Standardization. (2009). *Acoustics — + Determination of airborne sound power levels emitted by machinery using + vibration measurement — Part 2: Engineering method including determination + of the adequate radiation factor* (ISO/TS 7849-2:2009). + [iso.org catalogue](https://www.iso.org/standard/40538.html). + The engineering method with a measured band-wise radiation factor. -[Watch the high-resolution video (WebM)](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/anim_intensity_scan_power.webm) +## Standards -### The margin over the residual index +ISO/TS 7849-1:2009 (*survey method using a fixed radiation +factor*) and ISO/TS 7849-2:2009 (*engineering method including determination of +the adequate radiation factor*), *Acoustics — Determination of airborne sound +power levels emitted by machinery using vibration measurement*: the radiated +power $P = Z_c \, \langle v^2 \rangle \, S \, \varepsilon$ (Formula 6), the +velocity level and its calibration +(Formulae 3, 8), the mean over the surface (Formulae 10/11), the extraneous +correction (Table 2), the radiation factor (Formula 4/8) and the sound power +level (Formulae 12/15). Conformance is anchored on the standard's own worked +calibration example, the exact round-trip between the radiation factor and +$L_W = 10\log_{10}(P/P_0)$, and the fixed impedance term. -The two channels of any real probe and analyzer are never perfectly phase -matched. Feed both channels the *same* signal (the residual-intensity test -of IEC 61043): the true intensity is exactly zero, yet the mismatch reports -a small false intensity. The gap between the pressure level and that false -intensity level is the **residual pressure-intensity index** $\delta_{pI0}$, the -instrument's phase-error floor expressed as an index; IEC 61043 grades -probes and processors (class 1 / class 2) chiefly by it. +--- -In the field, the measured index $\delta_{pI} = L_p - L_I$ says how far the -pressure -level stands above the level of the net flow, and the systematic error of -the intensity estimate is bounded by the margin between the two indices: -$$ -\varepsilon = 10 \log_{10}\!\left( 1 \pm 10^{(\delta_{pI} - \delta_{pI0})/10} \right) -$$ + +Source: https://jmrplens.github.io/phonometry/devices/emission/intensity/ -A 10 dB margin keeps the bias within about 0.5 dB and a 7 dB margin within -about 1 dB; these are precisely the bias factors $K$ of ISO 9614, and the -**dynamic capability** $L_d = \delta_{pI0} - K$ is the largest field index the -instrument can afford at a given grade. Read it as a budget: every decibel -the field's $\delta_{pI}$ rises spends a decibel of margin, and when -$\delta_{pI}$ reaches $\delta_{pI0}$ the reading is pure phase error, of -either sign. This is why the -pressure-intensity index, not the microphone quality, gates the achievable -accuracy of every intensity measurement. +# Sound Intensity (p-p method) -### Grading the instrument: IEC 61043 Table 2 +Sound *pressure* tells you how loud a point is; sound **intensity** tells +you where the energy is *going*. It is the acoustic power flux (W/m²), a +signed vector quantity, which is why intensity probes can localize sources, +separate them from background noise and measure sound power in situ +(ISO 9614) where a pressure measurement alone cannot. -$\delta_{pI0}$ is not just a number to subtract $K$ from; it is what IEC 61043 -grades the hardware by. Table 2 of the standard sets a **minimum** -$\delta_{pI0}$ in every -one-third-octave band from 50 Hz to 6.3 kHz, separately for a **probe**, a -**processor** and a **complete instrument**, in class 1 and class 2, printed -for the nominal 25 mm microphone separation. Note 1 rescales the whole table -for any other spacer by $+10\log_{10}(x/25)$ with $x$ in millimetres, which is the -same 3 dB per doubling the previous section arrived at from the physics. +## The two-microphone principle (IEC 61043) -`intensity_class_compliance` compares a measured $\delta_{pI0}$ spectrum -against both -masks band by band and returns the class the chain actually meets: -the loosest class every band clears, or `None` when some band clears neither: +A p-p probe holds two matched microphones a small distance $\Delta r$ apart. The +pressure at the probe center is their mean, and the particle velocity comes +from the pressure *gradient* (Euler's equation, finite-difference form): -```python -from phonometry import metrology +$$ +p = \frac{p_1 + p_2}{2}, \qquad +u = -\frac{1}{\rho_0\ \Delta r}\int (p_2 - p_1)\ dt, \qquad +I = \overline{p\ u} +$$ -# The band centres Table 2 is defined on, and the measured residual index of -# the chain: one value per band, taken with the spacer that will be fitted in -# the field. Replace the placeholder with your own residual-intensity test. -freqs, _, _ = metrology.residual_index_limits("instrument", spacing=0.012) -measured_delta_pi0 = [11.0, 11.9, 11.2, 10.0, 13.2, 15.9, 17.0, 18.0, - 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 24.0, 24.0, - 24.0, 24.0, 24.0, 24.0, 24.0, 24.0] # dB, 22 bands +In practice the estimator works in the frequency domain through the +cross-spectrum of the two channels (the standard's equivalent form): -res = metrology.intensity_class_compliance(measured_delta_pi0, freqs, - device="instrument", spacing=0.012) -print(res.overall_class) # 2: one band misses the class 1 minimum -print(res.binding_margin()) # smallest per-band margin to that class [dB] -print(res.failing_bands(1)) # the band centres that cost it class 1 [Hz] -res.plot() # measured δpI0 over the two Table 2 masks -res.report("verification.pdf") # one-page verification fiche (PDF) -``` +$$ +I(f) = -\ \frac{\mathrm{Im}\lbrace G_{12}(f)\rbrace}{2\pi f\ \rho_0\ \Delta r} +$$ -Measured pressure-residual intensity index of a complete intensity instrument with a 12 mm spacer, drawn as a step curve over the IEC 61043 Table 2 class 1 and class 2 minima; the shaded class 2 pass region lies above the dashed class 2 mask, and the 100 Hz band is ringed where the measured index dips below the solid class 1 mask +Two-microphone p-p intensity probe with the spacer distance and the measurement axis -*Both Table 2 masks come down by $10\log_{10}(12/25) = -3.2\ \text{dB}$ for the 12 mm -spacer. The measured index climbs 10 dB per decade at low frequency, parallel -to the requirement, because a channel phase mismatch that is constant in -degrees buys exactly that slope; it flattens above 1 kHz where the mismatch of -a real chain starts growing with frequency instead. A vent resonance around -100 Hz costs 4 dB and drops that one band below the class 1 minimum, so the -whole chain is graded class 2.* +The probe itself is small enough to draw at true scale. +`plot_pp_probe_geometry` puts the classic 12 mm solid spacer between the two +face-to-face capsules, and a computed `IntensityResult` that retained its +`spacing` redraws its own probe with `res.plot_geometry()`. + +To-scale side view of the face-to-face p-p intensity probe: two blue half-inch microphone capsules on their grey cylindrical bodies facing each other across the light 12 mm solid spacer, the spacing dimensioned below and the intensity axis Ir drawn as a blue arrow to the right + +*The finite difference at true scale: two half-inch capsules face to face +across 12 mm of solid spacer, and that $\Delta r$ is both the sensitivity of +the gradient estimate and the origin of the high-frequency error.*
Show the code for this figure ```python import matplotlib.pyplot as plt -import numpy as np -from phonometry import metrology - -# A complete instrument with the common 12 mm spacer. The measured index is -# modelled from the physics behind Table 2: a residual phase mismatch φs reads -# as δpI0 = 10 lg(kd/φs), so a mismatch that is constant in degrees already -# climbs 10 dB per decade, and above 1 kHz the mismatch of a real chain grows -# with frequency, so the index levels off. -spacing = 0.012 -freqs, _, _ = metrology.residual_index_limits("instrument", spacing=spacing) -phase_mismatch = 0.05 * np.maximum(1.0, freqs / 1000.0) # degrees -measured = metrology.residual_index_from_phase_mismatch(phase_mismatch, freqs, - spacing) -measured = measured - 4.0 * np.exp(-((np.log(freqs / 100.0) / 0.25) ** 2)) +from phonometry import emission -res = metrology.intensity_class_compliance(measured, freqs, spacing=spacing) -res.plot() +# The classic 12 mm solid spacer between two half-inch microphones. +emission.plot_pp_probe_geometry() plt.show() + +# A computed IntensityResult retains its spacing: +# res = emission.sound_intensity(p1, p2, fs, spacing=0.012) +# res.plot_geometry() ```
-Two companion rules of the standard come with it. Clause 6.1 fixes the -frequency range a class attests: 45 Hz to 7.1 kHz in one-third octaves, which -class 1 requires and class 2 may also use, or 45 Hz to 5.6 kHz in octaves, -which is offered to class 2 as an alternative. A verdict computed over fewer -bands is flagged `range_limited` so it cannot be read as a full-range claim. -The Spanish translation UNE-EN 61043:1999 records only the octave alternative -for class 2 and drops the one-third-octave one; the library follows the -EN/IEC text (see the [errata registry](https://jmrplens.github.io/phonometry/reference/errata/)). Clause 8 combines separately supplied components: -`instrument_class_from_components(probe_class, processor_class)` returns 1 -only when both are class 1, and 2 for every other pairing. - -The example fiche, regenerated with `make reports`, is kept rendered in the -repository. Click the preview to open the PDF: +```python +import numpy as np +from phonometry import emission -[![One-page instrument-class-verification fiche: a metadata header, a per-band table listing the class 1 and class 2 minima, the measured residual index, the margin and the class achieved in each one-third-octave band from 50 Hz to 6.3 kHz, the measured index drawn as a step curve over the two Table 2 masks with the 100 Hz band ringed below the class 1 minimum, the boxed Class 2 - COMPLIES (binding margin +4.20 dB) result, the microphone separation and equivalent phase mismatch, and a FAIL verdict against the required class 1](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/reports/iec61043_intensity_example.webp)](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/reports/iec61043_intensity_example.pdf) +fs = 48000 +rng = np.random.default_rng(0) +# The two probe-microphone pressures in Pa, p1 closest to the source. +# In a real measurement these are your two calibrated probe recordings; +# synthesized here (p2 = p1 delayed one sample) so the guide runs. +p1 = 0.02 * rng.standard_normal(fs) +p2 = np.concatenate(([0.0], p1[:-1])) # p2 = p1 delayed one sample -### Reading `δpI0` as a phase error +res = emission.sound_intensity(p1, p2, fs, spacing=0.012, fraction=3, + limits=[100, 2500]) +print(res.total_intensity_level, res.total_direction) # LI [dB], ±1 +print(res.frequency, res.intensity_level) # per band +res.plot() # Lp vs LI per band + the pressure-intensity index (needs matplotlib) +``` -The requirement is really a phase-matching requirement in disguise. In an -axially propagating plane wave the *true* phase difference across the spacer -is $kd$, so a residual intensity produced by a channel mismatch $\varphi_s$ -gives +Third-octave pressure and intensity levels for a plane progressive wave versus a standing wave -$$ -\delta_{pI0} = 10 \log_{10}\!\left( \frac{k d}{\varphi_s} \right) -$$ +*Left: in a plane progressive wave all pressure is transported, so +$L_I \approx L_p$. Right: a standing wave carries (almost) no net energy, so +the pressure is high but the intensity collapses. The gap $L_p - L_I$ is the +**pressure-intensity index**, the fundamental quality indicator of every +intensity measurement.* -and the two conversions run both ways: +
+Show the code for this figure ```python -from phonometry import metrology +import matplotlib.pyplot as plt +import numpy as np +from phonometry import emission -# 20 dB of residual index at 1 kHz over a 25 mm spacer: -phi = metrology.phase_mismatch_from_residual_index(20.0, 1000.0, 0.025) -print(round(float(phi), 2)) # 0.26 degrees, a hundredth of kd +fs = 48000 +rng = np.random.default_rng(0) +# The two probe-microphone pressures in Pa, p1 closest to the source. +# In a real measurement these are your two calibrated probe recordings; +# synthesized here (p2 = p1 delayed one sample) so the guide runs. +p1 = 0.02 * rng.standard_normal(fs) +p2 = np.concatenate(([0.0], p1[:-1])) # p2 = p1 delayed one sample +res = emission.sound_intensity(p1, p2, fs, spacing=0.012, fraction=3, + limits=[100, 2500]) -# And back, for a chain whose channels are matched to 0.05°: -print(round(float(metrology.residual_index_from_phase_mismatch( - 0.05, 1000.0, 0.012)), 1)) # 24.0 dB +# res is the IntensityResult computed in the example above. +# One line — Lp vs LI per band with the pressure-intensity index on a twin axis: +res.plot() +plt.show() + +# By hand, from the per-band fields the result carries — mirroring what +# IntensityResult.plot() draws (bar label, merged twin-axis legend, δpI title): +fig, ax = plt.subplots() +ax.semilogx(res.frequency, res.pressure_level, "o-", label="Pressure level Lp") +ax.semilogx(res.frequency, res.intensity_level, "s--", label="Intensity level LI") +ax.set_xlabel("Frequency [Hz]") +ax.set_ylabel("Level [dB]") +twin = ax.twinx() +twin.bar(res.frequency, res.pressure_intensity_index, + width=res.frequency * 0.2, color="#2ca02c", alpha=0.25, + label="δpI = Lp − LI") +twin.set_ylabel("Pressure-intensity index δpI [dB]") +# Merge both axes' handles into a single legend, exactly as .plot() does: +lines, labels = ax.get_legend_handles_labels() +tlines, tlabels = twin.get_legend_handles_labels() +ax.legend(lines + tlines, labels + tlabels) +ax.set_title(f"Lp vs LI (total δpI = {res.total_pressure_intensity_index:.1f} dB)") +plt.show() ``` -That is why the low-frequency end of Table 2 rises 1 dB per third-octave band -and then flattens: below the knee the standard is asking for a *constant* -phase match, and above it for a constant index. The knee sits at 250 Hz for -the three class 1 columns and for the class 2 processor, and at 630 Hz for the -class 2 probe and the class 2 complete instrument, which is also where the -table stops stepping in whole decibels (the instrument goes 14 dB at 315 Hz, -14,5 dB at 400 Hz, 15 dB at 500 Hz). It is also why a -tenth of a degree of channel mismatch is a demanding specification, and why a -probe must be verified with the spacer it will actually be used with. +
-### Reactive fields near sources +The same contrast plays out dynamically below: the pressure and velocity +phasors of a progressive and a standing wave, with the instantaneous +intensity averaging to a net flow in one case and to zero in the other. -Close to a source the field turns **reactive**: pressure and particle -velocity drift toward quadrature, so a large pressure carries little net -flow. For a small source the quadrature component grows as $1/(kr)$; at -100 Hz and 0.25 m from the source it is already about twice the active one, -and $\delta_{pI}$ climbs just as it does in the standing wave of the figure -above. -The same happens between a machine and a hard reflecting surface, and in -reverberant rooms where the diffuse field raises pressure without -transporting energy outward. This is why ISO 9614-1 keeps the measurement -surface on average more than 0.5 m away from the source, and why, when a -scan fails the dynamic-capability criterion, moving the surface outward or -adding absorption to the room usually lowers $F_2$ below $L_d$ more cheaply -than better hardware. +Animation: a two-microphone p-p probe with rotating pressure and velocity phasors; the instantaneous intensity arrow flips while its running average settles to a net flow for the progressive wave and to zero for the standing wave -### Choosing the spacer +[Watch the high-resolution video (WebM)](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/anim_instantaneous_intensity.webm) -The spacer sets both ends of the usable band, in opposite directions: +## Knowing when to trust the number -- **The top end is geometry.** The finite difference underestimates the - gradient by $\sin(k\Delta r)/(k\Delta r)$, so the ceiling scales as - $1/\Delta r$: `max_valid_frequency` $\approx 0.1\,c/\Delta r$ keeps the - bias within about 0.3 dB, - giving roughly 5.7 kHz for a 6 mm spacer, 2.9 kHz for 12 mm and 690 Hz - for 50 mm (`bias_correct=True` undoes the known bias somewhat beyond - that). -- **The bottom end is phase.** A progressive wave puts only - $360\,f\,\Delta r/c$ degrees of true phase across the spacer, 0.8° at 63 Hz - over 12 mm, while the channel mismatch stays fixed. Lowering the frequency - shrinks the signal, not the error, so the margin over $\delta_{pI0}$ - collapses at low frequency. A larger spacer buys back that margin: the - IEC 61043 residual-index requirements scale as - $10\log_{10}(\Delta r/25\ \text{mm})$, so doubling the spacer is worth 3 dB of - low-frequency margin. +Two physical limits bound every p-p measurement, and the result object +carries both: -No single spacer covers the full audio range: 6 mm suits high-frequency -work, 50 mm low-frequency work, and the common 12 mm covers the mid band. -Wide-band surveys are measured twice with two spacers and the band results -merged; whichever spacer is fitted, verify $\delta_{pI0}$ with that spacer in -place, since the index belongs to the probe-spacer-analyzer chain, not to -the microphones alone. +- **High frequency**: the finite-difference gradient underestimates $I$ by + $\sin(k\Delta r)/(k\Delta r)$, verified in CI against IEC 61043 Table 3. + `IntensityResult.bias_correction` provides the factor and + `max_valid_frequency` ($\approx 0.1\,c/\Delta r$; 2.9 kHz for a 12 mm + spacer) the + practical ceiling. Larger spacers reach lower frequencies, smaller ones + higher. +- **Reactive fields**: when `pressure_intensity_index` ($F_2$ in ISO 9614-1) + approaches the probe's residual index $\delta_{pI0}$, phase errors dominate. -### `sound_intensity()` parameters +Before any of that, ISO 9614-1 asks a question about the *field* rather than +the surface: is it steady enough to be scanned at all? In the initial test +(clause 8.2) one typical position is picked on an initial measurement surface +and the normal intensity is sampled there $M$ times with a short averaging +time (Note 9 suggests $M = 10$, and, for periodic signals, 8 s to 12 s per +sample or any whole number of cycles). **$F_1$**, the +temporal variability indicator, is the coefficient of variation of those +samples (equations (A.1)–(A.2)), so it is zero for a perfectly steady field +and grows as the extraneous intensity wanders. Table B.3 asks for action code +(e) above $F_1 > 0.6$: reduce the variability, measure during quieter periods, +or lengthen the averaging time at each position. Annex B also has it evaluated +immediately before and after the measurement on any one surface (B.1.4). -| Parameter | Type | Units | Range / default | Notes | -| :--- | :--- | :--- | :--- | :--- | -| `p1`, `p2` | 1D arrays | Pa | equal length | Microphone closer to the source first; reversing them flips the sign | -| `fs` | int | Hz | > 0 | | -| `spacing` | float | m | > 0 | Microphone separation $\Delta r$ (typ. 6/12/50 mm) | -| `rho` | float | kg/m³ | default `1.204` | Air density | -| `c` | float | m/s | default `343.0` | Speed of sound (bias/validity estimates) | -| `fraction` | int, optional | — | `1`, `3` or `None` (default) | Octave/third-octave band integration | -| `limits` | list, optional | Hz | default library band range | Band analysis limits | -| `bias_correct` | bool | — | default `False` | Apply the per-bin $(k\Delta r)/\sin(k\Delta r)$ correction (IEC 61043 §7.3) before summing, so band/broadband totals stop under-reading as $f \to$ `max_valid_frequency`; bins past the first null are left uncorrected. The per-band `bias_correction` factor is reported either way | +```python +from phonometry import emission -See [Theory](https://jmrplens.github.io/phonometry/reference/theory/signal-analysis/) for the derivations and [Calibration](https://jmrplens.github.io/phonometry/signals/metrology/calibration/) -for absolute scaling of the two channels. +# The M short-time samples of the normal intensity at one fixed position (W/m²). +samples = [1.20e-5, 0.94e-5, 1.51e-5, 1.08e-5, 1.33e-5, + 1.02e-5, 1.44e-5, 1.17e-5, 0.88e-5, 1.29e-5] -## References +f1 = emission.temporal_variability_indicator(samples) +print(round(f1, 3)) # 0.177, a steady field -- Fahy, F. J. (1995). *Sound intensity* (2nd ed.). E&FN Spon. - ISBN 978-0-419-19810-9. - [doi:10.4324/9780203475386](https://doi.org/10.4324/9780203475386). - The monograph on the subject: active and reactive intensity, the p-p - estimator and the phase-mismatch error budget behind this page. -- International Electrotechnical Commission. (1993). *Electroacoustics — - Instruments for the measurement of sound intensity — Measurements with - pairs of pressure sensing microphones* (IEC 61043:1993; adopted in Europe - as EN 61043:1994). - [IEC webstore](https://webstore.iec.ch/en/publication/4353). - The instrument standard: the cross-spectral estimator, the - residual-intensity test behind $\delta_{pI0}$, the Table 2 minima per band - for probes, processors and instruments with the $+10\log_{10}(x/25)$ separation - rule - (Note 1), the frequency ranges of clause 6.1 and the component-combination - rule of clause 8. -- International Organization for Standardization. (1993). *Acoustics — - Determination of sound power levels of noise sources using sound - intensity — Part 1: Measurement at discrete points* (ISO 9614-1:1993). - [iso.org catalogue](https://www.iso.org/standard/17427.html). - The field indicators $F_1$ to $F_4$, the dynamic-capability criterion and - the 0.5 m surface-distance rule. +# Or carried on the surface result alongside F2/F3/F4, by handing the same +# samples to field_indicators together with the per-position scan below: +fi = emission.field_indicators([74.1, 73.8, 74.5, 73.2], + [1.2e-5, 1.0e-5, 1.4e-5, 0.9e-5], + temporal_intensity=samples) +print(fi.field_is_stationary()) # True (Table B.3 limit 0.6) +``` -## Standards +Over a measurement surface, the remaining ISO 9614-1 Annex A field indicators +grade the scan itself. **$F_2$**, the surface pressure-intensity indicator, is the surface +pressure level minus the level of the mean *magnitude* of the normal +intensity: the larger it is, the closer the measurement sits to the probe's +phase-error floor. **$F_3$**, the negative partial power indicator, is the same +difference taken with the *signed* mean intensity: $F_3 - F_2 > 0$ reveals power +flowing inward through parts of the surface. **$F_4$**, the field non-uniformity +indicator, is the normalised spread of the per-position intensities: the +larger it is, the more measurement positions the surface needs. Together with +the dynamic-capability criterion they are available directly: -IEC 61043:1993 (EN 61043:1994), *Electroacoustics — -Instruments for the measurement of sound intensity — Measurements with pairs -of pressure sensing microphones*: the two-microphone cross-spectral -intensity estimator, the finite-difference bias correction and the -usable-bandwidth bound (clause 7.3, Table 3), the minimum pressure-residual -intensity index per band for probes, processors and instruments in class 1 -and class 2 with its separation rule (Table 2 and its Note 1), the processor -frequency ranges (clause 6.1) and the class of an instrument assembled from -separate components (clause 8). ISO 9614-1:1993, *Acoustics — Determination -of sound power levels of noise sources using sound intensity — Part 1: -Measurement at discrete points*: the pressure-intensity index, the Annex A -field indicators $F_1$ (equations (A.1)–(A.2), evaluated in the initial test -of clause 8.2 and again per Annex B, B.1.4), $F_2$, $F_3$ and $F_4$, the -Table B.3 -temporal-variability limit and the dynamic-capability criterion (Annex B). - ---- - - - -Source: https://jmrplens.github.io/phonometry/devices/emission/vibration-sound-power/ - -# Sound power from surface vibration (ISO/TS 7849) - -The airborne sound power a machine radiates through the structure-borne -vibration of its outer surface can be estimated from the surface vibratory -velocity and a **radiation factor** $\varepsilon$ (the radiation efficiency), -without an -acoustic measurement. The radiated power is (ISO/TS 7849-1, Formula 6) - -$$ -P = Z_c \, \langle v^2 \rangle \, S \, \varepsilon \quad [\mathrm{W}], -$$ - -with $Z_c$ the characteristic impedance of air, $\langle v^2 \rangle$ the -mean-square vibratory velocity over the radiating area $S$. Expressed in levels -(velocity level re $v_0 = 5\times10^{-8}\ \text{m/s}$), the A-weighted sound -power level is (Formula 12 / 15) - -$$ -L_W = L_v + 10\log_{10}\frac{S}{S_0} + 10\log_{10}\varepsilon - + 10\log_{10}\frac{Z_{c,n}}{Z_{c,0}}, -$$ - -where $S_0 = 1\ \text{m}^2$, the normalized impedance -$Z_{c,n} = 411\ \text{N·s/m}^3$ and the reference -$Z_{c,0} = 400\ \text{N·s/m}^3$ give the fixed -$10\log_{10}(411/400) = 0.118\ \text{dB}$ -term. This module feeds the structure-borne source and building prediction -standards (ISO 9611, EN 15657, EN 12354-5). - -Before any levels, the radiator itself. The `radiation_efficiency` plate model -that supplies a predicted radiation factor retains its geometry, and -`sigma.plot_geometry()` draws the plate in its baffle to scale, here 1.5 m by -1.25 m and simply supported. +```python +import numpy as np +from phonometry import emission -To-scale front view of the plate of the radiation model: a grey 1.5 m by 1.25 m simply supported plate inside its hatched rigid baffle, both side lengths dimensioned and the boundary condition named in the title +# Per-position measurements over the ISO 9614-1 measurement surface +pressure_levels = np.array([74.1, 73.8, 74.5, 73.2]) # Lp per position (dB) +normal_intensity = np.array([1.2e-5, 1.0e-5, 1.4e-5, 0.9e-5]) # signed In per position (W/m²) -*The radiator behind the radiation factor, to scale: the 1.5 m by 1.25 m -simply supported plate in its rigid baffle, whose area $S$ enters $L_W$ -directly while its size decides how far $\varepsilon$ falls below one under -coincidence.* +fi = emission.field_indicators(pressure_levels, normal_intensity) +print(round(fi.f2, 2), round(fi.f3, 2), round(fi.f4, 3)) # 3.41 3.41 0.197 +ld = emission.dynamic_capability_index(18.0) # δpI0 = 18 dB → Ld = δpI0 − K +print(ld, ld > fi.f2) # 8.0 True (criterion 1) +``` -
-Show the code for this figure +With 2D `(positions, bands)` arrays and the band centres the indicators come +back **per band**, and the result is plottable in one line, the form in which +the criteria are actually checked (each band passes or fails on its own): ```python -import matplotlib.pyplot as plt -import numpy as np -from phonometry import vibration - -# The simply supported 1.5 x 1.25 m plate of the radiation model. -f = np.geomspace(50.0, 5000.0, 200) -sigma = vibration.radiation_efficiency(f, 1.5, 1.25, 2100.0) -sigma.plot_geometry() -plt.show() +fi = emission.field_indicators(lp_bands, in_bands, freqs) # (positions, bands) +fi.plot(dynamic_capability=ld) # F2/F3 per band vs Ld, F4 on a twin axis (needs matplotlib) ``` -
+ISO 9614-1 field indicators of a ten-position scan over six octave bands: F2 and F3 climb towards low frequency as the field turns reactive, crossing the dashed dynamic-capability line Ld at 125 Hz where F3 also rises above F2, with the field non-uniformity F4 drawn as bars on a twin axis -Radiated sound power level per octave band of a vibrating surface, comparing the ISO/TS 7849-1 upper limit with a fixed radiation factor of one against the ISO/TS 7849-2 engineering value with a measured radiation factor, with the band-summed totals marked +*$F_2$ climbs towards low frequency as the field turns reactive, and at 125 Hz +it crosses the instrument's dynamic capability $L_d = \delta_{pI0} - K$: that +band fails criterion 1, and no averaging will fix it — it calls for a larger +spacer, a different surface or a quieter room. $F_3$ rising above $F_2$ in the +same band reveals inward-flowing (negative) partial intensity, and the $F_4$ +bars set the number of positions the surface needs (criterion 2, +$N > C \cdot F_4^2$).*
Show the code for this figure @@ -2142,214 +2090,304 @@ import matplotlib.pyplot as plt import numpy as np from phonometry import emission -# Surface velocity levels and a measured radiation factor per octave band. -bands = np.array([125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0]) -lv = np.array([78.0, 82.0, 85.0, 83.0, 79.0, 74.0]) -eps = np.array([0.20, 0.45, 0.75, 0.95, 1.00, 1.00]) +# A 10-position discrete-point scan over six octave bands: the surface +# pressure is nearly uniform, and the normal intensity per band is set so the +# field turns reactive towards low frequency, with two inward-flowing +# positions in the 125 Hz band (rescaled so the band mean keeps its target). +freqs = np.array([125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0]) +delta_pi = np.array([10.5, 8.5, 6.0, 4.5, 3.5, 3.0]) # target Lp − L|In| +rng = np.random.default_rng(9614) +lp_bands = 78.0 + rng.normal(0.0, 0.4, (10, freqs.size)) +i_mean = 10.0 ** ((78.0 - delta_pi) / 10.0) * 1.0e-12 +in_bands = i_mean[None, :] * (1.0 + rng.normal(0.0, 0.18, (10, freqs.size))) +in_bands[:2, 0] = -0.35 * i_mean[0] +in_bands[2:, 0] *= (10.0 * i_mean[0] - in_bands[:2, 0].sum()) / in_bands[2:, 0].sum() -lw_max = emission.radiated_sound_power_level(lv, 1.6) # Part 1, eps = 1 -lw_eng = emission.radiated_sound_power_level(lv, 1.6, radiation_factor=eps) # Part 2 +fi = emission.field_indicators(lp_bands, in_bands, freqs) +ld = emission.dynamic_capability_index(18.0) # δpI0 = 18 dB, K = 10 dB -# One line — the LW(f) spectrum of one determination as a result object: -res = emission.sound_power_from_vibration(lv, area=1.6, radiation_factor=eps, - frequencies=bands) -res.plot() +# One line — F2/F3 per band against Ld, with F4 on a twin axis: +fi.plot(dynamic_capability=ld) plt.show() -# By hand, comparing the two parts: -x = np.arange(bands.size) +# By hand, from the per-band fields the result carries — mirroring what +# FieldIndicators.plot() draws (Ld step line, merged twin-axis legend): fig, ax = plt.subplots() -ax.bar(x - 0.2, lw_max, width=0.4, label="Part 1 upper limit ($\\varepsilon$ = 1)") -ax.bar(x + 0.2, lw_eng, width=0.4, label="Part 2 engineering ($\\varepsilon$ measured)") -ax.set_xticks(x, [f"{b:g}" for b in bands]) -ax.set(xlabel="Frequency [Hz]", ylabel="Sound power level $L_W$ [dB re 1 pW]") -ax.legend() +ax.plot(fi.frequency, fi.f2, "o-", label="F2 (surface pressure-intensity)") +ax.plot(fi.frequency, fi.f3, "s--", label="F3 (negative partial power)") +ax.plot(fi.frequency, np.full(fi.frequency.size, ld), ":", + drawstyle="steps-mid", label="Dynamic capability Ld") +ax.set_xlabel("Frequency [Hz]") +ax.set_ylabel("Indicator [dB]") +twin = ax.twinx() +twin.bar(fi.frequency, fi.f4, width=fi.frequency * 0.2, alpha=0.25, + color="#2ca02c", label="F4 (non-uniformity)") +twin.set_ylabel("Field non-uniformity F4") +lines, labels = ax.get_legend_handles_labels() +tlines, tlabels = twin.get_legend_handles_labels() +ax.legend(lines + tlines, labels + tlabels) plt.show() ```
-## 1. The two parts +Animation: a p-p probe traces the serpentine scan over the top face of the measurement box while the normal-intensity arrows appear behind it, and the partial powers of the five faces accumulate into the sound power level L_W -The two parts differ only in the radiation factor. **Part 1 (survey)** assumes -$\varepsilon = 1$ and yields the *upper limit* $L_{W,\max}$, needing only the -velocity level and the area. **Part 2 (engineering)** applies a frequency-band -radiation factor $\varepsilon_j$ determined (per ISO 9614) as -$\varepsilon_j = P_j/(Z_{c,n}\,\langle v_j^2 \rangle\,S)$. +[Watch the high-resolution video (WebM)](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/anim_intensity_scan_power.webm) -```python -import numpy as np -from phonometry import emission +### The margin over the residual index -bands = np.array([250.0, 500.0, 1000.0, 2000.0]) -lv = np.array([82.0, 85.0, 83.0, 79.0]) # mean velocity level per band [dB] +The two channels of any real probe and analyzer are never perfectly phase +matched. Feed both channels the *same* signal (the residual-intensity test +of IEC 61043): the true intensity is exactly zero, yet the mismatch reports +a small false intensity. The gap between the pressure level and that false +intensity level is the **residual pressure-intensity index** $\delta_{pI0}$, the +instrument's phase-error floor expressed as an index; IEC 61043 grades +probes and processors (class 1 / class 2) chiefly by it. -# Part 1 upper limit (epsilon = 1): -upper = emission.sound_power_from_vibration(lv, area=1.6, frequencies=bands) -print(round(upper.total_level, 1)) # e.g. 89.4 dB re 1 pW +In the field, the measured index $\delta_{pI} = L_p - L_I$ says how far the +pressure +level stands above the level of the net flow, and the systematic error of +the intensity estimate is bounded by the margin between the two indices: -# Part 2 engineering value with a measured radiation factor: -eps = np.array([0.45, 0.75, 0.95, 1.00]) -eng = emission.sound_power_from_vibration(lv, area=1.6, radiation_factor=eps, frequencies=bands) -print(np.round(eng.sound_power_level, 1)) # per-band L_W +$$ +\varepsilon = 10 \log_{10}\!\left( 1 \pm 10^{(\delta_{pI} - \delta_{pI0})/10} \right) +$$ -eng.plot() # the LW(f) spectrum, as in the figure above (needs matplotlib) -``` +A 10 dB margin keeps the bias within about 0.5 dB and a 7 dB margin within +about 1 dB; these are precisely the bias factors $K$ of ISO 9614, and the +**dynamic capability** $L_d = \delta_{pI0} - K$ is the largest field index the +instrument can afford at a given grade. Read it as a budget: every decibel +the field's $\delta_{pI}$ rises spends a decibel of margin, and when +$\delta_{pI}$ reaches $\delta_{pI0}$ the reading is pure phase error, of +either sign. This is why the +pressure-intensity index, not the microphone quality, gates the achievable +accuracy of every intensity measurement. -## 2. Velocity level, calibration and the radiation factor +### Grading the instrument: IEC 61043 Table 2 -The velocity level is $L_v = 20\log_{10}(v/v_0)$ (Formula 3); a sinusoidal -calibration acceleration converts as -$L_v = 20\log_{10}\!\left(\hat{a}/(2\pi f\,v_0\sqrt{2})\right)$ (Formula 8). The -radiation factor comes from an independently measured power: +$\delta_{pI0}$ is not just a number to subtract $K$ from; it is what IEC 61043 +grades the hardware by. Table 2 of the standard sets a **minimum** +$\delta_{pI0}$ in every +one-third-octave band from 50 Hz to 6.3 kHz, separately for a **probe**, a +**processor** and a **complete instrument**, in class 1 and class 2, printed +for the nominal 25 mm microphone separation. Note 1 rescales the whole table +for any other spacer by $+10\log_{10}(x/25)$ with $x$ in millimetres, which is the +same 3 dB per doubling the previous section arrived at from the physics. + +`intensity_class_compliance` compares a measured $\delta_{pI0}$ spectrum +against both +masks band by band and returns the class the chain actually meets: +the loosest class every band clears, or `None` when some band clears neither: ```python -from phonometry import emission +from phonometry import metrology -# The standard's worked calibration EXAMPLE: 9.81 m/s^2 at 100 Hz. -print(round(float(emission.velocity_level_from_acceleration(9.81, 100.0)), 1)) # 106.9 dB +# The band centres Table 2 is defined on, and the measured residual index of +# the chain: one value per band, taken with the spacer that will be fitted in +# the field. Replace the placeholder with your own residual-intensity test. +freqs, _, _ = metrology.residual_index_limits("instrument", spacing=0.012) +measured_delta_pi0 = [11.0, 11.9, 11.2, 10.0, 13.2, 15.9, 17.0, 18.0, + 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 24.0, 24.0, + 24.0, 24.0, 24.0, 24.0, 24.0, 24.0] # dB, 22 bands -# Radiation factor from a measured power (ISO 9614): eps = P / (Zc S). -eps = emission.radiation_factor(3.0e-4, area=2.0, mean_square_velocity=(1e-3)**2) -print(round(float(eps), 3)) # 0.365 +res = metrology.intensity_class_compliance(measured_delta_pi0, freqs, + device="instrument", spacing=0.012) +print(res.overall_class) # 2: one band misses the class 1 minimum +print(res.binding_margin()) # smallest per-band margin to that class [dB] +print(res.failing_bands(1)) # the band centres that cost it class 1 [Hz] +res.plot() # measured δpI0 over the two Table 2 masks +res.report("verification.pdf") # one-page verification fiche (PDF) ``` -Surface velocity levels from several positions are combined with the energetic -mean `mean_velocity_level` (Formula 10) or its area-weighted form (Formula 11), -and the correction `extraneous_velocity_correction` removes extraneous -vibration per Table 2. +Measured pressure-residual intensity index of a complete intensity instrument with a 12 mm spacer, drawn as a step curve over the IEC 61043 Table 2 class 1 and class 2 minima; the shaded class 2 pass region lies above the dashed class 2 mask, and the 100 Hz band is ringed where the measured index dips below the solid class 1 mask -Those positions are not free: the standard divides the radiating surface $S$ -into $N$ equal cells and puts one accelerometer at the centre of each. The -area table gives the initial $N$; a strongly non-uniform vibration field can -call for more positions or a redistribution. +*Both Table 2 masks come down by $10\log_{10}(12/25) = -3.2\ \text{dB}$ for the 12 mm +spacer. The measured index climbs 10 dB per decade at low frequency, parallel +to the requirement, because a channel phase mismatch that is constant in +degrees buys exactly that slope; it flattens above 1 kHz where the mismatch of +a real chain starts growing with frequency instead. A vent resonance around +100 Hz costs 4 dB and drops that one band below the class 1 minimum, so the +whole chain is graded class 2.* -ISO/TS 7849 surface-velocity method: a machine under test with its vibrating measurement surface of 2.5 by 1.6 metres divided into twenty equal cells, an accelerometer at each cell centre, the radiated airborne sound leaving the surface, the table for the initial number of measurement positions and the survey relation LWA = LvA + 10 lg(S/S0) + 10 lg epsilon +
+Show the code for this figure -## 3. When the radiation-factor assumption breaks +```python +import matplotlib.pyplot as plt +import numpy as np +from phonometry import metrology -The whole method stands on one substitution: replacing the acoustic -measurement by $\varepsilon$. The Part 1 value $\varepsilon = 1$ is close to -the true radiation -factor only above the **critical (coincidence) frequency** of plate-like -parts, where bending waves travel faster than sound and the surface radiates -like a piston. Below coincidence, adjacent zones of the -plate move in antiphase and their radiation largely cancels: $\varepsilon$ -drops far -below one and falls quickly with decreasing frequency, so the survey method -can overstate the low-frequency bands of a large thin casing by 10 dB and -more. The same cancellation makes small sources radiate poorly (the acoustic -short circuit around an unbaffled panel). Two further assumptions are easy -to violate in the field: +# A complete instrument with the common 12 mm spacer. The measured index is +# modelled from the physics behind Table 2: a residual phase mismatch φs reads +# as δpI0 = 10 lg(kd/φs), so a mismatch that is constant in degrees already +# climbs 10 dB per decade, and above 1 kHz the mismatch of a real chain grows +# with frequency, so the index levels off. +spacing = 0.012 +freqs, _, _ = metrology.residual_index_limits("instrument", spacing=spacing) +phase_mismatch = 0.05 * np.maximum(1.0, freqs / 1000.0) # degrees +measured = metrology.residual_index_from_phase_mismatch(phase_mismatch, freqs, + spacing) +measured = measured - 4.0 * np.exp(-((np.log(freqs / 100.0) / 0.25) ** 2)) -* **The measured vibration must be the machine's own.** Vibration fed in - from neighbouring machinery inflates $\langle v^2 \rangle$; Table 2 - prescribes the - source-off check and `extraneous_velocity_correction` applies it. -* **The surface must be the dominant radiator.** Airborne sound from - openings, intakes or internal sources that bypasses the measured casing is - invisible to a velocity survey; the method characterises the - structure-borne part only. +res = metrology.intensity_class_compliance(measured, freqs, spacing=spacing) +res.plot() +plt.show() +``` -Part 2 exists exactly for the radiation-factor problem: it replaces the -fixed $\varepsilon = 1$ -with a band-by-band $\varepsilon_j$ determined from one reference measurement -of the -radiated power (ISO 9614 intensity), after which the velocity survey can be -repeated cheaply on nominally identical machines. +
-## 4. The measurement report (`.report()`) +Two companion rules of the standard come with it. Clause 6.1 fixes the +frequency range a class attests: 45 Hz to 7.1 kHz in one-third octaves, which +class 1 requires and class 2 may also use, or 45 Hz to 5.6 kHz in octaves, +which is offered to class 2 as an alternative. A verdict computed over fewer +bands is flagged `range_limited` so it cannot be read as a full-range claim. +The Spanish translation UNE-EN 61043:1999 records only the octave alternative +for class 2 and drops the one-third-octave one; the library follows the +EN/IEC text (see the [errata registry](https://jmrplens.github.io/phonometry/reference/errata/)). Clause 8 combines separately supplied components: +`instrument_class_from_components(probe_class, processor_class)` returns 1 +only when both are class 1, and 2 for every other pairing. -A determination ends as a *document*. `VibrationSoundPowerResult.report(path)` -writes a one-page PDF fiche laid out like a sound-power test sheet: the -standard-basis line naming the applied method (the ISO/TS 7849-1 survey method -with a fixed radiation factor $\varepsilon = 1$, or the ISO/TS 7849-2 -engineering method -with a determined radiation factor), an optional metadata header (client, -machine/source, test environment, instrumentation, climate, date), a per-band -table (nominal octave/one-third-octave frequency, the surface vibratory -velocity level $L_v$ and the band sound-power level $L_W$), the sound-power -spectrum $L_W(f)$ with a nominal band axis, and a boxed A-weighted sound power -level $L_{WA}$ (dB re 1 pW) with the total $L_W$, the radiating area $S$ and the -applied method alongside. +The example fiche, regenerated with `make reports`, is kept rendered in the +repository. Click the preview to open the PDF: -The relevant `ReportMetadata` fields are `client`, `specimen` (the -machine/source), `test_room` (the test environment), `instrumentation`, -`temperature`, `relative_humidity`, `pressure`, `test_date` and the footer -identity `laboratory`, `operator`, `report_id` and `notes`; the radiating area -$S$ comes from the result itself. Supplying `requirement` adds a PASS/FAIL -verdict against a declared A-weighted sound-power limit (lower is better). -`verbose=True` adds the radiation factor $\varepsilon$ column, and `language="es"` -renders the Spanish fiche (comma decimals). Rendering needs the optional -`phonometry[report]` extra (reportlab), plus matplotlib for the spectrum. +[![One-page instrument-class-verification fiche: a metadata header, a per-band table listing the class 1 and class 2 minima, the measured residual index, the margin and the class achieved in each one-third-octave band from 50 Hz to 6.3 kHz, the measured index drawn as a step curve over the two Table 2 masks with the 100 Hz band ringed below the class 1 minimum, the boxed Class 2 - COMPLIES (binding margin +4.20 dB) result, the microphone separation and equivalent phase mismatch, and a FAIL verdict against the required class 1](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/reports/iec61043_intensity_example.webp)](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/reports/iec61043_intensity_example.pdf) + +### Reading `δpI0` as a phase error + +The requirement is really a phase-matching requirement in disguise. In an +axially propagating plane wave the *true* phase difference across the spacer +is $kd$, so a residual intensity produced by a channel mismatch $\varphi_s$ +gives + +$$ +\delta_{pI0} = 10 \log_{10}\!\left( \frac{k d}{\varphi_s} \right) +$$ + +and the two conversions run both ways: ```python -import numpy as np -from phonometry import ReportMetadata, emission +from phonometry import metrology -freqs = np.array([125, 250, 500, 1000, 2000, 4000], float) -lv = np.array([78.0, 82, 85, 83, 79, 74]) # surface velocity level [dB] -eps = np.array([0.20, 0.45, 0.75, 0.95, 1.00, 1.00]) # measured radiation factor -res = emission.sound_power_from_vibration( - lv, area=1.6, radiation_factor=eps, frequencies=freqs, -) -res.report( - "vibration_sound_power.pdf", - metadata=ReportMetadata( - client="Example manufacturing plant", - specimen="Gearbox casing (steel panel)", - test_room="Machine hall (source vibration survey)", - instrumentation="Piezoelectric accelerometer (ISO 16063-21 calibration), s/n 0042", - laboratory="Phonometry reference example", - report_id="EXAMPLE-7849", - requirement=90.0, - ), -) # LWA = 88.7 dB(A) re 1 pW -> declared limit 90 dB(A): PASS +# 20 dB of residual index at 1 kHz over a 25 mm spacer: +phi = metrology.phase_mismatch_from_residual_index(20.0, 1000.0, 0.025) +print(round(float(phi), 2)) # 0.26 degrees, a hundredth of kd + +# And back, for a chain whose channels are matched to 0.05°: +print(round(float(metrology.residual_index_from_phase_mismatch( + 0.05, 1000.0, 0.012)), 1)) # 24.0 dB ``` -The rendered example fiche, regenerated with `make reports`, is kept in the -repository. Click the preview to open the PDF: +That is why the low-frequency end of Table 2 rises 1 dB per third-octave band +and then flattens: below the knee the standard is asking for a *constant* +phase match, and above it for a constant index. The knee sits at 250 Hz for +the three class 1 columns and for the class 2 processor, and at 630 Hz for the +class 2 probe and the class 2 complete instrument, which is also where the +table stops stepping in whole decibels (the instrument goes 14 dB at 315 Hz, +14,5 dB at 400 Hz, 15 dB at 500 Hz). It is also why a +tenth of a degree of channel mismatch is a demanding specification, and why a +probe must be verified with the spacer it will actually be used with. -[![ISO/TS 7849 sound-power-from-vibration example report: a header with the client, the machine/source, the machine-hall test environment and the accelerometer and climate, the octave-band table (125 Hz to 4 kHz) of surface vibratory velocity levels Lv and radiated band sound-power levels LW, the sound-power spectrum LW(f) with a nominal band axis, the boxed A-weighted sound power level LWA = 88.7 dB(A) re 1 pW with the total LW = 90.0 dB, the radiating area S = 1.60 m2 and the engineering method, and a PASS verdict against the declared 90 dB(A) limit](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/reports/iso7849_vibration_power_example.webp)](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/reports/iso7849_vibration_power_example.pdf) +### Reactive fields near sources -*Sound power from vibration fiche (`VibrationSoundPowerResult.report`), an -ISO/TS 7849-2 engineering-method determination with the measured radiation -factor and the boxed LWA.* +Close to a source the field turns **reactive**: pressure and particle +velocity drift toward quadrature, so a large pressure carries little net +flow. For a small source the quadrature component grows as $1/(kr)$; at +100 Hz and 0.25 m from the source it is already about twice the active one, +and $\delta_{pI}$ climbs just as it does in the standing wave of the figure +above. +The same happens between a machine and a hard reflecting surface, and in +reverberant rooms where the diffuse field raises pressure without +transporting energy outward. This is why ISO 9614-1 keeps the measurement +surface on average more than 0.5 m away from the source, and why, when a +scan fails the dynamic-capability criterion, moving the surface outward or +adding absorption to the room usually lowers $F_2$ below $L_d$ more cheaply +than better hardware. + +### Choosing the spacer + +The spacer sets both ends of the usable band, in opposite directions: + +- **The top end is geometry.** The finite difference underestimates the + gradient by $\sin(k\Delta r)/(k\Delta r)$, so the ceiling scales as + $1/\Delta r$: `max_valid_frequency` $\approx 0.1\,c/\Delta r$ keeps the + bias within about 0.3 dB, + giving roughly 5.7 kHz for a 6 mm spacer, 2.9 kHz for 12 mm and 690 Hz + for 50 mm (`bias_correct=True` undoes the known bias somewhat beyond + that). +- **The bottom end is phase.** A progressive wave puts only + $360\,f\,\Delta r/c$ degrees of true phase across the spacer, 0.8° at 63 Hz + over 12 mm, while the channel mismatch stays fixed. Lowering the frequency + shrinks the signal, not the error, so the margin over $\delta_{pI0}$ + collapses at low frequency. A larger spacer buys back that margin: the + IEC 61043 residual-index requirements scale as + $10\log_{10}(\Delta r/25\ \text{mm})$, so doubling the spacer is worth 3 dB of + low-frequency margin. + +No single spacer covers the full audio range: 6 mm suits high-frequency +work, 50 mm low-frequency work, and the common 12 mm covers the mid band. +Wide-band surveys are measured twice with two spacers and the band results +merged; whichever spacer is fitted, verify $\delta_{pI0}$ with that spacer in +place, since the index belongs to the probe-spacer-analyzer chain, not to +the microphones alone. + +### `sound_intensity()` parameters + +| Parameter | Type | Units | Range / default | Notes | +| :--- | :--- | :--- | :--- | :--- | +| `p1`, `p2` | 1D arrays | Pa | equal length | Microphone closer to the source first; reversing them flips the sign | +| `fs` | int | Hz | > 0 | | +| `spacing` | float | m | > 0 | Microphone separation $\Delta r$ (typ. 6/12/50 mm) | +| `rho` | float | kg/m³ | default `1.204` | Air density | +| `c` | float | m/s | default `343.0` | Speed of sound (bias/validity estimates) | +| `fraction` | int, optional | — | `1`, `3` or `None` (default) | Octave/third-octave band integration | +| `limits` | list, optional | Hz | default library band range | Band analysis limits | +| `bias_correct` | bool | — | default `False` | Apply the per-bin $(k\Delta r)/\sin(k\Delta r)$ correction (IEC 61043 §7.3) before summing, so band/broadband totals stop under-reading as $f \to$ `max_valid_frequency`; bins past the first null are left uncorrected. The per-band `bias_correction` factor is reported either way | + +See [Theory](https://jmrplens.github.io/phonometry/reference/theory/signal-analysis/) for the derivations and [Calibration](https://jmrplens.github.io/phonometry/signals/metrology/calibration/) +for absolute scaling of the two channels. ## References -- Cremer, L., Heckl, M., & Petersson, B. A. T. (2005). *Structure-borne - sound: Structural vibrations and sound radiation at audio frequencies* - (3rd ed.). Springer. ISBN 978-3-540-22696-3. - [doi:10.1007/b137728](https://doi.org/10.1007/b137728). - The radiation-efficiency treatment behind section 3: coincidence, the - cancellation below the critical frequency and the radiation of finite - plates. -- International Organization for Standardization. (2009). *Acoustics — - Determination of airborne sound power levels emitted by machinery using - vibration measurement — Part 1: Survey method using a fixed radiation - factor* (ISO/TS 7849-1:2009). - [iso.org catalogue](https://www.iso.org/standard/40537.html). - The upper-limit method with $\varepsilon = 1$. -- International Organization for Standardization. (2009). *Acoustics — - Determination of airborne sound power levels emitted by machinery using - vibration measurement — Part 2: Engineering method including determination - of the adequate radiation factor* (ISO/TS 7849-2:2009). - [iso.org catalogue](https://www.iso.org/standard/40538.html). - The engineering method with a measured band-wise radiation factor. +- Fahy, F. J. (1995). *Sound intensity* (2nd ed.). E&FN Spon. + ISBN 978-0-419-19810-9. + [doi:10.4324/9780203475386](https://doi.org/10.4324/9780203475386). + The monograph on the subject: active and reactive intensity, the p-p + estimator and the phase-mismatch error budget behind this page. +- International Electrotechnical Commission. (1993). *Electroacoustics — + Instruments for the measurement of sound intensity — Measurements with + pairs of pressure sensing microphones* (IEC 61043:1993; adopted in Europe + as EN 61043:1994). + [IEC webstore](https://webstore.iec.ch/en/publication/4353). + The instrument standard: the cross-spectral estimator, the + residual-intensity test behind $\delta_{pI0}$, the Table 2 minima per band + for probes, processors and instruments with the $+10\log_{10}(x/25)$ separation + rule + (Note 1), the frequency ranges of clause 6.1 and the component-combination + rule of clause 8. +- International Organization for Standardization. (1993). *Acoustics — + Determination of sound power levels of noise sources using sound + intensity — Part 1: Measurement at discrete points* (ISO 9614-1:1993). + [iso.org catalogue](https://www.iso.org/standard/17427.html). + The field indicators $F_1$ to $F_4$, the dynamic-capability criterion and + the 0.5 m surface-distance rule. ## Standards -ISO/TS 7849-1:2009 (*survey method using a fixed radiation -factor*) and ISO/TS 7849-2:2009 (*engineering method including determination of -the adequate radiation factor*), *Acoustics — Determination of airborne sound -power levels emitted by machinery using vibration measurement*: the radiated -power $P = Z_c \, \langle v^2 \rangle \, S \, \varepsilon$ (Formula 6), the -velocity level and its calibration -(Formulae 3, 8), the mean over the surface (Formulae 10/11), the extraneous -correction (Table 2), the radiation factor (Formula 4/8) and the sound power -level (Formulae 12/15). Conformance is anchored on the standard's own worked -calibration example, the exact round-trip between the radiation factor and -$L_W = 10\log_{10}(P/P_0)$, and the fixed impedance term. +IEC 61043:1993 (EN 61043:1994), *Electroacoustics — +Instruments for the measurement of sound intensity — Measurements with pairs +of pressure sensing microphones*: the two-microphone cross-spectral +intensity estimator, the finite-difference bias correction and the +usable-bandwidth bound (clause 7.3, Table 3), the minimum pressure-residual +intensity index per band for probes, processors and instruments in class 1 +and class 2 with its separation rule (Table 2 and its Note 1), the processor +frequency ranges (clause 6.1) and the class of an instrument assembled from +separate components (clause 8). ISO 9614-1:1993, *Acoustics — Determination +of sound power levels of noise sources using sound intensity — Part 1: +Measurement at discrete points*: the pressure-intensity index, the Annex A +field indicators $F_1$ (equations (A.1)–(A.2), evaluated in the initial test +of clause 8.2 and again per Annex B, B.1.4), $F_2$, $F_3$ and $F_4$, the +Table B.3 +temporal-variability limit and the dynamic-capability criterion (Annex B). --- diff --git a/site/public/llms/llms-devices-noise-control.txt b/site/public/llms/llms-devices-noise-control.txt index a798e061f..5f874700a 100644 --- a/site/public/llms/llms-devices-noise-control.txt +++ b/site/public/llms/llms-devices-noise-control.txt @@ -9,20 +9,64 @@ Source: https://jmrplens.github.io/phonometry/devices/noise-control/ # Noise control -Machinery noise is attacked at the source, the path and the receiver in turn, -and this section holds the path measures. - -[Silencers](https://jmrplens.github.io/phonometry/devices/noise-control/silencers/) covers the reactive four-pole -elements (expansion chambers, Helmholtz, quarter-wave and extended-tube -resonators) with their transmission and insertion loss, and the choice -between reflection and dissipation, while -[Industrial Noise Control](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/) keeps the HVAC -duct attenuation and flow noise of an installation and the insertion loss of -a machine enclosure. - -What a quieting measure is judged against is the emission of the machine -itself, and that is determined by the -[Sound power and intensity](https://jmrplens.github.io/phonometry/devices/emission/) pages. +A noise-control problem is a **budget**, not a component choice. Between a +machine and the person who hears it there is a path, and each element on that +path removes a known number of decibels per band; the design question is which +combination closes the gap between what the source emits and what the criterion +allows. Machinery noise is attacked at the source, the path and the receiver in +turn, and this section holds the path — both halves of it: the element models, +and the two composed chains that spend their output against a criterion. + +Everything here is a **prediction** from declared geometry and declared +material data. That matters when a catalogue is open beside the screen: the +figure a supplier publishes for the same device is a *measured* insertion loss, +obtained under the conditions of a measurement standard — ISO 7235 for a ducted +silencer on a laboratory rig with and without airflow, which also gives the +regenerated flow noise and the pressure loss, ISO 11691 for the survey method +without flow, ISO 11820 for a silencer in situ, and ISO 11546-1 and -2 for an +enclosure in the laboratory and in situ. A computed transmission loss and a +catalogue insertion loss are not the same quantity. Neither is wrong; they +answer different questions, and a design that mixes them without saying so is +not defensible. + +[Duct-Borne Noise: Fan to Room](https://jmrplens.github.io/phonometry/devices/noise-control/duct-path/) +follows an airborne path from the fan through the duct run into the room: +attenuation in straight duct, at bends and takeoffs, end reflection at the +terminal, regenerated flow noise added back, the room effect at the receiver, +and the result laid against the room criterion. It also states the limit every +element model in this section shares — the frequency above which higher-order +modes cut on and the plane-wave assumption stops holding. +[Room to Room: Partition, Receiving Room, Criterion](https://jmrplens.github.io/phonometry/devices/noise-control/room-to-room/) +follows the airborne room-to-room path instead: a source-room level built from a +sound power and the room constant, a partition with its transmission loss, a +receiving room with its absorption, the received spectrum and its verdict — and +the inverse problem, the transmission loss a partition or a lined enclosure must +have for the receiving room to meet its criterion, solved backwards. + +The two element pages supply what those chains call. +[Silencers](https://jmrplens.github.io/phonometry/devices/noise-control/silencers/) covers the reactive +four-pole elements (expansion chambers, Helmholtz, quarter-wave and +extended-tube resonators) with their transmission and insertion loss, and the +choice between reflection and dissipation, while +[Industrial Noise Control](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/) +keeps the HVAC duct attenuation and flow noise of an installation and the +insertion loss of a machine enclosure. + +If the noise travels in a duct, start at +[Duct-Borne Noise](https://jmrplens.github.io/phonometry/devices/noise-control/duct-path/); if it travels +through a wall, start at +[Room to Room](https://jmrplens.github.io/phonometry/devices/noise-control/room-to-room/); open the +element pages when a chain asks for a number you do not have. + +Both ends of the problem are settled outside this section, and a path +calculation with either end missing has no verdict. At the **source** end, what +a quieting measure is judged against is the emission of the machine itself, +determined by the [Sound power and intensity](https://jmrplens.github.io/phonometry/devices/emission/) +pages — and reducing it there is almost always cheaper than treating a path. At +the **receiver** end sit the criteria: the NC and RC Mark II families of +[Room noise criteria](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/), plus whatever +occupational limit applies, in [Occupational exposure +(ISO 9612)](https://jmrplens.github.io/phonometry/perception/hearing/occupational-exposure/). ## Pages in this section @@ -37,1726 +81,1745 @@ itself, and that is determined by the - [Industrial Noise Control: HVAC and Enclosures](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/): duct attenuation, flow noise and machine-enclosure insertion loss. ---- - - - -Source: https://jmrplens.github.io/phonometry/devices/noise-control/silencers/ - -# Silencers +## What this section does not cover + +Nothing here is a measurement: every number is predicted from geometry and +declared data, and the measurement standards named above are cited as the +source of a supplier's figures, not implemented. Within the predictions, three +limits are structural. **Only reactive silencer elements are computed** — +dissipative duct-lining silencers are discussed for selection but are not +modelled from liner properties anywhere in the library, and the lined-elbow and +plenum figures on the HVAC page are interpolated installation tables rather than +a liner model. **Mean flow is outside the element matrices**: convection, +temperature gradients and the flow-dependent impedance of perforates do not +appear, so a silencer carrying significant flow is predicted as though it were +not. And `enclosure_insertion_loss` **never predicts the panel's transmission +loss**: you supply R measured or from another model, and the module combines it +with the interior correction — predicting R itself is [Insulation +design](https://jmrplens.github.io/phonometry/buildings/design/). Above the higher-order-mode cut-on +frequency the plane-wave assumption every duct model rests on stops holding, +which the duct-path page states and which no method here works around. -A silencer earns its keep in a duct: between an engine and its tailpipe, -between a fan and the room it serves. Two working principles divide the -field. A **reactive** silencer attenuates by *reflecting* sound with -impedance discontinuities (chambers, side branches) and dominates at low -frequency, where a tone from a firing engine or a fan blade passage can be -targeted exactly; a **dissipative** silencer *absorbs* sound in a porous -lining and dominates broadband, at mid and high frequency. This guide -covers the reactive family phonometry implements with the engineering -theory of Bies, Hansen & Howard and Munjal's transfer-matrix formulation: -the four-pole method, the closed-form expansion chamber, the Helmholtz, -quarter-wave and extended-tube resonators, the independent FDTD -cross-check, and the design trade-offs against dissipative linings. The -rest of the installation, HVAC duct attenuation, flow noise and machine -enclosures, lives in [Industrial noise control](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/). +--- -## 1. Reactive silencers (four-pole method) -A reactive silencer attenuates by *reflecting* sound with impedance -discontinuities. Each acoustic element is a 2×2 **transfer (four-pole) -matrix** relating the sound pressure $p$ and the volume velocity $Su$ at its -two ends (Bies Eq. (8.133); Munjal, *Acoustics of Ducts and Mufflers*), and a -compound silencer is the ordered matrix product of its elements. A straight -duct of length $L$ and area $S$ is (Bies Eq. (8.143), no flow) + +Source: https://jmrplens.github.io/phonometry/devices/noise-control/duct-path/ -$$ -\begin{bmatrix} \cos kL & j\,\tfrac{\rho c}{S}\sin kL \\[2pt] -j\,\tfrac{S}{\rho c}\sin kL & \cos kL \end{bmatrix}, -\qquad k = \omega/c, -$$ +# Duct-borne noise: fan to room -and a side branch of acoustic impedance $Z_b$ is the shunt -$\left[\begin{smallmatrix} 1 & 0 \\ 1/Z_b & 1 \end{smallmatrix}\right]$ -(Eq. (8.144)). The **transmission loss** follows from the compound matrix $T$ -with the port impedances $Z_1 = \rho c/S_\text{in}$ and -$Z_n = \rho c/S_\text{out}$ (Munjal Eq. (3.27); Bies Eq. (8.141) prints the -`T11`/`T22` impedance weights of this formula inverted and fails the -sudden-expansion limit, see the [errata registry](https://jmrplens.github.io/phonometry/reference/errata/)) +Air-conditioning noise is not predicted, it is *accounted for*. You start +from the sound power the fan puts into the duct, walk down the path, and at +every element subtract what it attenuates and add back what its own airflow +regenerates. What survives to the terminal device is turned into a sound +pressure level by the room, the supply and the return paths are added +together, and the total is laid against the design criterion. If it fails, +the sheet itself tells you which element to change: the row with the small +attenuation, or the row whose self-noise is now the floor. -$$ -\mathrm{TL} = 10\log_{10}\!\left[\frac{Z_n}{Z_1}\,\tfrac{1}{4}\left|\,T_{11} -+ \tfrac{T_{12}}{Z_n} + Z_1\,T_{21} + \tfrac{Z_1}{Z_n}\,T_{22}\right|^2\right], -$$ +That bookkeeping is what `noise_control.duct_path` implements, with the +element models of `noise_control.hvac` feeding it and +`noise_control.duct_modes` marking the frequency above which the whole +one-dimensional picture stops being exact. The reference throughout is +Long, *Architectural Acoustics* (2nd ed., Academic Press 2014), Chapters 13 +and 14, whose Table 14.9 is the worked sheet this guide is built around, +with the ASHRAE *HVAC Applications Handbook* Chapter 49 for the air +terminal devices and Bies, Hansen & Howard for the splitter silencers and +the plenums. The reactive four-pole silencers of +[Silencers](https://jmrplens.github.io/phonometry/devices/noise-control/silencers/) and the rest of the installation methods in +[Industrial noise control](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/) are the companion pages. -which for equal inlet/outlet areas reduces to (Bies Eq. (8.148)) +## 1. The sheet, and how it adds up -$$ -\mathrm{TL} = 20\log_{10}\!\left(\tfrac{1}{2}\left|\,T_{11} -+ \tfrac{T_{12}}{Z_c} + Z_c\,T_{21} + T_{22}\right|\right), -\qquad Z_c = \frac{\rho c}{S}, -$$ +A duct-borne calculation is a table: octave bands across the columns +(63 Hz to 8 kHz, the range the published procedures use), one block of rows +per physical element. Each block prints what the element takes out, the +running level after subtracting it, what the element puts back, and the +level leaving it. `DuctElement` carries exactly the two spectra an element +owns, and `duct_path` walks them: -and the **insertion loss** for a source impedance $Z_s$ and a radiation -impedance $Z_r$ is the extra attenuation over a direct (zero-length) -connection, so a through connection gives $\mathrm{IL} = 0$. +```python +from phonometry import DuctElement, duct_path -### Expansion chamber +bands = [63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0, 8000.0] +fan = [90.0, 86.0, 82.0, 79.0, 77.0, 75.0, 71.0, 61.0] -A chamber of area $S_\text{exp}$ and length $L$ between pipes of area -$S_\text{duct}$ has the closed-form transmission loss (Bies Eq. (8.111)) with -area ratio $m = S_\text{exp}/S_\text{duct}$: +path = duct_path( + bands, fan, + [ + DuctElement("Elbow, 36 x 24 in, unlined", + attenuation=[0, 1, 2, 3, 3, 3, 3, 3], + self_noise=[41, 39, 36, 29, 20, 6, 0, 0], code="2"), + DuctElement("Silencer, 3 ft, standard pressure drop", + attenuation=[7, 12, 16, 28, 35, 35, 28, 17], + self_noise=[49, 43, 44, 42, 42, 45, 35, 24], code="3"), + ], + source_label="Fan, centrifugal FC, 5000 cfm, 2 in w.g.", +) -$$ -\mathrm{TL} = 10\log_{10}\!\left[1 + \tfrac{1}{4}\left(m - \tfrac{1}{m}\right)^2 -\sin^2 kL\right], -$$ +for row in path.table(): + print(f"{row['code']:>2} {row['label'][:38]:<38} " + f"{[round(float(v)) for v in row['values']]}") +``` -peaking at $10\log_{10}[1 + \tfrac14(m-1/m)^2]$ at $kL = \pi/2, 3\pi/2, \dots$ -(1.94 dB for $m = 2$, 6.55 dB for $m = 4$, 12.18 dB for $m = 8$, 18.10 dB for -$m = 16$) and dropping to 0 at $kL = n\pi$, where the chamber is a -half-wavelength long and transparent. The four-pole product reproduces this -exactly. +Three conventions matter, and they are worth stating once because every +published sheet states them differently. -Expansion-chamber transmission loss against frequency for area ratios m = 2, 4, 8 and 16, showing periodic peaks rising with m at odd multiples of the quarter-wave frequency and troughs returning to 0 dB at every half-wavelength of the chamber length +**Attenuations are positive.** Every element model in `noise_control.hvac` +returns a loss as a positive number of decibels, and the cascade subtracts +it. Printed worksheets show the same quantity as a negative level change, +so `DuctPathResult.table()` flips the sign back for the `"attenuation"` +rows: the table reads like the reference, the arithmetic does not have to. -```python -import numpy as np -from phonometry import expansion_chamber +**Regenerated noise adds on a power basis.** The self-noise of an element +is a sound power level in its own right, not a correction to the incoming +level, so it is combined as +$10\log_{10}(10^{L/10} + 10^{L_\text{sn}/10})$ rather than added +arithmetically. That is why the `Self-noise` row sits between the `Sum` and +the `Combined` row and never touches the attenuation. -freqs = np.linspace(20.0, 2000.0, 2000) -res = expansion_chamber(freqs, length=0.3, chamber_area=0.04, pipe_area=0.01) -print(round(res.transmission_loss.max(), 2)) # 6.55 dB peak (m = 4) -res.plot() # TL (and IL) vs frequency -``` +**There is a self-noise floor.** Long's sheet uses a 0 dB sound power level +wherever an element has no regenerated-noise data, and also as a floor +under any computed level that would go negative, which is why his received +spectrum bottoms out near 0 dB instead of running off to minus infinity. +`self_noise_floor` reproduces that (default `0.0`) and `None` switches it +off entirely. -The numbers passed to `expansion_chamber` describe a real device, and -`.plot_geometry()` draws it: the same 0.3 m chamber with its 4:1 area ratio, -to scale and fully dimensioned. +## 2. The source: fan sound power -To-scale cross-section of the expansion-chamber silencer of the transmission-loss example: a 300 mm long chamber of 225.7 mm equivalent diameter inserted between inlet and outlet pipes of 112.8 mm equivalent diameter, with the chamber length and both diameters dimensioned +The fan is the one element whose spectrum you can build from the operating +point alone. `fan_sound_power` implements the ASHRAE scaling law printed as +Long Eq. 13.1, -*The chamber behind the curves above, to scale: the areas enter the four-pole -method only through the ratio $m$, and the drawing uses the equivalent -circular diameters $d = 2\sqrt{S/\pi}$ of the 0.04 and 0.01 m² cross-sections.* +$$ +L_W = K_F + 10\log_{10}\frac{Q_F}{Q_\text{REF}} + + 10\log_{10}\frac{P_F}{P_\text{REF}} + C_\text{EFF} + C_\text{BFI}, +$$ -
-Show the code for this figure +with the spectral constant $K_F$ of Table 13.5 (one row per fan type), the +off-peak efficiency correction $C_\text{EFF}$ of Table 13.6 and the blade +frequency increment $C_\text{BFI}$ of Table 13.7 dropped into the single +octave band that contains the blade passing frequency. In SI the references +are $Q_\text{REF} = 0.472$ L/s and $P_\text{REF} = 249$ Pa, so the two +logarithmic terms take the same values as the foot-pound form in cfm and +inches of water gauge. ```python -import matplotlib.pyplot as plt -import numpy as np -from phonometry import expansion_chamber, plot_silencer_geometry +from phonometry import ( + blade_passing_frequency, fan_casing_attenuation, + fan_efficiency_correction, fan_sound_power, +) -freqs = np.linspace(20.0, 2000.0, 2000) -res = expansion_chamber(freqs, length=0.3, chamber_area=0.04, pipe_area=0.01) +CFM, IN_WG = 0.0004719474432, 249.0 -# One line: the dimensioned cross-section of the chamber just computed. -res.plot_geometry() -plt.show() +fan = fan_sound_power(volume_flow=5000 * CFM, static_pressure=2 * IN_WG, + fan_type="forward_curved", relative_efficiency=80.0) +print([round(float(v)) for v in fan.values]) +# [99, 99, 89, 84, 82, 77, 72, 67] -# The same drawing without a result, from the free function: -plot_silencer_geometry("expansion chamber", length=0.3, - chamber_area=0.04, pipe_area=0.01) -plt.show() +print(fan_efficiency_correction(80.0)) # 6.0 dB off the peak +print(blade_passing_frequency(1200.0, 24)) # 480.0 Hz, in the 500 Hz band +print(fan_casing_attenuation().values) # what the housing holds back +# [ 0. 0. 5. 10. 15. 20. 22. 25.] +fan.plot() # the band spectrum, one line ``` -
- -The clip below runs an $m = 4$ chamber of the same 0.30 m length in a 2D FDTD -duct at its two characteristic frequencies. At $kL = \pi$ the chamber is a -half-wave resonator and the tone crosses as if it were not there; at -$kL = \pi/2$ the two area jumps reflect in phase and send the wave back up the -inlet, the 6.5 dB peak of the four-pole curve above. +Two habits keep this honest. The law assumes ideal inlet and outlet flow +conditions, so a fan boxed into a plant room with a bad inlet is louder +than it says; and ASHRAE's own current guidance is that a fan's sound power +"is best obtained from manufacturers' test data" to AMCA Standard 300 or +ASHRAE Standard 68. Treat Eq. 13.1 as the early-design fallback, not as the +answer. The fan radiates the same power from its intake and from its +discharge, which is why the supply and return paths of a real sheet start +from the *same* row. -Animation: a 2D FDTD duct with a 0.30 m expansion chamber of area ratio 4 drawn as hardware between a loudspeaker and an anechoic termination, at two frequencies side by side; at 572 Hz the pressure envelope stays flat and the tone crosses the chamber unchanged with the annotated transmission loss of 0.0 dB, while at 286 Hz a standing wave fills the inlet pipe and the outlet is left with less than half the amplitude, matching the annotated 6.5 dB peak +`fan_efficiency_correction` is a step function, and a brutal one: a fan +running at 90 per cent of its peak static efficiency adds nothing, one at +80 per cent adds 6 dB, one below 50 per cent adds 16 dB. Selecting a fan +away from its best point is the cheapest way to lose a duct-noise budget +before any silencer is priced. `fan_casing_attenuation` (Table 13.8) is the +other side of the same source: the power the housing radiates into the +plant room instead of into the duct, zero at 63 and 125 Hz because a +vibrating casing radiates low frequency as freely as the unhoused fan. -[Watch the high-resolution video (WebM)](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/anim_fdtd_expansion_chamber.webm) +## 3. What the run takes out -### Side-branch and extended-tube resonators +Everything between the fan and the room removes something, and most of it +is free. The models are Long Chapter 14 with the Reynolds (1990) +regressions, and they all return an `HvacSpectrumResult` with `.values`, +`.plot()` and `.report()`. -A **Helmholtz resonator** (`helmholtz_resonator`) and a closed **quarter-wave -tube** (`quarter_wave_resonator`) each short the duct at their tuning -frequency, $f_0 = \tfrac{c}{2\pi}\sqrt{S_\text{neck}/(l_e V)}$ -(Bies Eq. (8.46)) and $f = c/4l_e$ (Eq. (8.44)), giving a sharp -transmission-loss spike there. An -**extended-tube chamber** (`extended_tube_chamber`) buries quarter-wave side -branches in an expansion chamber to fill its troughs; with zero extensions it -reduces exactly to the plain chamber. Advanced layouts chain elements directly -with `duct_matrix`, `shunt_matrix`, `cascade`, `transmission_loss` and -`insertion_loss`. +**Straight ducts.** An unlined rectangular duct loses energy into the +induced motion of its own walls, so the loss grows with the +perimeter-to-area ratio: a wide shallow duct has floppier side walls than a +square one. `unlined_rectangular_duct_attenuation` fits that below 250 Hz +and holds a flat rate above it; an external fibreglass blanket +(`wrapped=True`) doubles the low-frequency part. A circular duct is far +stiffer in its breathing mode, so it hardly responds at all, and +`unlined_circular_duct_attenuation` is a bare length rate of 0.03 to +0.07 dB/ft. Lining the duct changes the order of magnitude: +`lined_rectangular_duct_attenuation` and +`lined_circular_duct_attenuation` evaluate the Reynolds regressions, valid +for 25 mm to 52 mm linings and clipped at 40 dB per run because flanking +takes over beyond that. ```python -import numpy as np from phonometry import ( - helmholtz_resonator, quarter_wave_resonator, extended_tube_chamber, + lined_rectangular_duct_attenuation, unlined_rectangular_duct_attenuation, ) +import numpy as np -f = np.linspace(20.0, 600.0, 4000) - -hr = helmholtz_resonator(f, duct_area=0.01, neck_area=1e-4, - neck_length=0.02, cavity_volume=1e-3) -print(round(float(hr.resonances[0]), 1)) # tuning frequency, Hz -hr.plot() # TL spike at the tuning frequency (needs matplotlib) +IN, FT = 0.0254, 0.3048 +bands = [63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0, 8000.0] -qw = quarter_wave_resonator(f, duct_area=0.01, length=1.516, branch_area=2e-3, - speed_of_sound=343.24) -print(round(float(qw.resonances[0]), 1)) # 56.6 Hz (Bies Example 8.1) +bare = unlined_rectangular_duct_attenuation(bands, 36 * IN, 24 * IN, 5 * FT) +lined = lined_rectangular_duct_attenuation(bands, 36 * IN, 24 * IN, 5 * FT, + 1 * IN, include_unlined=True) +print(np.round(bare.values, 1)) # [1.1 0.7 0.5 0.2 0.2 0.2 0.2 0.2] +print(np.round(lined.values, 1)) # [ 1.3 1.3 2.5 6.7 12.8 10.6 9.7 9. ] +``` -# An inlet extension of L/4 fills the first expansion-chamber trough. -et = extended_tube_chamber(f, length=0.4, chamber_area=0.04, pipe_area=0.01, - inlet_extension=0.1) +The `include_unlined=True` switch is not cosmetic. The lined-duct +regression was fitted to an *insertion loss*, measured by substituting the +lined section for an unlined one of the same face size, so the side-wall +contribution has been subtracted out of it; Long recommends adding it back +for rectangular ducts, and ignoring it for circular ones where it is +negligible. + +**Flexible duct.** The last run of a supply branch is usually flexible +duct, and its published insertion loss is startling: 2 to 3 dB per foot in +the mid bands. `flexible_duct_insertion_loss` interpolates ASHRAE +Table 14.4 over length and log diameter. Part of that number is the duct's +own breakout rather than dissipation, which is exactly why a serpentine run +of flexible duct in a joist space works as an improvised silencer. + +**Elbows and splits.** `elbow_insertion_loss` is keyed by $W/\lambda$ and +covers square and round bends, vaned and unvaned, lined and unlined; a +lined square bend is worth 10 to 11 dB where a round one gives 3. +`split_loss` handles a duct division: the power is shared between the +branches in proportion to their areas, plus a reflection when the total +branch area does not match the feeder, and a 25 per cent branch therefore +costs 6 dB. + +```python +from phonometry import elbow_insertion_loss, split_loss + +IN = 0.0254 +area = 36 * IN * 24 * IN +print(round(split_loss(area, [0.25 * area, 0.75 * area], branch=0), 1)) # 6.0 +print(elbow_insertion_loss( + [63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0, 8000.0], + 24 * IN, bend_type="round").values) # [0. 1. 2. 3. 3. 3. 3. 3.] ``` -Transmission loss of a Helmholtz resonator and a closed quarter-wave tube on the same 10 cm2 duct: each side branch produces a sharp spike at its own tuning frequency, near 120 Hz for the Helmholtz volume and near 285 Hz for the 0.3 m tube, and is transparent elsewhere +**End reflection.** An open duct end reflects low frequency back up the +run, for free, before any silencer. `end_reflection_loss` offers both +published methods and neither replaces the other: `method="bies"` (the +default) interpolates the ASHRAE table of Bies Table 8.14, and +`method="long"` evaluates Reynolds' closed form -*Each side branch shorts the duct at its own tuning frequency and is nearly -transparent elsewhere: the narrow spike is why resonators are matched to a -firing frequency or a fan blade-passing tone rather than used broadband.* +$$ +R = 10\log_{10}\!\left[1 + \left(\frac{a\,c}{\pi f d}\right)^{1.88}\right], +$$ -
-Show the code for this figure +with $a = 0.8$ for a flush termination and $a = 1$ for a free one. The two +agree within a decibel or so over the bands both cover. Use +`equivalent_diameter(area)` for a rectangular duct, and do not apply the +correction at all when the duct terminates in a diffuser: the flare smooths +the impedance transition, and a manufacturer's diffuser rating already +contains whatever is left of it. ```python -import matplotlib.pyplot as plt +from phonometry import end_reflection_loss, equivalent_diameter import numpy as np -from phonometry import helmholtz_resonator, quarter_wave_resonator -f = np.linspace(20.0, 600.0, 4000) -hr = helmholtz_resonator(f, duct_area=0.01, neck_area=1e-4, - neck_length=0.02, cavity_volume=1e-3) -qw = quarter_wave_resonator(f, duct_area=0.01, length=0.3, branch_area=2e-3) +bands = [63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0] +print(np.round(end_reflection_loss(bands, 0.30, method="bies").values, 1)) +# [12. 7. 3. 1. 0. 0.] +print(np.round(end_reflection_loss(bands, 0.30, method="long").values, 1)) +# [12.7 7.7 3.7 1.3 0.4 0.1] +print(round(equivalent_diameter(0.36 * 0.24), 3)) # 0.332 m +``` -# One line for one device: TL vs frequency with the resonance marked. -hr.plot() -plt.show() +**Silencers and plenums.** A parallel-splitter attenuator reduces, in Bies +§8.10.5, to a set of lined ducts whose liner thickness is half the splitter +thickness, combined by the energy average of Eq. 8.241 so that the leakiest +airway dominates. `plenum_attenuation` is Wells' method for a lined plenum +chamber (Bies Eq. (8.275)), whose reverberant term uses the plenum +[room constant](https://jmrplens.github.io/phonometry/buildings/rooms/room-image-sources/). -# By hand: both side branches on the same axes. -fig, ax = plt.subplots() -ax.plot(f, hr.transmission_loss, label="Helmholtz resonator") -ax.plot(f, qw.transmission_loss, "--", label="Quarter-wave tube") -for fr in (hr.resonances[0], qw.resonances[0]): - ax.axvline(float(fr), ls=":", color="#2ca02c") -ax.set_xlabel("Frequency [Hz]"); ax.set_ylabel("Transmission loss [dB]") -ax.set_ylim(0.0, 50.0) -ax.legend() -plt.show() +```python +from phonometry import plenum_attenuation, splitter_silencer_insertion_loss +import numpy as np + +IN, FT = 0.0254, 0.3048 +sil = splitter_silencer_insertion_loss( + None, height=24 * IN, length=5 * FT, + airway_widths=[0.10] * 5, splitter_thickness=0.10, +) +print(np.round(sil.values, 1)) +# [ 5.8 8.6 14.1 28.2 34.5 33.5 18.4 12.1] +print(round(plenum_attenuation(0.36, 2.4, 74.0, 0.5), 1)) # 16.1 dB ``` -
+Read that estimate for what it is. The 5 ft unit Long's return path +actually specifies is a low-frequency design worth 16 and 21 dB at 63 and +125 Hz, where this geometry-only model gives 6 and 9. Published dynamic +insertion loss from the manufacturer, measured with the design airflow and +in the design direction, is what belongs in the sheet; the model is for +sizing the airway before there is a manufacturer. -Both branches are small hardware, and `.plot_geometry()` shows just how -small: the resonator of the 120 Hz spike is a 1 L cavity fed by a 1 cm² -neck only 2 cm long. +## 4. What the system puts back -To-scale cross-section of the side-branch Helmholtz resonator: a duct of 112.8 mm equivalent diameter with a narrow 11.3 mm neck, 20 mm long, opening into a 1 litre cavity drawn as its equal-volume cube on top of the duct, with the neck diameter, neck length and duct diameter dimensioned +Attenuation is only half the sheet. Every disturbance of the airflow +generates noise of its own, and past a certain velocity the silencer bought +to remove the fan becomes the loudest thing in the duct. -*The whole 120 Hz notch hangs on a 1 L box and a 2 cm neck: the cavity is -drawn as its equal-volume cube, and the tuning moves as -$\sqrt{S_n/(l_e V)}$, so small errors in these dimensions shift the spike off -its target.* +`silencer_self_noise` is Fry's estimate as Long Eq. 14.31, -
-Show the code for this figure +$$ +L_W = 55\log_{10}\frac{V}{V_0} + 10\log_{10} N + + 10\log_{10}\frac{H}{H_0} - 45, +$$ + +spread over the octave bands by the corrections of Table 14.8. The exponent +is the whole message: the fifth-and-a-half power of the airway velocity +means that *doubling the face velocity of a silencer adds about 17 dB*. ```python -import matplotlib.pyplot as plt +from phonometry import silencer_self_noise import numpy as np -from phonometry import helmholtz_resonator - -f = np.linspace(20.0, 600.0, 4000) -hr = helmholtz_resonator(f, duct_area=0.01, neck_area=1e-4, - neck_length=0.02, cavity_volume=1e-3) -# One line: the side branch drawn to scale, cavity as its equal-volume cube. -hr.plot_geometry() -plt.show() +IN = 0.0254 +slow = silencer_self_noise(None, airway_velocity=10.0, passages=5, + height=24 * IN) +fast = silencer_self_noise(None, airway_velocity=20.0, passages=5, + height=24 * IN) +print(np.round(slow.values, 1)) +# [40.8 40.8 38.8 36.8 31.8 26.8 21.8 16.8] +print(round(float(fast.values[0] - slow.values[0]), 1)) # 16.6 dB ``` -
+Straight duct and bends regenerate too, through +`flow_noise_straight_duct` and `flow_noise_bend` (VDI 2081 as Bies +Eqs. (8.251) and (8.254)); the bend model carries the Strouhal-number +transition from the sixth-power inner-corner dipole to the eighth-power +outer-corner quadrupole. -The quarter-wave tube needs no cavity at all: the 285 Hz spike of the figure -above comes from a plain closed tube of the right length standing on the -same duct. +The terminal device is the last one in the path and the one nothing +downstream can fix, because there is no ductwork left after it. Its sound +power is normally manufacturer data measured to ASHRAE Standard 70, and +that is what a real sheet uses. When there is none to hand, +`diffuser_sound_power` is Reynolds's estimate as Long Eqs. 13.27 to 13.33: +an overall level +$L_W = 10\log_{10} S_G + 30\log_{10}\xi + 60\log_{10} U_G - 31.3$ from the +face area, the approach velocity $U_G = Q/S_G$ and the normalised +pressure-drop coefficient $\xi$, spread over the octaves by the shape +function $C_D = -11.82 - 0.15 A - 1.13 A^2$ ($-5.82$ for a round device) +about the peak band $f_P = 48.8\,U_G$. -To-scale cross-section of the quarter-wave side branch: a closed tube 300 mm long and 50.5 mm in equivalent diameter standing on a duct of 112.8 mm equivalent diameter, with the tube length, tube diameter and duct diameter dimensioned +```python +from phonometry import diffuser_sound_power +import numpy as np -*A quarter-wave stub is just a closed tube of the right length: 0.3 m of -pipe puts the spike at $c/4l_e \approx 285\ \text{Hz}$, and the 20 cm² branch -area only sets how strongly the stub loads the duct.* +IN, CFM, IN_WG = 0.0254, 0.0004719474432, 249.0 -
-Show the code for this figure +# The supply diffuser of Long's worked sheet: 24 x 24 in, 312 cfm, 0.05 in pd. +print(np.round(diffuser_sound_power(None, (24 * IN) ** 2, + volume_flow=312 * CFM, + pressure_drop=0.05 * IN_WG).values, 1)) +# [ 33.4 32.4 29.1 23.6 15.9 5.9 -6.4 -21. ] +# Long Table 14.9 prints 33/32/29/23/15/4/0/0 for that row. +``` -```python -import matplotlib.pyplot as plt -import numpy as np -from phonometry import quarter_wave_resonator +The sixth power of velocity in Eq. 13.27 is the design rule: about 18 dB +per doubling of the approach velocity once the pressure drop follows it, +and about 15 dB back for every doubling of face area at the same air +volume. Two screening rules from ASHRAE Chapter 49 come with it. +`air_terminal_velocity_limit` (Table 9) gives the maximum neck velocity for +a design RC, and `air_terminal_damper_correction` (Table 10) gives the +penalty for throttling a balancing damper, which is where a great many +finished installations fail. -f = np.linspace(20.0, 600.0, 4000) -qw = quarter_wave_resonator(f, duct_area=0.01, length=0.3, branch_area=2e-3) +```python +from phonometry import air_terminal_damper_correction, air_terminal_velocity_limit -# One line: the closed 0.3 m tube on its duct, to scale. -qw.plot_geometry() -plt.show() +print(air_terminal_velocity_limit(30, opening="supply")) # 2.2 m/s +print(air_terminal_velocity_limit(30, opening="return")) # 2.5 m/s +print(air_terminal_damper_correction(3.0, location="diffuser_neck")) # 15.0 dB +print(air_terminal_damper_correction(3.0, location="supply_duct")) # 2.0 dB ``` -
+Fifteen decibels in the neck against two decibels 1.5 m back in the duct, +for the same pressure ratio, is the entire design rule: throttle far from +the outlet, or balance the system by sizing the ductwork instead. -Each device returns a `ReactiveSilencerResult` with `transmission_loss`, -`insertion_loss` (when source/radiation impedances are given), the compound -`transfer_matrix`, the tuning `resonances` and `.plot()`. +## 5. From sound power to room level +The last step converts the sound power arriving at the terminal device into +a sound pressure level where somebody is sitting, through the steady-state +room relation +$L_p = L_W + 10\log_{10}\left[Q/(4\pi r^2) + 4/R\right]$. `room_effect` +returns that as a positive attenuation so it drops into the cascade beside +every other loss, with $Q = 2$ by default for a diffuser flush in a +ceiling. -## 2. Reactive or dissipative? +```python +from phonometry import room_constant, room_effect -Everything above works by reflection, and reflection has a shape: sharp, -periodic, frequency-selective. The complementary family, **dissipative** -silencers, replaces the impedance discontinuities with a duct section whose -walls are lined with porous material (often protected by a perforated -facing), so the grazing wave loses energy to viscous friction in the lining -instead of being sent back to the source. The behaviours differ where it -matters for selection: +# The 20 x 20 x 8 ft room of Long's worked sheet, drywall and carpet. +area = 2 * 6.10 * 6.10 + 4 * 6.10 * 2.44 # 134.0 m2 +r_const = room_constant(area, 0.15) # 23.6 m2 +print(round(float(room_effect(1.83, r_const, directivity=2.0)), 1)) # 6.6 dB +``` -- **Frequency reach.** A reactive chamber or resonator is strongest exactly - where it is tuned and transparent elsewhere; a lined duct attenuates over - a broad band that peaks where the lining depth is comparable with a - quarter wavelength. At low frequency a practical lining is acoustically - thin and does little, which is the regime where the reactive chamber - wins; at high frequency the sound beams down the open airway and passes - over the lining, so the attenuation of both families collapses and only - splitter geometries (narrow airways, more lined perimeter per unit area) - keep working. -- **Spectrum type.** A tonal source, an engine firing order or a - blade-passing frequency, is a resonator's natural prey; broadband fan or - flow noise wants the dissipative band. Production exhaust silencers - routinely combine the two, packing an expansion chamber with fibre so the - reflective troughs of the chamber are filled by absorption. -- **The medium.** A porous lining in a hot, sooty or pulsating exhaust - clogs and degrades, one reason vehicle exhausts are predominantly - reactive; clean HVAC air is where dissipative attenuators and lined - plenums are the default. In either case the airflow adds its own floor: - a silencer regenerates flow noise at its own outlet, and past a certain - pressure drop the silencer becomes the noise source. - -phonometry models the reactive family in closed form on this page. The -dissipative side enters through the installation data of the -[HVAC methods](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/): the lined-elbow insertion loss and the -lined plenum attenuation of Wells' method, both from interpolated ASHRAE -data rather than a liner model. The porous physics that a first-principles -liner calculation needs, the equivalent-fluid models fed by the airflow -resistivity, is the same material theory as -[Porous and Multilayer Absorbers](https://jmrplens.github.io/phonometry/materials/absorbers/porous-absorbers/). - -## Cross-check against the FDTD solver - -That cross-check is the clip embedded in section 1, and it is worth returning -to it now with the algebra in hand. The four-pole expansion chamber is checked -against the independent 2D -[FDTD wave solver](https://jmrplens.github.io/phonometry/simulation/fdtd-simulation/), which shares no formula and no -assumption with the transfer-matrix product beyond the wave equation itself: a -plane-wave duct that widens into the same 0.30 m, $m = 4$ chamber and narrows -back transmits far less at the four-pole TL peak ($kL = \pi/2$, here 286 Hz) -than at the transparent trough ($kL = \pi$, 572 Hz). The amplitude ratio -measured downstream in the field is the transmission loss annotated on the -clip, 6.5 dB at 286 Hz and 0.0 dB at 572 Hz, against the 6.55 dB the closed -form gives for $m = 4$ (test `tests/noise_control/test_fdtd_crosscheck.py`). -Agreement that close rules out an algebra error on either side. The two must -eventually part company above the duct's first cut-on frequency, where -higher-order modes propagate: the two-dimensional solver keeps working there -and the plane-wave algebra does not. - - -## See also - -- [Duct-borne noise: fan to room](https://jmrplens.github.io/phonometry/devices/noise-control/duct-path/): the end-to-end fan-to-room - calculation these silencers sit inside, and the higher-order-mode cut-on - above which the four-pole method describes the plane-wave mode alone. -- [Industrial noise control](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/): the rest of the - installation: HVAC duct attenuation and flow noise, plenums, end - reflection and machine enclosures. -- [2D FDTD wave simulation](https://jmrplens.github.io/phonometry/simulation/fdtd-simulation/): the independent solver - behind the expansion-chamber cross-check. -- [Porous and Multilayer Absorbers](https://jmrplens.github.io/phonometry/materials/absorbers/porous-absorbers/): the - equivalent-fluid material theory behind dissipative linings. -- [Loudspeaker Characterisation (IEC 60268-5)](https://jmrplens.github.io/phonometry/devices/electroacoustics/loudspeakers/): the - radiating piston, the companion radiator model of a duct's open end. -- API reference: [`noise_control.silencers`](https://jmrplens.github.io/phonometry/reference/api/noise_control/silencers/). - -## References - -- Bies, D. A., Hansen, C. H., & Howard, C. Q. (2017). *Engineering noise - control* (5th ed.). CRC Press. - [doi:10.1201/9781351228152](https://doi.org/10.1201/9781351228152). The - muffler four-pole method, the expansion-chamber TL and the resonator - tuning formulas (§8.8–8.9) of this guide. -- Munjal, M. L. (2014). *Acoustics of ducts and mufflers* (2nd ed.). Wiley. - [doi:10.1002/9781118443767](https://doi.org/10.1002/9781118443767). The - transfer-matrix formulation behind the element matrices and the - transmission loss from the compound matrix (Eq. (3.27)), and the - reference treatment of dissipative and combined mufflers. -- Vér, I. L., & Beranek, L. L. (2006). *Noise and vibration control - engineering* (2nd ed.). Wiley. - [doi:10.1002/9780470172568](https://doi.org/10.1002/9780470172568). The - companion treatment of reactive and dissipative silencers. - ---- - - - -Source: https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/ - -# Industrial noise control: HVAC and enclosures - -Three passive measures dominate applied noise control, and the -`noise_control` domain covers all three with the engineering theory of Bies, -Hansen & Howard, *Engineering Noise Control* (5th ed., CRC Press 2017): -**reactive silencers** in a duct (the four-pole transmission-matrix method), -the passive attenuations and regenerated noise of an **HVAC** run, and the -insertion loss of a **machine enclosure**. The radiating piston of the -[loudspeaker guide](https://jmrplens.github.io/phonometry/devices/electroacoustics/loudspeakers/) is the companion radiator model. +Long's sheet prints 5 to 7 dB for that room across the bands, so a single +mean absorption of 0.15 lands in the right place; a per-band absorption +gives a per-band room effect, which is what the carpet actually does. -The three families in one scene: enclose the source, silence the path, -shield the receiver. Each measure carries the value its section computes, -here or in the silencer guide. +Pass `target=` and `criterion=` to `duct_path` and the result rates itself. +`criterion_curve` samples the NC or RC curve at the analysis bands, +`exceedance` is the band-by-band excess over it, `meets_target` is the +band-by-band verdict a design sheet applies, and `rating` is the full +`NCResult` or `RCResult` derived by the ANSI/ASA S12.2-2019 procedure, +which is a different question and can differ from the tangency verdict. -Noise-control scene split into three zones: at the source a machine inside a lined enclosure rated IL = R − C = 25 dB at 500 Hz, along the path a 113 mm duct with a 0.30 m expansion chamber of area ratio 4 peaking at 6.5 dB of transmission loss at 286 Hz, a lined elbow worth 6 dB at 1 kHz and an open end reflecting 18 dB at 63 Hz, and at the receiver an operator cabin rated by the same formula at 31 dB at 1 kHz, with a person standing inside +## 6. The worked example: Long's Table 14.9 -The path measure, the silencer itself, has its own guide: -[Silencers](https://jmrplens.github.io/phonometry/devices/noise-control/silencers/) covers the reactive four-pole method, the -closed-form expansion chamber, the Helmholtz, quarter-wave and -extended-tube resonators, the independent FDTD cross-check and the -trade-off against dissipative linings. This page keeps the rest of the -installation: what the duct run adds and removes on its own, and what an -enclosure around the machine actually delivers. Chaining those element -models end to end, from the fan sound power to the room criterion, is -[Duct-borne noise: fan to room](https://jmrplens.github.io/phonometry/devices/noise-control/duct-path/). +Long's Chapter 14 closes with a complete sheet: a 5000 cfm forward-curved +fan at 2 in w.g., feeding one room through a supply path (elbow, silencer, +lined duct, a 25 per cent branch split, a second lined duct, flexible duct, +a rectangular diffuser) and a return path (elbow, low-frequency silencer, +lined elbow, plenum, grille), each ending in the room effect of a +20 x 20 x 8 ft carpeted office, combined and checked against NC 30. Every +row below is the one Long prints, including the manufacturer data for the +silencers and the terminal devices, which is what a real sheet uses. -## 1. HVAC duct attenuation and flow noise +```python +import numpy as np +from phonometry import DuctElement, combine_duct_paths, duct_path -`noise_control.hvac` gathers the Bies Chapter 8 duct methods: +bands = [63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0, 8000.0] +fan = [90.0, 86.0, 82.0, 79.0, 77.0, 75.0, 71.0, 61.0] +source = "Fan, centrifugal FC, 5000 cfm, 2 in w.g." -- `end_reflection_loss` — the low-frequency reflection back up an open duct end - (ASHRAE Table 8.14, interpolated over diameter and frequency; it passes - exactly through the tabulated nodes). -- `elbow_insertion_loss` — the insertion loss per bend for square/round, - vaned/unvaned and lined/unlined elbows keyed by $W/\lambda$ (ASHRAE - Table 8.11). -- `plenum_attenuation` — the plenum-chamber transmission loss by Wells' method - (Eq. (8.275)), whose reverberant term uses the plenum - [room constant](https://jmrplens.github.io/phonometry/buildings/rooms/room-image-sources/). -- `flow_noise_straight_duct`, `flow_noise_bend` — the flow-generated (self) - noise sound power of straight ducts and mitred bends (VDI 2081, Eqs. (8.251), - (8.254)). +supply = duct_path( + bands, fan, + [ + DuctElement("Elbow, 36 x 24 in, unlined", [0, 1, 2, 3, 3, 3, 3, 3], + [41, 39, 36, 29, 20, 6, 0, 0], code="2"), + DuctElement("Silencer, 3 ft, standard pressure drop", + [7, 12, 16, 28, 35, 35, 28, 17], + [49, 43, 44, 42, 42, 45, 35, 24], code="3"), + DuctElement("Duct, 36 x 24 in, 5 ft, 1 in lining", + [2, 2, 3, 7, 15, 12, 11, 9], code="4"), + DuctElement("Split, 25 per cent", 6.0, code="5"), + DuctElement("Duct, 18 x 12 in, 6 ft, 1 in lining", + [3, 3, 5, 11, 25, 22, 16, 13], code="6"), + DuctElement("Flexible duct, 12 in, 6 ft", + [14, 14, 16, 15, 17, 22, 16, 13], code="7"), + DuctElement("Rectangular diffuser, 312 cfm", None, + [33, 32, 29, 23, 15, 4, 0, 0], code="8"), + ], + room_effect=[6, 6, 5, 5, 6, 7, 6, 6], + source_label=source, target=30.0, label="Supply", +) -```python -from phonometry.noise_control import hvac +ret = duct_path( + bands, fan, + [ + DuctElement("Elbow, 36 x 24 in, unlined", [0, 1, 2, 3, 3, 3, 3, 3], + [43, 42, 39, 33, 24, 12, 0, 0], code="2"), + DuctElement("Silencer, 5 ft, low-frequency type", + [16, 21, 35, 41, 41, 28, 21, 15], + [51, 49, 53, 56, 56, 59, 60, 53], code="3"), + DuctElement("Elbow, 36 x 24 in, lined, 1 in", [1, 2, 3, 4, 5, 6, 8, 10], + [39, 38, 34, 28, 18, 4, 0, 0], code="4"), + DuctElement("Plenum, 800 sq ft, 50 per cent lined", + [12, 13, 19, 20, 20, 20, 21, 21], code="5"), + DuctElement("Rectangular grille, 24 x 24 in, 563 cfm", None, + [30, 29, 26, 20, 12, 1, 0, 0], code="6"), + ], + room_effect=[9, 8, 6, 8, 8, 8, 9, 10], + source_label=source, target=30.0, label="Return", +) -bands = [63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0] -er = hvac.end_reflection_loss(bands, diameter=0.30, termination="flush") -el = hvac.elbow_insertion_loss(bands, width=0.3, bend_type="square", lined=True) -er.plot() # the band attenuation (or regenerated Lw) in one line (needs matplotlib) -tl = hvac.plenum_attenuation(0.1, 1.0, 20.0, 0.2) # Wells' method, dB -fn = hvac.flow_noise_straight_duct(bands, flow_velocity=10.0, area=0.04) +total = combine_duct_paths([supply, ret], label="Supply + return") +print(np.round(supply.received_level, 0)) # Long: 52 42 30 18 9 -2 -2 -1 +print(np.round(ret.received_level, 0)) # Long: 52 41 27 25 23 25 22 12 +print(np.round(total.received_level, 0)) # Long: 55 45 32 26 23 25 22 12 +print(total.meets_target) # True +print(round(float(total.rating.rating), 1)) # 26.7, governed at 63 Hz ``` -Duct end reflection loss per octave band for flush duct terminations of 150, 300 and 600 mm diameter: the reflection back up the duct grows steeply towards low frequency and shrinks with duct size, exceeding 17 dB at 63 Hz for the 150 mm duct and vanishing above 1 kHz +Every printed row comes back within the sheet's own 1 dB rounding: the +supply is 1 dB low at 4 kHz, the return 1 dB low at 500 Hz, and the +combination 1 dB low at 500 Hz and 1 dB high at 8 kHz, everything else +exact. The room lands at NC 27, comfortably inside its NC 30 target, and +the 63 Hz band is what governs the rating, which is the usual outcome of a +duct-noise design and the reason low-frequency silencer performance is +worth paying for. -*The open end of a duct reflects low-frequency energy back up the run — for -free, before any silencer: the smaller the duct against the wavelength, the -larger the loss, which is why small diffuser necks tame low-frequency fan -rumble and why the correction must not be double-counted when a manufacturer's -diffuser data already includes it.* +Octave-band levels delivered into the room by the supply and return paths of Long's worked HVAC sheet, together with their energy sum and the NC 30 criterion curve: both paths start near 52 dB at 63 Hz, the supply falls away steeply above 500 Hz to below 0 dB while the return stays flat near 23 to 25 dB, and the combined received spectrum runs a few decibels under the NC 30 curve in every band + +*The two paths and their sum against NC 30. The supply, with its silencer, +two lined runs, a branch split and six feet of flexible duct, has nothing +left above 1 kHz; the return, with a plenum but a silencer whose own +self-noise floors it near 25 dB, is what the room actually hears in the mid +and high bands. Adding low-frequency attenuation to the supply would change +nothing at all: the return already sets the answer everywhere except at +63 Hz, and that is the row to argue about.*
Show the code for this figure ```python import matplotlib.pyplot as plt -import numpy as np -from phonometry.noise_control import hvac +from phonometry import combine_duct_paths -bands = [63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0] +# `supply` and `ret` are the two DuctPathResult objects built above. -# One line for one duct: the HvacSpectrumResult of the 300 mm flush end. -er = hvac.end_reflection_loss(bands, diameter=0.30, termination="flush") -er.plot() +# One line for one path: the cascade of the supply run against NC 30. +supply.plot() plt.show() -# By hand: the family over duct diameters of the concept figure. -fig, ax = plt.subplots() -for diameter in (0.15, 0.30, 0.60): - er = hvac.end_reflection_loss(bands, diameter=diameter, termination="flush") - ax.semilogx(er.frequencies, er.values, "o-", - label=f"D = {int(diameter * 1000)} mm") -ax.set_xlabel("Frequency [Hz]"); ax.set_ylabel("End reflection loss [dB]") -ax.legend(title="Duct diameter") +# The concept figure: both paths, their energy sum and the criterion. +total = combine_duct_paths([supply, ret], label="Supply + return") +total.plot() +plt.gca().set_ylim(-6.0, 62.0) plt.show() ```
-Wells' plenum formula takes only two truly geometric inputs, the -inlet-to-outlet line of sight $r$ and the outlet area, plus the lined wall -area; `plot_plenum_geometry` draws exactly those, honouring $r$ and its -angle off the inlet axis. +`DuctPathResult` also prints and files itself. `.table()` returns the sheet +row by row with the worksheet sign convention, and `.report()` renders a +one-page PDF in the layout of the published procedures (AHRI Standard 885 +Table 8; Long Table 14.9): the element table, the cascade chart against the +criterion curve, the boxed room-criterion rating and the verdict. -Section of a plenum chamber: the inlet duct enters low on the left, the outlet mouth is marked on the right wall, the 1.2 m inlet-to-outlet line of sight is drawn as a dashed diagonal at 0.35 rad off the inlet axis, and the wall area of 6 square metres and outlet area of 0.09 square metres are annotated below +```python +for row in total.table(): + print(f"{row['kind']:<12} {row['label'][:26]:<26} " + f"{[round(float(v)) for v in row['values']]}") -*Only $r$ and its angle off the inlet axis fix the drawn box; $S_\text{out}$ -and $S_w$ enter Wells' method as bare areas, so any plenum sharing these four -numbers has the same predicted attenuation.* +total.report("duct-path.pdf") # needs phonometry[report] +``` -
-Show the code for this figure +The example fiche, regenerated with `make reports`, is kept rendered in the +repository. Click the preview to open the PDF: -```python -import matplotlib.pyplot as plt -from phonometry import plot_plenum_geometry +[![Duct-borne noise path calculation example report: a metadata header with the client, the noise source, the test environment and the date, the octave-band path table listing the fan sound power, each element attenuation as a negative level change, the self-noise rows of the elbow, the silencer and the diffuser, the room effect, the received level and the NC 30 curve, and beneath it the boxed room criterion NC-22.6 at 125 Hz with the verdict that no band exceeds NC 30 beside the cascade chart of every element against the criterion curve](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/reports/duct_path_example.webp)](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/reports/duct_path_example.pdf) -# The r, S_out and S_w that Wells' formula actually uses, drawn exactly. -plot_plenum_geometry(0.09, 1.2, 6.0, angle=0.35) -plt.show() -``` +*Duct-borne noise path fiche (`DuctPathResult.report`): the supply path of the +worked sheet element by element, rated NC-22.6 and passing NC 30 with 5 dB to +spare at 63 Hz.* -
+## 7. What reproduces, and what does not -Rectangular ducts use the equivalent diameter $D = \sqrt{4S/\pi}$. Bies 5th -ed. gives the duct end reflection only as the ASHRAE table (no closed form in -that edition); this module reproduces and interpolates it. +Long's Table 14.9 was produced by a commercial computer program, not by +hand from the tables printed alongside it, and being honest about that is +more useful than pretending otherwise. The *arithmetic* of the sheet is +reproduced exactly, as section 6 shows. Several of its **element rows**, +however, do not follow from the book's own printed data, and the functions +in this library implement the printed equations and tables. Verified band +by band: -## 2. Machine enclosures +- **The fan row does not come from Eq. 13.1.** The sheet prints + 90/86/82/79/77/75/71/61 dB. Eq. 13.1 with the Table 13.5 forward-curved + constants at 5000 cfm and 2 in w.g. gives 99/99/89/84/82/77/72/67 dB, and + the printed spectrum is not a level shift of the tabulated one, so it + comes from other data (a manufacturer's, most likely). +- **The flexible-duct row is not Table 14.4.** The sheet prints + 14/14/16/15/17/22/16/13 dB for 12 in by 6 ft; + `flexible_duct_insertion_loss` reads 3/5/10/15/17/16/9 dB out of the + table for that duct. +- **The lined rectangular ducts agree in the mid and high bands.** For the + 18 x 12 in, 6 ft, 1 in run the library returns 11/25/22/16/13 dB from + 500 Hz up, exactly the printed row, and is 1 to 2 dB high below it + (5/4/6 against 3/3/5). For the 36 x 24 in, 5 ft run it matches at 250, + 500 and 8 kHz and is 1 to 2 dB low elsewhere. +- **The split and the unlined elbow reproduce exactly.** `split_loss` gives + the 25 per cent branch as 6.0 dB against the printed -6 dB, and + `elbow_insertion_loss` gives 0/1/2/3/3/3/3/3 dB against the printed row + when the elbow is read as round (Table 14.7) at $w = 24$ in. +- **The supply diffuser row reproduces too.** `diffuser_sound_power` on a + 24 x 24 in rectangular device at 312 cfm and 0.05 in pd returns + 33.4/32.4/29.1/23.6/15.9/5.9 dB against the printed + 33/32/29/23/15/4, inside the sheet's own rounding in the five bands that + carry the level. The return grille row (30/29/26/20/12/1) does not follow + from the same equations at its 563 cfm, so it is manufacturer data. +- **The NC 30 row differs by 1 dB at 1 kHz.** Long prints + 57/48/41/35/31/29/28/27; the library's `nc_curve(30)` returns + 57/48/41/35/**32**/29/28/27, the values of ANSI/ASA S12.2-2019 Table 1. + Long is using the original Beranek 1957 curve. The difference does not + change the verdict here, but it is worth knowing which NC you are quoting. -A sealed enclosure reduces the radiated noise by its panel transmission loss -$R$, minus a penalty $C$ for the reverberant build-up inside the small, hard -cavity (Bies Eqs. (7.103), (7.111)): +None of that is a defect of the sheet. It is what a real duct-borne +calculation looks like: the elements a manufacturer publishes (fans, +silencers, diffusers, grilles) come from test data, and the elements nobody +publishes (duct runs, elbows, splits, end reflections, the room) come from +the tables. `DuctElement` takes both without caring which is which, which +is the point. -$$ -\mathrm{IL} = R - C,\qquad C = 10\log_{10}\!\left(0.3 + \frac{S_E}{R_i}\right), -$$ +## 8. The plane-wave limit -with the external area $S_E$ and the interior room constant -$R_i = S_i \alpha_i/(1-\alpha_i)$ (the same `room_constant` as the -steady-state room field). A hard interior wastes much of the panel $R$; lining -it drives $C$ toward its floor $10\log_{10}0.3 = -5.2$ dB. +Every element model above, and every four-pole silencer in +[Silencers](https://jmrplens.github.io/phonometry/devices/noise-control/silencers/), is one-dimensional. It assumes a single sound +pressure describes the whole duct cross section, which is true only below +the frequency at which the first higher-order acoustic mode cuts on. Above +it several modes propagate at once, each with its own axial wavenumber, and +a plane-wave prediction quietly stops being right. -**The panel transmission loss $R$ is supplied by the caller** — measured, or -predicted by a panel model — as a per-band array or a callable of frequency. -This module never predicts $R$ itself; it combines a given $R$ with the -interior absorption. +`noise_control.duct_modes` implements the cut-on analysis of Norton & +Karczub, *Fundamentals of Noise and Vibration Analysis for Engineers* +(2nd ed.), section 7.3: circular ducts by Eq. 7.6 with the +$\pi\alpha_{pq}$ eigenvalues of Table 7.1 that solve +$J'_p(\kappa_{pq} a_i) = 0$, rectangular ducts by Eq. 7.10, and the +mean-flow correction of Eqs. 7.8 and 7.9, in which a uniform axial flow of +Mach number $M$ lowers every cut-on frequency by $\sqrt{1 - M^2}$ and +moves the cut-on itself from $k_x = 0$ to +$k_x = -M\kappa_{pq}/\sqrt{1 - M^2}$. ```python import numpy as np -from phonometry import enclosure_insertion_loss +from phonometry import plane_wave_limit, rectangular_duct_cut_on -bands = np.array([125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0]) -panel_R = np.array([18.0, 24.0, 30.0, 36.0, 42.0, 46.0]) # measured, dB -enc = enclosure_insertion_loss(panel_R, external_area=6.0, internal_area=5.0, - internal_absorption=0.3, frequencies=bands) -print(np.round(enc.insertion_loss, 1)) # net IL = R - C per band -enc.plot() +# Norton problem 7.2: a 0.65 x 0.4 m air-conditioning duct at 15 m/s. +modes = rectangular_duct_cut_on(0.65, 0.40, flow_velocity=15.0, count=6) +print(modes.modes[:3]) # ((1, 0), (0, 1), (1, 1)) +print(np.round(modes.cut_on[:3], 1)) # [263.6 428.3 502.9] Hz +print(np.round(modes.cut_on_no_flow[:3], 1)) # [263.8 428.8 503.4] Hz +print(round(modes.plane_wave_limit, 1)) # 263.6 Hz + +IN = 0.0254 +print(round(plane_wave_limit(width=36 * IN, height=24 * IN), 1)) # 187.6 Hz +print(round(plane_wave_limit(diameter=12 * IN), 1)) # 659.5 Hz ``` -Machine-enclosure insertion loss per octave band: the measured panel sound reduction index R as a dashed line, the flat interior correction C near 5 dB for a lined interior, and the net insertion loss IL equal to R minus C tracking about 5 dB below the panel curve +Those ventilation numbers are blunt: in that duct plane waves are the whole +story only up to the 250 Hz octave, and a 36 x 24 in supply trunk gives up at +188 Hz. -*What the enclosure delivers is $R - C$, not the panel $R$: even this lined -interior (mean absorption 0.3) costs about 5 dB of the panel's rating in every -band, and a hard, unlined interior would cost far more. Budget the lining -together with the panels, not as an afterthought.* +At 15 m/s the flow correction is invisible: $M = 0.044$ gives +$\sqrt{1 - M^2} = 0.999$, which moves the first cut-on by 0.2 Hz. It earns +its place in high-speed pipework instead. Norton's problem 7.1 is that +case, a 254 mm line carrying steam ($c = 405$ m/s) at 200 m/s, $M = 0.494$, +and there the two ladders separate by more than a hundred hertz at every +rung. + +```python +import numpy as np +from phonometry import circular_duct_cut_on + +# Norton problem 7.1: a 254 mm circular duct carrying steam at 200 m/s. +steam = circular_duct_cut_on(0.254, flow_velocity=200.0, + speed_of_sound=405.0, count=6) +print(steam.modes) +# ((1, 0), (2, 0), (0, 1), (3, 0), (4, 0), (1, 1)) +print(np.round(steam.cut_on_no_flow, 1)) +# [ 934.5 1550.1 1944.7 2132.3 2698.9 2705.9] +print(np.round(steam.cut_on, 1)) +# [ 812.6 1347.9 1691.1 1854.1 2346.8 2352.9] +print(np.round(steam.axial_wavenumber, 2)) +# [ -8.23 -13.66 -17.13 -18.79 -23.78 -23.84] +``` + +Cut-on frequency of the first six higher-order acoustic modes of a 254 mm circular steam line, plotted against the mode order (1,0), (2,0), (0,1), (3,0), (4,0) and (1,1): the still-air ladder climbs from 935 Hz to 2706 Hz as a grey dashed line while the 200 m/s ladder runs 12 per cent below it from 813 Hz to 2353 Hz, and the band below the first cut-on is shaded as the plane-wave-only region + +*Norton's problem 7.1, the case where the mean flow is worth drawing: half +the speed of sound in the pipe pulls every cut-on down by +$\sqrt{1 - M^2} = 0.870$, so the first higher-order mode appears at 813 Hz +instead of 935 Hz and the plane-wave band, shaded, is 13 per cent narrower +than the still-air calculation would promise. The axial wavenumber at cut-on +is negative in every rung: with flow, the mode is already travelling upstream +at the frequency at which it appears.*
Show the code for this figure ```python import matplotlib.pyplot as plt -import numpy as np -from phonometry import enclosure_insertion_loss - -bands = np.array([125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0]) -panel_R = np.array([18.0, 24.0, 30.0, 36.0, 42.0, 46.0]) # measured, dB - -enc = enclosure_insertion_loss(panel_R, external_area=6.0, internal_area=5.0, - internal_absorption=0.3, frequencies=bands) +from phonometry import circular_duct_cut_on, rectangular_duct_cut_on -# One line — panel R, interior correction C and the net IL = R - C: -enc.plot() +# One line for one duct: the cut-on ladder with the plane-wave band shaded. +steam = circular_duct_cut_on(0.254, flow_velocity=200.0, + speed_of_sound=405.0, count=6) +steam.plot() plt.show() -# By hand, from the per-band fields the result carries: -fig, ax = plt.subplots() -ax.plot(bands, enc.panel_transmission_loss, "s--", label="Panel R") -ax.plot(bands, enc.correction, "^:", label="Interior correction C") -ax.plot(bands, enc.insertion_loss, "o-", label="Insertion loss (R - C)") -ax.set_xlabel("Frequency [Hz]"); ax.set_ylabel("Level [dB]") -ax.set_xscale("log") -ax.legend() +# The ventilation duct of problem 7.2, where the flow shift is negligible. +rectangular_duct_cut_on(0.65, 0.40, flow_velocity=15.0, count=6).plot() plt.show() ```
-`enclosure_insertion_loss` returns an `EnclosureResult` with the panel -`panel_transmission_loss`, the interior `correction`, the net `insertion_loss`, -the interior `room_constant` and `.plot()`. +Two results carry this limit for you. Every `ReactiveSilencerResult` now +reports the first cut-on of its widest cross section as +`plane_wave_limit`, and `duct_path` accepts a `section=` description of the +duct it is walking. Both raise a `PlaneWaveWarning` when the analysis grid +runs past that frequency: the numbers are still returned, and above cut-on +they describe the plane-wave mode alone, which a measurement will not. -## References +```python +import warnings +from phonometry import DuctElement, PlaneWaveWarning, duct_path -- Bies, D. A., Hansen, C. H., & Howard, C. Q. (2017). *Engineering noise - control* (5th ed.). CRC Press. - [doi:10.1201/9781351228152](https://doi.org/10.1201/9781351228152). The - HVAC duct methods (§8.11–8.17) and the machine-enclosure noise reduction - (§7.4). -- Vér, I. L., & Beranek, L. L. (2006). *Noise and vibration control - engineering* (2nd ed.). Wiley. - [doi:10.1002/9780470172568](https://doi.org/10.1002/9780470172568). The - companion treatment of ducts and enclosures. +IN = 0.0254 +bands = [63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0, 8000.0] ---- +with warnings.catch_warnings(record=True) as caught: + warnings.simplefilter("always") + duct_path(bands, [90.0] * 8, [DuctElement("Straight run", 3.0)], + section={"width": 36 * IN, "height": 24 * IN}, + flow_velocity=6.0, label="Supply") +print(caught[0].category is PlaneWaveWarning) +print(str(caught[0].message)) +# Supply: 6 of 8 frequencies are above the first duct cut-on frequency +# (188 Hz), where higher-order modes propagate and the plane-wave result +# describes the plane-wave mode only. +``` +Six of the eight octave bands of a standard duct-noise sheet sit above the +cut-on of a 36 x 24 in duct. That is not a reason to distrust the sheet: +the ASHRAE element models it is built from are *empirical*, fitted to +measurements of real ducts in which those modes were present, so they carry +the multimode behaviour inside their regression constants. The warning is +aimed at the analytical methods, the four-pole silencer algebra above all, +where the plane-wave assumption is structural rather than statistical, and +where the peaks and troughs of a computed transmission loss simply do not +survive past cut-on. - -Source: https://jmrplens.github.io/phonometry/devices/noise-control/duct-path/ +## See also -# Duct-borne noise: fan to room +- [Silencers](https://jmrplens.github.io/phonometry/devices/noise-control/silencers/): the reactive four-pole elements (expansion + chambers, Helmholtz, quarter-wave and extended-tube resonators) whose + validity ends at the same cut-on frequency. +- [Industrial noise control](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/): the rest of the + installation, the individual HVAC duct methods and machine-enclosure + insertion loss. +- [Room-noise criteria (NC / RC Mark II)](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/): the ANSI/ASA + S12.2-2019 families the received spectrum is judged against. +- [Steady-state room field](https://jmrplens.github.io/phonometry/buildings/rooms/room-image-sources/): the room constant + behind the room effect and the plenum reverberant term. +- API reference: + [`noise_control.duct_path`](https://jmrplens.github.io/phonometry/reference/api/noise_control/duct-path/), + [`noise_control.duct_modes`](https://jmrplens.github.io/phonometry/reference/api/noise_control/duct-modes/), + [`noise_control.hvac`](https://jmrplens.github.io/phonometry/reference/api/noise_control/hvac/). -Air-conditioning noise is not predicted, it is *accounted for*. You start -from the sound power the fan puts into the duct, walk down the path, and at -every element subtract what it attenuates and add back what its own airflow -regenerates. What survives to the terminal device is turned into a sound -pressure level by the room, the supply and the return paths are added -together, and the total is laid against the design criterion. If it fails, -the sheet itself tells you which element to change: the row with the small -attenuation, or the row whose self-noise is now the floor. +## References -That bookkeeping is what `noise_control.duct_path` implements, with the -element models of `noise_control.hvac` feeding it and -`noise_control.duct_modes` marking the frequency above which the whole -one-dimensional picture stops being exact. The reference throughout is -Long, *Architectural Acoustics* (2nd ed., Academic Press 2014), Chapters 13 -and 14, whose Table 14.9 is the worked sheet this guide is built around, -with the ASHRAE *HVAC Applications Handbook* Chapter 49 for the air -terminal devices and Bies, Hansen & Howard for the splitter silencers and -the plenums. The reactive four-pole silencers of -[Silencers](https://jmrplens.github.io/phonometry/devices/noise-control/silencers/) and the rest of the installation methods in -[Industrial noise control](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/) are the companion pages. +- Long, M. (2014). *Architectural acoustics* (2nd ed.). Academic Press. + ISBN 978-0-12-398258-2. + The fan sound-power model (Ch. 13, Eq. 13.1 and Tables 13.5-13.8) and the + diffuser self-noise model (Ch. 13, Eqs. 13.27-13.33), the duct + attenuation, flexible duct, split loss, end reflection, silencer + self-noise and room effect of Ch. 14, and the worked duct-borne sheet of + Table 14.9 this guide is built around. +- Bies, D. A., Hansen, C. H., & Howard, C. Q. (2017). *Engineering noise + control* (5th ed.). CRC Press. + [doi:10.1201/9781351228152](https://doi.org/10.1201/9781351228152). The + end-reflection table (§8.13), the elbow insertion loss (§8.11), the + splitter-muffler reduction to lined ducts (§8.10.5, Eq. 8.241), the + plenum chamber (§8.17) and the flow-generated noise of ducts and bends + (§8.15). +- Norton, M. P., & Karczub, D. G. (2003). *Fundamentals of noise and + vibration analysis for engineers* (2nd ed.). Cambridge University Press. + [doi:10.1017/CBO9781139163927](https://doi.org/10.1017/CBO9781139163927). + The higher-order duct modes, the cut-on frequencies of circular and + rectangular ducts and the mean-flow correction (§7.3, Eqs. 7.6-7.10). +- ASHRAE (2019). *ASHRAE handbook: HVAC applications* (SI ed.), Chapter 49, + Noise and vibration control. ASHRAE. The air terminal velocity limits + (Table 9) and the volume-damper corrections (Table 10), and the guidance + that fan sound power is best taken from manufacturer test data. +- Air-Conditioning, Heating and Refrigeration Institute. *AHRI Standard + 885: Procedure for estimating occupied space sound levels in the + application of air terminals and air outlets*. The industry row + structure of the duct-borne calculation sheet (Table 8) that + `DuctPathResult.table()` and `.report()` follow. -## 1. The sheet, and how it adds up +--- -A duct-borne calculation is a table: octave bands across the columns -(63 Hz to 8 kHz, the range the published procedures use), one block of rows -per physical element. Each block prints what the element takes out, the -running level after subtracting it, what the element puts back, and the -level leaving it. `DuctElement` carries exactly the two spectra an element -owns, and `duct_path` walks them: -```python -from phonometry import DuctElement, duct_path + +Source: https://jmrplens.github.io/phonometry/devices/noise-control/room-to-room/ -bands = [63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0, 8000.0] -fan = [90.0, 86.0, 82.0, 79.0, 77.0, 75.0, 71.0, 61.0] +# Room to room: partition, receiving room, criterion -path = duct_path( - bands, fan, - [ - DuctElement("Elbow, 36 x 24 in, unlined", - attenuation=[0, 1, 2, 3, 3, 3, 3, 3], - self_noise=[41, 39, 36, 29, 20, 6, 0, 0], code="2"), - DuctElement("Silencer, 3 ft, standard pressure drop", - attenuation=[7, 12, 16, 28, 35, 35, 28, 17], - self_noise=[49, 43, 44, 42, 42, 45, 35, 24], code="3"), - ], - source_label="Fan, centrifugal FC, 5000 cfm, 2 in w.g.", -) +A machine runs in one room, a wall separates that room from an occupied one, +and someone wants to know what the occupant hears. It is a short chain, and +every link of it is a piece the library already had: the reverberant level +the machine builds up on the source side, the transmission loss of the wall, +the absorption of the receiving room, and the criterion curve the result is +laid against. What was missing was the joint, and the joint is the one place +where the arithmetic surprises people: **the noise reduction is not the +transmission loss of the wall.** -for row in path.table(): - print(f"{row['code']:>2} {row['label'][:38]:<38} " - f"{[round(float(v)) for v in row['values']]}") -``` +`noise_control.room_to_room` is that joint, and this page walks Norton & +Karczub's worked problems through it end to end. The reference throughout is +Norton, M. P. & Karczub, D. G., *Fundamentals of Noise and Vibration +Analysis for Engineers* (2nd ed., Cambridge University Press 2003), +Chapter 4: §4.6 for the sound power models, §4.9 for the room-to-room +balance and §4.10 for the enclosure. Its problems 4.16, 4.18 and 4.21 carry +printed octave-band answers, and all three are pinned in the +[conformance report](https://jmrplens.github.io/phonometry/reference/conformance/). -Three conventions matter, and they are worth stating once because every -published sheet states them differently. +Where the *partition itself* comes from is a different question, answered by +[Panel sound insulation](https://jmrplens.github.io/phonometry/buildings/design/panel-sound-insulation/) (mass law, coincidence, +double leaves, the plateau method) or by measurement. This page takes the +transmission loss as given, exactly as a hand calculation does. -**Attenuations are positive.** Every element model in `noise_control.hvac` -returns a loss as a positive number of decibels, and the cascade subtracts -it. Printed worksheets show the same quantity as a negative level change, -so `DuctPathResult.table()` flips the sign back for the `"attenuation"` -rows: the table reads like the reference, the arithmetic does not have to. +## 1. What the balance says -**Regenerated noise adds on a power basis.** The self-noise of an element -is a sound power level in its own right, not a correction to the incoming -level, so it is combined as -$10\log_{10}(10^{L/10} + 10^{L_\text{sn}/10})$ rather than added -arithmetically. That is why the `Self-noise` row sits between the `Sum` and -the `Combined` row and never touches the attenuation. +Norton's §4.9 balances the steady-state power in the receiving room: what +crosses the partition equals what the room absorbs plus what leaks back +through the partition. Replacing intensities with mean-square pressures and +taking logarithms gives Equation (4.101), -**There is a self-noise floor.** Long's sheet uses a 0 dB sound power level -wherever an element has no regenerated-noise data, and also as a floor -under any computed level that would go negative, which is why his received -spectrum bottoms out near 0 dB instead of running off to minus infinity. -`self_noise_floor` reproduces that (default `0.0`) and `None` switches it -off entirely. +$$ +\text{NR} = \text{TL} +- 10\log_{10}\!\left[\frac{S_w}{S_2 \alpha_2 + \tau S_w}\right], +$$ -## 2. The source: fan sound power +with $\text{NR} = L_{p1} - L_{p2}$ the noise reduction between the two +reverberant fields, $\text{TL} = 10\log_{10}(1/\tau)$ the transmission loss of the +partition (the quantity UNE calls the sound reduction index $R$), $S_w$ the +area of the partition and $S_2 \alpha_2$ the equivalent absorption area of +the receiving room. -The fan is the one element whose spectrum you can build from the operating -point alone. `fan_sound_power` implements the ASHRAE scaling law printed as -Long Eq. 13.1, +Read the logarithm and the whole page follows. A **large partition into a +hard room** delivers *less* than its transmission loss: a lot of area +radiating into a room with nothing to soak it up. A **small partition into +a well-absorbing room** delivers *more*. The two rooms and the wall are not +separable, which is why quoting a wall's $R_w$ and stopping is not an +answer. -$$ -L_W = K_F + 10\log_{10}\frac{Q_F}{Q_\text{REF}} - + 10\log_{10}\frac{P_F}{P_\text{REF}} + C_\text{EFF} + C_\text{BFI}, -$$ +The $\tau S_w$ term is the power the partition itself passes back into the +source room. At any realistic transmission loss it is worth a few +hundredths of a decibel, so it is off by default and +`include_partition_transmission=True` switches it on. -with the spectral constant $K_F$ of Table 13.5 (one row per fan type), the -off-peak efficiency correction $C_\text{EFF}$ of Table 13.6 and the blade -frequency increment $C_\text{BFI}$ of Table 13.7 dropped into the single -octave band that contains the blade passing frequency. In SI the references -are $Q_\text{REF} = 0.472$ L/s and $P_\text{REF} = 249$ Pa, so the two -logarithmic terms take the same values as the foot-pound form in cfm and -inches of water gauge. +## 2. Three partitions, one receiving room + +Norton's problem 4.21 (printed pp. 586-587) is the comparison the equation +was made for: two 13 mm gypsum wallboards with a 64 mm air gap, a 125 mm +plastered brick wall and a double brick wall with a 50 mm cavity, all +speaking into the same 8 m x 9 m x 3 m receiving room through the same +8 m x 3 m opening. ```python +import numpy as np from phonometry import ( - blade_passing_frequency, fan_casing_attenuation, - fan_efficiency_correction, fan_sound_power, + SourceRoom, equivalent_absorption_area, room_to_room_transmission, ) -CFM, IN_WG = 0.0004719474432, 249.0 +bands = [125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0] -fan = fan_sound_power(volume_flow=5000 * CFM, static_pressure=2 * IN_WG, - fan_type="forward_curved", relative_efficiency=80.0) -print([round(float(v)) for v in fan.values]) -# [99, 99, 89, 84, 82, 77, 72, 67] +# Receiving room 8 x 9 x 3 m: walls 102 m2, floor and ceiling 72 m2 each. +receiving = equivalent_absorption_area([ + (102.0, [0.04, 0.04, 0.09, 0.15, 0.17, 0.23]), # walls + (72.0, [0.02, 0.06, 0.14, 0.37, 0.60, 0.66]), # floor + (72.0, [0.30, 0.20, 0.15, 0.05, 0.05, 0.05]), # ceiling +]) +print(np.round(receiving, 1)) +# [27.1 22.8 30.1 45.5 64.1 74.6] m2, band by band -print(fan_efficiency_correction(80.0)) # 6.0 dB off the peak -print(blade_passing_frequency(1200.0, 24)) # 480.0 Hz, in the 500 Hz band -print(fan_casing_attenuation().values) # what the housing holds back -# [ 0. 0. 5. 10. 15. 20. 22. 25.] -fan.plot() # the band spectrum, one line +partitions = { + "Two 13 mm wallboards, 64 mm gap": [18, 27, 37, 45, 43, 39], + "125 mm plastered brick": [36, 36, 40, 46, 54, 57], + "Double brick, 50 mm cavity": [37, 41, 48, 60, 61, 61], +} +for name, tl in partitions.items(): + res = room_to_room_transmission( + bands, tl, 8.0 * 3.0, receiving, + source=SourceRoom(level=90.0), label=name, + ) + print(f"{name:32s} {np.round(res.noise_reduction, 1)}") +# Two 13 mm wallboards, 64 mm gap [18.5 26.8 38. 47.8 47.3 43.9] +# 125 mm plastered brick [36.5 35.8 41. 48.8 58.3 61.9] +# Double brick, 50 mm cavity [37.5 40.8 49. 62.8 65.3 65.9] ``` -Two habits keep this honest. The law assumes ideal inlet and outlet flow -conditions, so a fan boxed into a plant room with a bad inlet is louder -than it says; and ASHRAE's own current guidance is that a fan's sound power -"is best obtained from manufacturers' test data" to AMCA Standard 300 or -ASHRAE Standard 68. Treat Eq. 13.1 as the early-design fallback, not as the -answer. The fan radiates the same power from its intake and from its -discharge, which is why the supply and return paths of a real sheet start -from the *same* row. +Those are Norton's printed answers to the tenth of a decibel. Look at what +the receiving room did to them. At 125 Hz the room absorbs 27.1 m² against a +24 m² partition, so every wall delivers half a decibel *more* than its +transmission loss. At 250 Hz the ceiling has stopped absorbing and the floor +has not started, the room is down to 22.8 m², and every wall now delivers +0.2 dB *less*. By 4 kHz the carpet and the walls together give 74.6 m² and +the same brick wall is worth 4.9 dB more than its transmission loss. The +same three walls, ranked the same way, but the numbers a specification would +quote move by more than 5 dB depending on a room the wall never touches. -`fan_efficiency_correction` is a step function, and a brutal one: a fan -running at 90 per cent of its peak static efficiency adds nothing, one at -80 per cent adds 6 dB, one below 50 per cent adds 16 dB. Selecting a fan -away from its best point is the cheapest way to lose a duct-noise budget -before any silencer is priced. `fan_casing_attenuation` (Table 13.8) is the -other side of the same source: the power the housing radiates into the -plant room instead of into the duct, zero at 63 and 125 Hz because a -vibrating casing radiates low frequency as freely as the unhoused fan. +## 3. The chain, end to end -## 3. What the run takes out +Problem 4.18 (printed pp. 585-586) is the whole calculation, and it starts +one step earlier: the source-room level is not given, only the blower's +free-field sound power level. Two decisions turn that into $L_{p1}$, and both +are Norton's. -Everything between the fan and the room removes something, and most of it -is free. The models are Long Chapter 14 with the Reynolds (1990) -regressions, and they all return an `HvacSpectrumResult` with `.values`, -`.plot()` and `.report()`. +**The reverberant field is what drives the partition.** The receiver of +interest is the wall, not a point beside the machine, so the level that +matters is $L_{p1} = L_W + 10\log_{10}(4/R_1)$. That is `steady_state_spl` with +`distance=None`, the $r \to \infty$ limit of the same Bies Equation (6.43) +the library has always used for a receiver at a distance. -**Straight ducts.** An unlined rectangular duct loses energy into the -induced motion of its own walls, so the loss grows with the -perimeter-to-area ratio: a wide shallow duct has floppier side walls than a -square one. `unlined_rectangular_duct_attenuation` fits that below 250 Hz -and holds a flat rate above it; an external fibreglass blanket -(`wrapped=True`) doubles the low-frequency part. A circular duct is far -stiffer in its breathing mode, so it hardly responds at all, and -`unlined_circular_duct_attenuation` is a bare length rate of 0.03 to -0.07 dB/ft. Lining the duct changes the order of magnitude: -`lined_rectangular_duct_attenuation` and -`lined_circular_duct_attenuation` evaluate the Reynolds regressions, valid -for 25 mm to 52 mm linings and clipped at 40 dB per run because flanking -takes over beyond that. +**The problem asks for a conservative estimate, and conservative has a +meaning.** The blower sits on the floor along the middle of a wall, in the +intersection of two large flat surfaces, so $Q = 4$. Norton's §4.6 +Table 4.5 lists three sound power models: a *constant-power* source radiates +the same $\Pi_0$ wherever it stands, a *constant-volume* source is loaded by +the nearby boundaries and radiates $\Pi_0 Q$, and a *constant-pressure* +source, a theoretical floor, radiates $\Pi_0 / Q$. Real machines sit between +the first two whenever they are closer to the boundary than a wavelength, +and the constant-volume model is the upper bound. Here it is worth +$10\log_{10} 4 = 6.02\ \text{dB}$, and without it the printed answers come out +6 dB low. ```python from phonometry import ( - lined_rectangular_duct_attenuation, unlined_rectangular_duct_attenuation, + DesignCriterion, SourceRoom, equivalent_absorption_area, mean_absorption, + room_constant, room_to_room_transmission, ) -import numpy as np - -IN, FT = 0.0254, 0.3048 -bands = [63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0, 8000.0] -bare = unlined_rectangular_duct_attenuation(bands, 36 * IN, 24 * IN, 5 * FT) -lined = lined_rectangular_duct_attenuation(bands, 36 * IN, 24 * IN, 5 * FT, - 1 * IN, include_unlined=True) -print(np.round(bare.values, 1)) # [1.1 0.7 0.5 0.2 0.2 0.2 0.2 0.2] -print(np.round(lined.values, 1)) # [ 1.3 1.3 2.5 6.7 12.8 10.6 9.7 9. ] -``` +bands = [125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0] +ceiling = [0.07, 0.20, 0.40, 0.52, 0.60, 0.67] # absorbent ceiling +walls = [0.03, 0.03, 0.03, 0.04, 0.05, 0.07] # both rooms -The `include_unlined=True` switch is not cosmetic. The lined-duct -regression was fitted to an *insertion loss*, measured by substituting the -lined section for an unlined one of the same face size, so the side-wall -contribution has been subtracted out of it; Long recommends adding it back -for rectangular ducts, and ignoring it for circular ones where it is -negligible. +# Plant room 8 x 10 x 3 m: bare floor, absorbent ceiling, 108 m2 of wall. +plant = [(80.0, [0.01, 0.01, 0.015, 0.02, 0.02, 0.02]), + (80.0, ceiling), (108.0, walls)] -**Flexible duct.** The last run of a supply branch is usually flexible -duct, and its published insertion loss is startling: 2 to 3 dB per foot in -the mid bands. `flexible_duct_insertion_loss` interpolates ASHRAE -Table 14.4 over length and log diameter. Part of that number is the duct's -own breakout rather than dissipation, which is exactly why a serpentine run -of flexible duct in a joist space works as an improvised silencer. +# Operator room 5 x 5 x 3 m: carpet, same ceiling and walls. +operator = [(25.0, [0.08, 0.24, 0.57, 0.69, 0.71, 0.73]), + (25.0, ceiling), (60.0, walls)] -**Elbows and splits.** `elbow_insertion_loss` is keyed by $W/\lambda$ and -covers square and round bends, vaned and unvaned, lined and unlined; a -lined square bend is worth 10 to 11 dB where a round one gives 3. -`split_loss` handles a duct division: the power is shared between the -branches in proportion to their areas, plus a reflection when the total -branch area does not match the feeder, and a 25 per cent branch therefore -costs 6 dB. +chain = room_to_room_transmission( + bands, + [39.0, 42.0, 50.0, 58.0, 63.0, 67.0], # TL of the separating wall + 5.0 * 3.0, # the wall is 5 m x 3 m + equivalent_absorption_area(operator), + source=SourceRoom( + power_level=[105.0, 103.0, 98.0, 108.0, 107.0, 109.0], + room_constant=room_constant(268.0, mean_absorption(plant)), + directivity=4.0, # floor-wall intersection + model="constant_volume", # the conservative bound + ), + criterion=DesignCriterion(target=45.0), + label="Plant room to operator room", +) -```python -from phonometry import elbow_insertion_loss, split_loss +for row in chain.table(): + print(f"{row['label']:<28} " + f"{[round(float(v), 1) for v in row['values']]}") +``` -IN = 0.0254 -area = 36 * IN * 24 * IN -print(round(split_loss(area, [0.25 * area, 0.75 * area], branch=0), 1)) # 6.0 -print(elbow_insertion_loss( - [63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0, 8000.0], - 24 * IN, bend_type="round").values) # [0. 1. 2. 3. 3. 3. 3. 3.] +```text +Source sound power level [105.0, 103.0, 98.0, 108.0, 107.0, 109.0] +Source room level [107.0, 101.7, 93.8, 102.4, 100.6, 101.9] +Partition transmission loss [39.0, 42.0, 50.0, 58.0, 63.0, 67.0] +Receiving-room absorption [5.5, 12.8, 26.1, 32.6, 35.8, 39.2] +Noise reduction [34.7, 41.3, 52.4, 61.4, 66.8, 71.2] +Receiving room level [72.4, 60.4, 41.4, 41.0, 33.9, 30.7] +NC 45 [60.0, 54.0, 49.0, 46.0, 44.0, 43.0] +Required transmission loss [51.4, 48.4, 42.4, 53.0, 52.9, 54.7] ``` -**End reflection.** An open duct end reflects low frequency back up the -run, for free, before any silencer. `end_reflection_loss` offers both -published methods and neither replaces the other: `method="bies"` (the -default) interpolates the ASHRAE table of Bies Table 8.14, and -`method="long"` evaluates Reynolds' closed form +Norton's printed answer is 72.3 / 60.4 / 41.4 / 41.0 / 33.8 / 30.7 dB, which +this reproduces to a tenth. Two rows are worth staring at. The **noise +reduction climbs from 34.7 dB to 71.2 dB** while the transmission loss only +climbs from 39 to 67, because the operator room's absorption grows seven +fold across the range while the wall is fixed at 15 m²; the little room does +half the work at high frequency and none at all at 125 Hz. And the +**required transmission loss row is not monotone**: the wall needs 51.4 dB +at 125 Hz where it has 39, and 42.4 dB at 500 Hz where it already has 50. A +low-frequency problem, in a wall that is over-specified in the middle. -$$ -R = 10\log_{10}\!\left[1 + \left(\frac{a\,c}{\pi f d}\right)^{1.88}\right], -$$ +Octave-band chart of Norton's plant-room problem from 125 Hz to 4 kHz: the source-room level runs from 107 dB down to 94 dB at 500 Hz and back to 102 dB, the receiving-room level falls steadily from 72 dB to 31 dB and crosses the NC 45 curve between 250 and 500 Hz, and on the right axis the transmission loss of the wall rises from 39 to 67 dB while the noise reduction it delivers rises from 35 to 71 dB, crossing the transmission loss between 250 and 500 Hz -with $a = 0.8$ for a flush termination and $a = 1$ for a free one. The two -agree within a decibel or so over the bands both cover. Use -`equivalent_diameter(area)` for a rectangular duct, and do not apply the -correction at all when the duct terminates in a diffuser: the flare smooths -the impedance transition, and a manufacturer's diffuser rating already -contains whatever is left of it. +*The chain of problem 4.18. The receiving-room spectrum crosses the NC 45 +curve between 250 and 500 Hz, so the two low bands are the whole problem. +The right axis is the point of Equation (4.101): the noise reduction the +wall delivers starts 4 dB below its transmission loss and ends 4 dB above +it, and the crossing is where the operator room's absorption grows past the +15 m² of the wall.* + +
+Show the code for this figure ```python -from phonometry import end_reflection_loss, equivalent_diameter -import numpy as np +import matplotlib.pyplot as plt -bands = [63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0] -print(np.round(end_reflection_loss(bands, 0.30, method="bies").values, 1)) -# [12. 7. 3. 1. 0. 0.] -print(np.round(end_reflection_loss(bands, 0.30, method="long").values, 1)) -# [12.7 7.7 3.7 1.3 0.4 0.1] -print(round(equivalent_diameter(0.36 * 0.24), 3)) # 0.332 m +# `chain` is the RoomToRoomResult built above. + +# One line: both reverberant spectra, the criterion curve and the noise +# reduction against the transmission loss on the twin axis. +chain.plot() +plt.show() + +# By hand, from the per-band fields the result carries: +fig, ax = plt.subplots() +ax.semilogx(chain.frequencies, chain.source_level, "s--", label="Source room") +ax.semilogx(chain.frequencies, chain.received_level, "o-", label="Receiving room") +ax.semilogx(chain.frequencies, chain.criterion_curve, ":", label="NC 45") +twin = ax.twinx() +twin.plot(chain.frequencies, chain.transmission_loss, "--", label="TL") +twin.plot(chain.frequencies, chain.noise_reduction, "-.", label="NR") +plt.show() ``` -**Silencers and plenums.** A parallel-splitter attenuator reduces, in Bies -§8.10.5, to a set of lined ducts whose liner thickness is half the splitter -thickness, combined by the energy average of Eq. 8.241 so that the leakiest -airway dominates. `plenum_attenuation` is Wells' method for a lined plenum -chamber (Bies Eq. (8.275)), whose reverberant term uses the plenum -[room constant](https://jmrplens.github.io/phonometry/buildings/rooms/room-image-sources/). +
+ +## 4. The verdict, and the number to specify + +The result rates itself. `.rating` is the ANSI/ASA S12.2-2019 rating of the +received spectrum, `.criterion_curve` is the design curve sampled at the +analysis bands, `.exceedance` is the band-by-band excess and +`.meets_target` is the plain verdict a design sheet writes down. +`.required_transmission_loss` is Equation (4.101) solved for $\text{TL}$, +which is the number that goes into a specification. ```python -from phonometry import plenum_attenuation, splitter_silencer_insertion_loss -import numpy as np +print(chain.meets_target) # False +print(round(chain.rating.rating, 1)) # 61.7, governed by 125 Hz +print([round(float(v), 1) for v in chain.exceedance]) +# [12.4, 6.4, -7.6, -5.0, -10.1, -12.3] -IN, FT = 0.0254, 0.3048 -sil = splitter_silencer_insertion_loss( - None, height=24 * IN, length=5 * FT, - airway_widths=[0.10] * 5, splitter_thickness=0.10, -) -print(np.round(sil.values, 1)) -# [ 5.8 8.6 14.1 28.2 34.5 33.5 18.4 12.1] -print(round(plenum_attenuation(0.36, 2.4, 74.0, 0.5), 1)) # 16.1 dB +deficit = chain.required_transmission_loss - chain.transmission_loss +print([round(float(v), 1) for v in deficit]) +# [12.4, 6.4, -7.6, -5.0, -10.1, -12.3] ``` -Read that estimate for what it is. The 5 ft unit Long's return path -actually specifies is a low-frequency design worth 16 and 21 dB at 63 and -125 Hz, where this geometry-only model gives 6 and 9. Published dynamic -insertion loss from the manufacturer, measured with the design airflow and -in the design direction, is what belongs in the sheet; the model is for -sizing the airway before there is a manufacturer. +The deficit and the exceedance are the same six numbers, which is the whole +content of the chain: a decibel too much in the room is a decibel too little +in the wall. Whether that low-frequency deficit is worth chasing with mass, +a cavity or a second leaf is what +[Panel sound insulation](https://jmrplens.github.io/phonometry/buildings/design/panel-sound-insulation/) is for. -## 4. What the system puts back +The verdict is deliberately the band-by-band test, not the rating. A +spectrum can rate NC-38 and still poke through the NC 45 curve in one band, +because the standard's two-step designation procedure and a design sheet's +"no band above the curve" are different questions. -Attenuation is only half the sheet. Every disturbance of the airflow -generates noise of its own, and past a certain velocity the silencer bought -to remove the fan becomes the loudest thing in the duct. +## 5. An enclosure against a criterion -`silencer_self_noise` is Fry's estimate as Long Eq. 14.31, +Problem 4.16 (printed pp. 584-585) asks the same question about an +enclosure instead of a partition: a refrigeration compressor makes a +reverberant level in its room, the technician needs that level down to an +NC-45 curve, and the enclosure walls have to make up the difference. Norton +derives the enclosure equation from the same power balance as §4.9 and gets +Equation (4.115), $$ -L_W = 55\log_{10}\frac{V}{V_0} + 10\log_{10} N - + 10\log_{10}\frac{H}{H_0} - 45, +\text{IL} = \text{TL} - 10\log_{10}(S_E / R_i), $$ -spread over the octave bands by the corrections of Table 14.8. The exponent -is the whole message: the fifth-and-a-half power of the airway velocity -means that *doubling the face velocity of a silencer adds about 17 dB*. +with $S_E$ the external radiating area and $R_i$ the room constant of the +enclosure interior, machine surface included. Solved for the panels, +$\text{TL} = \text{IL} + 10\log_{10}(S_E / R_i)$, which is +`enclosure_required_transmission_loss`. ```python -from phonometry import silencer_self_noise import numpy as np +from phonometry import enclosure_required_transmission_loss, mean_absorption -IN = 0.0254 -slow = silencer_self_noise(None, airway_velocity=10.0, passages=5, - height=24 * IN) -fast = silencer_self_noise(None, airway_velocity=20.0, passages=5, - height=24 * IN) -print(np.round(slow.values, 1)) -# [40.8 40.8 38.8 36.8 31.8 26.8 21.8 16.8] -print(round(float(fast.values[0] - slow.values[0]), 1)) # 16.6 dB -``` - -Straight duct and bends regenerate too, through -`flow_noise_straight_duct` and `flow_noise_bend` (VDI 2081 as Bies -Eqs. (8.251) and (8.254)); the bend model carries the Strouhal-number -transition from the sixth-power inner-corner dipole to the eighth-power -outer-corner quadrupole. +bands = [63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0, 8000.0] +wool = [0.10, 0.20, 0.45, 0.65, 0.75, 0.80, 0.80, 0.80] # 50 mm blanket +concrete = [0.01, 0.01, 0.01, 0.02, 0.02, 0.02, 0.03, 0.03] -The terminal device is the last one in the path and the one nothing -downstream can fix, because there is no ductwork left after it. Its sound -power is normally manufacturer data measured to ASHRAE Standard 70, and -that is what a real sheet uses. When there is none to hand, -`diffuser_sound_power` is Reynolds's estimate as Long Eqs. 13.27 to 13.33: -an overall level -$L_W = 10\log_{10} S_G + 30\log_{10}\xi + 60\log_{10} U_G - 31.3$ from the -face area, the approach velocity $U_G = Q/S_G$ and the normalised -pressure-drop coefficient $\xi$, spread over the octaves by the shape -function $C_D = -11.82 - 0.15 A - 1.13 A^2$ ($-5.82$ for a round device) -about the peak band $f_P = 48.8\,U_G$. +lp1 = np.array([72.0, 79.0, 81.0, 84.0, 83.0, 81.0, 80.0, 75.0]) # unenclosed +nc45 = np.array([67.0, 60.0, 54.0, 49.0, 46.0, 44.0, 43.0, 41.0]) # target -```python -from phonometry import diffuser_sound_power -import numpy as np +# Enclosure 2.5 x 3.5 x 2.5 m on the concrete floor: the walls and roof +# radiate (38.75 m2) and their inner faces carry the lining. The rest of the +# interior is the uncovered floor plus the five exposed faces of the +# 1.5 x 2.5 x 1.5 m machine, both with the absorption of concrete. +radiating = 2 * (2.5 * 2.5) + 2 * (3.5 * 2.5) + 2.5 * 3.5 +machine = 2 * (1.5 * 1.5) + 2 * (2.5 * 1.5) + 1.5 * 2.5 +bare_floor = 2.5 * 3.5 - 1.5 * 2.5 -IN, CFM, IN_WG = 0.0254, 0.0004719474432, 249.0 +required = enclosure_required_transmission_loss( + lp1 - nc45, + radiating, + radiating + bare_floor + machine, + mean_absorption([(radiating, wool), (bare_floor + machine, concrete)]), + frequencies=bands, + model="norton", +) +print(np.round(required.panel_transmission_loss, 1)) +# [14.5 25.3 28.9 34.4 35.2 34.7 34.6 31.6] +``` -# The supply diffuser of Long's worked sheet: 24 x 24 in, 312 cfm, 0.05 in pd. -print(np.round(diffuser_sound_power(None, (24 * IN) ** 2, - volume_flow=312 * CFM, - pressure_drop=0.05 * IN_WG).values, 1)) -# [ 33.4 32.4 29.1 23.6 15.9 5.9 -6.4 -21. ] -# Long Table 14.9 prints 33/32/29/23/15/4/0/0 for that row. -``` +Norton's printed answer is 14.4 / 25.2 / 28.9 / 34.4 / 35.2 / 34.7 / 34.7 / +31.6 dB, matched to 0.11 dB, which is the resolution of his own one-decimal +rounding. The shape is the useful part: **the requirement peaks at 1 kHz and +falls away at both ends**, because at 63 Hz the mineral wool absorbs almost +nothing and the level to lose is only 5 dB, while at 8 kHz the compressor +has quietened down. A panel chosen for its 500 Hz to 2 kHz figure is the +right panel here. -The sixth power of velocity in Eq. 13.27 is the design rule: about 18 dB -per doubling of the approach velocity once the pressure drop follows it, -and about 15 dB back for every doubling of face area at the same air -volume. Two screening rules from ASHRAE Chapter 49 come with it. -`air_terminal_velocity_limit` (Table 9) gives the maximum neck velocity for -a design RC, and `air_terminal_damper_correction` (Table 10) gives the -penalty for throttling a balancing damper, which is where a great many -finished installations fail. +Two footnotes on that snippet, both about being faithful to the source. +`model="norton"` matters: the library's default enclosure model is Bies, +Hansen & Howard's Equation (7.111), which carries a $0.3$ inside the +logarithm and so floors the insertion loss of a fully lined enclosure at +$\text{TL} + 5.2\ \text{dB}$. Norton's Equation (4.115) has no such floor. +The two agree +within a few tenths while the interior is hard and diverge once the lining +takes over, and reproducing a published answer means using the model its +author used. `ENCLOSURE_MODELS` lists both. -```python -from phonometry import air_terminal_damper_correction, air_terminal_velocity_limit +And the NC-45 column is Norton's own, taken from his problem statement. It +reads 41 dB in the 8 kHz band where ANSI/ASA S12.2-2019 Table 1 (which +`nc_curve` implements) reads 42 dB; they agree in every other band. Using +the printed column keeps the oracle the published one. -print(air_terminal_velocity_limit(30, opening="supply")) # 2.2 m/s -print(air_terminal_velocity_limit(30, opening="return")) # 2.5 m/s -print(air_terminal_damper_correction(3.0, location="diffuser_neck")) # 15.0 dB -print(air_terminal_damper_correction(3.0, location="supply_duct")) # 2.0 dB -``` +## 6. What the prediction does not know -Fifteen decibels in the neck against two decibels 1.5 m back in the duct, -for the same pressure ratio, is the entire design rule: throttle far from -the outlet, or balance the system by sizing the ductwork instead. +Norton's answer to problem 4.21 ends with the caveat that matters more than +any of the arithmetic above: the measured noise reduction runs below the +prediction because of **flanking transmission through mechanical connections +and air leaks**. A ceiling void carried over the partition, a service +penetration, a door undercut, or the wall simply not reaching the structural +slab, and the equation's answer becomes an upper bound. -## 5. From sound power to room level +The clip below draws what the equation leaves out. The chain of section 3 +prices the direct path only, the **Dd** route through the partition; the +other three pulses leave the source room over the flanking walls, floor or +ceiling — **Ff** flank to flank, **Fd** flank to partition, **Df** partition +to flank — and re-radiate on the far side without ever passing through the +transmission loss the calculation used. Each path shrinks at every element +and junction it crosses, which is why no single one has to be large for the +sum of the three to dominate a good partition. -The last step converts the sound power arriving at the terminal device into -a sound pressure level where somebody is sitting, through the steady-state -room relation -$L_p = L_W + 10\log_{10}\left[Q/(4\pi r^2) + 4/R\right]$. `room_effect` -returns that as a positive attenuation so it drops into the cascade beside -every other loss, with $Q = 2$ by default for a diffuser flush in a -ceiling. +Animation: energy pulses leaving the source room over the direct Dd path and the flanking Ff, Fd and Df paths, shrinking at each element and junction, every path label lighting up as its pulse re-radiates into the receiving room -```python -from phonometry import room_constant, room_effect +[Watch the high-resolution video (WebM)](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/anim_flanking_paths.webm) -# The 20 x 20 x 8 ft room of Long's worked sheet, drywall and carpet. -area = 2 * 6.10 * 6.10 + 4 * 6.10 * 2.44 # 134.0 m2 -r_const = room_constant(area, 0.15) # 23.6 m2 -print(round(float(room_effect(1.83, r_const, directivity=2.0)), 1)) # 6.6 dB +`DesignCriterion.flanking_penalty` is the explicit debit for that, in +decibels off the +predicted noise reduction. It is not a model, it is a place to record the +allowance and have it show up in `.table()` and in the required +transmission loss rather than get lost: + +```python +# The chain of section 3 again, with 3 dB allowed for flanking and leaks. +honest = room_to_room_transmission( + bands, [39.0, 42.0, 50.0, 58.0, 63.0, 67.0], 15.0, + equivalent_absorption_area(operator), + source=SourceRoom(level=chain.source_level), + criterion=DesignCriterion(target=45.0, flanking_penalty=3.0), +) +print(np.round(honest.received_level, 1)) +# [75.4 63.4 44.4 44. 36.9 33.7] every band 3 dB worse ``` -Long's sheet prints 5 to 7 dB for that room across the bands, so a single -mean absorption of 0.15 lands in the right place; a per-band absorption -gives a per-band room effect, which is what the carpet actually does. +Where the flanking paths *are* modelled rather than allowed for, the +prediction models of EN 12354 are the right tool, and those live in +[Building sound insulation prediction](https://jmrplens.github.io/phonometry/buildings/design/insulation-prediction/) and +[Flanking transmission](https://jmrplens.github.io/phonometry/buildings/insulation/flanking-lab/). -Pass `target=` and `criterion=` to `duct_path` and the result rates itself. -`criterion_curve` samples the NC or RC curve at the analysis bands, -`exceedance` is the band-by-band excess over it, `meets_target` is the -band-by-band verdict a design sheet applies, and `rating` is the full -`NCResult` or `RCResult` derived by the ANSI/ASA S12.2-2019 procedure, -which is a different question and can differ from the tangency verdict. +The other assumption is diffusivity. Equation (4.101) is a diffuse-field +balance in both rooms, so it has nothing to say below each room's Schroeder +frequency (`schroeder_frequency`), where discrete modes rule. The 5 m x 5 m +x 3 m operator room above, 75 m3, has for a +half-second reverberation time a Schroeder frequency of 163 Hz, which is +exactly why the 125 Hz band of problem 4.18 - the band that governs the +whole answer - should be read as an estimate and not as a number. -## 6. The worked example: Long's Table 14.9 +## References -Long's Chapter 14 closes with a complete sheet: a 5000 cfm forward-curved -fan at 2 in w.g., feeding one room through a supply path (elbow, silencer, -lined duct, a 25 per cent branch split, a second lined duct, flexible duct, -a rectangular diffuser) and a return path (elbow, low-frequency silencer, -lined elbow, plenum, grille), each ending in the room effect of a -20 x 20 x 8 ft carpeted office, combined and checked against NC 30. Every -row below is the one Long prints, including the manufacturer data for the -silencers and the terminal devices, which is what a real sheet uses. +- Norton, M. P., & Karczub, D. G. (2003). *Fundamentals of noise and + vibration analysis for engineers* (2nd ed.). Cambridge University Press. + [doi:10.1017/CBO9781139163927](https://doi.org/10.1017/CBO9781139163927). + The sound power models of §4.6 (Table 4.5, Eqs. 4.53-4.56), the + room-to-room balance of §4.9 (Eqs. 4.92-4.101), the enclosure design + equation of §4.10 (Eqs. 4.102-4.115), and the worked problems 4.16, 4.18 + and 4.21 with their printed octave-band answers, which this guide is built + around. +- Bies, D. A., Hansen, C. H., & Howard, C. Q. (2017). *Engineering noise + control* (5th ed.). CRC Press. + [doi:10.1201/9781351228152](https://doi.org/10.1201/9781351228152). The + steady-state room relations (§6.4, Eqs. 6.43-6.44) behind + `steady_state_spl` and `room_constant`, and the enclosure insertion loss + of §7.4.2 (Eqs. 7.103, 7.111) that is the library's default enclosure + model. +- ANSI/ASA S12.2-2019. *Criteria for evaluating room noise*. The NC curves + of Table 1 and the RC Mark II family of Annex D that the chain is rated + against. +- Kuttruff, H. (2016). *Room acoustics* (6th ed.). CRC Press. The Schroeder + frequency (Eq. 3.44) that bounds the diffuse-field assumption from below. -```python -import numpy as np -from phonometry import DuctElement, combine_duct_paths, duct_path +--- -bands = [63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0, 8000.0] -fan = [90.0, 86.0, 82.0, 79.0, 77.0, 75.0, 71.0, 61.0] -source = "Fan, centrifugal FC, 5000 cfm, 2 in w.g." -supply = duct_path( - bands, fan, - [ - DuctElement("Elbow, 36 x 24 in, unlined", [0, 1, 2, 3, 3, 3, 3, 3], - [41, 39, 36, 29, 20, 6, 0, 0], code="2"), - DuctElement("Silencer, 3 ft, standard pressure drop", - [7, 12, 16, 28, 35, 35, 28, 17], - [49, 43, 44, 42, 42, 45, 35, 24], code="3"), - DuctElement("Duct, 36 x 24 in, 5 ft, 1 in lining", - [2, 2, 3, 7, 15, 12, 11, 9], code="4"), - DuctElement("Split, 25 per cent", 6.0, code="5"), - DuctElement("Duct, 18 x 12 in, 6 ft, 1 in lining", - [3, 3, 5, 11, 25, 22, 16, 13], code="6"), - DuctElement("Flexible duct, 12 in, 6 ft", - [14, 14, 16, 15, 17, 22, 16, 13], code="7"), - DuctElement("Rectangular diffuser, 312 cfm", None, - [33, 32, 29, 23, 15, 4, 0, 0], code="8"), - ], - room_effect=[6, 6, 5, 5, 6, 7, 6, 6], - source_label=source, target=30.0, label="Supply", -) + +Source: https://jmrplens.github.io/phonometry/devices/noise-control/silencers/ -ret = duct_path( - bands, fan, - [ - DuctElement("Elbow, 36 x 24 in, unlined", [0, 1, 2, 3, 3, 3, 3, 3], - [43, 42, 39, 33, 24, 12, 0, 0], code="2"), - DuctElement("Silencer, 5 ft, low-frequency type", - [16, 21, 35, 41, 41, 28, 21, 15], - [51, 49, 53, 56, 56, 59, 60, 53], code="3"), - DuctElement("Elbow, 36 x 24 in, lined, 1 in", [1, 2, 3, 4, 5, 6, 8, 10], - [39, 38, 34, 28, 18, 4, 0, 0], code="4"), - DuctElement("Plenum, 800 sq ft, 50 per cent lined", - [12, 13, 19, 20, 20, 20, 21, 21], code="5"), - DuctElement("Rectangular grille, 24 x 24 in, 563 cfm", None, - [30, 29, 26, 20, 12, 1, 0, 0], code="6"), - ], - room_effect=[9, 8, 6, 8, 8, 8, 9, 10], - source_label=source, target=30.0, label="Return", -) +# Silencers -total = combine_duct_paths([supply, ret], label="Supply + return") -print(np.round(supply.received_level, 0)) # Long: 52 42 30 18 9 -2 -2 -1 -print(np.round(ret.received_level, 0)) # Long: 52 41 27 25 23 25 22 12 -print(np.round(total.received_level, 0)) # Long: 55 45 32 26 23 25 22 12 -print(total.meets_target) # True -print(round(float(total.rating.rating), 1)) # 26.7, governed at 63 Hz -``` +A silencer earns its keep in a duct: between an engine and its tailpipe, +between a fan and the room it serves. Two working principles divide the +field. A **reactive** silencer attenuates by *reflecting* sound with +impedance discontinuities (chambers, side branches) and dominates at low +frequency, where a tone from a firing engine or a fan blade passage can be +targeted exactly; a **dissipative** silencer *absorbs* sound in a porous +lining and dominates broadband, at mid and high frequency. This guide +covers the reactive family phonometry implements with the engineering +theory of Bies, Hansen & Howard and Munjal's transfer-matrix formulation: +the four-pole method, the closed-form expansion chamber, the Helmholtz, +quarter-wave and extended-tube resonators, the independent FDTD +cross-check, and the design trade-offs against dissipative linings. The +rest of the installation, HVAC duct attenuation, flow noise and machine +enclosures, lives in [Industrial noise control](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/). -Every printed row comes back within the sheet's own 1 dB rounding: the -supply is 1 dB low at 4 kHz, the return 1 dB low at 500 Hz, and the -combination 1 dB low at 500 Hz and 1 dB high at 8 kHz, everything else -exact. The room lands at NC 27, comfortably inside its NC 30 target, and -the 63 Hz band is what governs the rating, which is the usual outcome of a -duct-noise design and the reason low-frequency silencer performance is -worth paying for. +## 1. Reactive silencers (four-pole method) -Octave-band levels delivered into the room by the supply and return paths of Long's worked HVAC sheet, together with their energy sum and the NC 30 criterion curve: both paths start near 52 dB at 63 Hz, the supply falls away steeply above 500 Hz to below 0 dB while the return stays flat near 23 to 25 dB, and the combined received spectrum runs a few decibels under the NC 30 curve in every band +A reactive silencer attenuates by *reflecting* sound with impedance +discontinuities. Each acoustic element is a 2×2 **transfer (four-pole) +matrix** relating the sound pressure $p$ and the volume velocity $Su$ at its +two ends (Bies Eq. (8.133); Munjal, *Acoustics of Ducts and Mufflers*), and a +compound silencer is the ordered matrix product of its elements. A straight +duct of length $L$ and area $S$ is (Bies Eq. (8.143), no flow) -*The two paths and their sum against NC 30. The supply, with its silencer, -two lined runs, a branch split and six feet of flexible duct, has nothing -left above 1 kHz; the return, with a plenum but a silencer whose own -self-noise floors it near 25 dB, is what the room actually hears in the mid -and high bands. Adding low-frequency attenuation to the supply would change -nothing at all: the return already sets the answer everywhere except at -63 Hz, and that is the row to argue about.* +$$ +\begin{bmatrix} \cos kL & j\,\tfrac{\rho c}{S}\sin kL \\[2pt] +j\,\tfrac{S}{\rho c}\sin kL & \cos kL \end{bmatrix}, +\qquad k = \omega/c, +$$ -
-Show the code for this figure +and a side branch of acoustic impedance $Z_b$ is the shunt +$\left[\begin{smallmatrix} 1 & 0 \\ 1/Z_b & 1 \end{smallmatrix}\right]$ +(Eq. (8.144)). The **transmission loss** follows from the compound matrix $T$ +with the port impedances $Z_1 = \rho c/S_\text{in}$ and +$Z_n = \rho c/S_\text{out}$ (Munjal Eq. (3.27); Bies Eq. (8.141) prints the +`T11`/`T22` impedance weights of this formula inverted and fails the +sudden-expansion limit, see the [errata registry](https://jmrplens.github.io/phonometry/reference/errata/)) -```python -import matplotlib.pyplot as plt -from phonometry import combine_duct_paths +$$ +\mathrm{TL} = 10\log_{10}\!\left[\frac{Z_n}{Z_1}\,\tfrac{1}{4}\left|\,T_{11} ++ \tfrac{T_{12}}{Z_n} + Z_1\,T_{21} + \tfrac{Z_1}{Z_n}\,T_{22}\right|^2\right], +$$ -# `supply` and `ret` are the two DuctPathResult objects built above. +which for equal inlet/outlet areas reduces to (Bies Eq. (8.148)) -# One line for one path: the cascade of the supply run against NC 30. -supply.plot() -plt.show() +$$ +\mathrm{TL} = 20\log_{10}\!\left(\tfrac{1}{2}\left|\,T_{11} ++ \tfrac{T_{12}}{Z_c} + Z_c\,T_{21} + T_{22}\right|\right), +\qquad Z_c = \frac{\rho c}{S}, +$$ -# The concept figure: both paths, their energy sum and the criterion. -total = combine_duct_paths([supply, ret], label="Supply + return") -total.plot() -plt.gca().set_ylim(-6.0, 62.0) -plt.show() -``` +and the **insertion loss** for a source impedance $Z_s$ and a radiation +impedance $Z_r$ is the extra attenuation over a direct (zero-length) +connection, so a through connection gives $\mathrm{IL} = 0$. -
+### Expansion chamber -`DuctPathResult` also prints and files itself. `.table()` returns the sheet -row by row with the worksheet sign convention, and `.report()` renders a -one-page PDF in the layout of the published procedures (AHRI Standard 885 -Table 8; Long Table 14.9): the element table, the cascade chart against the -criterion curve, the boxed room-criterion rating and the verdict. +A chamber of area $S_\text{exp}$ and length $L$ between pipes of area +$S_\text{duct}$ has the closed-form transmission loss (Bies Eq. (8.111)) with +area ratio $m = S_\text{exp}/S_\text{duct}$: + +$$ +\mathrm{TL} = 10\log_{10}\!\left[1 + \tfrac{1}{4}\left(m - \tfrac{1}{m}\right)^2 +\sin^2 kL\right], +$$ + +peaking at $10\log_{10}[1 + \tfrac14(m-1/m)^2]$ at $kL = \pi/2, 3\pi/2, \dots$ +(1.94 dB for $m = 2$, 6.55 dB for $m = 4$, 12.18 dB for $m = 8$, 18.10 dB for +$m = 16$) and dropping to 0 at $kL = n\pi$, where the chamber is a +half-wavelength long and transparent. The four-pole product reproduces this +exactly. + +Expansion-chamber transmission loss against frequency for area ratios m = 2, 4, 8 and 16, showing periodic peaks rising with m at odd multiples of the quarter-wave frequency and troughs returning to 0 dB at every half-wavelength of the chamber length ```python -for row in total.table(): - print(f"{row['kind']:<12} {row['label'][:26]:<26} " - f"{[round(float(v)) for v in row['values']]}") +import numpy as np +from phonometry import expansion_chamber -total.report("duct-path.pdf") # needs phonometry[report] +freqs = np.linspace(20.0, 2000.0, 2000) +res = expansion_chamber(freqs, length=0.3, chamber_area=0.04, pipe_area=0.01) +print(round(res.transmission_loss.max(), 2)) # 6.55 dB peak (m = 4) +res.plot() # TL (and IL) vs frequency ``` -The example fiche, regenerated with `make reports`, is kept rendered in the -repository. Click the preview to open the PDF: - -[![Duct-borne noise path calculation example report: a metadata header with the client, the noise source, the test environment and the date, the octave-band path table listing the fan sound power, each element attenuation as a negative level change, the self-noise rows of the elbow, the silencer and the diffuser, the room effect, the received level and the NC 30 curve, and beneath it the boxed room criterion NC-22.6 at 125 Hz with the verdict that no band exceeds NC 30 beside the cascade chart of every element against the criterion curve](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/reports/duct_path_example.webp)](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/reports/duct_path_example.pdf) +The numbers passed to `expansion_chamber` describe a real device, and +`.plot_geometry()` draws it: the same 0.3 m chamber with its 4:1 area ratio, +to scale and fully dimensioned. -*Duct-borne noise path fiche (`DuctPathResult.report`): the supply path of the -worked sheet element by element, rated NC-22.6 and passing NC 30 with 5 dB to -spare at 63 Hz.* +To-scale cross-section of the expansion-chamber silencer of the transmission-loss example: a 300 mm long chamber of 225.7 mm equivalent diameter inserted between inlet and outlet pipes of 112.8 mm equivalent diameter, with the chamber length and both diameters dimensioned -## 7. What reproduces, and what does not +*The chamber behind the curves above, to scale: the areas enter the four-pole +method only through the ratio $m$, and the drawing uses the equivalent +circular diameters $d = 2\sqrt{S/\pi}$ of the 0.04 and 0.01 m² cross-sections.* -Long's Table 14.9 was produced by a commercial computer program, not by -hand from the tables printed alongside it, and being honest about that is -more useful than pretending otherwise. The *arithmetic* of the sheet is -reproduced exactly, as section 6 shows. Several of its **element rows**, -however, do not follow from the book's own printed data, and the functions -in this library implement the printed equations and tables. Verified band -by band: +
+Show the code for this figure -- **The fan row does not come from Eq. 13.1.** The sheet prints - 90/86/82/79/77/75/71/61 dB. Eq. 13.1 with the Table 13.5 forward-curved - constants at 5000 cfm and 2 in w.g. gives 99/99/89/84/82/77/72/67 dB, and - the printed spectrum is not a level shift of the tabulated one, so it - comes from other data (a manufacturer's, most likely). -- **The flexible-duct row is not Table 14.4.** The sheet prints - 14/14/16/15/17/22/16/13 dB for 12 in by 6 ft; - `flexible_duct_insertion_loss` reads 3/5/10/15/17/16/9 dB out of the - table for that duct. -- **The lined rectangular ducts agree in the mid and high bands.** For the - 18 x 12 in, 6 ft, 1 in run the library returns 11/25/22/16/13 dB from - 500 Hz up, exactly the printed row, and is 1 to 2 dB high below it - (5/4/6 against 3/3/5). For the 36 x 24 in, 5 ft run it matches at 250, - 500 and 8 kHz and is 1 to 2 dB low elsewhere. -- **The split and the unlined elbow reproduce exactly.** `split_loss` gives - the 25 per cent branch as 6.0 dB against the printed -6 dB, and - `elbow_insertion_loss` gives 0/1/2/3/3/3/3/3 dB against the printed row - when the elbow is read as round (Table 14.7) at $w = 24$ in. -- **The supply diffuser row reproduces too.** `diffuser_sound_power` on a - 24 x 24 in rectangular device at 312 cfm and 0.05 in pd returns - 33.4/32.4/29.1/23.6/15.9/5.9 dB against the printed - 33/32/29/23/15/4, inside the sheet's own rounding in the five bands that - carry the level. The return grille row (30/29/26/20/12/1) does not follow - from the same equations at its 563 cfm, so it is manufacturer data. -- **The NC 30 row differs by 1 dB at 1 kHz.** Long prints - 57/48/41/35/31/29/28/27; the library's `nc_curve(30)` returns - 57/48/41/35/**32**/29/28/27, the values of ANSI/ASA S12.2-2019 Table 1. - Long is using the original Beranek 1957 curve. The difference does not - change the verdict here, but it is worth knowing which NC you are quoting. +```python +import matplotlib.pyplot as plt +import numpy as np +from phonometry import expansion_chamber, plot_silencer_geometry -None of that is a defect of the sheet. It is what a real duct-borne -calculation looks like: the elements a manufacturer publishes (fans, -silencers, diffusers, grilles) come from test data, and the elements nobody -publishes (duct runs, elbows, splits, end reflections, the room) come from -the tables. `DuctElement` takes both without caring which is which, which -is the point. +freqs = np.linspace(20.0, 2000.0, 2000) +res = expansion_chamber(freqs, length=0.3, chamber_area=0.04, pipe_area=0.01) -## 8. The plane-wave limit +# One line: the dimensioned cross-section of the chamber just computed. +res.plot_geometry() +plt.show() -Every element model above, and every four-pole silencer in -[Silencers](https://jmrplens.github.io/phonometry/devices/noise-control/silencers/), is one-dimensional. It assumes a single sound -pressure describes the whole duct cross section, which is true only below -the frequency at which the first higher-order acoustic mode cuts on. Above -it several modes propagate at once, each with its own axial wavenumber, and -a plane-wave prediction quietly stops being right. +# The same drawing without a result, from the free function: +plot_silencer_geometry("expansion chamber", length=0.3, + chamber_area=0.04, pipe_area=0.01) +plt.show() +``` -`noise_control.duct_modes` implements the cut-on analysis of Norton & -Karczub, *Fundamentals of Noise and Vibration Analysis for Engineers* -(2nd ed.), section 7.3: circular ducts by Eq. 7.6 with the -$\pi\alpha_{pq}$ eigenvalues of Table 7.1 that solve -$J'_p(\kappa_{pq} a_i) = 0$, rectangular ducts by Eq. 7.10, and the -mean-flow correction of Eqs. 7.8 and 7.9, in which a uniform axial flow of -Mach number $M$ lowers every cut-on frequency by $\sqrt{1 - M^2}$ and -moves the cut-on itself from $k_x = 0$ to -$k_x = -M\kappa_{pq}/\sqrt{1 - M^2}$. +
-```python -import numpy as np -from phonometry import plane_wave_limit, rectangular_duct_cut_on +The clip below runs an $m = 4$ chamber of the same 0.30 m length in a 2D FDTD +duct at its two characteristic frequencies. At $kL = \pi$ the chamber is a +half-wave resonator and the tone crosses as if it were not there; at +$kL = \pi/2$ the two area jumps reflect in phase and send the wave back up the +inlet, the 6.5 dB peak of the four-pole curve above. -# Norton problem 7.2: a 0.65 x 0.4 m air-conditioning duct at 15 m/s. -modes = rectangular_duct_cut_on(0.65, 0.40, flow_velocity=15.0, count=6) -print(modes.modes[:3]) # ((1, 0), (0, 1), (1, 1)) -print(np.round(modes.cut_on[:3], 1)) # [263.6 428.3 502.9] Hz -print(np.round(modes.cut_on_no_flow[:3], 1)) # [263.8 428.8 503.4] Hz -print(round(modes.plane_wave_limit, 1)) # 263.6 Hz +Animation: a 2D FDTD duct with a 0.30 m expansion chamber of area ratio 4 drawn as hardware between a loudspeaker and an anechoic termination, at two frequencies side by side; at 572 Hz the pressure envelope stays flat and the tone crosses the chamber unchanged with the annotated transmission loss of 0.0 dB, while at 286 Hz a standing wave fills the inlet pipe and the outlet is left with less than half the amplitude, matching the annotated 6.5 dB peak -IN = 0.0254 -print(round(plane_wave_limit(width=36 * IN, height=24 * IN), 1)) # 187.6 Hz -print(round(plane_wave_limit(diameter=12 * IN), 1)) # 659.5 Hz -``` +[Watch the high-resolution video (WebM)](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/anim_fdtd_expansion_chamber.webm) -Those ventilation numbers are blunt: in that duct plane waves are the whole -story only up to the 250 Hz octave, and a 36 x 24 in supply trunk gives up at -188 Hz. +### Side-branch and extended-tube resonators -At 15 m/s the flow correction is invisible: $M = 0.044$ gives -$\sqrt{1 - M^2} = 0.999$, which moves the first cut-on by 0.2 Hz. It earns -its place in high-speed pipework instead. Norton's problem 7.1 is that -case, a 254 mm line carrying steam ($c = 405$ m/s) at 200 m/s, $M = 0.494$, -and there the two ladders separate by more than a hundred hertz at every -rung. +A **Helmholtz resonator** (`helmholtz_resonator`) and a closed **quarter-wave +tube** (`quarter_wave_resonator`) each short the duct at their tuning +frequency, $f_0 = \tfrac{c}{2\pi}\sqrt{S_\text{neck}/(l_e V)}$ +(Bies Eq. (8.46)) and $f = c/4l_e$ (Eq. (8.44)), giving a sharp +transmission-loss spike there. An +**extended-tube chamber** (`extended_tube_chamber`) buries quarter-wave side +branches in an expansion chamber to fill its troughs; with zero extensions it +reduces exactly to the plain chamber. Advanced layouts chain elements directly +with `duct_matrix`, `shunt_matrix`, `cascade`, `transmission_loss` and +`insertion_loss`. ```python import numpy as np -from phonometry import circular_duct_cut_on +from phonometry import ( + helmholtz_resonator, quarter_wave_resonator, extended_tube_chamber, +) -# Norton problem 7.1: a 254 mm circular duct carrying steam at 200 m/s. -steam = circular_duct_cut_on(0.254, flow_velocity=200.0, - speed_of_sound=405.0, count=6) -print(steam.modes) -# ((1, 0), (2, 0), (0, 1), (3, 0), (4, 0), (1, 1)) -print(np.round(steam.cut_on_no_flow, 1)) -# [ 934.5 1550.1 1944.7 2132.3 2698.9 2705.9] -print(np.round(steam.cut_on, 1)) -# [ 812.6 1347.9 1691.1 1854.1 2346.8 2352.9] -print(np.round(steam.axial_wavenumber, 2)) -# [ -8.23 -13.66 -17.13 -18.79 -23.78 -23.84] +f = np.linspace(20.0, 600.0, 4000) + +hr = helmholtz_resonator(f, duct_area=0.01, neck_area=1e-4, + neck_length=0.02, cavity_volume=1e-3) +print(round(float(hr.resonances[0]), 1)) # tuning frequency, Hz +hr.plot() # TL spike at the tuning frequency (needs matplotlib) + +qw = quarter_wave_resonator(f, duct_area=0.01, length=1.516, branch_area=2e-3, + speed_of_sound=343.24) +print(round(float(qw.resonances[0]), 1)) # 56.6 Hz (Bies Example 8.1) + +# An inlet extension of L/4 fills the first expansion-chamber trough. +et = extended_tube_chamber(f, length=0.4, chamber_area=0.04, pipe_area=0.01, + inlet_extension=0.1) ``` -Cut-on frequency of the first six higher-order acoustic modes of a 254 mm circular steam line, plotted against the mode order (1,0), (2,0), (0,1), (3,0), (4,0) and (1,1): the still-air ladder climbs from 935 Hz to 2706 Hz as a grey dashed line while the 200 m/s ladder runs 12 per cent below it from 813 Hz to 2353 Hz, and the band below the first cut-on is shaded as the plane-wave-only region +Transmission loss of a Helmholtz resonator and a closed quarter-wave tube on the same 10 cm2 duct: each side branch produces a sharp spike at its own tuning frequency, near 120 Hz for the Helmholtz volume and near 285 Hz for the 0.3 m tube, and is transparent elsewhere -*Norton's problem 7.1, the case where the mean flow is worth drawing: half -the speed of sound in the pipe pulls every cut-on down by -$\sqrt{1 - M^2} = 0.870$, so the first higher-order mode appears at 813 Hz -instead of 935 Hz and the plane-wave band, shaded, is 13 per cent narrower -than the still-air calculation would promise. The axial wavenumber at cut-on -is negative in every rung: with flow, the mode is already travelling upstream -at the frequency at which it appears.* +*Each side branch shorts the duct at its own tuning frequency and is nearly +transparent elsewhere: the narrow spike is why resonators are matched to a +firing frequency or a fan blade-passing tone rather than used broadband.*
Show the code for this figure ```python import matplotlib.pyplot as plt -from phonometry import circular_duct_cut_on, rectangular_duct_cut_on +import numpy as np +from phonometry import helmholtz_resonator, quarter_wave_resonator -# One line for one duct: the cut-on ladder with the plane-wave band shaded. -steam = circular_duct_cut_on(0.254, flow_velocity=200.0, - speed_of_sound=405.0, count=6) -steam.plot() +f = np.linspace(20.0, 600.0, 4000) +hr = helmholtz_resonator(f, duct_area=0.01, neck_area=1e-4, + neck_length=0.02, cavity_volume=1e-3) +qw = quarter_wave_resonator(f, duct_area=0.01, length=0.3, branch_area=2e-3) + +# One line for one device: TL vs frequency with the resonance marked. +hr.plot() plt.show() -# The ventilation duct of problem 7.2, where the flow shift is negligible. -rectangular_duct_cut_on(0.65, 0.40, flow_velocity=15.0, count=6).plot() +# By hand: both side branches on the same axes. +fig, ax = plt.subplots() +ax.plot(f, hr.transmission_loss, label="Helmholtz resonator") +ax.plot(f, qw.transmission_loss, "--", label="Quarter-wave tube") +for fr in (hr.resonances[0], qw.resonances[0]): + ax.axvline(float(fr), ls=":", color="#2ca02c") +ax.set_xlabel("Frequency [Hz]"); ax.set_ylabel("Transmission loss [dB]") +ax.set_ylim(0.0, 50.0) +ax.legend() plt.show() ```
-Two results carry this limit for you. Every `ReactiveSilencerResult` now -reports the first cut-on of its widest cross section as -`plane_wave_limit`, and `duct_path` accepts a `section=` description of the -duct it is walking. Both raise a `PlaneWaveWarning` when the analysis grid -runs past that frequency: the numbers are still returned, and above cut-on -they describe the plane-wave mode alone, which a measurement will not. +Both branches are small hardware, and `.plot_geometry()` shows just how +small: the resonator of the 120 Hz spike is a 1 L cavity fed by a 1 cm² +neck only 2 cm long. -```python -import warnings -from phonometry import DuctElement, PlaneWaveWarning, duct_path - -IN = 0.0254 -bands = [63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0, 8000.0] +To-scale cross-section of the side-branch Helmholtz resonator: a duct of 112.8 mm equivalent diameter with a narrow 11.3 mm neck, 20 mm long, opening into a 1 litre cavity drawn as its equal-volume cube on top of the duct, with the neck diameter, neck length and duct diameter dimensioned -with warnings.catch_warnings(record=True) as caught: - warnings.simplefilter("always") - duct_path(bands, [90.0] * 8, [DuctElement("Straight run", 3.0)], - section={"width": 36 * IN, "height": 24 * IN}, - flow_velocity=6.0, label="Supply") -print(caught[0].category is PlaneWaveWarning) -print(str(caught[0].message)) -# Supply: 6 of 8 frequencies are above the first duct cut-on frequency -# (188 Hz), where higher-order modes propagate and the plane-wave result -# describes the plane-wave mode only. -``` +*The whole 120 Hz notch hangs on a 1 L box and a 2 cm neck: the cavity is +drawn as its equal-volume cube, and the tuning moves as +$\sqrt{S_n/(l_e V)}$, so small errors in these dimensions shift the spike off +its target.* -Six of the eight octave bands of a standard duct-noise sheet sit above the -cut-on of a 36 x 24 in duct. That is not a reason to distrust the sheet: -the ASHRAE element models it is built from are *empirical*, fitted to -measurements of real ducts in which those modes were present, so they carry -the multimode behaviour inside their regression constants. The warning is -aimed at the analytical methods, the four-pole silencer algebra above all, -where the plane-wave assumption is structural rather than statistical, and -where the peaks and troughs of a computed transmission loss simply do not -survive past cut-on. +
+Show the code for this figure -## See also +```python +import matplotlib.pyplot as plt +import numpy as np +from phonometry import helmholtz_resonator -- [Silencers](https://jmrplens.github.io/phonometry/devices/noise-control/silencers/): the reactive four-pole elements (expansion - chambers, Helmholtz, quarter-wave and extended-tube resonators) whose - validity ends at the same cut-on frequency. -- [Industrial noise control](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/): the rest of the - installation, the individual HVAC duct methods and machine-enclosure - insertion loss. -- [Room-noise criteria (NC / RC Mark II)](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/): the ANSI/ASA - S12.2-2019 families the received spectrum is judged against. -- [Steady-state room field](https://jmrplens.github.io/phonometry/buildings/rooms/room-image-sources/): the room constant - behind the room effect and the plenum reverberant term. -- API reference: - [`noise_control.duct_path`](https://jmrplens.github.io/phonometry/reference/api/noise_control/duct-path/), - [`noise_control.duct_modes`](https://jmrplens.github.io/phonometry/reference/api/noise_control/duct-modes/), - [`noise_control.hvac`](https://jmrplens.github.io/phonometry/reference/api/noise_control/hvac/). +f = np.linspace(20.0, 600.0, 4000) +hr = helmholtz_resonator(f, duct_area=0.01, neck_area=1e-4, + neck_length=0.02, cavity_volume=1e-3) -## References +# One line: the side branch drawn to scale, cavity as its equal-volume cube. +hr.plot_geometry() +plt.show() +``` -- Long, M. (2014). *Architectural acoustics* (2nd ed.). Academic Press. - ISBN 978-0-12-398258-2. - The fan sound-power model (Ch. 13, Eq. 13.1 and Tables 13.5-13.8) and the - diffuser self-noise model (Ch. 13, Eqs. 13.27-13.33), the duct - attenuation, flexible duct, split loss, end reflection, silencer - self-noise and room effect of Ch. 14, and the worked duct-borne sheet of - Table 14.9 this guide is built around. -- Bies, D. A., Hansen, C. H., & Howard, C. Q. (2017). *Engineering noise - control* (5th ed.). CRC Press. - [doi:10.1201/9781351228152](https://doi.org/10.1201/9781351228152). The - end-reflection table (§8.13), the elbow insertion loss (§8.11), the - splitter-muffler reduction to lined ducts (§8.10.5, Eq. 8.241), the - plenum chamber (§8.17) and the flow-generated noise of ducts and bends - (§8.15). -- Norton, M. P., & Karczub, D. G. (2003). *Fundamentals of noise and - vibration analysis for engineers* (2nd ed.). Cambridge University Press. - [doi:10.1017/CBO9781139163927](https://doi.org/10.1017/CBO9781139163927). - The higher-order duct modes, the cut-on frequencies of circular and - rectangular ducts and the mean-flow correction (§7.3, Eqs. 7.6-7.10). -- ASHRAE (2019). *ASHRAE handbook: HVAC applications* (SI ed.), Chapter 49, - Noise and vibration control. ASHRAE. The air terminal velocity limits - (Table 9) and the volume-damper corrections (Table 10), and the guidance - that fan sound power is best taken from manufacturer test data. -- Air-Conditioning, Heating and Refrigeration Institute. *AHRI Standard - 885: Procedure for estimating occupied space sound levels in the - application of air terminals and air outlets*. The industry row - structure of the duct-borne calculation sheet (Table 8) that - `DuctPathResult.table()` and `.report()` follow. +
---- +The quarter-wave tube needs no cavity at all: the 285 Hz spike of the figure +above comes from a plain closed tube of the right length standing on the +same duct. +To-scale cross-section of the quarter-wave side branch: a closed tube 300 mm long and 50.5 mm in equivalent diameter standing on a duct of 112.8 mm equivalent diameter, with the tube length, tube diameter and duct diameter dimensioned - -Source: https://jmrplens.github.io/phonometry/devices/noise-control/room-to-room/ +*A quarter-wave stub is just a closed tube of the right length: 0.3 m of +pipe puts the spike at $c/4l_e \approx 285\ \text{Hz}$, and the 20 cm² branch +area only sets how strongly the stub loads the duct.* -# Room to room: partition, receiving room, criterion +
+Show the code for this figure -A machine runs in one room, a wall separates that room from an occupied one, -and someone wants to know what the occupant hears. It is a short chain, and -every link of it is a piece the library already had: the reverberant level -the machine builds up on the source side, the transmission loss of the wall, -the absorption of the receiving room, and the criterion curve the result is -laid against. What was missing was the joint, and the joint is the one place -where the arithmetic surprises people: **the noise reduction is not the -transmission loss of the wall.** +```python +import matplotlib.pyplot as plt +import numpy as np +from phonometry import quarter_wave_resonator -`noise_control.room_to_room` is that joint, and this page walks Norton & -Karczub's worked problems through it end to end. The reference throughout is -Norton, M. P. & Karczub, D. G., *Fundamentals of Noise and Vibration -Analysis for Engineers* (2nd ed., Cambridge University Press 2003), -Chapter 4: §4.6 for the sound power models, §4.9 for the room-to-room -balance and §4.10 for the enclosure. Its problems 4.16, 4.18 and 4.21 carry -printed octave-band answers, and all three are pinned in the -[conformance report](https://jmrplens.github.io/phonometry/reference/conformance/). +f = np.linspace(20.0, 600.0, 4000) +qw = quarter_wave_resonator(f, duct_area=0.01, length=0.3, branch_area=2e-3) -Where the *partition itself* comes from is a different question, answered by -[Panel sound insulation](https://jmrplens.github.io/phonometry/buildings/design/panel-sound-insulation/) (mass law, coincidence, -double leaves, the plateau method) or by measurement. This page takes the -transmission loss as given, exactly as a hand calculation does. +# One line: the closed 0.3 m tube on its duct, to scale. +qw.plot_geometry() +plt.show() +``` -## 1. What the balance says +
-Norton's §4.9 balances the steady-state power in the receiving room: what -crosses the partition equals what the room absorbs plus what leaks back -through the partition. Replacing intensities with mean-square pressures and -taking logarithms gives Equation (4.101), +Each device returns a `ReactiveSilencerResult` with `transmission_loss`, +`insertion_loss` (when source/radiation impedances are given), the compound +`transfer_matrix`, the tuning `resonances` and `.plot()`. -$$ -\text{NR} = \text{TL} -- 10\log_{10}\!\left[\frac{S_w}{S_2 \alpha_2 + \tau S_w}\right], -$$ -with $\text{NR} = L_{p1} - L_{p2}$ the noise reduction between the two -reverberant fields, $\text{TL} = 10\log_{10}(1/\tau)$ the transmission loss of the -partition (the quantity UNE calls the sound reduction index $R$), $S_w$ the -area of the partition and $S_2 \alpha_2$ the equivalent absorption area of -the receiving room. +## 2. Reactive or dissipative? -Read the logarithm and the whole page follows. A **large partition into a -hard room** delivers *less* than its transmission loss: a lot of area -radiating into a room with nothing to soak it up. A **small partition into -a well-absorbing room** delivers *more*. The two rooms and the wall are not -separable, which is why quoting a wall's $R_w$ and stopping is not an -answer. +Everything above works by reflection, and reflection has a shape: sharp, +periodic, frequency-selective. The complementary family, **dissipative** +silencers, replaces the impedance discontinuities with a duct section whose +walls are lined with porous material (often protected by a perforated +facing), so the grazing wave loses energy to viscous friction in the lining +instead of being sent back to the source. The behaviours differ where it +matters for selection: -The $\tau S_w$ term is the power the partition itself passes back into the -source room. At any realistic transmission loss it is worth a few -hundredths of a decibel, so it is off by default and -`include_partition_transmission=True` switches it on. +- **Frequency reach.** A reactive chamber or resonator is strongest exactly + where it is tuned and transparent elsewhere; a lined duct attenuates over + a broad band that peaks where the lining depth is comparable with a + quarter wavelength. At low frequency a practical lining is acoustically + thin and does little, which is the regime where the reactive chamber + wins; at high frequency the sound beams down the open airway and passes + over the lining, so the attenuation of both families collapses and only + splitter geometries (narrow airways, more lined perimeter per unit area) + keep working. +- **Spectrum type.** A tonal source, an engine firing order or a + blade-passing frequency, is a resonator's natural prey; broadband fan or + flow noise wants the dissipative band. Production exhaust silencers + routinely combine the two, packing an expansion chamber with fibre so the + reflective troughs of the chamber are filled by absorption. +- **The medium.** A porous lining in a hot, sooty or pulsating exhaust + clogs and degrades, one reason vehicle exhausts are predominantly + reactive; clean HVAC air is where dissipative attenuators and lined + plenums are the default. In either case the airflow adds its own floor: + a silencer regenerates flow noise at its own outlet, and past a certain + pressure drop the silencer becomes the noise source. -## 2. Three partitions, one receiving room +phonometry models the reactive family in closed form on this page. The +dissipative side enters through the installation data of the +[HVAC methods](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/): the lined-elbow insertion loss and the +lined plenum attenuation of Wells' method, both from interpolated ASHRAE +data rather than a liner model. The porous physics that a first-principles +liner calculation needs, the equivalent-fluid models fed by the airflow +resistivity, is the same material theory as +[Porous and Multilayer Absorbers](https://jmrplens.github.io/phonometry/materials/absorbers/porous-absorbers/). -Norton's problem 4.21 (printed pp. 586-587) is the comparison the equation -was made for: two 13 mm gypsum wallboards with a 64 mm air gap, a 125 mm -plastered brick wall and a double brick wall with a 50 mm cavity, all -speaking into the same 8 m x 9 m x 3 m receiving room through the same -8 m x 3 m opening. +## Cross-check against the FDTD solver -```python -import numpy as np -from phonometry import ( - SourceRoom, equivalent_absorption_area, room_to_room_transmission, -) +That cross-check is the clip embedded in section 1, and it is worth returning +to it now with the algebra in hand. The four-pole expansion chamber is checked +against the independent 2D +[FDTD wave solver](https://jmrplens.github.io/phonometry/simulation/fdtd-simulation/), which shares no formula and no +assumption with the transfer-matrix product beyond the wave equation itself: a +plane-wave duct that widens into the same 0.30 m, $m = 4$ chamber and narrows +back transmits far less at the four-pole TL peak ($kL = \pi/2$, here 286 Hz) +than at the transparent trough ($kL = \pi$, 572 Hz). The amplitude ratio +measured downstream in the field is the transmission loss annotated on the +clip, 6.5 dB at 286 Hz and 0.0 dB at 572 Hz, against the 6.55 dB the closed +form gives for $m = 4$ (test `tests/noise_control/test_fdtd_crosscheck.py`). +Agreement that close rules out an algebra error on either side. The two must +eventually part company above the duct's first cut-on frequency, where +higher-order modes propagate: the two-dimensional solver keeps working there +and the plane-wave algebra does not. -bands = [125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0] -# Receiving room 8 x 9 x 3 m: walls 102 m2, floor and ceiling 72 m2 each. -receiving = equivalent_absorption_area([ - (102.0, [0.04, 0.04, 0.09, 0.15, 0.17, 0.23]), # walls - (72.0, [0.02, 0.06, 0.14, 0.37, 0.60, 0.66]), # floor - (72.0, [0.30, 0.20, 0.15, 0.05, 0.05, 0.05]), # ceiling -]) -print(np.round(receiving, 1)) -# [27.1 22.8 30.1 45.5 64.1 74.6] m2, band by band +## See also -partitions = { - "Two 13 mm wallboards, 64 mm gap": [18, 27, 37, 45, 43, 39], - "125 mm plastered brick": [36, 36, 40, 46, 54, 57], - "Double brick, 50 mm cavity": [37, 41, 48, 60, 61, 61], -} -for name, tl in partitions.items(): - res = room_to_room_transmission( - bands, tl, 8.0 * 3.0, receiving, - source=SourceRoom(level=90.0), label=name, - ) - print(f"{name:32s} {np.round(res.noise_reduction, 1)}") -# Two 13 mm wallboards, 64 mm gap [18.5 26.8 38. 47.8 47.3 43.9] -# 125 mm plastered brick [36.5 35.8 41. 48.8 58.3 61.9] -# Double brick, 50 mm cavity [37.5 40.8 49. 62.8 65.3 65.9] -``` +- [Duct-borne noise: fan to room](https://jmrplens.github.io/phonometry/devices/noise-control/duct-path/): the end-to-end fan-to-room + calculation these silencers sit inside, and the higher-order-mode cut-on + above which the four-pole method describes the plane-wave mode alone. +- [Industrial noise control](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/): the rest of the + installation: HVAC duct attenuation and flow noise, plenums, end + reflection and machine enclosures. +- [2D FDTD wave simulation](https://jmrplens.github.io/phonometry/simulation/fdtd-simulation/): the independent solver + behind the expansion-chamber cross-check. +- [Porous and Multilayer Absorbers](https://jmrplens.github.io/phonometry/materials/absorbers/porous-absorbers/): the + equivalent-fluid material theory behind dissipative linings. +- [Loudspeaker Characterisation (IEC 60268-5)](https://jmrplens.github.io/phonometry/devices/electroacoustics/loudspeakers/): the + radiating piston, the companion radiator model of a duct's open end. +- API reference: [`noise_control.silencers`](https://jmrplens.github.io/phonometry/reference/api/noise_control/silencers/). -Those are Norton's printed answers to the tenth of a decibel. Look at what -the receiving room did to them. At 125 Hz the room absorbs 27.1 m² against a -24 m² partition, so every wall delivers half a decibel *more* than its -transmission loss. At 250 Hz the ceiling has stopped absorbing and the floor -has not started, the room is down to 22.8 m², and every wall now delivers -0.2 dB *less*. By 4 kHz the carpet and the walls together give 74.6 m² and -the same brick wall is worth 4.9 dB more than its transmission loss. The -same three walls, ranked the same way, but the numbers a specification would -quote move by more than 5 dB depending on a room the wall never touches. +## References -## 3. The chain, end to end +- Bies, D. A., Hansen, C. H., & Howard, C. Q. (2017). *Engineering noise + control* (5th ed.). CRC Press. + [doi:10.1201/9781351228152](https://doi.org/10.1201/9781351228152). The + muffler four-pole method, the expansion-chamber TL and the resonator + tuning formulas (§8.8–8.9) of this guide. +- Munjal, M. L. (2014). *Acoustics of ducts and mufflers* (2nd ed.). Wiley. + [doi:10.1002/9781118443767](https://doi.org/10.1002/9781118443767). The + transfer-matrix formulation behind the element matrices and the + transmission loss from the compound matrix (Eq. (3.27)), and the + reference treatment of dissipative and combined mufflers. +- Vér, I. L., & Beranek, L. L. (2006). *Noise and vibration control + engineering* (2nd ed.). Wiley. + [doi:10.1002/9780470172568](https://doi.org/10.1002/9780470172568). The + companion treatment of reactive and dissipative silencers. -Problem 4.18 (printed pp. 585-586) is the whole calculation, and it starts -one step earlier: the source-room level is not given, only the blower's -free-field sound power level. Two decisions turn that into $L_{p1}$, and both -are Norton's. +--- -**The reverberant field is what drives the partition.** The receiver of -interest is the wall, not a point beside the machine, so the level that -matters is $L_{p1} = L_W + 10\log_{10}(4/R_1)$. That is `steady_state_spl` with -`distance=None`, the $r \to \infty$ limit of the same Bies Equation (6.43) -the library has always used for a receiver at a distance. -**The problem asks for a conservative estimate, and conservative has a -meaning.** The blower sits on the floor along the middle of a wall, in the -intersection of two large flat surfaces, so $Q = 4$. Norton's §4.6 -Table 4.5 lists three sound power models: a *constant-power* source radiates -the same $\Pi_0$ wherever it stands, a *constant-volume* source is loaded by -the nearby boundaries and radiates $\Pi_0 Q$, and a *constant-pressure* -source, a theoretical floor, radiates $\Pi_0 / Q$. Real machines sit between -the first two whenever they are closer to the boundary than a wavelength, -and the constant-volume model is the upper bound. Here it is worth -$10\log_{10} 4 = 6.02\ \text{dB}$, and without it the printed answers come out -6 dB low. + +Source: https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/ -```python -from phonometry import ( - DesignCriterion, SourceRoom, equivalent_absorption_area, mean_absorption, - room_constant, room_to_room_transmission, -) +# Industrial noise control: HVAC and enclosures -bands = [125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0] -ceiling = [0.07, 0.20, 0.40, 0.52, 0.60, 0.67] # absorbent ceiling -walls = [0.03, 0.03, 0.03, 0.04, 0.05, 0.07] # both rooms +Three passive measures dominate applied noise control, and the +`noise_control` domain covers all three with the engineering theory of Bies, +Hansen & Howard, *Engineering Noise Control* (5th ed., CRC Press 2017): +**reactive silencers** in a duct (the four-pole transmission-matrix method), +the passive attenuations and regenerated noise of an **HVAC** run, and the +insertion loss of a **machine enclosure**. The radiating piston of the +[loudspeaker guide](https://jmrplens.github.io/phonometry/devices/electroacoustics/loudspeakers/) is the companion radiator model. -# Plant room 8 x 10 x 3 m: bare floor, absorbent ceiling, 108 m2 of wall. -plant = [(80.0, [0.01, 0.01, 0.015, 0.02, 0.02, 0.02]), - (80.0, ceiling), (108.0, walls)] +The three families in one scene: enclose the source, silence the path, +shield the receiver. Each measure carries the value its section computes, +here or in the silencer guide. -# Operator room 5 x 5 x 3 m: carpet, same ceiling and walls. -operator = [(25.0, [0.08, 0.24, 0.57, 0.69, 0.71, 0.73]), - (25.0, ceiling), (60.0, walls)] +Noise-control scene split into three zones: at the source a machine inside a lined enclosure rated IL = R − C = 25 dB at 500 Hz, along the path a 113 mm duct with a 0.30 m expansion chamber of area ratio 4 peaking at 6.5 dB of transmission loss at 286 Hz, a lined elbow worth 6 dB at 1 kHz and an open end reflecting 18 dB at 63 Hz, and at the receiver an operator cabin rated by the same formula at 31 dB at 1 kHz, with a person standing inside -chain = room_to_room_transmission( - bands, - [39.0, 42.0, 50.0, 58.0, 63.0, 67.0], # TL of the separating wall - 5.0 * 3.0, # the wall is 5 m x 3 m - equivalent_absorption_area(operator), - source=SourceRoom( - power_level=[105.0, 103.0, 98.0, 108.0, 107.0, 109.0], - room_constant=room_constant(268.0, mean_absorption(plant)), - directivity=4.0, # floor-wall intersection - model="constant_volume", # the conservative bound - ), - criterion=DesignCriterion(target=45.0), - label="Plant room to operator room", -) +The path measure, the silencer itself, has its own guide: +[Silencers](https://jmrplens.github.io/phonometry/devices/noise-control/silencers/) covers the reactive four-pole method, the +closed-form expansion chamber, the Helmholtz, quarter-wave and +extended-tube resonators, the independent FDTD cross-check and the +trade-off against dissipative linings. This page keeps the rest of the +installation: what the duct run adds and removes on its own, and what an +enclosure around the machine actually delivers. Chaining those element +models end to end, from the fan sound power to the room criterion, is +[Duct-borne noise: fan to room](https://jmrplens.github.io/phonometry/devices/noise-control/duct-path/). -for row in chain.table(): - print(f"{row['label']:<28} " - f"{[round(float(v), 1) for v in row['values']]}") -``` +## 1. HVAC duct attenuation and flow noise -```text -Source sound power level [105.0, 103.0, 98.0, 108.0, 107.0, 109.0] -Source room level [107.0, 101.7, 93.8, 102.4, 100.6, 101.9] -Partition transmission loss [39.0, 42.0, 50.0, 58.0, 63.0, 67.0] -Receiving-room absorption [5.5, 12.8, 26.1, 32.6, 35.8, 39.2] -Noise reduction [34.7, 41.3, 52.4, 61.4, 66.8, 71.2] -Receiving room level [72.4, 60.4, 41.4, 41.0, 33.9, 30.7] -NC 45 [60.0, 54.0, 49.0, 46.0, 44.0, 43.0] -Required transmission loss [51.4, 48.4, 42.4, 53.0, 52.9, 54.7] -``` +`noise_control.hvac` gathers the Bies Chapter 8 duct methods: -Norton's printed answer is 72.3 / 60.4 / 41.4 / 41.0 / 33.8 / 30.7 dB, which -this reproduces to a tenth. Two rows are worth staring at. The **noise -reduction climbs from 34.7 dB to 71.2 dB** while the transmission loss only -climbs from 39 to 67, because the operator room's absorption grows seven -fold across the range while the wall is fixed at 15 m²; the little room does -half the work at high frequency and none at all at 125 Hz. And the -**required transmission loss row is not monotone**: the wall needs 51.4 dB -at 125 Hz where it has 39, and 42.4 dB at 500 Hz where it already has 50. A -low-frequency problem, in a wall that is over-specified in the middle. +- `end_reflection_loss` — the low-frequency reflection back up an open duct end + (ASHRAE Table 8.14, interpolated over diameter and frequency; it passes + exactly through the tabulated nodes). +- `elbow_insertion_loss` — the insertion loss per bend for square/round, + vaned/unvaned and lined/unlined elbows keyed by $W/\lambda$ (ASHRAE + Table 8.11). +- `plenum_attenuation` — the plenum-chamber transmission loss by Wells' method + (Eq. (8.275)), whose reverberant term uses the plenum + [room constant](https://jmrplens.github.io/phonometry/buildings/rooms/room-image-sources/). +- `flow_noise_straight_duct`, `flow_noise_bend` — the flow-generated (self) + noise sound power of straight ducts and mitred bends (VDI 2081, Eqs. (8.251), + (8.254)). -Octave-band chart of Norton's plant-room problem from 125 Hz to 4 kHz: the source-room level runs from 107 dB down to 94 dB at 500 Hz and back to 102 dB, the receiving-room level falls steadily from 72 dB to 31 dB and crosses the NC 45 curve between 250 and 500 Hz, and on the right axis the transmission loss of the wall rises from 39 to 67 dB while the noise reduction it delivers rises from 35 to 71 dB, crossing the transmission loss between 250 and 500 Hz +```python +from phonometry.noise_control import hvac -*The chain of problem 4.18. The receiving-room spectrum crosses the NC 45 -curve between 250 and 500 Hz, so the two low bands are the whole problem. -The right axis is the point of Equation (4.101): the noise reduction the -wall delivers starts 4 dB below its transmission loss and ends 4 dB above -it, and the crossing is where the operator room's absorption grows past the -15 m² of the wall.* +bands = [63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0] +er = hvac.end_reflection_loss(bands, diameter=0.30, termination="flush") +el = hvac.elbow_insertion_loss(bands, width=0.3, bend_type="square", lined=True) +er.plot() # the band attenuation (or regenerated Lw) in one line (needs matplotlib) +tl = hvac.plenum_attenuation(0.1, 1.0, 20.0, 0.2) # Wells' method, dB +fn = hvac.flow_noise_straight_duct(bands, flow_velocity=10.0, area=0.04) +``` + +Duct end reflection loss per octave band for flush duct terminations of 150, 300 and 600 mm diameter: the reflection back up the duct grows steeply towards low frequency and shrinks with duct size, exceeding 17 dB at 63 Hz for the 150 mm duct and vanishing above 1 kHz + +*The open end of a duct reflects low-frequency energy back up the run — for +free, before any silencer: the smaller the duct against the wavelength, the +larger the loss, which is why small diffuser necks tame low-frequency fan +rumble and why the correction must not be double-counted when a manufacturer's +diffuser data already includes it.*
Show the code for this figure ```python import matplotlib.pyplot as plt +import numpy as np +from phonometry.noise_control import hvac -# `chain` is the RoomToRoomResult built above. +bands = [63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0] -# One line: both reverberant spectra, the criterion curve and the noise -# reduction against the transmission loss on the twin axis. -chain.plot() +# One line for one duct: the HvacSpectrumResult of the 300 mm flush end. +er = hvac.end_reflection_loss(bands, diameter=0.30, termination="flush") +er.plot() plt.show() -# By hand, from the per-band fields the result carries: +# By hand: the family over duct diameters of the concept figure. fig, ax = plt.subplots() -ax.semilogx(chain.frequencies, chain.source_level, "s--", label="Source room") -ax.semilogx(chain.frequencies, chain.received_level, "o-", label="Receiving room") -ax.semilogx(chain.frequencies, chain.criterion_curve, ":", label="NC 45") -twin = ax.twinx() -twin.plot(chain.frequencies, chain.transmission_loss, "--", label="TL") -twin.plot(chain.frequencies, chain.noise_reduction, "-.", label="NR") +for diameter in (0.15, 0.30, 0.60): + er = hvac.end_reflection_loss(bands, diameter=diameter, termination="flush") + ax.semilogx(er.frequencies, er.values, "o-", + label=f"D = {int(diameter * 1000)} mm") +ax.set_xlabel("Frequency [Hz]"); ax.set_ylabel("End reflection loss [dB]") +ax.legend(title="Duct diameter") plt.show() ```
-## 4. The verdict, and the number to specify +Wells' plenum formula takes only two truly geometric inputs, the +inlet-to-outlet line of sight $r$ and the outlet area, plus the lined wall +area; `plot_plenum_geometry` draws exactly those, honouring $r$ and its +angle off the inlet axis. -The result rates itself. `.rating` is the ANSI/ASA S12.2-2019 rating of the -received spectrum, `.criterion_curve` is the design curve sampled at the -analysis bands, `.exceedance` is the band-by-band excess and -`.meets_target` is the plain verdict a design sheet writes down. -`.required_transmission_loss` is Equation (4.101) solved for $\text{TL}$, -which is the number that goes into a specification. +Section of a plenum chamber: the inlet duct enters low on the left, the outlet mouth is marked on the right wall, the 1.2 m inlet-to-outlet line of sight is drawn as a dashed diagonal at 0.35 rad off the inlet axis, and the wall area of 6 square metres and outlet area of 0.09 square metres are annotated below + +*Only $r$ and its angle off the inlet axis fix the drawn box; $S_\text{out}$ +and $S_w$ enter Wells' method as bare areas, so any plenum sharing these four +numbers has the same predicted attenuation.* + +
+Show the code for this figure ```python -print(chain.meets_target) # False -print(round(chain.rating.rating, 1)) # 61.7, governed by 125 Hz -print([round(float(v), 1) for v in chain.exceedance]) -# [12.4, 6.4, -7.6, -5.0, -10.1, -12.3] +import matplotlib.pyplot as plt +from phonometry import plot_plenum_geometry -deficit = chain.required_transmission_loss - chain.transmission_loss -print([round(float(v), 1) for v in deficit]) -# [12.4, 6.4, -7.6, -5.0, -10.1, -12.3] +# The r, S_out and S_w that Wells' formula actually uses, drawn exactly. +plot_plenum_geometry(0.09, 1.2, 6.0, angle=0.35) +plt.show() ``` -The deficit and the exceedance are the same six numbers, which is the whole -content of the chain: a decibel too much in the room is a decibel too little -in the wall. Whether that low-frequency deficit is worth chasing with mass, -a cavity or a second leaf is what -[Panel sound insulation](https://jmrplens.github.io/phonometry/buildings/design/panel-sound-insulation/) is for. +
-The verdict is deliberately the band-by-band test, not the rating. A -spectrum can rate NC-38 and still poke through the NC 45 curve in one band, -because the standard's two-step designation procedure and a design sheet's -"no band above the curve" are different questions. +Rectangular ducts use the equivalent diameter $D = \sqrt{4S/\pi}$. Bies 5th +ed. gives the duct end reflection only as the ASHRAE table (no closed form in +that edition); this module reproduces and interpolates it. -## 5. An enclosure against a criterion +## 2. Machine enclosures -Problem 4.16 (printed pp. 584-585) asks the same question about an -enclosure instead of a partition: a refrigeration compressor makes a -reverberant level in its room, the technician needs that level down to an -NC-45 curve, and the enclosure walls have to make up the difference. Norton -derives the enclosure equation from the same power balance as §4.9 and gets -Equation (4.115), +A sealed enclosure reduces the radiated noise by its panel transmission loss +$R$, minus a penalty $C$ for the reverberant build-up inside the small, hard +cavity (Bies Eqs. (7.103), (7.111)): $$ -\text{IL} = \text{TL} - 10\log_{10}(S_E / R_i), +\mathrm{IL} = R - C,\qquad C = 10\log_{10}\!\left(0.3 + \frac{S_E}{R_i}\right), $$ -with $S_E$ the external radiating area and $R_i$ the room constant of the -enclosure interior, machine surface included. Solved for the panels, -$\text{TL} = \text{IL} + 10\log_{10}(S_E / R_i)$, which is -`enclosure_required_transmission_loss`. +with the external area $S_E$ and the interior room constant +$R_i = S_i \alpha_i/(1-\alpha_i)$ (the same `room_constant` as the +steady-state room field). A hard interior wastes much of the panel $R$; lining +it drives $C$ toward its floor $10\log_{10}0.3 = -5.2$ dB. + +**The panel transmission loss $R$ is supplied by the caller** — measured, or +predicted by a panel model — as a per-band array or a callable of frequency. +This module never predicts $R$ itself; it combines a given $R$ with the +interior absorption. ```python import numpy as np -from phonometry import enclosure_required_transmission_loss, mean_absorption - -bands = [63.0, 125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0, 8000.0] -wool = [0.10, 0.20, 0.45, 0.65, 0.75, 0.80, 0.80, 0.80] # 50 mm blanket -concrete = [0.01, 0.01, 0.01, 0.02, 0.02, 0.02, 0.03, 0.03] - -lp1 = np.array([72.0, 79.0, 81.0, 84.0, 83.0, 81.0, 80.0, 75.0]) # unenclosed -nc45 = np.array([67.0, 60.0, 54.0, 49.0, 46.0, 44.0, 43.0, 41.0]) # target - -# Enclosure 2.5 x 3.5 x 2.5 m on the concrete floor: the walls and roof -# radiate (38.75 m2) and their inner faces carry the lining. The rest of the -# interior is the uncovered floor plus the five exposed faces of the -# 1.5 x 2.5 x 1.5 m machine, both with the absorption of concrete. -radiating = 2 * (2.5 * 2.5) + 2 * (3.5 * 2.5) + 2.5 * 3.5 -machine = 2 * (1.5 * 1.5) + 2 * (2.5 * 1.5) + 1.5 * 2.5 -bare_floor = 2.5 * 3.5 - 1.5 * 2.5 +from phonometry import enclosure_insertion_loss -required = enclosure_required_transmission_loss( - lp1 - nc45, - radiating, - radiating + bare_floor + machine, - mean_absorption([(radiating, wool), (bare_floor + machine, concrete)]), - frequencies=bands, - model="norton", -) -print(np.round(required.panel_transmission_loss, 1)) -# [14.5 25.3 28.9 34.4 35.2 34.7 34.6 31.6] +bands = np.array([125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0]) +panel_R = np.array([18.0, 24.0, 30.0, 36.0, 42.0, 46.0]) # measured, dB +enc = enclosure_insertion_loss(panel_R, external_area=6.0, internal_area=5.0, + internal_absorption=0.3, frequencies=bands) +print(np.round(enc.insertion_loss, 1)) # net IL = R - C per band +enc.plot() ``` -Norton's printed answer is 14.4 / 25.2 / 28.9 / 34.4 / 35.2 / 34.7 / 34.7 / -31.6 dB, matched to 0.11 dB, which is the resolution of his own one-decimal -rounding. The shape is the useful part: **the requirement peaks at 1 kHz and -falls away at both ends**, because at 63 Hz the mineral wool absorbs almost -nothing and the level to lose is only 5 dB, while at 8 kHz the compressor -has quietened down. A panel chosen for its 500 Hz to 2 kHz figure is the -right panel here. - -Two footnotes on that snippet, both about being faithful to the source. -`model="norton"` matters: the library's default enclosure model is Bies, -Hansen & Howard's Equation (7.111), which carries a $0.3$ inside the -logarithm and so floors the insertion loss of a fully lined enclosure at -$\text{TL} + 5.2\ \text{dB}$. Norton's Equation (4.115) has no such floor. -The two agree -within a few tenths while the interior is hard and diverge once the lining -takes over, and reproducing a published answer means using the model its -author used. `ENCLOSURE_MODELS` lists both. - -And the NC-45 column is Norton's own, taken from his problem statement. It -reads 41 dB in the 8 kHz band where ANSI/ASA S12.2-2019 Table 1 (which -`nc_curve` implements) reads 42 dB; they agree in every other band. Using -the printed column keeps the oracle the published one. +Machine-enclosure insertion loss per octave band: the measured panel sound reduction index R as a dashed line, the flat interior correction C near 5 dB for a lined interior, and the net insertion loss IL equal to R minus C tracking about 5 dB below the panel curve -## 6. What the prediction does not know +*What the enclosure delivers is $R - C$, not the panel $R$: even this lined +interior (mean absorption 0.3) costs about 5 dB of the panel's rating in every +band, and a hard, unlined interior would cost far more. Budget the lining +together with the panels, not as an afterthought.* -Norton's answer to problem 4.21 ends with the caveat that matters more than -any of the arithmetic above: the measured noise reduction runs below the -prediction because of **flanking transmission through mechanical connections -and air leaks**. A ceiling void carried over the partition, a service -penetration, a door undercut, or the wall simply not reaching the structural -slab, and the equation's answer becomes an upper bound. +
+Show the code for this figure -The clip below draws what the equation leaves out. The chain of section 3 -prices the direct path only, the **Dd** route through the partition; the -other three pulses leave the source room over the flanking walls, floor or -ceiling — **Ff** flank to flank, **Fd** flank to partition, **Df** partition -to flank — and re-radiate on the far side without ever passing through the -transmission loss the calculation used. Each path shrinks at every element -and junction it crosses, which is why no single one has to be large for the -sum of the three to dominate a good partition. +```python +import matplotlib.pyplot as plt +import numpy as np +from phonometry import enclosure_insertion_loss -Animation: energy pulses leaving the source room over the direct Dd path and the flanking Ff, Fd and Df paths, shrinking at each element and junction, every path label lighting up as its pulse re-radiates into the receiving room +bands = np.array([125.0, 250.0, 500.0, 1000.0, 2000.0, 4000.0]) +panel_R = np.array([18.0, 24.0, 30.0, 36.0, 42.0, 46.0]) # measured, dB -[Watch the high-resolution video (WebM)](https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/anim_flanking_paths.webm) +enc = enclosure_insertion_loss(panel_R, external_area=6.0, internal_area=5.0, + internal_absorption=0.3, frequencies=bands) -`DesignCriterion.flanking_penalty` is the explicit debit for that, in -decibels off the -predicted noise reduction. It is not a model, it is a place to record the -allowance and have it show up in `.table()` and in the required -transmission loss rather than get lost: +# One line — panel R, interior correction C and the net IL = R - C: +enc.plot() +plt.show() -```python -# The chain of section 3 again, with 3 dB allowed for flanking and leaks. -honest = room_to_room_transmission( - bands, [39.0, 42.0, 50.0, 58.0, 63.0, 67.0], 15.0, - equivalent_absorption_area(operator), - source=SourceRoom(level=chain.source_level), - criterion=DesignCriterion(target=45.0, flanking_penalty=3.0), -) -print(np.round(honest.received_level, 1)) -# [75.4 63.4 44.4 44. 36.9 33.7] every band 3 dB worse +# By hand, from the per-band fields the result carries: +fig, ax = plt.subplots() +ax.plot(bands, enc.panel_transmission_loss, "s--", label="Panel R") +ax.plot(bands, enc.correction, "^:", label="Interior correction C") +ax.plot(bands, enc.insertion_loss, "o-", label="Insertion loss (R - C)") +ax.set_xlabel("Frequency [Hz]"); ax.set_ylabel("Level [dB]") +ax.set_xscale("log") +ax.legend() +plt.show() ``` -Where the flanking paths *are* modelled rather than allowed for, the -prediction models of EN 12354 are the right tool, and those live in -[Building sound insulation prediction](https://jmrplens.github.io/phonometry/buildings/design/insulation-prediction/) and -[Flanking transmission](https://jmrplens.github.io/phonometry/buildings/insulation/flanking-lab/). +
-The other assumption is diffusivity. Equation (4.101) is a diffuse-field -balance in both rooms, so it has nothing to say below each room's Schroeder -frequency (`schroeder_frequency`), where discrete modes rule. The 5 m x 5 m -x 3 m operator room above, 75 m3, has for a -half-second reverberation time a Schroeder frequency of 163 Hz, which is -exactly why the 125 Hz band of problem 4.18 - the band that governs the -whole answer - should be read as an estimate and not as a number. +`enclosure_insertion_loss` returns an `EnclosureResult` with the panel +`panel_transmission_loss`, the interior `correction`, the net `insertion_loss`, +the interior `room_constant` and `.plot()`. ## References -- Norton, M. P., & Karczub, D. G. (2003). *Fundamentals of noise and - vibration analysis for engineers* (2nd ed.). Cambridge University Press. - [doi:10.1017/CBO9781139163927](https://doi.org/10.1017/CBO9781139163927). - The sound power models of §4.6 (Table 4.5, Eqs. 4.53-4.56), the - room-to-room balance of §4.9 (Eqs. 4.92-4.101), the enclosure design - equation of §4.10 (Eqs. 4.102-4.115), and the worked problems 4.16, 4.18 - and 4.21 with their printed octave-band answers, which this guide is built - around. - Bies, D. A., Hansen, C. H., & Howard, C. Q. (2017). *Engineering noise control* (5th ed.). CRC Press. [doi:10.1201/9781351228152](https://doi.org/10.1201/9781351228152). The - steady-state room relations (§6.4, Eqs. 6.43-6.44) behind - `steady_state_spl` and `room_constant`, and the enclosure insertion loss - of §7.4.2 (Eqs. 7.103, 7.111) that is the library's default enclosure - model. -- ANSI/ASA S12.2-2019. *Criteria for evaluating room noise*. The NC curves - of Table 1 and the RC Mark II family of Annex D that the chain is rated - against. -- Kuttruff, H. (2016). *Room acoustics* (6th ed.). CRC Press. The Schroeder - frequency (Eq. 3.44) that bounds the diffuse-field assumption from below. + HVAC duct methods (§8.11–8.17) and the machine-enclosure noise reduction + (§7.4). +- Vér, I. L., & Beranek, L. L. (2006). *Noise and vibration control + engineering* (2nd ed.). Wiley. + [doi:10.1002/9780470172568](https://doi.org/10.1002/9780470172568). The + companion treatment of ducts and enclosures. --- diff --git a/site/public/llms/llms-devices.txt b/site/public/llms/llms-devices.txt index fb14fde19..4c89eef7f 100644 --- a/site/public/llms/llms-devices.txt +++ b/site/public/llms/llms-devices.txt @@ -16,7 +16,9 @@ to the room or the distance it is heard at. The **sound power and intensity** pages determine the central emission quantity, the sound power level: the figure that goes on a datasheet, feeds a -room or outdoor prediction and is checked against noise-emission limits. The +room or outdoor prediction and is checked against noise-emission limits — +including the route that reads it off the casing's own vibration when no +microphone can be placed. The **electroacoustics** pages turn to devices that are *supposed* to make sound (amplifiers, loudspeakers and microphones) and to the broadcast programme they carry, and the **noise control** pages hold the path measures that quiet @@ -24,7 +26,9 @@ a machine once its emission is known. If you are here to measure a machine, start with [Sound Power](https://jmrplens.github.io/phonometry/devices/emission/sound-power/) and let its decision guidance -pick the route; read [Sound Intensity (p-p)](https://jmrplens.github.io/phonometry/devices/emission/intensity/) +pick the route, which may end on an intensity probe or, when only vibration can +be measured, on the radiating surface itself; read +[Sound Intensity (p-p)](https://jmrplens.github.io/phonometry/devices/emission/intensity/) when that route involves an intensity probe. If you are here to bench-test audio gear, go straight to [Electroacoustics](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/); if you are here to @@ -46,6 +50,11 @@ The total acoustic emission of a source, and the power flux it is built on. the direct and comparison methods of ISO 3741. - [Sound Power by Intensity Scanning](https://jmrplens.github.io/phonometry/devices/emission/sound-power-intensity/): the on-site scanning of ISO 9614-2 and the ISO 9614-3 precision grade. +- [Sound power from surface vibration (ISO/TS 7849)](https://jmrplens.github.io/phonometry/devices/emission/vibration-sound-power/): + the radiated power from the surface-averaged velocity level and the radiation + factor, for the case where the machine cannot be moved, the room is not + qualified and only an accelerometer is available: the Part 1 upper limit and + the Part 2 engineering value. ## [Electroacoustics](https://jmrplens.github.io/phonometry/devices/electroacoustics/) @@ -88,4 +97,51 @@ it. - [Industrial Noise Control: HVAC and Enclosures](https://jmrplens.github.io/phonometry/devices/noise-control/noise-control/): duct attenuation, flow noise and machine-enclosure insertion loss. +## What this section does not cover + +**No facility is qualified here.** ISO 3745's free-field qualification of an +anechoic room, ISO 3741's reverberation-room qualification and IEC 61043's +residual-intensity test of a probe are all assumed to have been done: the +library warns on the coarse advisory criteria a standard states explicitly and +grades a residual index you supply, but it does not certify a room or an +instrument. The same boundary runs through the electroacoustics pages, which +**reduce and report curves the laboratory supplies** rather than telling you how +to acquire them, and through ISO/TS 7849, whose clauses 5 to 7 on +instrumentation, installation and measurement positions are laboratory practice +this library assumes. + +Three specific absences are worth knowing before you plan a job. ISO 9614-1's +discrete fixed-point power summation is **not implemented at all** — only its +field indicators are, reused by the scanning routes. Dissipative duct-lining +silencers are **not modelled from liner properties** anywhere: the reactive +elements are computed exactly, and the lined-elbow and plenum figures are +interpolated installation tables. And no page here predicts a panel's +transmission loss: `enclosure_insertion_loss` combines a value you supply with +the interior correction, and the prediction itself is [Insulation +design](https://jmrplens.github.io/phonometry/buildings/design/). + +Editions are pinned rather than current in two places: the distortion metrics +follow AES17-2015 and not the 2020 revision, and the microphone +rated-characteristics report follows IEC 60268-4:2014 and not the 2018 one. +Object-based audio (BS.1770-5 Annex 4) is out of scope, and the library +implements no spatial renderer, so an object-based programme has to be rendered +to a loudspeaker layout before it can be measured. + +## Before and after these pages + +Every emission quantity here is computed from band levels or from an intensity +pair, so the calibration, weighting and filtering behind them are in [Signal +analysis](https://jmrplens.github.io/phonometry/signals/), and [Build a sound level +meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) runs that chain end to end on +one runnable page. The derivations are split by physics rather than by topic: +[sound power determination](/phonometry/reference/theory/environment-transport/#sound-power-determination-iso-374437453746-iso-3741-iso-9614-23) +is under Environment and transport, and [sound intensity](/phonometry/reference/theory/signal-analysis/#sound-intensity-iec-61043) +under Signal analysis. The electroacoustics and noise-control pages carry their +derivations inline. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. + --- diff --git a/site/public/llms/llms-environment-assessment.txt b/site/public/llms/llms-environment-assessment.txt index bb65c2ee4..bd1a7cbc8 100644 --- a/site/public/llms/llms-environment-assessment.txt +++ b/site/public/llms/llms-environment-assessment.txt @@ -10,17 +10,314 @@ Source: https://jmrplens.github.io/phonometry/environment/assessment/ # Assessment and regulation Propagation says what arrives at the receiver. Assessment says what it counts -as, which is a separate question with its own standards: an indicator averaged -over the right period, adjustments for the character of the sound, and a limit -to compare the result against. +as, which is a separate question with its own standards. It is a chain with +three links: an **indicator** averages the sound over a defined period; +**adjustments** add decibels for character the average does not capture, tone +by tone and impulse by impulse; and a **limit**, always national, decides. +ISO 1996 supplies the first two links, and a national regulation supplies the +third together with its own version of the second. + +[Environmental Levels (ISO +1996-1/-2)](https://jmrplens.github.io/phonometry/environment/assessment/environmental-levels/) is the +indicator and adjustment layer, and the page most readers of this subsection +want. Lden weights the evening by +5 dB and the night by +10 dB over default +12/4/8 h periods, adjustable because Member States define them differently; +Ldn is the day-night variant; and the composite rating level of clause 6.5 +generalises both to arbitrary periods with source and character adjustments, +from +5 dB for regularly impulsive sound to +12 dB for highly impulsive sound. +The ISO 1996-2 half of the page *determines* rather than defines: the Annex C +tonal adjustment, the clause 10.4 correction for residual noise, and the +Annex F uncertainty budget that says how much the rating level is worth. It +starts from period levels you already have; producing those is [Integrated and +Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/). [Impulsive-sound prominence (NT ACOU 112)](https://jmrplens.github.io/phonometry/environment/assessment/impulsive-sound/) is the adjustment for sound whose impulses make it more annoying than its LAeq suggests, in both the Nordtest closed form and the ISO/PAS 1996-3 measurement -chain. The indicators it adjusts are in -[Environmental Levels](https://jmrplens.github.io/phonometry/environment/assessment/environmental-levels/), and the -national application of the whole chain is in -[the Spanish regulation](https://jmrplens.github.io/phonometry/environment/assessment/spanish-noise-regulation/). +chain: from the onset rate and level difference of each impulse it predicts a +prominence and converts it into the graduated adjustment KI added to the +measured LAeq. It is the measurement that replaces an assessor's judgement in +the character-adjustment slot of the chain above, and it ends in a `.report()` +assessment fiche. + +[Spanish Noise Regulation (RD 1367/2007)](https://jmrplens.github.io/phonometry/environment/assessment/spanish-noise-regulation/) +is what the whole chain looks like once a state has legislated it: the +corrected level LKeq with its tonal, low-frequency and impulsive corrections +Kt, Kf and Ki, evaluation periods split into noise phases, and the limit tables +an activity is judged against by land use. Read it as the worked example of a +national layer even if you do not work in Spain — it shows which parts of +ISO 1996 a regulation typically restates, and which it replaces. Kf, the +correction driven by the difference between the C-weighted and the A-weighted +level, has no counterpart in ISO 1996 at all. + +Read Environmental Levels first, then the impulsive-sound page as the +adjustment that feeds it, then the Spanish regulation as the national assembly +of both. + +## Pages in this section + +- [Environmental Levels (ISO 1996-1/-2)](https://jmrplens.github.io/phonometry/environment/assessment/environmental-levels/): + Lden, Ldn and the composite rating level of clause 6.5, the Annex C tonal + adjustment, the clause 10.4 residual-noise correction and the Annex F + uncertainty budget. +- [Impulsive-sound prominence (NT ACOU 112)](https://jmrplens.github.io/phonometry/environment/assessment/impulsive-sound/): + the predicted prominence of impulsive sounds, the graduated LAeq adjustment + KI, the ISO/PAS 1996-3 measurement chain and the assessment fiche. +- [Spanish Noise Regulation (RD 1367/2007)](https://jmrplens.github.io/phonometry/environment/assessment/spanish-noise-regulation/): + the corrected level LKeq, the Kt/Kf/Ki corrections, the evaluation periods + and noise phases, and the immission limit tables. + +## See also + +Pages elsewhere on the site that this section leans on: + +- [Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/): the + LAeq, percentile and event levels of each reference period, which every + indicator here starts from. +- [Objective audibility of tones in noise](https://jmrplens.github.io/phonometry/perception/psychoacoustics/tone-audibility/): + the ISO/PAS 20065 engineering method whose mean audibility the ISO 1996-2 + tonal adjustment maps into decibels. +- [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/): + the path that delivered the sound to the receiver being assessed. + +## What this section does not cover + +The library starts where the sound level meter stops. ISO 1996-2 fixes the +receiver positions and the façade corrections that turn a raw measurement into +the level these functions expect, and those position and correction procedures +are **not implemented** — only the arithmetic that follows once you have +applied them. The same is true nationally: the Annex IV measurement procedures +of RD 1367/2007 (microphone positions, series duration, number of +measurements) are not implemented either, and the acoustic zoning, noise maps +and action plans of Ley 37/2003 are planning instruments rather than +calculations. Two published alternatives are deliberately absent: only the +graduated KI of NT ACOU 112 Formula 2 is implemented, not the flat 5 dB +fallback of its Note 4, and the ISO 1996-1 Table A.1 category adjustments +appear only as the assessor's-judgement baseline the measurement replaces. +Finally, no limit table other than the Spanish one is built in: a limit is +national, and the library gives you the rating level to compare against +whichever one applies. + +--- + + + +Source: https://jmrplens.github.io/phonometry/environment/assessment/environmental-levels/ + +# Environmental Levels (ISO 1996-1/-2) + +A community does not hear a single $L_{Aeq}$: it hears a day whose evenings and +nights matter more, a source whose tones or impulses annoy beyond their +energy, and a measurement taken over a residual background with a finite +confidence. This page is the regulatory assessment chain built on top of +the measured period levels: the whole-day descriptors $L_{den}$/$L_{dn}$ +and the composite rating levels of ISO 1996-1, and the ISO 1996-2 +determination procedures that make the reported number defensible: the +tonal adjustment, the residual-noise correction and the measurement +uncertainty budget. + +The level-computation half of the topic, the $L_{eq}$/$L_{Aeq}$ integrals, +the percentile levels $L_N$, SEL and the noise dose that produce the period +levels this page consumes, is +[Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/); everything here assumes +those per-period values are already in hand. + +## Environmental noise: Lden, Ldn and rating levels (ISO 1996-1) + +Regulatory noise assessment weights evenings and nights more heavily. +`lden()` implements the day-evening-night level of ISO 1996-1:2016 (3.6.4: ++5 dB evening, +10 dB night, default 12/4/8 h periods, adjustable because +countries define them differently), `ldn()` the day-night variant (3.6.5), +and `composite_rating_level()` the general whole-day composite of clause 6.5 +(Formulae 5-6) for arbitrary periods with source or character adjustments +(Table A.1: e.g. +5 dB regular impulsive, +12 dB highly impulsive, +3 to ++6 dB prominent tones): + +```python +from phonometry import environment + +l = environment.lden(63.2, 58.1, 51.4) # from LAeq per period +r = environment.composite_rating_level([(63.2, 12, 0.0), # day + (58.1, 4, 5.0), # evening (+5) + (51.4, 8, 10.0)]) # night (+10) == environment.lden +``` + +Synthetic 24-hour urban LAeq profile with day, evening and night bands, the +5 and +10 dB weighted period levels and the resulting Lden + +
+Show the code for this figure + +```python +import numpy as np +import matplotlib.pyplot as plt +from phonometry import environment + +# Synthetic hourly LAeq of an urban road (dB), hours 00 to 23 +laeq_h = np.array([48, 46, 45, 45, 46, 50, 56, 64, 66, 65, 63, 63, + 64, 63, 63, 64, 65, 66, 65, 64, 63, 62, 61, 50], dtype=float) + +def period_leq(idx): + return 10 * np.log10(np.mean(10 ** (laeq_h[idx] / 10))) # energy mean + +ld = period_leq(np.arange(7, 19)) # day 07-19 +le = period_leq(np.arange(19, 23)) # evening 19-23 +ln_ = period_leq(np.r_[23, np.arange(0, 7)]) # night 23-07 +l_den = environment.lden(ld, le, ln_) +print(f"Lden = {l_den:.1f} dB") # Lden = 64.3 dB + +fig, ax = plt.subplots() +ax.axvspan(19, 23, color="C1", alpha=0.15) # evening +ax.axvspan(23, 24, color="C0", alpha=0.15); ax.axvspan(0, 7, color="C0", alpha=0.15) +ax.step(np.arange(25), np.r_[laeq_h, laeq_h[-1]], where="post", + color="0.3", label="Hourly LAeq") +ax.hlines(ld, 7, 19, color="C2", linestyle="--", label="Lday (+0 dB)") +ax.hlines(le + 5, 19, 23, color="C1", linestyle="--", label="Levening + 5 dB") +ax.hlines([ln_ + 10, ln_ + 10], [23, 0], [24, 7], color="C0", + linestyle="--", label="Lnight + 10 dB") +ax.hlines(l_den, 0, 24, color="C3", linewidth=2, label=f"Lden = {l_den:.1f} dB") +ax.set(xlabel="Hour of day", ylabel="Level [dB]", xlim=(0, 24)) +ax.legend(loc="upper left", fontsize=8, ncol=2) +plt.show() +``` + +
+ +### `lden()` / `ldn()` / `composite_rating_level()` parameters + +| Function | Key parameters | Notes | +| :--- | :--- | :--- | +| `lden(lday, levening, lnight, hours=(12, 4, 8))` | period $L_{Aeq}$ values [dB]; `hours` must sum to 24 | +5 dB evening, +10 dB night (3.6.4) | +| `ldn(lday, lnight, hours=(15, 9))` | | +10 dB night (3.6.5) | +| `composite_rating_level(periods)` | iterable of `(level_db, hours, adjustment_db)`; hours positive, finite and summing to 24 | General Formulae (5)-(6); adjustments per Table A.1 | + +Where you put the microphone changes the number: ISO 1996-2 fixes the receiver positions and their façade corrections. The diagram is measurement context; apply the corrections to your levels before analysis: + +Environmental noise measurement positions per ISO 1996-2: free field, 2 m from the facade and flush-mounted, with their corrections + +Combine with `laeq()` per time period to go from recordings to $L_{den}$. The +tonal adjustment itself is justified by the tonal audibility route of the next +section (fed, for the ISO/PAS 20065 method, by +[Objective audibility of tones in noise](https://jmrplens.github.io/phonometry/perception/psychoacoustics/tone-audibility/)); +the `tone_to_noise_ratio()` / `prominence_ratio()` verdicts of +[Prominent Discrete Tones](https://jmrplens.github.io/phonometry/perception/psychoacoustics/tone-prominence/) are +complementary emission screening, not the $K_t$ basis. + +## Determining levels: tonal adjustment, residual noise and uncertainty (ISO 1996-2) + +ISO 1996-2:2017 is the **determination** part: how the measured level is turned +into a rating level and reported with its uncertainty. The rating-level *summation* +and the time-of-day penalties live in ISO 1996-1 (above); ISO 1996-2 supplies the +tonal adjustment, the residual-noise correction and the uncertainty budget. + +**Tonal adjustment (engineering method, Annex C).** From the energy-summed tone +level $L_{pt}$ and the masking-noise level $L_{pn}$ in the critical band around a +tone, the audibility above the masking threshold is +$\Delta L_{ta} = L_{pt} - L_{pn} + 2 + \log_{10}[1 + (f_c/502)^{2.5}]$ dB (Formula (C.3)), +and the adjustment is $K_t = 0$ for $\Delta L_{ta} < 4$, $K_t = \Delta L_{ta} - 4$ +for $4 \le \Delta L_{ta} \le 10$ and $K_t = 6$ above (Formulae (C.4)–(C.6)). The +critical bandwidth is 100 Hz up to 500 Hz and 20 % of $f_c$ above (Table C.1). +The one-third-octave **survey method** (`tonal_seeking_survey`) flags a band +exceeding both neighbours by 15/8/5 dB (low/mid/high), and +`tonal_adjustment_from_mean_audibility` maps the ISO/PAS 20065 mean audibility to +$K_t$ (Table J.1). + +ISO 1996-2 tonal adjustment Kt as a piecewise function of the tonal audibility: zero below 4 dB, rising linearly to 6 dB between 4 and 10 dB, and 6 dB above, with the four Annex C.5 worked examples and a mid-range tone marked + +
+Show the code for this figure + +```python +import matplotlib.pyplot as plt +from phonometry import environment + +# ISO 1996-2:2007 Annex C.5, Example 2 (two tones near 400 Hz): +res = environment.assess_tonal_audibility(tone_level=54.1, masking_noise_level=45.2, + centre_frequency=430.0) +print(res.audibility, res.adjustment) # ΔLta ≈ 11.1 dB -> Kt = 6 dB +res.plot() +plt.show() +``` +
+ +**Residual-noise correction (Clause 10.4).** `residual_sound_correction()` +applies $L = 10\log_{10}(10^{L'/10} - 10^{L_\text{res}/10})$ (Formula (16)). With a +residual within 3 dB of the measured level no correction is allowed: the +*uncorrected* measured level $L'$ is then the reportable value, as an upper +bound of the specific sound (exposed as `reportable_upper_bound`, with +`reliable=False`). `gaussian_residual_level()` estimates the residual from +percentile levels (Annex I) and rejects inverted percentile orderings. + +**Measurement uncertainty (Clause 4, Annex F).** `combined_standard_uncertainty()` +forms $u = \sqrt{\sum (c_j u_j)^2}$ (Formula (2)) and +`expanded_uncertainty()` applies $k = 2$ (95 %) or $k = 1.3$ (80 %); +`residual_correction_uncertainty()` carries the residual-correction sensitivity +(Formulae (F.7)/(F.8)) and `uncertainty_from_repeated_measurements()` the +repeated-measurement standard uncertainty: the primary energy-domain route +(Formulae (17)+(19)), with the level-domain Note 2 substitute (Formula (20)) +reported alongside as `approximate_uncertainty` and a warning when the levels +spread beyond 3 dB, where the substitute grossly inflates. + +```python +from phonometry import environment + +# Tonal adjustment for a prominent tone: +tonal = environment.assess_tonal_audibility(54.1, 45.2, 430.0) # TonalAssessmentResult +kt = tonal.adjustment # 6 dB +tonal.plot() # this audibility on the Kt curve, as in the figure above + +# Subtract residual (background) noise from a measured level: +corr = environment.residual_sound_correction(measured_level=58.0, residual_level=50.0) +corr.corrected_level, corr.reliable + +# Combine an uncertainty budget and expand to 95 %: +u = environment.combined_standard_uncertainty([0.59, 0.3, 2.0, 0.40, 0.38]) # 2.18 dB (G.2) +environment.expanded_uncertainty(u) # 4.36 dB (k = 2) +``` + +## Quick answers + +### What penalties does Lden apply to evening and night noise? + +$L_{den}$, the day-evening-night level of ISO 1996-1:2016 (3.6.4), adds ++5 dB to the evening level and +10 dB to the night level before +energy-averaging the whole day, with default periods of 12, 4 and 8 hours, +adjustable because countries define them differently. The day-night variant +$L_{dn}$ (3.6.5) keeps only the +10 dB night penalty. + +## See also + +- [Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/): the $L_{eq}$/$L_{Aeq}$, + percentile and event levels the indicators of this page are assembled from. +- [Objective audibility of tones in noise](https://jmrplens.github.io/phonometry/perception/psychoacoustics/tone-audibility/): the tonal + audibility whose mean value maps to the $K_t$ adjustment (Table J.1). +- [Prominent Discrete Tones](https://jmrplens.github.io/phonometry/perception/psychoacoustics/tone-prominence/): the ECMA-418-1 + tone-to-noise and prominence-ratio verdicts, complementary emission + screening for the tonal question. +- [Occupational Noise Exposure](https://jmrplens.github.io/phonometry/perception/hearing/occupational-exposure/): the workplace + counterpart, from task samples to the daily exposure level with its + uncertainty budget. +- API reference: [`environment.assessment.measurement`](https://jmrplens.github.io/phonometry/reference/api/environment/measurement/) + and [`environment.assessment.rating`](https://jmrplens.github.io/phonometry/reference/api/environment/rating/). + +## References + +- British Standards Institution. (2003). *Description and measurement of + environmental noise — Guide to quantities and procedures* (BS 7445-1:2003). + [BSI Knowledge](https://knowledge.bsigroup.com/products/description-and-measurement-of-environmental-noise-guide-to-quantities-and-procedures). + The survey-practice companion of ISO 1996-1: which descriptor family fits + which assessment question (BS 7445-2:1991 covers the land-use data + acquisition). + +## Standards + +ISO 1996-1:2016, *Acoustics — Description, measurement and assessment of +environmental noise — Part 1: Basic quantities and assessment procedures*: +Lden (3.6.4), Ldn (3.6.5) and the composite whole-day rating level of +clause 6.5 (Formulae 5-6, Table A.1 adjustments). ISO 1996-2:2017, +*Acoustics — Description, measurement and assessment of environmental +noise — Part 2: Determination of sound pressure levels*: the Annex C tonal +adjustment, the Clause 10.4 residual-noise correction and the Clause 4 / +Annex F measurement uncertainty budget. --- @@ -344,227 +641,6 @@ Note 1), with the onset defined in clauses 4.5-4.7. --- - -Source: https://jmrplens.github.io/phonometry/environment/assessment/environmental-levels/ - -# Environmental Levels (ISO 1996-1/-2) - -A community does not hear a single $L_{Aeq}$: it hears a day whose evenings and -nights matter more, a source whose tones or impulses annoy beyond their -energy, and a measurement taken over a residual background with a finite -confidence. This page is the regulatory assessment chain built on top of -the measured period levels: the whole-day descriptors $L_{den}$/$L_{dn}$ -and the composite rating levels of ISO 1996-1, and the ISO 1996-2 -determination procedures that make the reported number defensible: the -tonal adjustment, the residual-noise correction and the measurement -uncertainty budget. - -The level-computation half of the topic, the $L_{eq}$/$L_{Aeq}$ integrals, -the percentile levels $L_N$, SEL and the noise dose that produce the period -levels this page consumes, is -[Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/); everything here assumes -those per-period values are already in hand. - -## Environmental noise: Lden, Ldn and rating levels (ISO 1996-1) - -Regulatory noise assessment weights evenings and nights more heavily. -`lden()` implements the day-evening-night level of ISO 1996-1:2016 (3.6.4: -+5 dB evening, +10 dB night, default 12/4/8 h periods, adjustable because -countries define them differently), `ldn()` the day-night variant (3.6.5), -and `composite_rating_level()` the general whole-day composite of clause 6.5 -(Formulae 5-6) for arbitrary periods with source or character adjustments -(Table A.1: e.g. +5 dB regular impulsive, +12 dB highly impulsive, +3 to -+6 dB prominent tones): - -```python -from phonometry import environment - -l = environment.lden(63.2, 58.1, 51.4) # from LAeq per period -r = environment.composite_rating_level([(63.2, 12, 0.0), # day - (58.1, 4, 5.0), # evening (+5) - (51.4, 8, 10.0)]) # night (+10) == environment.lden -``` - -Synthetic 24-hour urban LAeq profile with day, evening and night bands, the +5 and +10 dB weighted period levels and the resulting Lden - -
-Show the code for this figure - -```python -import numpy as np -import matplotlib.pyplot as plt -from phonometry import environment - -# Synthetic hourly LAeq of an urban road (dB), hours 00 to 23 -laeq_h = np.array([48, 46, 45, 45, 46, 50, 56, 64, 66, 65, 63, 63, - 64, 63, 63, 64, 65, 66, 65, 64, 63, 62, 61, 50], dtype=float) - -def period_leq(idx): - return 10 * np.log10(np.mean(10 ** (laeq_h[idx] / 10))) # energy mean - -ld = period_leq(np.arange(7, 19)) # day 07-19 -le = period_leq(np.arange(19, 23)) # evening 19-23 -ln_ = period_leq(np.r_[23, np.arange(0, 7)]) # night 23-07 -l_den = environment.lden(ld, le, ln_) -print(f"Lden = {l_den:.1f} dB") # Lden = 64.3 dB - -fig, ax = plt.subplots() -ax.axvspan(19, 23, color="C1", alpha=0.15) # evening -ax.axvspan(23, 24, color="C0", alpha=0.15); ax.axvspan(0, 7, color="C0", alpha=0.15) -ax.step(np.arange(25), np.r_[laeq_h, laeq_h[-1]], where="post", - color="0.3", label="Hourly LAeq") -ax.hlines(ld, 7, 19, color="C2", linestyle="--", label="Lday (+0 dB)") -ax.hlines(le + 5, 19, 23, color="C1", linestyle="--", label="Levening + 5 dB") -ax.hlines([ln_ + 10, ln_ + 10], [23, 0], [24, 7], color="C0", - linestyle="--", label="Lnight + 10 dB") -ax.hlines(l_den, 0, 24, color="C3", linewidth=2, label=f"Lden = {l_den:.1f} dB") -ax.set(xlabel="Hour of day", ylabel="Level [dB]", xlim=(0, 24)) -ax.legend(loc="upper left", fontsize=8, ncol=2) -plt.show() -``` - -
- -### `lden()` / `ldn()` / `composite_rating_level()` parameters - -| Function | Key parameters | Notes | -| :--- | :--- | :--- | -| `lden(lday, levening, lnight, hours=(12, 4, 8))` | period $L_{Aeq}$ values [dB]; `hours` must sum to 24 | +5 dB evening, +10 dB night (3.6.4) | -| `ldn(lday, lnight, hours=(15, 9))` | | +10 dB night (3.6.5) | -| `composite_rating_level(periods)` | iterable of `(level_db, hours, adjustment_db)`; hours positive, finite and summing to 24 | General Formulae (5)-(6); adjustments per Table A.1 | - -Where you put the microphone changes the number: ISO 1996-2 fixes the receiver positions and their façade corrections. The diagram is measurement context; apply the corrections to your levels before analysis: - -Environmental noise measurement positions per ISO 1996-2: free field, 2 m from the facade and flush-mounted, with their corrections - -Combine with `laeq()` per time period to go from recordings to $L_{den}$. The -tonal adjustment itself is justified by the tonal audibility route of the next -section (fed, for the ISO/PAS 20065 method, by -[Objective audibility of tones in noise](https://jmrplens.github.io/phonometry/perception/psychoacoustics/tone-audibility/)); -the `tone_to_noise_ratio()` / `prominence_ratio()` verdicts of -[Prominent Discrete Tones](https://jmrplens.github.io/phonometry/perception/psychoacoustics/tone-prominence/) are -complementary emission screening, not the $K_t$ basis. - -## Determining levels: tonal adjustment, residual noise and uncertainty (ISO 1996-2) - -ISO 1996-2:2017 is the **determination** part: how the measured level is turned -into a rating level and reported with its uncertainty. The rating-level *summation* -and the time-of-day penalties live in ISO 1996-1 (above); ISO 1996-2 supplies the -tonal adjustment, the residual-noise correction and the uncertainty budget. - -**Tonal adjustment (engineering method, Annex C).** From the energy-summed tone -level $L_{pt}$ and the masking-noise level $L_{pn}$ in the critical band around a -tone, the audibility above the masking threshold is -$\Delta L_{ta} = L_{pt} - L_{pn} + 2 + \log_{10}[1 + (f_c/502)^{2.5}]$ dB (Formula (C.3)), -and the adjustment is $K_t = 0$ for $\Delta L_{ta} < 4$, $K_t = \Delta L_{ta} - 4$ -for $4 \le \Delta L_{ta} \le 10$ and $K_t = 6$ above (Formulae (C.4)–(C.6)). The -critical bandwidth is 100 Hz up to 500 Hz and 20 % of $f_c$ above (Table C.1). -The one-third-octave **survey method** (`tonal_seeking_survey`) flags a band -exceeding both neighbours by 15/8/5 dB (low/mid/high), and -`tonal_adjustment_from_mean_audibility` maps the ISO/PAS 20065 mean audibility to -$K_t$ (Table J.1). - -ISO 1996-2 tonal adjustment Kt as a piecewise function of the tonal audibility: zero below 4 dB, rising linearly to 6 dB between 4 and 10 dB, and 6 dB above, with the four Annex C.5 worked examples and a mid-range tone marked - -
-Show the code for this figure - -```python -import matplotlib.pyplot as plt -from phonometry import environment - -# ISO 1996-2:2007 Annex C.5, Example 2 (two tones near 400 Hz): -res = environment.assess_tonal_audibility(tone_level=54.1, masking_noise_level=45.2, - centre_frequency=430.0) -print(res.audibility, res.adjustment) # ΔLta ≈ 11.1 dB -> Kt = 6 dB -res.plot() -plt.show() -``` -
- -**Residual-noise correction (Clause 10.4).** `residual_sound_correction()` -applies $L = 10\log_{10}(10^{L'/10} - 10^{L_\text{res}/10})$ (Formula (16)). With a -residual within 3 dB of the measured level no correction is allowed: the -*uncorrected* measured level $L'$ is then the reportable value, as an upper -bound of the specific sound (exposed as `reportable_upper_bound`, with -`reliable=False`). `gaussian_residual_level()` estimates the residual from -percentile levels (Annex I) and rejects inverted percentile orderings. - -**Measurement uncertainty (Clause 4, Annex F).** `combined_standard_uncertainty()` -forms $u = \sqrt{\sum (c_j u_j)^2}$ (Formula (2)) and -`expanded_uncertainty()` applies $k = 2$ (95 %) or $k = 1.3$ (80 %); -`residual_correction_uncertainty()` carries the residual-correction sensitivity -(Formulae (F.7)/(F.8)) and `uncertainty_from_repeated_measurements()` the -repeated-measurement standard uncertainty: the primary energy-domain route -(Formulae (17)+(19)), with the level-domain Note 2 substitute (Formula (20)) -reported alongside as `approximate_uncertainty` and a warning when the levels -spread beyond 3 dB, where the substitute grossly inflates. - -```python -from phonometry import environment - -# Tonal adjustment for a prominent tone: -tonal = environment.assess_tonal_audibility(54.1, 45.2, 430.0) # TonalAssessmentResult -kt = tonal.adjustment # 6 dB -tonal.plot() # this audibility on the Kt curve, as in the figure above - -# Subtract residual (background) noise from a measured level: -corr = environment.residual_sound_correction(measured_level=58.0, residual_level=50.0) -corr.corrected_level, corr.reliable - -# Combine an uncertainty budget and expand to 95 %: -u = environment.combined_standard_uncertainty([0.59, 0.3, 2.0, 0.40, 0.38]) # 2.18 dB (G.2) -environment.expanded_uncertainty(u) # 4.36 dB (k = 2) -``` - -## Quick answers - -### What penalties does Lden apply to evening and night noise? - -$L_{den}$, the day-evening-night level of ISO 1996-1:2016 (3.6.4), adds -+5 dB to the evening level and +10 dB to the night level before -energy-averaging the whole day, with default periods of 12, 4 and 8 hours, -adjustable because countries define them differently. The day-night variant -$L_{dn}$ (3.6.5) keeps only the +10 dB night penalty. - -## See also - -- [Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/): the $L_{eq}$/$L_{Aeq}$, - percentile and event levels the indicators of this page are assembled from. -- [Objective audibility of tones in noise](https://jmrplens.github.io/phonometry/perception/psychoacoustics/tone-audibility/): the tonal - audibility whose mean value maps to the $K_t$ adjustment (Table J.1). -- [Prominent Discrete Tones](https://jmrplens.github.io/phonometry/perception/psychoacoustics/tone-prominence/): the ECMA-418-1 - tone-to-noise and prominence-ratio verdicts, complementary emission - screening for the tonal question. -- [Occupational Noise Exposure](https://jmrplens.github.io/phonometry/perception/hearing/occupational-exposure/): the workplace - counterpart, from task samples to the daily exposure level with its - uncertainty budget. -- API reference: [`environment.assessment.measurement`](https://jmrplens.github.io/phonometry/reference/api/environment/measurement/) - and [`environment.assessment.rating`](https://jmrplens.github.io/phonometry/reference/api/environment/rating/). - -## References - -- British Standards Institution. (2003). *Description and measurement of - environmental noise — Guide to quantities and procedures* (BS 7445-1:2003). - [BSI Knowledge](https://knowledge.bsigroup.com/products/description-and-measurement-of-environmental-noise-guide-to-quantities-and-procedures). - The survey-practice companion of ISO 1996-1: which descriptor family fits - which assessment question (BS 7445-2:1991 covers the land-use data - acquisition). - -## Standards - -ISO 1996-1:2016, *Acoustics — Description, measurement and assessment of -environmental noise — Part 1: Basic quantities and assessment procedures*: -Lden (3.6.4), Ldn (3.6.5) and the composite whole-day rating level of -clause 6.5 (Formulae 5-6, Table A.1 adjustments). ISO 1996-2:2017, -*Acoustics — Description, measurement and assessment of environmental -noise — Part 2: Determination of sound pressure levels*: the Annex C tonal -adjustment, the Clause 10.4 residual-noise correction and the Clause 4 / -Annex F measurement uncertainty budget. - ---- - - Source: https://jmrplens.github.io/phonometry/environment/assessment/spanish-noise-regulation/ diff --git a/site/public/llms/llms-environment-propagation.txt b/site/public/llms/llms-environment-propagation.txt index 6db5f99ed..b41ea6413 100644 --- a/site/public/llms/llms-environment-propagation.txt +++ b/site/public/llms/llms-environment-propagation.txt @@ -9,63 +9,58 @@ Source: https://jmrplens.github.io/phonometry/environment/propagation/ # Outdoor sound -Outdoor sound assessment has two halves: predicting the level a source -delivers to a distant receiver, and judging the character of the sound that -actually arrives. The pages of this section split along that line, with the -prediction half starting one step earlier, at the source itself. +This section is the **path**: what happens to a sound between a source of known +power and a receiver hundreds of metres away. Its three pages go from the +engineering method down to the physics it approximates, and then to the one +thing both of them assume does not happen. [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) is the -prediction half. Starting from a source's **sound power**, the ISO 9613-2 -general method subtracts, octave band by octave band, every mechanism that -attenuates sound on its way: geometrical divergence, atmospheric absorption -(supplied by the pure-tone coefficient of **ISO 9613-1**), the ground effect -and barrier screening, with a meteorological correction for long-term -averages. The page keeps the per-term breakdown visible, so a prediction is -never a black box: you can see exactly which mechanism buys how many decibels -at which frequency. - -[CNOSSOS-EU railway source emission](https://jmrplens.github.io/phonometry/environment/sources/cnossos-rail-emission/) -is the source half for the railway. Section 2.3 of Annex II to Directive -2002/49/EC turns a roughness spectrum, a set of transfer functions and a train -flow into the two equivalent source lines every strategic noise map in the -European Union starts from, at 0,5 m and at 4,0 m above the rail head, with -impact noise, curve squeal, traction, aerodynamic noise above 200 km/h and the -bridge term each allocated to the height it radiates from. +engineering method. Starting from a source's **sound power**, ISO 9613-2 +subtracts, octave band by octave band, every mechanism that attenuates sound on +its way: geometrical divergence, atmospheric absorption (supplied by the +pure-tone coefficient of **ISO 9613-1**), the ground effect and barrier +screening, with a meteorological correction for long-term averages. The page +keeps the per-term breakdown visible, so a prediction is never a black box: you +can see exactly which mechanism buys how many decibels at which frequency. +Start here — the other two pages exist to say when its terms can be trusted. [Spherical ground effect and advanced barriers](https://jmrplens.github.io/phonometry/environment/propagation/ground-barriers/) -goes underneath the ISO 9613-2 fits to the wave acoustics they approximate: the +goes underneath two of those terms to the wave acoustics they fit: the Weyl-Van der Pol spherical-wave reflection coefficient of a finite-impedance ground, and barrier diffraction by the Kurze-Anderson Fresnel number, the exact rigid half-plane, thick barriers and the coherent four-path barrier on the -ground, all resolving the frequency-dependent interference the octave-band terms -smooth away. - -[CNOSSOS-EU road traffic source emission](https://jmrplens.github.io/phonometry/environment/sources/cnossos-road-emission/) -supplies the source power that a prediction starts from, for the one source -that dominates almost every noise map: road traffic. The common EU method of -Annex II to Directive 2002/49/EC builds a rolling and a propulsion sound power -for each vehicle category, corrects the rolling term for pavement, air -temperature and studded tyres and the propulsion term for pavement and road -gradient, applies the junction correction to both, and delivers a directional -sound power per metre of source line. - -[Impulsive-sound prominence (NT ACOU 112)](https://jmrplens.github.io/phonometry/environment/assessment/impulsive-sound/) -is the assessment half. Noise containing distinct impulses (hammering, -riveting, pile driving) annoys more than a steady sound of the same LAeq, and -the Nordtest method quantifies that: from the onset rate and level difference -of each impulse it computes a predicted **prominence**, and converts it into -the graduated adjustment KI that is added to the measured LAeq in a rating -level. - -The surrounding machinery lives nearby: the rating levels and Lden that -assessments end in are covered in -[Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/), the tonal -counterpart of the impulsive adjustment in -[Objective audibility of tones in noise](https://jmrplens.github.io/phonometry/perception/psychoacoustics/tone-audibility/), -and the sources that feed a propagation calculation in the -[Sound power and intensity](https://jmrplens.github.io/phonometry/devices/emission/) and -[Aircraft and wind energy](https://jmrplens.github.io/phonometry/aircraft/) -sections. +ground. What it resolves is the frequency-dependent interference the +octave-band terms smooth away: a ground dip is a cancellation between a direct +and a reflected path, at a frequency that depends on the geometry and the +ground impedance, and a tabulated correction cannot know where it falls. Open +this page when the answer is dominated by the ground or by a screen, or when +the octave-band result has to be defended against a measurement. + +[Atmospheric refraction: rays and the GFPE](https://jmrplens.github.io/phonometry/environment/propagation/atmospheric-refraction/) +removes the assumption both pages above are built on. Sound speed changes with +height, so rays are curved rather than straight, and whether that matters is +mostly a question of range: a representative surface-layer gradient bends rays +on a radius of about 3.4 km, so over the first hundred metres the homogeneous +models are accurate, and beyond a few hundred the geometry takes over. Downwind +or under a nocturnal inversion the rays close over the ground and hold the +level up; upwind the same profile opens an acoustic shadow into which the level +collapses by 20 dB or more. That asymmetry — the same machine at the same +distance, tens of decibels apart depending on which side you stand — is what +ISO 9613-2 fixes by decree in its favourable-propagation convention and +compresses into the scalar meteorological correction. This page computes it, +with curved rays and closed-form shadow-zone distances, and with the Green's +function parabolic equation as the reference field. + +Read them in that order. The rating that a predicted level ends in is not here: +the period levels come from [Integrated and Statistical +Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/), and Lden, Ldn and the rating level +from [Environmental Levels (ISO +1996-1/-2)](https://jmrplens.github.io/phonometry/environment/assessment/environmental-levels/) in the +[assessment](https://jmrplens.github.io/phonometry/environment/assessment/) subsection. The source +strengths a prediction starts from are in +[Environmental sources](https://jmrplens.github.io/phonometry/environment/sources/) for road, rail and +wind turbines, in [Sound power and intensity](https://jmrplens.github.io/phonometry/devices/emission/) +for a machine, and in [Aircraft noise](https://jmrplens.github.io/phonometry/aircraft/) for aircraft. ## Pages in this section @@ -84,16 +79,34 @@ sections. Pages elsewhere on the site that this section leans on: -- [CNOSSOS-EU railway source emission](https://jmrplens.github.io/phonometry/environment/sources/cnossos-rail-emission/): - the common EU railway emission method, from rail and wheel roughness to the - directional sound power per metre of the two equivalent source lines. -- [CNOSSOS-EU road traffic source emission](https://jmrplens.github.io/phonometry/environment/sources/cnossos-road-emission/): - the road source of Annex II to Directive 2002/49/EC: rolling and propulsion - sound power per vehicle category with the Appendix F database, and the - directional sound power per metre of source line. -- [Impulsive-sound prominence (NT ACOU 112)](https://jmrplens.github.io/phonometry/environment/assessment/impulsive-sound/): - the predicted prominence of impulsive sounds and the graduated LAeq - adjustment KI. +- [CNOSSOS-EU road traffic source emission](https://jmrplens.github.io/phonometry/environment/sources/cnossos-road-emission/) + and [CNOSSOS-EU railway source emission](https://jmrplens.github.io/phonometry/environment/sources/cnossos-rail-emission/), + both in [Environmental sources](https://jmrplens.github.io/phonometry/environment/sources/): the + directional sound power per metre of source line that a prediction starts + from. +- [Impulsive-sound prominence (NT ACOU 112)](https://jmrplens.github.io/phonometry/environment/assessment/impulsive-sound/), + in [Assessment and regulation](https://jmrplens.github.io/phonometry/environment/assessment/): the + character adjustment applied to the level once it has arrived. + +## What this section does not cover + +These are point-to-point models, not a mapping engine. Each call takes one +source, one receiver and the ground between them; there is no terrain +elevation profile, no building geometry and no GIS layer, both refraction +models assume flat ground at height zero and a profile that varies with height +alone rather than along the path, and how a source line is broken into point +sources is declared out of scope by CNOSSOS itself. The **CNOSSOS-EU +propagation method of section 2.5 is not implemented**: it is a different model +from ISO 9613-2, so a calculation that pairs CNOSSOS source powers with the +path here is not a CNOSSOS calculation. The coherent barrier-on-ground model +weights its four diffracted paths with a single reflection coefficient computed +over the overall geometry, so it is coherent and reciprocal but is not a +boundary-element solution, and no model here computes turbulent scattering: +ISO 9613-2 absorbs it into the fixed caps on its screening term, and the +wave-acoustic and refraction pages assume a non-turbulent atmosphere +outright. Nothing on these pages produces a rating: no Lden, +no limit value and no verdict — those are +[Assessment and regulation](https://jmrplens.github.io/phonometry/environment/assessment/). --- diff --git a/site/public/llms/llms-environment-sources.txt b/site/public/llms/llms-environment-sources.txt index fe2cb747a..5f8284b32 100644 --- a/site/public/llms/llms-environment-sources.txt +++ b/site/public/llms/llms-environment-sources.txt @@ -9,16 +9,95 @@ Source: https://jmrplens.github.io/phonometry/environment/sources/ # Environmental sources -Before anything propagates there has to be a source, described in the terms the -propagation model expects: a line power per octave band for traffic, an -apparent sound power level for a turbine. - -[CNOSSOS-EU road traffic](https://jmrplens.github.io/phonometry/environment/sources/cnossos-road-emission/) -and [CNOSSOS-EU railways](https://jmrplens.github.io/phonometry/environment/sources/cnossos-rail-emission/) -are the emission halves of the European method, the ones a strategic noise map -is built on. [Wind-turbine noise](https://jmrplens.github.io/phonometry/environment/sources/wind-turbine-noise/) -is IEC 61400-11, where the source descriptor and its tonal audibility are -measured rather than tabulated. +A propagation model does not accept a machine; it accepts a **source +descriptor** with a fixed geometry. For traffic that means an incoherent source +line carrying a sound power per metre at a standardised height; for a turbine it +means an apparent sound power referred to an equivalent point source at the +rotor centre. The height, the band range and the directivity are part of the +definition, not details of the measurement, which is why an emission method is +a standard in its own right and not a preliminary step. What every page here +produces is that descriptor, in the form +[Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) +consumes. + +[CNOSSOS-EU road traffic source emission](https://jmrplens.github.io/phonometry/environment/sources/cnossos-road-emission/) +implements section 2.2 of Annex II to Directive 2002/49/EC in its consolidated +text: Directive (EU) 2015/996 as corrected by the OJ L 5 corrigendum of 2018, +which restores the 63 Hz to 8 kHz octave range the original clause contradicted, +and amended by Delegated Directive (EU) 2021/1226, which replaces Tables F-1 and +F-4 outright and makes the current source some 2,5 to 3,5 dB(A) louder than the +2015 one — so any comparison with pre-2021 literature carries that offset. Each +vehicle is a point source 0,05 m above the pavement, with the first pavement +reflection already inside its power. Per category (light, medium heavy, heavy, +mopeds, motorcycles) a rolling and a propulsion term are energy-summed, +corrected for pavement, air temperature, studded tyres and gradient, adjusted +near junctions, and turned into a directional power per metre of source line. + +[CNOSSOS-EU railway source emission](https://jmrplens.github.io/phonometry/environment/sources/cnossos-rail-emission/) +implements section 2.3 on the same pattern, but with **two** equivalent source +lines, at 0,5 m and at 4,0 m above the rail head, because the physical sources +radiate from different heights. It starts one step further back than the road +method: from wheel and rail roughness spectra, passed through the contact filter +and the vehicle and track transfer functions, with the wavelength-to-frequency +conversion at the train speed that makes rail arithmetic different from road +arithmetic. Impact noise at joints and switches, curve squeal, traction, +aerodynamic noise above 200 km/h and a bridge term are each allocated to the +height they radiate from. + +[Wind-turbine noise: sound power and tonal audibility](https://jmrplens.github.io/phonometry/environment/sources/wind-turbine-noise/) +is IEC 61400-11, where the descriptor is **measured** rather than tabulated. +With the microphone on a ground board at the horizontal distance R0 = H + D/2, +the apparent sound power per band follows from the measured pressure level and +the slant distance to the rotor centre, the −6 dB in the formula accounting for +the pressure doubling on the board; results are binned by standardised wind +speed. The same page carries the tonal audibility that decides whether a +blade-passing, gearbox or generator tone stands above its masking noise, and +ends in a `.report()` assessment fiche. + +Read the road page first even for a railway job: it introduces the source-line +bookkeeping and the Annex II layering that the rail page reuses. The turbine +page is independent of both. + +## Pages in this section + +- [CNOSSOS-EU road traffic source emission](https://jmrplens.github.io/phonometry/environment/sources/cnossos-road-emission/): + the rolling and propulsion sound power per vehicle category, its pavement, + temperature, studded-tyre, gradient and junction corrections, and the + directional power per metre of source line. +- [CNOSSOS-EU railway source emission](https://jmrplens.github.io/phonometry/environment/sources/cnossos-rail-emission/): + roughness and transfer functions to the two equivalent source lines at 0,5 m + and 4,0 m, with the impact, squeal, traction, aerodynamic and bridge terms. +- [Wind-turbine noise: sound power and tonal audibility](https://jmrplens.github.io/phonometry/environment/sources/wind-turbine-noise/): + the IEC 61400-11 apparent sound power referred to the rotor centre, its + wind-speed binning and the tonal-audibility chain, with the assessment fiche. + +## See also + +Pages elsewhere on the site that this section leans on: + +- [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/): + the path model every descriptor here is built to feed. +- [Sound power and intensity](https://jmrplens.github.io/phonometry/devices/emission/): how a machine + that is not a vehicle is characterised. + +## What this section does not cover + +Two of the four CNOSSOS sources are missing, by omission rather than oversight: +the **industrial source** of section 2.4 and Appendix H is not implemented, and +neither is the **aircraft source** of sections 2.6 and 2.7 — aircraft noise is +covered by the ICAO and ECAC methods in [Aircraft +noise](https://jmrplens.github.io/phonometry/aircraft/), which is a different family of models entirely. +Neither is the **CNOSSOS propagation method** of section 2.5: it differs from +the ISO 9613-2 model this library implements, so pairing these source powers +with [Outdoor Sound +Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) does not +give a CNOSSOS result. Inside the two methods that are here, three gaps come +from the source documents themselves: the open vehicle category 5 has no +coefficients in Appendix F and is not modelled, rail roughness classes N and B +carry no spectrum in Appendix G and must be supplied by the Member State, and +how a source line is split into point sources is declared out of scope by the +method. Depots, stations and loudspeakers are railway sources under 2.3.3 but +are treated by the industrial method, so they are not here either. --- diff --git a/site/public/llms/llms-environment.txt b/site/public/llms/llms-environment.txt index 10e636273..b28d32af6 100644 --- a/site/public/llms/llms-environment.txt +++ b/site/public/llms/llms-environment.txt @@ -39,6 +39,15 @@ consumes is shared with the room and materials pages. Start with [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/); it introduces the source-path-receiver bookkeeping the transport pages reuse. +The three jobs this section is normally used for combine the subsections +differently. A **strategic noise map** is a CNOSSOS source model, a propagation +model and Lden. A **plant or permit assessment** is a measured sound power +(determined in [Sources and devices](https://jmrplens.github.io/phonometry/devices/emission/)), ISO 9613-2 +to the nearest dwelling, and the ISO 1996 rating level with its adjustments. +An **activity inspection** is a sound level meter at a receiver point and +RD 1367/2007, or whichever national regulation applies, with no propagation +model in the chain at all. + ## [Assessment and regulation](https://jmrplens.github.io/phonometry/environment/assessment/) What the received sound is rated against, once it has arrived. @@ -48,7 +57,7 @@ What the received sound is rated against, once it has arrived. turn a measured LAeq into an assessed one. - [Spanish Noise Regulation (RD 1367/2007)](https://jmrplens.github.io/phonometry/environment/assessment/spanish-noise-regulation/): the national application of that chain, with its own limits and its own - tonal and impulsive corrections. + tonal, low-frequency and impulsive corrections. - [Impulsive-sound prominence (NT ACOU 112)](https://jmrplens.github.io/phonometry/environment/assessment/impulsive-sound/): the predicted prominence of impulsive sounds and the graduated adjustment added to LAeq. @@ -60,10 +69,12 @@ arrives. - [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/): atmospheric absorption (ISO 9613-1) and the ISO 9613-2 general method with - its per-term attenuation breakdown. -- [Ground effect and barriers](https://jmrplens.github.io/phonometry/environment/propagation/ground-barriers/): - the ground attenuation of ISO 9613-2 and the insertion loss a barrier adds - to the path. + its per-term attenuation breakdown, including the tabulated ground term and + the barrier screening term. +- [Spherical ground effect and advanced barriers](https://jmrplens.github.io/phonometry/environment/propagation/ground-barriers/): + the wave acoustics underneath those two fits — the Weyl-Van der Pol + spherical-wave reflection coefficient over finite-impedance ground, and + wave-theoretic screen diffraction. - [Atmospheric refraction](https://jmrplens.github.io/phonometry/environment/propagation/atmospheric-refraction/): how wind and temperature gradients bend a ray into or out of a shadow zone. @@ -85,4 +96,43 @@ Aircraft are the other transport source with internationally fixed metrics, and they have a topic of their own: [Aircraft noise](https://jmrplens.github.io/phonometry/aircraft/). +## What this section does not cover + +Only the source side of CNOSSOS-EU Annex II is implemented, and only two of its +four sources. The **industrial source** of section 2.4 and Appendix H, and the +**aircraft source** of sections 2.6 and 2.7, are not implemented; aircraft noise +is covered by the ICAO and ECAC methods in [Aircraft +noise](https://jmrplens.github.io/phonometry/aircraft/), which is a different family of models, and a +non-vehicle machine is characterised as a sound power in [Sources and +devices](https://jmrplens.github.io/phonometry/devices/emission/). The **CNOSSOS propagation method** of +section 2.5 is not implemented either: the path here is ISO 9613-2, a different +model, so a chain built from CNOSSOS sources and this library's propagation is +not a CNOSSOS calculation and should not be reported as one. + +Nothing here is a mapping engine. There is no terrain model, no city geometry +and no GIS layer: the propagation functions take one source, one receiver and +the ground between them, both refraction models assume flat ground at z = 0, +and how a source line is split into point sources is declared out of scope by +CNOSSOS itself. On the assessment side, the library starts where the sound +level meter stops — the ISO 1996-2 receiver positions and façade corrections, +and the RD 1367/2007 Annex IV measurement procedures (microphone positions, +series duration, number of measurements), are not implemented, only the +arithmetic that follows once you have applied them. Acoustic zoning, noise maps +and action plans under Ley 37/2003 are planning instruments, not calculations. + +## Before and after these pages + +Every rating here is an adjusted $L_{eq}$, so the calibration, weighting and +time integration that produce it are in [Signal +analysis](https://jmrplens.github.io/phonometry/signals/), and [Build a sound level +meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) runs that chain end to end on +one runnable page. The derivations are in [Environment and transport +theory](https://jmrplens.github.io/phonometry/reference/theory/environment-transport/): the ISO 1996-1 descriptors, the +NT ACOU 112 prominence criterion and the ISO 9613 attenuation terms. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. + --- diff --git a/site/public/llms/llms-materials-absorbers.txt b/site/public/llms/llms-materials-absorbers.txt index 759bf83cd..f77deb477 100644 --- a/site/public/llms/llms-materials-absorbers.txt +++ b/site/public/llms/llms-materials-absorbers.txt @@ -10,10 +10,12 @@ Source: https://jmrplens.github.io/phonometry/materials/absorbers/ # Absorbers An absorber can be characterised at three scales, and this subsection walks -them in order: the finished product in a reverberation room, the small sample -in an impedance tube, and the raw material in a flow rig, with the prediction -models that tie the three together and the metamaterial designs that push -them past the classical thickness rules. +them from the finished product inwards: the mounted product in a reverberation +room, the raw material in a flow rig, and the small sample in an impedance +tube — the flow rig before the tube because the resistivity it measures is the +single parameter every model the tube is fitted against starts from. Then come +the prediction models that tie the three together, and the metamaterial designs +that push them past the classical thickness rules. [Sound Absorption Measurement and Rating](https://jmrplens.github.io/phonometry/materials/absorbers/absorption-measurement/) is the product scale: the ISO 354 reverberation-room measurement of the @@ -66,6 +68,23 @@ meshed cell. critical-coupling condition and the slow-sound slit panel with its design solver. +## What this section does not cover + +None of these pages qualifies a laboratory. ISO 354's room requirements of +Annex A — the number of loudspeaker and microphone positions, the diffusing +elements — are not checked; the functions convert an +already-measured decay pair and only warn when the room volume or sample area +falls outside the clause 6 limits. Two editions are cited but not implemented: +the code follows the 1998/2001 transfer-function method of ISO 10534-2, not the +2023 edition, and ASTM E2611-19, not E2611-24. The probe-traverse refinements of +ISO 10534-1 (extrapolating the minima to the sample face, probe-body +corrections) are described but not automated. The prediction models are +forward-only: they turn a resistivity into an impedance, and no inverse solver +recovers the material parameters from a measured curve. And no measurement +standard governs the metamaterial designs at all — a built panel is verified in +the impedance tube or the reverberation room like any other absorber, which is +why that page states a prediction and not a rating. + --- diff --git a/site/public/llms/llms-materials-diffusers.txt b/site/public/llms/llms-materials-diffusers.txt index 0c9ec4e93..2ce9da015 100644 --- a/site/public/llms/llms-materials-diffusers.txt +++ b/site/public/llms/llms-materials-diffusers.txt @@ -12,8 +12,9 @@ Source: https://jmrplens.github.io/phonometry/materials/diffusers/ Where the [Absorbers](https://jmrplens.github.io/phonometry/materials/absorbers/) subsection asks how much energy a material removes from the field, this one asks what a *surface* does with the sound it returns: how much it throws off the specular -direction, how evenly it spreads it, and, out on a pavement, how much it -absorbs where no laboratory can follow. Three guides walk that ground. +direction and how evenly it spreads it. Two guides walk that ground, and a +third family of surface measurements — pavements characterised where they lie — +has its own subsection nested inside this group. [Diffusers and Their Coefficients](https://jmrplens.github.io/phonometry/materials/diffusers/diffusers/) is the measurement and design core: the random-incidence **scattering coefficient** @@ -30,12 +31,10 @@ deep, with critical coupling supplying the perfectly absorbing `0` state that ternary sequences need. The published quadratic-residue design is evaluated end to end, transfer-matrix chain to FDTD cross-check. -[In-situ Road-Surface Absorption](https://jmrplens.github.io/phonometry/materials/surfaces/road-absorption/) takes -the absorption question outdoors: the ISO 13472-1 subtraction technique -separates the incident and road-reflected components of an impulse with the -Adrienne window, and the ISO 13472-2 spot tube presses a portable -impedance tube onto the pavement for reflective surfaces, with the choice -between the two methods spelled out. +[Surfaces measured in place](https://jmrplens.github.io/phonometry/materials/surfaces/) takes the +absorption question outdoors, to the surfaces that have no sample: it covers +the ISO 13472-1 subtraction technique and the ISO 13472-2 spot tube, and the +decision between them. The neighbours are close: the diffuser panels are surface relatives of the [metamaterial absorbers](https://jmrplens.github.io/phonometry/materials/absorbers/metamaterial-absorbers/) built @@ -58,9 +57,27 @@ methods serve the outdoor-noise interest of Pages elsewhere on the site that this section leans on: -- [In-situ Road-Surface Absorption](https://jmrplens.github.io/phonometry/materials/surfaces/road-absorption/): +- [Surfaces measured in place](https://jmrplens.github.io/phonometry/materials/surfaces/) and its guide + [In-situ Road-Surface Absorption](https://jmrplens.github.io/phonometry/materials/surfaces/road-absorption/): the ISO 13472-1 subtraction technique and the ISO 13472-2 spot method. +## What this section does not cover + +Both prediction models here are **design estimates, not measurements**. The +Fraunhofer far field the diffuser and metadiffuser pages share loses accuracy +at low frequency, at grazing angles and over strongly absorbing surfaces, and +it ignores edge diffraction, so it grades a well-depth sequence before it is +built and does not replace an ISO 17497-2 measurement; the metadiffuser model +is locally reacting on top of that, with no coupling between wells. Only the +quadratic-residue depth sequence has a dedicated helper — primitive-root and +modulated arrangements are discussed as design guidance and enter through the +explicit depth or reflection arguments. The inverse problem, solving resonator +geometries for a target phase profile, is not automated: the workflow matches +phases by evaluation. On the measurement side the library reduces the data but +does not run the rig: the ISO 17497-1 turntable and the ISO 17497-2 goniometer +supply the reverberation times and the polar response, and what is implemented +is the arithmetic that turns them into a coefficient. + --- diff --git a/site/public/llms/llms-materials-resilient.txt b/site/public/llms/llms-materials-resilient.txt index 07892ff36..2ab6c4825 100644 --- a/site/public/llms/llms-materials-resilient.txt +++ b/site/public/llms/llms-materials-resilient.txt @@ -9,15 +9,68 @@ Source: https://jmrplens.github.io/phonometry/materials/resilient/ # Resilient layers -A floating floor works because a soft layer decouples it from the structure -below, and how well it works is set by one number: the dynamic stiffness per -unit area of that layer. +A floating floor is a mass-spring system: the screed is the mass, the resilient +layer is the spring, and the impact improvement the pair buys begins above the +resonance they set. That resonance is fixed by the mass per unit area m' of the +slab, in kg/m², and by the **dynamic stiffness per unit area** s' of the layer, +in MN/m³ — the dynamic force per unit area divided by the change in thickness it +produces. A 120 kg/m² screed on a 10 MN/m³ layer resonates near 46 Hz; halving +the stiffness moves that down by a factor of the square root of two, and +everything the floor achieves in the rated bands follows from where the +resonance sits. This is why s' is the one number a resilient-layer datasheet +must carry, and why it is a *dynamic* stiffness: a static compression test +describes neither the audio frequency range nor the working preload. [Dynamic stiffness of resilient materials (EN 29052-1)](https://jmrplens.github.io/phonometry/materials/resilient/dynamic-stiffness/) -is the resonance measurement that gives it, with the enclosed-gas term that -makes a porous layer stiffer than its frame alone and the natural frequency the -finished floor ends up with. What the insulation design chapter does with that -number is in [Predicting resilient-layer performance](https://jmrplens.github.io/phonometry/buildings/design/resilient-layers/). +is the measurement that produces it. A 200 mm × 200 mm specimen carries an 8 kg +load plate — 200 kg/m² in total, which reproduces the roughly 2 kPa static +preload of a real floating floor — and a vertical exciter with an accelerometer +gives the fundamental resonance of the plate-on-specimen system, from which the +apparent stiffness follows directly. For an air-permeable material the pore air +is a second spring in parallel with the frame, and the standard adds it back +through an enclosed-gas term that depends on the loaded thickness: the installed +stiffness therefore depends on how the layer will be sealed and on its lateral +airflow resistivity, which is what the clause 8.2 regimes decide. The guide +chains all of it and renders the clause 9 test-report fiche. + +Two inputs come from outside this subsection. The resonant frequency has to be +extrapolated to zero force amplitude by the clause 7 procedure, and the airflow +resistivity is measured by ISO 9053 in +[Airflow Resistance](https://jmrplens.github.io/phonometry/materials/absorbers/airflow-resistance/) — note +that ISO 9053 reports it in Pa·s/m² while this page's argument is in kPa·s/m². +What the design side does with s' is +[Predicting resilient-layer performance](https://jmrplens.github.io/phonometry/buildings/design/resilient-layers/), +which turns it into the floating-floor improvement and the ISO 12354-1 Annex D +lining rating. + +## Pages in this section + +- [Dynamic stiffness of resilient materials (EN 29052-1)](https://jmrplens.github.io/phonometry/materials/resilient/dynamic-stiffness/): + the load-plate resonance method, the apparent stiffness it yields, the + enclosed-gas term for air-permeable layers, the airflow-resistivity regimes + of clause 8.2 and the clause 9 test-report fiche. + +## See also + +Pages elsewhere on the site that this section leans on: + +- [Airflow Resistance](https://jmrplens.github.io/phonometry/materials/absorbers/airflow-resistance/): the + ISO 9053 measurement of the lateral resistivity the regime rule needs. +- [Predicting resilient-layer performance](https://jmrplens.github.io/phonometry/buildings/design/resilient-layers/): + the consumer, where s' becomes a floating-floor improvement. + +## What this section does not cover + +The measurement starts one step after the signal. Clause 7's extraction of the +resonant frequency from the raw excitation-response record — by sinusoidal, +white-noise or pulse excitation — and its extrapolation to zero force amplitude +are **not implemented**: pass a resonant frequency that has already been +extrapolated. The lateral airflow resistivity is an input, not a measurement. +Clause 6's specimen-selection requirement of at least three 200 mm × 200 mm +specimens is not enforced, so nothing here objects if you characterise a +material from one. And the layer's other properties — creep under long-term +load, compressive strength, thermal performance — are outside the standard and +outside the library. --- diff --git a/site/public/llms/llms-materials-surfaces.txt b/site/public/llms/llms-materials-surfaces.txt index 20e942ce1..da0709c25 100644 --- a/site/public/llms/llms-materials-surfaces.txt +++ b/site/public/llms/llms-materials-surfaces.txt @@ -9,14 +9,73 @@ Source: https://jmrplens.github.io/phonometry/materials/surfaces/ # Surfaces measured in place -Some surfaces cannot be cut into a sample and carried to a reverberation room. -A road pavement is the standing case: it is characterised where it lies, with a -source and a microphone above it and a time window that separates the reflection -from everything else. +A reverberation-room or impedance-tube coefficient describes a *sample*. Some +surfaces have no sample. A pavement cannot be cut out and carried to a +laboratory without destroying the very thing that governs its absorption — the +connected pore structure of the laid and compacted layer — and a core taken from +it is no longer the surface a tyre rolls on. In-situ methods answer the question +where the surface is, and they pay for it with a geometry problem: the +microphone hears the direct sound and the surface reflection together, so the +method is built around separating them in **time** rather than in space. [In-situ road-surface absorption](https://jmrplens.github.io/phonometry/materials/surfaces/road-absorption/) -implements both ISO 13472 methods, with the Adrienne window the standard -prescribes and the geometry corrections the measurement needs. +implements both parts of ISO 13472 and, more usefully, states which one a given +pavement allows. The **subtraction technique** of Part 1 puts a source and a +microphone above the surface, subtracts a free-field reference measurement and +applies the Adrienne window to keep the reflection and discard everything after +it. It handles the full range from reflective to highly absorbing pavements, +covers 250 Hz to 4 kHz, and averages over a patch metres across — a 5 ms window +gives a maximum sampled-area radius of about 1.34 m, roughly 5.6 m² of road, so +it sees texture and joints rather than one spot. The **spot method** of Part 2 +seals a short portable tube onto the pavement and reads it with the two-microphone +transfer-function routine. It needs only a flat, sealable patch and minutes per +point, so it can sit in a wheel track or on a narrow strip, but it is scoped to +reflective surfaces, is declared unreliable once the measured absorption exceeds +0.15, and stops at 1600 Hz — which matters, because the tyre-road noise the +measurement usually serves peaks around 1 kHz and has content beyond that +ceiling. + +They are complements, not competitors: Part 2's own introduction expects the two +to agree between 315 Hz and 1600 Hz, and both report the same quantity, the +normal-incidence absorption coefficient in one-third-octave bands. A +low-absorption lane can therefore be surveyed with the tube and anchored with a +subtraction measurement at a few positions. That number is what a low-noise +pavement specification is written against, and what the ground term of an +outdoor propagation model consumes. + +## Pages in this section + +- [In-situ road-surface absorption](https://jmrplens.github.io/phonometry/materials/surfaces/road-absorption/): + the ISO 13472-1 subtraction technique with the Adrienne window and its + geometry and validity helpers, the ISO 13472-2 spot tube with its + applicability limits, and the comparison that decides between them. + +## See also + +Pages elsewhere on the site that this section leans on: + +- [Impedance Tube](https://jmrplens.github.io/phonometry/materials/absorbers/impedance-tube/): the + ISO 10534-2 two-microphone reduction the spot method reuses unchanged. +- [Sound Absorption Measurement and Rating](https://jmrplens.github.io/phonometry/materials/absorbers/absorption-measurement/): + the laboratory route, for materials that can be brought indoors. +- [Environment and transport](https://jmrplens.github.io/phonometry/environment/): where a road's + absorption is consumed, as the ground term of an outdoor prediction. + +## What this section does not cover + +**Edition status matters here more than anywhere else in this area.** The +implementation follows ISO 13472-1:2002 and ISO 13472-2:2010; both have since +been revised — 2022 and 2025 respectively — and those revisions are **not** +implemented, so a report that cites the current edition cannot cite these +functions without qualification. The spot method's own signal processing is not +duplicated either: only its geometry, validity and correction helpers live here, +and the two-microphone transfer-function reduction is the ISO 10534-2 routine of +[Impedance Tube](https://jmrplens.github.io/phonometry/materials/absorbers/impedance-tube/). Nothing in +this subsection measures the noise a surface *generates* — the tyre-road source +term is CNOSSOS territory, in [Environmental +sources](https://jmrplens.github.io/phonometry/environment/sources/) — and no in-situ method is provided +for any surface other than a road: a wall or a ceiling measured in place is +outside both parts of ISO 13472. --- diff --git a/site/public/llms/llms-materials.txt b/site/public/llms/llms-materials.txt index 1f570ea52..1128954e8 100644 --- a/site/public/llms/llms-materials.txt +++ b/site/public/llms/llms-materials.txt @@ -49,20 +49,41 @@ coefficient** (ISO 17497-1) and the **diffusion coefficient** (ISO 17497-2), together with Schroeder diffuser design and its far-field prediction. [Metadiffusers](https://jmrplens.github.io/phonometry/materials/diffusers/metadiffusers/) rebuilds the Schroeder diffuser from resonator-loaded slits, one to two orders of magnitude thinner. -And [In-situ Road-Surface Absorption](https://jmrplens.github.io/phonometry/materials/surfaces/road-absorption/) -measures the absorption of a pavement where it lies, by the ISO 13472-1 -subtraction technique over an extended surface or the ISO 13472-2 spot tube. + +Nested inside that group is **Surfaces measured in place**, for the surfaces +that have no sample. A pavement cannot be cut out and carried indoors without +destroying the connected pore structure that governs its absorption, so the +laboratory geometry is replaced by a time window over an extended surface, or +by a tube pressed onto the road. +[In-situ Road-Surface Absorption](https://jmrplens.github.io/phonometry/materials/surfaces/road-absorption/) +measures it where it lies, by the ISO 13472-1 subtraction technique or the +ISO 13472-2 spot tube, and says which of the two a given pavement allows. + +The **Resilient layers** subsection covers the one material property here that +is mechanical rather than acoustic: a resilient layer is characterised not by +what it does to airborne sound but by how softly it supports a mass, so its +measurement is a resonance and not an absorption. A floating floor is a +mass-spring system, the screed is the mass and the layer is the spring, and the +dynamic stiffness per unit area s' of the layer sets the resonance above which +the floor starts working. +[Dynamic stiffness of resilient materials (EN 29052-1)](https://jmrplens.github.io/phonometry/materials/resilient/dynamic-stiffness/) +is the load-plate resonance measurement that produces s', with the enclosed-gas +term that makes an air-permeable layer stiffer than its frame alone. The consumers of these numbers are spread across the site: absorption coefficients feed the reverberation predictions in -[Room acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/), dynamic -stiffness (measured by a related load-plate method) feeds the floating-floor -model in [Sound insulation](https://jmrplens.github.io/phonometry/buildings/insulation/), +[Room acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/); the dynamic stiffness measured +here feeds the floating-floor model of +[Sound insulation](https://jmrplens.github.io/phonometry/buildings/insulation/) through +[Predicting resilient-layer performance](https://jmrplens.github.io/phonometry/buildings/design/resilient-layers/); and the road-surface methods connect to the outdoor-noise interest of the [Environment and transport](https://jmrplens.github.io/phonometry/environment/) section. -## Pages in this section +## [Absorbers](https://jmrplens.github.io/phonometry/materials/absorbers/) + +How much energy a material takes out of the field, one instrument or model +family per guide. - [Absorbers overview](https://jmrplens.github.io/phonometry/materials/absorbers/): the measurement chain from reverberation room to flow rig to impedance tube, @@ -81,9 +102,15 @@ section. and the random-incidence Paris integral. - [Metamaterial Absorbers](https://jmrplens.github.io/phonometry/materials/absorbers/metamaterial-absorbers/): critical coupling and the slow-sound slit panel with its design solver. + +## [Diffusers and surfaces](https://jmrplens.github.io/phonometry/materials/diffusers/) + +Where a surface sends what it reflects, and the surfaces that can only be +measured in place. + - [Diffusers and surfaces overview](https://jmrplens.github.io/phonometry/materials/diffusers/): what a surface does with the sound it returns, from coefficients to - metamaterial panels to pavements. + metamaterial panels. - [Diffusers and Their Coefficients](https://jmrplens.github.io/phonometry/materials/diffusers/diffusers/): ISO 17497-1/2 scattering and diffusion coefficients, Schroeder design and the far-field prediction. @@ -93,6 +120,11 @@ section. surfaces that cannot be taken to a laboratory, characterised where they lie. - [In-situ Road-Surface Absorption](https://jmrplens.github.io/phonometry/materials/surfaces/road-absorption/): ISO 13472-1/-2 in-situ road-surface absorption. + +## [Resilient layers](https://jmrplens.github.io/phonometry/materials/resilient/) + +The mechanical property a floating floor is designed around. + - [Resilient layers overview](https://jmrplens.github.io/phonometry/materials/resilient/): what a resilient layer does under a floating floor, and the dynamic stiffness that sets it. @@ -101,4 +133,39 @@ section. floating floor, and the apparent stiffness the insulation design chapter asks it for. +## What this section does not cover + +Everything here characterises a **material or a surface**, never a +construction. The transmission loss of a wall, the impact improvement of a +floor and the flanking paths of a junction are +[Sound insulation](https://jmrplens.github.io/phonometry/buildings/insulation/) and +[Insulation design](https://jmrplens.github.io/phonometry/buildings/design/); this section supplies the +coefficients they consume. Two boundaries inside the measurements themselves +are worth knowing before you start. The in-situ road methods implement +ISO 13472-1:2002 and ISO 13472-2:2010; **their 2022 and 2025 revisions are not +implemented**. And the resilient-layer measurement expects a resonant frequency +that has already been extrapolated to zero force amplitude by clause 7 of +EN 29052-1, a procedure that is not implemented, and an airflow resistivity +supplied as an input rather than measured in place. Nothing in this section +predicts a material from its chemistry or its manufacture: the models run +forwards from measured macroscopic parameters — flow resistivity, porosity, +tortuosity — to an impedance, and there is no inverse solver that recovers +those parameters from a measured impedance curve. + +## Before and after these pages + +Every coefficient on these pages is derived from band levels or from a +transfer function between microphones, so the filtering, weighting and +calibration that produce them are in [Signal analysis](https://jmrplens.github.io/phonometry/signals/), +and [Build a sound level meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) runs +that chain end to end on one runnable page. The derivations are in [Materials +and surfaces theory](https://jmrplens.github.io/phonometry/reference/theory/materials-surfaces/): the characterisation +quantities, the in-situ subtraction and the scattering and diffusion +coefficients. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. + --- diff --git a/site/public/llms/llms-perception-hearing.txt b/site/public/llms/llms-perception-hearing.txt index ca2cb5e95..62755ba02 100644 --- a/site/public/llms/llms-perception-hearing.txt +++ b/site/public/llms/llms-perception-hearing.txt @@ -44,17 +44,52 @@ statistics. The perceptual consequences of a shifted threshold, such as reduced speech intelligibility, are picked up by the SII in the [Speech section](https://jmrplens.github.io/phonometry/perception/speech/). +**Three pages, three different decibels**, and keeping them apart is most of the +work. A **hearing threshold level** is in dB HL, measured relative to the +audiometric zero, so 0 dB HL is a *different* sound pressure at every frequency +— exactly what ISO 389-7 tabulates. A **daily exposure level** is in +A-weighted decibels normalised to eight hours: an energy dose of the sound +outside the ear, with no listener in it. A **threshold shift** is a difference +of two dB HL values, so it may be added to a hearing level and never to a sound +pressure level. The chain between them runs one way only: ISO 9612 delivers a +single A-weighted LEX,8h into the ISO 1999 formulae, which return dB HL. The +only bridge back from hearing level to physical sound pressure is the ISO 389-7 +reference threshold on the threshold page — which is also what the SII needs +when a raised threshold is used as an input. + ## Pages in this section -- [Hearing threshold (age and reference zero)](https://jmrplens.github.io/phonometry/perception/hearing/hearing-threshold/): +In the order the chain runs. + +- **Baseline** — [Hearing threshold (age and reference zero)](https://jmrplens.github.io/phonometry/perception/hearing/hearing-threshold/): the ISO 7029:2017 age-related threshold distribution and the ISO 389-7:2005 reference threshold of hearing. -- [Noise-induced hearing loss (ISO 1999)](https://jmrplens.github.io/phonometry/perception/hearing/noise-induced-hearing-loss/): - NIPTS and its population distribution, and the combination with age into - HTLAN. -- [Occupational Noise Exposure (ISO 9612)](https://jmrplens.github.io/phonometry/perception/hearing/occupational-exposure/): +- **Exposure** — [Occupational Noise Exposure (ISO 9612)](https://jmrplens.github.io/phonometry/perception/hearing/occupational-exposure/): the three measurement strategies for LEX,8h with the Annex C uncertainty budget. +- **Damage** — [Noise-induced hearing loss (ISO 1999)](https://jmrplens.github.io/phonometry/perception/hearing/noise-induced-hearing-loss/): + NIPTS and its population distribution, and the combination with age into + HTLAN. + +## What this section does not cover + +**Nothing here is a verdict about a person.** ISO 1999 does not define a hearing +handicap or a compensable fence — that line is set by national regulation, and +the library applies none of it, so you supply and check the criterion yourself. +The same is true of the exposure action values: the LEX,8h and its one-sided +95 % upper limit come out of ISO 9612, and the numbers they are compared against +are in your jurisdiction's directive, not here. + +Two implementation boundaries follow the standards. Only **database A** is +implemented for ISO 1999: `htlan` always draws its age component from +ISO 7029:2017, and substituting a nationally measured control population +(clauses 6.2.3 and 6.2.4) means computing that database elsewhere and passing it +in. Of ISO 389-7, only the Table 1 reference values are implemented, not the +procedures by which they were established. + +And no audiometry happens here. Nothing generates a test tone, drives an +audiometer or corrects for an earphone coupler: the pages consume and produce +threshold levels as data. --- diff --git a/site/public/llms/llms-perception-psychoacoustics.txt b/site/public/llms/llms-perception-psychoacoustics.txt index d1fae5d96..aa61bc735 100644 --- a/site/public/llms/llms-perception-psychoacoustics.txt +++ b/site/public/llms/llms-perception-psychoacoustics.txt @@ -18,6 +18,25 @@ emphasis), tonality (audible discrete tones), roughness (fast modulation) and fluctuation strength (slow modulation). And on top sits a combined **annoyance** metric that weighs loudness, sharpness, roughness and fluctuation strength into a single scalar. +Every metric here is a magnitude fixed by a **reference sound** rather than by a +physical unit, and knowing the anchor is what makes a number readable: 1 sone is +a 1 kHz tone at 40 dB SPL, 1 acum a critical-band-wide noise at 1 kHz and 60 dB, +1 asper a 1 kHz carrier fully modulated at 70 Hz at 60 dB, 1 vacil the same +carrier modulated at 4 Hz, and 1 tu_HMS a 1 kHz tone at 40 dB. They are +tabulated together, beside the speech and hearing scales, under "Reading the +numbers" on the [section overview](https://jmrplens.github.io/phonometry/perception/). + +The two families of pages differ in purpose, and that difference decides what +you can conclude. Loudness, sharpness, roughness and fluctuation strength are +**open-ended magnitudes** for comparing designs: there is no pass mark, and the +useful statement is always a comparison. The two tonal pages end in a **verdict +against a criterion**, because they exist to justify a declaration or a penalty. +ECMA-418-2 sits between the two: it attaches informative prominence criteria to +its tonality (0.4 tu_HMS on a band), roughness (0.2 asper) and fluctuation +strength (0.2 vacil_HMS), which is the closest thing to a pass mark in the +magnitude family. All of them share one prerequisite: an absolutely calibrated +signal in pascals, because every metric here is level-dependent. + [Loudness](https://jmrplens.github.io/phonometry/perception/psychoacoustics/loudness/) is the foundation page: the Zwicker reference method of ISO 532-1 with its one-page fiche, together with the ISO 226:2023 equal-loudness contours that anchor the perceptual scale for pure @@ -66,6 +85,37 @@ normative model of the same sensation, under a different unit name. the Fastl & Zwicker annoyance model and the fluctuation-strength models it consumes. +## What this section does not cover + +**Everything here is monaural.** The binaural combinations ECMA-418-2 defines +for loudness, roughness and fluctuation strength are not implemented, so a +stereo or binaural recording is analysed one channel at a time, and no model +here accounts for localisation or for spatial release from masking. Two +optional refinements are also left out: the entropy weighting of clause 7.1.6, +which needs an external rotational-speed signal, and the small adjustment +footnote 47 permits. + +**A verdict is never complete.** The `prominent` flag the tone-prominence +functions return is the numeric criterion alone; ECMA-418-1 also requires aural +confirmation and a lower-threshold-of-hearing screen, both of which stay with +the caller. The tone-audibility module is weighting-agnostic and does **not** +apply the A-weighting clause 5.3.2 requires, so A-weight the spectrum before +passing it, and it takes an already-computed narrow-band spectrum rather than +building one from a recording. + +Two documented deviations are worth knowing. ISO 532-3 prescribes resampling to +32 kHz before the running FFT; this implementation works at the native rate, a +deviation that stays inside the standard's expanded uncertainty but that you +should undo by resampling first if strict clause-by-clause conformance matters. +And the Osses 2016 fluctuation-strength signal model is validated for +amplitude-modulated stimuli only, with a documented floor — a steady 1 kHz tone +reads about 0.09 vacil rather than 0. + +Finally, none of these metrics is a community response: annoyance here is a +laboratory sensation computed from a signal, while the annoyance a +neighbourhood reports is a social-survey quantity handled through the +indicators of [Environment and transport](https://jmrplens.github.io/phonometry/environment/). + --- diff --git a/site/public/llms/llms-perception-speech.txt b/site/public/llms/llms-perception-speech.txt index 48a17bff2..038be16a8 100644 --- a/site/public/llms/llms-perception-speech.txt +++ b/site/public/llms/llms-perception-speech.txt @@ -17,6 +17,21 @@ rates a *listening condition*: this speech spectrum, in this noise, heard by this listener. A reverberant lecture hall is an STI problem; a hearing-aid fitting or a cockpit warning heard over engine noise is an SII problem. +The shared [0, 1] range is a coincidence of normalisation, not a common scale, +and 0.6 means three different things on the three. An **STI** of 0.6 falls in +band D of the IEC 60268-16 Annex F qualification ladder, whose eleven letters +run from U below 0.36 to A+ at 0.76 and above; that is a good lecture room, and +a voice-alarm specification typically sets its minimum a couple of bands lower. +An **SII** of 0.6 means roughly 60 % of the importance-weighted speech spectrum +is audible to that listener in that noise; the index is a fraction by +construction and carries no standardised qualification ladder at all. A +**STOI** of 0.6 has no absolute meaning: the mapping from the index to a +percentage of words understood is fitted per listening-test corpus and is +deliberately not implemented, so STOI is only ever read as a difference between +two processors on the same material. Never substitute one index for another in +a specification, and when a requirement quotes a number, check which standard +it belongs to before computing anything. + The physical difference sits in what each index models. STI (**IEC 60268-16**) works on the speech *envelope*: intelligibility degrades when reverberation and noise flatten the slow intensity modulations of speech, @@ -43,11 +58,16 @@ speech, how intelligible is the result? They rate the processing itself, which is why they are the standard yardstick for noise reduction and source separation. -The two connect back to the rest of the library naturally: the STI consumes -the impulse responses of +The two standardised indices connect back to the rest of the library naturally: +the STI consumes the impulse responses of [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/), and the SII consumes the hearing thresholds quantified in -[Hearing threshold](https://jmrplens.github.io/phonometry/perception/hearing/hearing-threshold/). +[Hearing threshold](https://jmrplens.github.io/phonometry/perception/hearing/hearing-threshold/). STOI and +ESTOI have an upstream too, but a different kind of one: they take waveforms, +so what feeds them is whatever produced the clean and the degraded recording — +which is why they sit beside the signal-processing tools of [Signals and +spectra](https://jmrplens.github.io/phonometry/signals/spectra/) rather than beside a measurement +standard. ## Pages in this section @@ -61,6 +81,27 @@ hearing thresholds quantified in the correlation-based measures for time-frequency weighted noisy speech, from a clean/degraded pair. +## What this section does not cover + +**No listener is tested, and no score is predicted.** STOI returns the +correlation index and not the percentage of words understood, because the +logistic mapping is fitted per listening-test corpus; the SII returns an +audibility fraction rather than a score; and no page here reproduces a +subjective intelligibility test. **No signal is acquired either**: the STI page +implements the STIPA direct signal and the indirect computation from an impulse +response, but the full 14-modulation-frequency direct measurement of clause 6.3 +is not implemented, so a chain with severe distortion needs measuring equipment +rather than this library. + +Two coverage limits inside the SII are worth checking before use: the raised, +loud and shouted speech spectra are carried for the one-third-octave procedure +only, and the tabulated band-importance functions are each table's +average-speech compromise, with Annex B's material-specific alternatives left to +you through the `band_importance=` argument. There is no resampling between the +four band procedures — each is fed spectra on its own bands. And the female +speech option is not missing from the STI: Edition 5 of IEC 60268-16 removed it, +so there is nothing left to implement. + --- diff --git a/site/public/llms/llms-perception.txt b/site/public/llms/llms-perception.txt index e666e7525..f87e8fc1c 100644 --- a/site/public/llms/llms-perception.txt +++ b/site/public/llms/llms-perception.txt @@ -28,7 +28,45 @@ hearing-damage model of ISO 1999. A good entry point is [Loudness](https://jmrplens.github.io/phonometry/perception/psychoacoustics/loudness/): it introduces the perceptual scale (the sone) and the auditory models that most other -metrics in this section reuse or extend. +metrics in this section reuse or extend. The derivations behind these methods — +the critical-band and excitation-pattern models, the masking formulations and +the modulation-transfer chain — are gathered on the [perception theory +page](https://jmrplens.github.io/phonometry/reference/theory/perception/), which the individual guides +cite clause by clause. + +### Reading the numbers + +Almost every perceptual scale in this section is defined by a **reference +sound** rather than by a physical unit, so the first thing to learn about each +is its anchor: the sound that reads exactly 1. + +| Quantity | Unit | The sound that reads 1 | Criterion? | Page | +|---|---|---|---|---| +| Loudness | sone | 1 kHz tone at 40 dB SPL (also 40 phon) | none | [Loudness](https://jmrplens.github.io/phonometry/perception/psychoacoustics/loudness/) | +| Sharpness | acum | critical-band-wide noise at 1 kHz, 60 dB SPL | none | [Sound Quality Metrics](https://jmrplens.github.io/phonometry/perception/psychoacoustics/sound-quality/) | +| Roughness | asper | 1 kHz tone at 60 dB, fully modulated at 70 Hz | 0.2 asper (informative) | [Sound Quality Metrics](https://jmrplens.github.io/phonometry/perception/psychoacoustics/sound-quality/) | +| Fluctuation strength | vacil | the same carrier modulated at 4 Hz | 0.2 vacil (informative) | [Sound Quality Metrics](https://jmrplens.github.io/phonometry/perception/psychoacoustics/sound-quality/) | +| Tonality | tu_HMS | 1 kHz tone at 40 dB SPL | 0.4 tu_HMS (informative) | [Sound Quality Metrics](https://jmrplens.github.io/phonometry/perception/psychoacoustics/sound-quality/) | +| Tone audibility | dB | — (a level difference above masking) | ISO 1996-2 adjustment | [Tone audibility](https://jmrplens.github.io/phonometry/perception/psychoacoustics/tone-audibility/) | +| STI | 0 to 1 | — | Annex F letters, U to A+ | [Speech Transmission Index](https://jmrplens.github.io/phonometry/perception/speech/speech-transmission/) | +| SII | 0 to 1 | — | none standardised | [Speech Intelligibility Index](https://jmrplens.github.io/phonometry/perception/speech/speech-intelligibility/) | +| Threshold shift | dB HL | — (a difference of two hearing levels) | ISO 1999 statistics | [Noise-induced hearing loss](https://jmrplens.github.io/phonometry/perception/hearing/noise-induced-hearing-loss/) | + +Loudness, sharpness, roughness and fluctuation strength are **ratio scales +with no pass/fail line**: twice the number means twice the sensation, so a +20-sone appliance is heard as about twice as loud as a 10-sone one, which is +why appliance declarations set limits in sones rather than in decibels. The +tonal metrics and the speech indices do carry criteria, which is why the tone +pages end in a verdict and the loudness pages do not. + +The three speech numbers all live in [0, 1] and are **not the same number**. An +STI of 0.6 falls in Annex F band D, typical of a good lecture room; an SII of +0.6 means roughly 60 % of the importance-weighted speech spectrum is audible; +and a STOI of 0.6 has no absolute meaning at all, because the mapping from +index to words understood is fitted per listening-test corpus, so STOI is only +ever read as a difference between two processors on the same material. Never +substitute one for another in a specification, and when a requirement quotes a +number, check which standard it belongs to before computing anything. ## [Psychoacoustics](https://jmrplens.github.io/phonometry/perception/psychoacoustics/) @@ -82,4 +120,47 @@ The hearing threshold, what noise does to it, and how exposure is measured. the task-based, job-based and full-day strategies for LEX,8h with the Annex C uncertainty budget. +## What this section does not cover + +**No listener is tested here, and no verdict about a person is issued.** Every +model on these pages predicts what a population, or a standard listener, would +perceive from a calibrated signal: none of them runs an audiometric session, +none diagnoses a hearing loss, and ISO 1999 explicitly declines to define a +hearing handicap or a compensable fence — that line is national regulation, and +nothing here applies one. Every prominence and audibility verdict is likewise +the numeric criterion only: ECMA-418-1 also requires aural confirmation of a +prominent tone, and that stays with you. + +**Everything is monaural.** The binaural combinations of ECMA-418-2 are not +implemented, so a two-channel recording is analysed one ear at a time, and +nothing here models localisation, spatial release from masking or binaural +loudness summation. + +**No listening test is replaced.** STOI returns the correlation-based index and +not a percentage of words understood, because that mapping is fitted per +listening-test corpus; the SII returns an audibility fraction and not a score; +and no page predicts annoyance in a community, which is a social-survey +quantity rather than a psychoacoustic one — the community indicators are +[Environment and transport](https://jmrplens.github.io/phonometry/environment/). + +Finally, these models start from a **calibrated** signal or spectrum in +pascals, because every one of them is level-dependent. Feeding them raw +soundcard samples produces a number with an arbitrary reference, which is a +different failure from a wrong answer: it looks plausible. + +## Before and after these pages + +Every model here consumes a calibrated signal or a calibrated spectrum, so the +calibration and weighting that produce one are in [Signal +analysis](https://jmrplens.github.io/phonometry/signals/), and [Build a sound level +meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) runs that chain end to end on +one runnable page. The derivations are in [Perception and hearing +theory](https://jmrplens.github.io/phonometry/reference/theory/perception/), from the equal-loudness contours to the +modulation transfer function. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. + --- diff --git a/site/public/llms/llms-reference.txt b/site/public/llms/llms-reference.txt index 632ef74c5..b0e5a51ec 100644 --- a/site/public/llms/llms-reference.txt +++ b/site/public/llms/llms-reference.txt @@ -1302,3 +1302,357 @@ it; the list grows as guides gain their References sections. Cited by [Measurement uncertainty](https://jmrplens.github.io/phonometry/signals/metrology/gum-uncertainty/). --- + + + +Source: https://jmrplens.github.io/phonometry/reference/glossary/ + +# Glossary + +The guides each open with the standard they implement, so a quantity is always +defined where it is used. This page is the other direction: you have a symbol, +from a report, a specification or a colleague's email, and you want to know +what it is, what it is measured in, which document defines it and where in this +documentation it is computed. A quantity that is not here is still defined +where it is computed: every guide states its quantities before its code. + +Two conventions govern the line that says where a quantity is defined, and both +matter more than they seem to. +Where a clause, formula or table number appears, it is the one the +implementation cites, taken from the standard the guide implements. Where only +a designation appears, the standard is established but the defining clause is +not stated anywhere in this documentation, and inventing a plausible one would +be worse than leaving it out. A handful of quantities have no governing +standard at all; their source is the paper or book the model comes from, named +as such. + +A third convention governs the unit, and it is the one most often lost between +a measurement and a report. A decibel is always a ratio, so an entry whose unit +reads *re* something — dB re 20 µPa in air, dB re 1 µPa in water, dB re 1 pW +for power, dB re 1 pW/m² for intensity, dB re 50 nm/s for a velocity level — is +an **absolute level**, and the reference quantity is part of the unit. An entry +whose unit is a bare dB is a **level difference or a rating**: $D$, $R$, $R_w$, +$C$, $C_{tr}$, $\Delta L_w$, $K_{ij}$, where the reference cancels and no +reference applies. Two numbers can only be added or subtracted when they are of +the same kind, and the commonest error in a report is subtracting two levels +referred to different quantities, or adding a rating to a level. + +## Symbols that collide + +Symbols collide across domains, and the glossary does not pretend otherwise. +Some collisions are harmless because the two quantities never meet in one +calculation; others change a number by tens of decibels, or by a whole rating +step, and those are the ones below. Where two entries share a symbol, the +qualifier in brackets after the notation says which one you are reading, and on +the site a symbol index above the cards lists every meaning of a letter side by +side — the answer for a reader who has the symbol and not the domain, which is +the one case the grouping by domain cannot serve. + +| Symbol | Meanings that are not the same quantity | +| :--- | :--- | +| $C$ | The **decay curvature** $100\,(T_{30}/T_{20} - 1)$ in per cent, and the ISO 717-1 **spectrum adaptation term** in decibels. Both are defined on one page, [Rooms and buildings](https://jmrplens.github.io/phonometry/reference/theory/rooms-buildings/), a couple of sections apart. | +| TL | A partition's **transmission loss**, a duct element's **transmission loss** (a different measurement, with an anechoic termination in the definition) and the underwater **propagation loss** of the sonar equation. Three domains, three unrelated calculations. | +| NR | The **noise rating** curve family of a room criterion, and the **noise reduction** $L_{p1} - L_{p2}$ between two rooms in noise control. | +| $\alpha$ | The **absorption coefficient** of a surface, the **atmospheric attenuation coefficient** per unit length (dB/m here, dB/km in ISO 9613-2), the **volume absorption coefficient** of sea water (dB/km), and the **tortuosity** $\alpha_\infty$ of a porous model, which is not an absorption at all. | +| $A$ | An **equivalent absorption area** in m², an **accelerance** in 1/kg, and the **total attenuation** of ISO 9613-2 in dB. | +| $D$ | A **level difference**, the definition $D_{50}$, the withdrawn **D-weighting**, the directivity correction $D_c$ and barrier screening $D_z$ of ISO 9613-2, the spatial decay rate $D_{2,S}$ of an open-plan office, and a microphone's **directivity index** $D = 20\log_{10}(M_0/M_\mathrm{diff})$. | +| $H$ | The **receptance** of ISO 7626-1, the **frequency response estimators** $H_1$ and $H_2$, and the **harmonic transfer functions** $H_n$ of a swept-sine measurement — where $H_2$ is the second harmonic, not the noise-on-input estimator. | +| $\eta$ | The **loss factor** of a resilient element, the **coupling loss factor** $\eta_{ij}$ of a junction, and the **internal** and **total** loss factors of a building element. | +| $\tau$ | The **transmission factor** of a partition, the **time constant** of a detector, the **lag** of a correlation, and the **air temperature** in CNOSSOS-EU. | +| $T_s$ | The ISO 3382-1 **centre time** of a room impulse response, typically tens of milliseconds; the **structural reverberation time** of a plate, which is seconds; and the number of **months per year that studded tyres are fitted** in CNOSSOS-EU. | +| $R$ | The **sound reduction index** in building acoustics, the **airflow resistance** in materials, the **roughness** in psychoacoustics, and the **cumulative stress variable** of ISO 2631-5. | +| $\sigma$ | The **airflow resistivity** of a porous material, the **radiation efficiency** of a plate, and the **standard deviation** $\sigma_R$ of a building-acoustics measurement situation. | +| $L_N$, $L_n$ | $L_N$ is a **percentile level** in environmental noise, a **loudness level** in phon, and the level equivalent to a microphone's **inherent noise**; $L_n$, with a lower-case subscript, is the **normalized impact sound pressure level** of ISO 10140-3. In building acoustics the case of the subscript is the whole difference. | +| $v_0$ | A **reference velocity** of 1 nm/s in EN 15657 and EN 12354-5, and of 50 nm/s in ISO/TS 7849 and ISO 9611 — 34 dB apart, in one section of one area. | +| $F_0$ | A **reference force** of 1 N in ISO 16283-2, and of 1 µN in EN 15657 — 120 dB apart. | +| $K_1$ | The ISO 3744 **background noise correction** in dB, and a CNOSSOS-EU **temperature coefficient** in dB/°C. | +| $F$ | **Fluctuation strength** in vacil, the **Fast** time weighting, and the **modulation frequency** in $m(F)$ — all three on this page. | + +Where two meanings meet inside one navigation section, the guide says so at +first use; this table is the site-wide list. + +For the source of each definition rather than the definition itself, the +[bibliography](https://jmrplens.github.io/phonometry/reference/bibliography/) lists every cited work with +a DOI or publisher link, and the +[conformance report](https://jmrplens.github.io/phonometry/reference/conformance/) shows the numerical +check that pins each quantity to its standard's own expected value. + +## Sound pressure, power and intensity levels + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $L_p$ | Sound pressure level: twenty times the base-10 logarithm of the r.m.s. sound pressure over the reference pressure. | dB re 20 µPa | IEC 61672-1:2013 | [Calibration and dBFS](https://jmrplens.github.io/phonometry/signals/metrology/calibration/) | +| $L_{eq}$ | Equivalent continuous sound pressure level: the level of the steady sound carrying the same mean-square pressure over the interval. | dB re 20 µPa | IEC 61672-1:2013 | [Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/) | +| $L_{Aeq}$ | The same integral applied to the A-weighted signal, the default descriptor of environmental and occupational noise. | dB re 20 µPa | IEC 61672-1:2013 | [Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/) | +| $L_{AE}$, SEL | Sound exposure level: the whole A-weighted energy of a single event normalised to one second. | dB re (20 µPa)²·s | IEC 61672-1:2013, Equation 8 (Table 4) | [Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/) | +| $L_{Cpeak}$ | C-weighted peak sound level: the absolute maximum of the C-weighted pressure, not a time-weighted maximum. | dB re 20 µPa | IEC 61672-1:2013, subclause 5.13 | [Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/) | +| $L_N$ ($L_{10}$, $L_{50}$, $L_{90}$) | Percentile level: the level exceeded $N$ % of the measurement time, read off the time-weighted level distribution. | dB re 20 µPa | ISO 1996-2:2017 (Annex I uses $L_{90}$ as the residual level) | [Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/) | +| $L_W$, SWL | Sound power level: the power a source radiates, referred to 1 pW. | dB re 1 pW | ISO 3745:2012, Clause 8 | [Sound Power](https://jmrplens.github.io/phonometry/devices/emission/sound-power/) | +| $L_I$ | Sound intensity level: the magnitude of the intensity vector referred to 1 pW/m², with the flow direction reported separately as a sign. | dB re 1 pW/m² | IEC 61043:1993 | [Sound Intensity (p-p)](https://jmrplens.github.io/phonometry/devices/emission/intensity/) | +| $L_p - L_I$ | Pressure-intensity index: the difference between the pressure and intensity levels at a position, the field indicator that qualifies an intensity measurement. | dB | ISO 9614-1:1993, Equation (A.3) | [Sound Intensity (p-p)](https://jmrplens.github.io/phonometry/devices/emission/intensity/) | +| $K_1$ | Background noise correction: what is subtracted from the surface level to remove the background's own contribution, $-10\log_{10}(1 - 10^{-0,1\Delta L_p})$ from the source-on minus source-off margin. It is a cliff rather than a slope: above a 15 dB margin it is taken as zero, between 6 and 15 dB it is computed, and below 6 dB the standard caps it at 1,3 dB and warns that the result has lost accuracy. | dB | ISO 3744:2010, 3.16 and Equation (16) | [Sound Power by Pressure Methods](https://jmrplens.github.io/phonometry/devices/emission/sound-power-pressure/) | +| $K_2$ | Environmental correction: what is subtracted to remove the energy the test room reflects back onto the measurement surface, $10\log_{10}(1 + 4S/A)$ from the surface area and the room's equivalent absorption area. Its ceiling is the grade of accuracy rather than a preference: an engineering-grade result is only valid where $K_{2A} \le 4$ dB, the survey method allows 7 dB, and a qualified hemi-anechoic room gives zero. | dB | ISO 3744:2010, 3.17 and Formula (A.2) | [Sound Power by Pressure Methods](https://jmrplens.github.io/phonometry/devices/emission/sound-power-pressure/) | +| $L_{WAd}$, $K_{WA}$ | The declared noise emission of a machine: either the dual-number form, the measured $L_{WA}$ and its uncertainty $K_{WA}$ stated separately, or the single-number form $L_{WAd} = L_{WA} + K_{WA}$, both rounded to the nearest whole decibel. The declared value is an upper limit a verification measurement is unlikely to exceed, not a best estimate, so it is never the number to feed into a propagation calculation. | dB re 1 pW | ISO 4871:1996, 3.15 and 3.16 | [Sound Power](https://jmrplens.github.io/phonometry/devices/emission/sound-power/) | +| $L_{WA}$ (apparent, wind turbine) | Apparent sound power level of a wind turbine: the A-weighted level of a point source at the rotor centre that would radiate the same downwind emission as the machine measured. It is written like a sound power level but is not one in the usual sense: the ground-board measurement builds a downwind reflection into it, so feeding it to a propagation model that adds a ground effect counts that reflection twice. | dB re 1 pW | IEC 61400-11:2012+AMD1:2018, 3.1 and Formula (26) | [Wind-turbine noise: sound power and tonal audibility](https://jmrplens.github.io/phonometry/environment/sources/wind-turbine-noise/) | + +## Environmental and occupational descriptors + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $L_{den}$ | Day-evening-night level: the energy mean of the three periods with 5 dB added to the evening and 10 dB to the night. | dB re 20 µPa | ISO 1996-1:2016, 3.6.4 | [Environmental Levels (ISO 1996-1/-2)](https://jmrplens.github.io/phonometry/environment/assessment/environmental-levels/) | +| $L_{dn}$ | Day-night level: the same construction with the 10 dB night penalty only. | dB re 20 µPa | ISO 1996-1:2016, 3.6.5 | [Environmental Levels (ISO 1996-1/-2)](https://jmrplens.github.io/phonometry/environment/assessment/environmental-levels/) | +| $L_r$ | Rating level: the whole-day composite level after the source-character and time-of-day adjustments. | dB re 20 µPa | ISO 1996-1:2016, clause 6.5 (Formulae 5 and 6) | [Environmental Levels (ISO 1996-1/-2)](https://jmrplens.github.io/phonometry/environment/assessment/environmental-levels/) | +| $L_{Ar,T}$ | Rating level of an impulsive source over a reference interval, $L_{Aeq}$ plus the graduated impulse adjustment. | dB re 20 µPa | NT ACOU 112:2002, clause 8 | [Impulsive-sound prominence (NT ACOU 112)](https://jmrplens.github.io/phonometry/environment/assessment/impulsive-sound/) | +| $K_I$ | Impulse adjustment added to $L_{Aeq}$, graduated by the predicted prominence of the impulses. | dB | NT ACOU 112:2002, clause 8 | [Impulsive-sound prominence (NT ACOU 112)](https://jmrplens.github.io/phonometry/environment/assessment/impulsive-sound/) | +| $E$ | Sound exposure: the time integral of the squared A-weighted sound pressure over the exposure period. | Pa²h | IEC 61252:1993, 3.1 | [Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/) | +| $L_{EX,8h}$, $L_{EP,d}$ | Daily noise exposure level: the steady level that, sustained over a nominal 8 h day, carries the same A-weighted sound exposure as the measured one. | dB re 20 µPa | IEC 61252:1993, 3.3 | [Occupational Noise Exposure (ISO 9612)](https://jmrplens.github.io/phonometry/perception/hearing/occupational-exposure/) | +| $L_{p,A,eqT}$ | A-weighted equivalent continuous level of a task, a job sample or a full day, the building block $L_{EX,8h}$ is assembled from. | dB re 20 µPa | ISO 9612:2009, clauses 9 to 11 | [Occupational Noise Exposure (ISO 9612)](https://jmrplens.github.io/phonometry/perception/hearing/occupational-exposure/) | +| NIPTS | Noise-induced permanent threshold shift: the median hearing loss attributable to a stated exposure level, duration and audiometric frequency. | dB | ISO 1999:2013 | [Noise-induced hearing loss (ISO 1999)](https://jmrplens.github.io/phonometry/perception/hearing/noise-induced-hearing-loss/) | +| HTLAN | Hearing threshold level associated with age and noise: the NIPTS combined with the age component. | dB | ISO 1999:2013 | [Noise-induced hearing loss (ISO 1999)](https://jmrplens.github.io/phonometry/perception/hearing/noise-induced-hearing-loss/) | +| $L_{Keq,T}$ | Corrected equivalent level: the A-weighted equivalent level of the interval plus the three penalties for tonal, low-frequency and impulsive character, $L_{Aeq,T} + K_t + K_f + K_i$. It is the quantity the Spanish immission limits are written against, so an activity is judged on it and not on the bare $L_{Aeq}$. | dB re 20 µPa | RD 1367/2007 (Spain), Annex I A.2 c | [Spanish Noise Regulation (RD 1367/2007)](https://jmrplens.github.io/phonometry/environment/assessment/spanish-noise-regulation/) | +| $K_t$, $K_f$, $K_i$ | The three character penalties added to $L_{Aeq,T}$: $K_t$ for emergent tonal components, read from an unweighted one-third-octave spectrum against the arithmetic mean of the two adjacent bands; $K_f$ for low-frequency content, from $L_{Ceq} - L_{Aeq}$; and $K_i$ for impulsive content, from $L_{AIeq} - L_{Aeq}$. They are stepped, not continuous, so a spectrum just short of a threshold scores nothing. | dB | RD 1367/2007 (Spain), Annex IV A.3.3 | [Spanish Noise Regulation (RD 1367/2007)](https://jmrplens.github.io/phonometry/environment/assessment/spanish-noise-regulation/) | + +## Outdoor propagation + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $A$ (octave-band attenuation) | Total octave-band attenuation between an outdoor point source and a downwind receiver: the sum $A_{div} + A_{atm} + A_{gr} + A_{bar} + A_{misc}$ subtracted from the sound power level and the directivity correction. Everything the method knows about the path between source and receiver is in this one term. | dB | ISO 9613-2:1996, Equations (3) and (4) | [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) | +| $A_{div}$ | Geometrical divergence: $20\log_{10}(d/d_0) + 11$ dB, the spreading of a point source radiating into free space with $d_0 = 1$ m. The 11 dB constant is what refers the level to a sound power level rather than to a level measured at one metre. | dB | ISO 9613-2:1996, Equation (7) | [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) | +| $A_{atm}$ | Atmospheric absorption: the attenuation coefficient of the air times the path length. It is the term that removes the high bands over long distances, and it depends strongly on frequency, temperature and humidity — which is why a long-range prediction has to state the weather it assumed. | dB | ISO 9613-2:1996, Equation (8) | [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) | +| $\alpha$ (atmospheric) | Atmospheric attenuation coefficient: the excess loss per unit path length from classical absorption and the nitrogen and oxygen relaxation processes, a function of frequency, temperature, humidity and pressure. Watch the length unit: the library returns decibels per metre while ISO 9613-2 Table 2 tabulates decibels per kilometre, a factor of a thousand. | dB/m (ISO 9613-2 tabulates dB/km) | ISO 9613-1:1993, Equation (5) | [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) | +| $A_{gr}$ | Ground effect: the interference between the direct path and the path reflected off the ground, split into a source region, a receiver region and the middle between them. Over hard ground it comes out negative — a net gain, not a loss — which is why it cannot be treated as an attenuation that is merely optional. | dB | ISO 9613-2:1996, Equation (9) | [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) | +| $A_{bar}$ | Barrier attenuation: the screening $D_z$ of the diffracting edge minus the ground effect the barrier removes, floored at zero. The subtraction is the point: a barrier over soft ground buys much less than its raw screening, because the ground was already doing part of the work. | dB | ISO 9613-2:1996, Equation (12) | [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) | +| $C_{met}$ | Meteorological correction: what is subtracted from the downwind level to obtain a long-term average over many wind directions, driven by the local factor $C_0$ and by the source and receiver heights against the distance. It is zero close to the source and grows only where the path is long compared with the heights. | dB | ISO 9613-2:1996, Equations (21) and (22) | [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) | +| $D_c$ | Directivity correction: how far the level from the point source in the chosen direction departs from that of an omnidirectional source of the same sound power. It is the directivity index of the source plus an index for radiation into less than the full sphere, and it is 0 dB for an omnidirectional source in free space. | dB | ISO 9613-2:1996, Equation (3) | [Outdoor Sound Propagation](https://jmrplens.github.io/phonometry/environment/propagation/outdoor-propagation/) | +| $N$ (Fresnel number) | Fresnel number of a screen: twice the extra path length the sound has to travel over the edge, divided by the wavelength. It is the single geometric parameter of the Kurze-Anderson insertion loss, which is why a barrier that works at 1 kHz can be worth almost nothing two octaves lower for the same geometry. | dimensionless | Bies, Hansen and Howard (2017), Equation 5.134; no governing standard | [Spherical ground effect and advanced barriers](https://jmrplens.github.io/phonometry/environment/propagation/ground-barriers/) | + +## Frequency and time weighting + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| A, C, Z | The normative frequency weightings: the ear-response curves applied before integration, Z being the flat reference. | dB | IEC 61672-1:2013, Annex E (acceptance limits in Table 3) | [Frequency Weighting (A, C, Z)](https://jmrplens.github.io/phonometry/signals/levels/weighting/) | +| G | Infrasound weighting, defined by its poles and zeros for the 0.25 Hz to 315 Hz range. | dB | ISO 7196:1995, Table 1 (nominal responses in Table 2) | [Special Weightings (G, B, D, AU)](https://jmrplens.github.io/phonometry/signals/levels/special-weightings/) | +| B | Historical mid-level weighting, withdrawn from the current meter standard. | dB | ANSI S1.4-1983, Appendix C (Formula C2) | [Special Weightings (G, B, D, AU)](https://jmrplens.github.io/phonometry/signals/levels/special-weightings/) | +| D | Historical aircraft-noise weighting, derived from the 40-noy perceived-noisiness contour. | dB | IEC 537:1976 (withdrawn) | [Special Weightings (G, B, D, AU)](https://jmrplens.github.io/phonometry/signals/levels/special-weightings/) | +| AU | Weighting for audible sound measured in the presence of ultrasound. | dB | IEC 61012:1990, subclause 2.2 (Tables 1 and 2) | [Special Weightings (G, B, D, AU)](https://jmrplens.github.io/phonometry/signals/levels/special-weightings/) | +| F, S, I | Fast, Slow and Impulse exponential time weightings: the detector ballistics that produce a displayed level. | s (time constant) | IEC 61672-1:2013 | [Time Weighting](https://jmrplens.github.io/phonometry/signals/levels/time-weighting/) | +| Performance class (0, 1, 2) | Performance class of a filter or an instrument: the width of the tolerance corridor its response has to stay inside, band by band. Class 1 and class 2 share the same design goals and differ in the acceptance limits and in the operating temperature range, class 2 being the looser; class 0, the laboratory reference grade, comes from the withdrawn IEC 61260:1995 and ANSI S1.11-2004 and the current edition no longer defines it. A class is a property of the response, not of the result: a class 2 bank does not make a measurement wrong, it makes its band levels less certain. | dB (tolerance) | IEC 61260-1:2014, 1.2 and Table 1 | [Filter Class Verification (IEC 61260-1)](https://jmrplens.github.io/phonometry/signals/filters/filter-compliance/) | +| K | K-weighting: the programme-loudness curve, a two-stage pre-filter that models the high-frequency boost a spherical head gives and then applies the revised low-frequency B-curve high-pass. It is applied per channel before the channel mean squares are summed and gated, and the LKFS designation records it. | dB | ITU-R BS.1770-5, Annex 1 | [Programme loudness and true peak (BS.1770 / EBU R 128)](https://jmrplens.github.io/phonometry/devices/broadcast/program-loudness/) | +| ITU-R 468 weighting | The broadcast noise weighting: zero at 1 kHz, peaking at $+12{,}2$ dB at 6,3 kHz and falling to $-29{,}9$ dB at 31,5 Hz, shaped to how audible a noise is rather than how loud a tone is. The Recommendation pairs it with a quasi-peak detector and quotes results as dB(468); AES17 reuses the same curve with an r.m.s. detector, which is a different number from the same filter. | dB | Recommendation ITU-R BS.468-4, Table 1 | [Electroacoustics: distortion and frequency response](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/) | +| $W_b$, $W_c$, $W_d$, $W_e$, $W_f$, $W_j$, $W_k$, $W_m$ (whole-body) | The whole-body frequency weightings, one parameter row each of the same four-stage filter: $W_k$ for the vertical axis and $W_d$ for the two horizontal ones in health and comfort, with $W_b$, $W_c$, $W_e$, $W_f$, $W_j$ and $W_m$ for ride comfort, the seat back, rotational axes, motion sickness and the head. The weighted acceleration $a_w$ is what comes out of them; the standard that names the curve is not the one that says where to apply it. | dimensionless | ISO 8041-1:2017, 5.6.1, Formulae (1) to (5) and Table 3 | [Human Vibration](https://jmrplens.github.io/phonometry/vibration/human/human-vibration/) | +| $W_h$ (hand-arm) | The hand-arm frequency weighting: one curve, band-limited from 8 Hz to 1 kHz, applied to each of the three axes before they are combined into the vibration total value. Unlike the whole-body case there is no axis multiplier, so the three weighted values enter the total on equal terms. | dimensionless | ISO 8041-1:2017, 5.6.1, Formulae (1) to (5) and Table 3 | [Human Vibration](https://jmrplens.github.io/phonometry/vibration/human/human-vibration/) | + +## Spectral and system analysis + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $G_{xx}$, $G_{xy}$ | One-sided auto- and cross-spectral density: mean-square content per hertz, so the power in a band is the integral over it and not the height of a line. Everything else in this group is a ratio of these: the coherences, the two frequency-response estimators and the coherent output spectrum. | (unit of $x$)²/Hz | Bendat and Piersol (2010), Sections 5.2 and 9.1; no governing standard | [Calibrated spectral analysis](https://jmrplens.github.io/phonometry/signals/spectra/spectral-analysis/) | +| $\gamma^2_{iy}$ (ordinary coherence) | Ordinary coherence: the fraction of the output autospectrum, at each frequency, that a linear time-invariant path from one input accounts for, $\|G_{xy}\|^2/(G_{xx}G_{yy})$. It is one where the pair is noiselessly linearly related, and with additive output noise it settles at $\mathrm{SNR}/(1+\mathrm{SNR})$ — so it reads as a quality figure, not as a cause. | dimensionless | Bendat and Piersol (2010), Equation (7.109); no governing standard | [Multiple and partial coherence](https://jmrplens.github.io/phonometry/signals/spectra/miso-coherence/) | +| $\gamma^2_{y:x}$ (multiple coherence) | Multiple coherence: the fraction of the output that all the measured inputs together account for, one minus the residual spectrum over the total. It is the ceiling the partial coherences are apportioned under, and what is left of it is the part of the output no measured input explains. | dimensionless | Bendat and Piersol (2010), Equation (7.35); no governing standard | [Multiple and partial coherence](https://jmrplens.github.io/phonometry/signals/spectra/miso-coherence/) | +| $\gamma^2_{iy\cdot(i-1)!}$ (partial coherence) | Partial coherence: the coherence of one input with the output after the inputs ranked before it have been conditioned out. It is what separates a genuine source from one that merely correlates with a genuine source, and it depends on the conditioning order, so the order has to be reported with the number. | dimensionless | Bendat and Piersol (2010), Equation (7.87); no governing standard | [Multiple and partial coherence](https://jmrplens.github.io/phonometry/signals/spectra/miso-coherence/) | +| $H_1$, $H_2$ (FRF estimators) | The two averaged estimates of a frequency response function: $H_1 = G_{xy}/G_{xx}$, unbiased when the noise is on the output, and $H_2 = G_{yy}/G_{yx}$, unbiased when it is on the input. Their ratio is exactly the ordinary coherence, so they agree only where the measurement is clean, and the gap between them is a measure of how far it is not. | output per input | Bendat and Piersol (2010), Section 6.1; no governing standard | [Electroacoustics: distortion and frequency response](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/) | +| ENBW | Equivalent noise bandwidth of an analysis window: the width of the ideal rectangular filter that would pass the same broadband noise power. It is exactly 1 bin for a rectangular window and 1,5 for a Hann, and it is the factor that turns a windowed line spectrum into a density — a broadband level read off the lines sits $10\log_{10}(\mathrm{ENBW})$ dB high without it. | bins (or Hz) | Harris (1978), Table 1; no governing standard | [Calibrated spectral analysis](https://jmrplens.github.io/phonometry/signals/spectra/spectral-analysis/) | +| Cepstrum and quefrency | Cepstrum: the inverse transform of the logarithmic spectrum, in which the periodic ripple an echo or a harmonic family leaves across the spectrum collapses onto a single peak. Quefrency is its independent variable, a time in seconds, at which that peak stands at the echo's own delay — which is why a bearing report quotes a quefrency and not a frequency. | quefrency in s | Havelock, Kuwano and Vorländer (2008), Chapter 27; no governing standard | [Cepstrum, echoes and the envelope spectrum](https://jmrplens.github.io/phonometry/signals/spectra/cepstrum-echoes/) | +| Crest factor | Crest factor: the modulus of the ratio of the peak to the r.m.s. value over the measurement period. It decides whether an r.m.s. description is honest — above 9 the standard says the basic evaluation method is not sufficient and dose measures have to be reported beside it — and for a test signal it decides whether a device clips before the signal has delivered its energy. | dimensionless | ISO 2631-1:1997, 6.2.1 | [Human Vibration](https://jmrplens.github.io/phonometry/vibration/human/human-vibration/) | + +## Room acoustics + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $T_{20}$ | Reverberation time extrapolated to a 60 dB decay from a least-squares fit over −5 dB to −25 dB of the Schroeder curve. | s | ISO 3382-2:2008, Clause 6 and Annex C | [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) | +| $T_{30}$ | The same extrapolation from a fit over −5 dB to −35 dB, the usual choice when the decay range allows it. | s | ISO 3382-2:2008, Clause 6 and Annex C | [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) | +| $T_{60}$, RT | Reverberation time as such: the time for the sound energy to fall by 60 dB. Measured in practice as $T_{20}$ or $T_{30}$. | s | ISO 3382-1:2009 | [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) | +| EDT | Early decay time: the same slope taken over the first 10 dB of decay, which tracks perceived reverberance rather than the tail. | s | ISO 3382-1:2009 (just-noticeable difference in Table A.1) | [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) | +| $C_{50}$ | Clarity for speech: the energy ratio between the first 50 ms of the impulse response and everything after it. | dB | ISO 3382-1:2009 | [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) | +| $C_{80}$ | Clarity for music: the same ratio with the boundary at 80 ms. | dB | ISO 3382-1:2009 (just-noticeable difference in Table A.1) | [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) | +| $D_{50}$ | Definition, or Deutlichkeit: the fraction of the total energy arriving in the first 50 ms. | dimensionless | ISO 3382-1:2009 (just-noticeable difference in Table A.1) | [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) | +| $T_s$ (centre time) | Centre time: the centre of gravity of the squared impulse response in time, a boundary-free alternative to the clarity indices. It runs to tens of milliseconds in a room; the building-prediction guides write $T_s$ for something else entirely, the structural reverberation time of a plate, which is seconds. | s | ISO 3382-1:2009, Equation (A.13) | [Room Acoustics](https://jmrplens.github.io/phonometry/buildings/rooms/room-acoustics/) | +| $A$ | Equivalent sound absorption area of a room: the area of a perfectly absorbing surface that would give the same reverberation time. | m² | ISO 354:2003, Equations (5) and (7) | [Sound Absorption Measurement and Rating](https://jmrplens.github.io/phonometry/materials/absorbers/absorption-measurement/) | +| NC | Noise criteria rating of a background spectrum: the speech interference level selects the curve, and the tangency method rates the spectrum when a band exceeds it. | dB (index) | ANSI/ASA S12.2-2019, 5.2.2 and 5.2.3 (curves in Table 1) | [Room-noise criteria (NC / RC Mark II)](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/) | +| SIL | Speech interference level: the average of the 500, 1000, 2000 and 4000 Hz octave-band levels. | dB | ANSI/ASA S12.2-2019, clause 3.2 | [Room-noise criteria (NC / RC Mark II)](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/) | +| RC | Room criteria Mark II rating: the average of the 500, 1000 and 2000 Hz levels, with a rumble, hiss or neutral spectral tag. | dB (index) | ANSI/ASA S12.2-2019, Annex D (clauses D.3 and D.4) | [Room-noise criteria (NC / RC Mark II)](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/) | +| NR (curve family) | Noise rating, the European counterpart curve family of NC. Discussed for comparison and deliberately not implemented. Not the NR of the noise-control guides, which is a level drop. | dB (index) | Kosten and van Os (1962); no governing standard | [Room-noise criteria (NC / RC Mark II)](https://jmrplens.github.io/phonometry/buildings/rooms/room-noise/) | +| $D_{2,S}$ | Spatial decay rate of speech: the drop in A-weighted speech level per doubling of distance along a line of workstations, taken from the regression of level against the logarithm of distance over positions between 2 m and 16 m. It is a slope only — it says how fast speech dies away, not how loud it starts. | dB | ISO 3382-3:2012, 3.2 | [Open-Plan Office Acoustics (ISO 3382-3)](https://jmrplens.github.io/phonometry/buildings/rooms/open-plan-acoustics/) | +| $L_{p,A,S,4m}$ | A-weighted speech level at 4 m: the nominal level of normal speech four metres from the talker, read off the same regression line rather than measured at that distance. It fixes the absolute height of the decay curve that $D_{2,S}$ only gives the slope of, which is why the two are always reported together. | dB | ISO 3382-3:2012, 3.3 | [Open-Plan Office Acoustics (ISO 3382-3)](https://jmrplens.github.io/phonometry/buildings/rooms/open-plan-acoustics/) | +| $r_D$ | Distraction distance: the distance from the talker at which the speech transmission index falls below 0,50, beyond which concentration and privacy start to improve rapidly. It is the single number an open-plan office is usually specified on, and the only rating in the corpus that is a distance rather than a level. | m | ISO 3382-3:2012, 3.6 | [Open-Plan Office Acoustics (ISO 3382-3)](https://jmrplens.github.io/phonometry/buildings/rooms/open-plan-acoustics/) | +| $r_P$ | Privacy distance: the distance at which the speech transmission index falls below 0,20, beyond which speech is as private as it would be between separate rooms. In offices with small volume or poor privacy it can be out of reach entirely. | m | ISO 3382-3:2012, 3.7 | [Open-Plan Office Acoustics (ISO 3382-3)](https://jmrplens.github.io/phonometry/buildings/rooms/open-plan-acoustics/) | + +## Speech and intelligibility + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $m(F)$ | Modulation transfer function: the fraction of the speech envelope modulation depth at modulation frequency $F$ that survives the transmission path. | dimensionless | IEC 60268-16:2020 | [Speech Transmission Index (STI)](https://jmrplens.github.io/phonometry/perception/speech/speech-transmission/) | +| STI | Speech transmission index: the modulation transfer matrix converted to effective signal-to-noise ratios and weighted into a single value on 0 to 1. | dimensionless | IEC 60268-16:2020, A.5.2 to A.5.6 | [Speech Transmission Index (STI)](https://jmrplens.github.io/phonometry/perception/speech/speech-transmission/) | +| STIPA | The direct STI measurement, made by playing a standardised two-modulation-per-band test signal through the real chain. | dimensionless | IEC 60268-16:2020, clause 6.3 and Table 3 (direct method, Annex B) | [Speech Transmission Index (STI)](https://jmrplens.github.io/phonometry/perception/speech/speech-transmission/) | +| SII | Speech intelligibility index: the band-importance-weighted audibility of the speech spectrum against noise and the listener's threshold. | dimensionless | ANSI S3.5-1997, clause 6 (procedure in clause 5, importance function in Table 3) | [Speech Intelligibility Index](https://jmrplens.github.io/phonometry/perception/speech/speech-intelligibility/) | +| STOI | Short-time objective intelligibility: the clipped per-band envelope correlation between clean and degraded speech. | dimensionless | Taal et al. (2011), Equations 5 and 6; no governing standard | [Objective Intelligibility (STOI & ESTOI)](https://jmrplens.github.io/phonometry/perception/speech/objective-intelligibility/) | +| ESTOI | The extended measure, row- and column-normalised so that it tracks modulated maskers. | dimensionless | Jensen and Taal (2016), Equation 8; no governing standard | [Objective Intelligibility (STOI & ESTOI)](https://jmrplens.github.io/phonometry/perception/speech/objective-intelligibility/) | + +## Sound insulation + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| NR (level drop) | Noise reduction: the sound pressure level in the source room minus the level in the receiving room, $L_{p1} - L_{p2}$. It is not the transmission loss of the partition: the two differ by a term set by the partition area against the receiving room's absorption, so a small partition into a well-absorbing room delivers more noise reduction than its transmission loss, and a large one into a hard room delivers less. | dB | Norton and Karczub (2003), Equation (4.101) | [Room to Room: Partition, Receiving Room, Criterion](https://jmrplens.github.io/phonometry/devices/noise-control/room-to-room/) | +| $D$ | Level difference: the energy-averaged source-room level minus the receiving-room level, with no normalisation. | dB | ISO 16283-1:2014, 3.12 to 3.15 | [Field Insulation Measurement (ISO 16283)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-field/) | +| $D_{nT}$ | Standardized level difference: the level difference referred to a reference reverberation time, 0.5 s for dwellings. | dB | ISO 16283-1:2014, 3.12 to 3.15 | [Field Insulation Measurement (ISO 16283)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-field/) | +| $D_n$ | Normalized level difference: the level difference referred to a reference absorption area of 10 m². | dB | ISO 10052:2021 | [Sound Insulation Survey Method (ISO 10052)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-survey/) | +| $D_{n,e}$ | Element-normalized level difference of a small element or air path, referred to a reference area of 10 m². | dB | EN 12354-3:2000 | [Predicting Sound Insulation (EN 12354)](https://jmrplens.github.io/phonometry/buildings/design/insulation-prediction/) | +| $R$ | Sound reduction index: the level difference corrected by the partition area over the receiving-room absorption area, measured in the laboratory with flanking suppressed. | dB | ISO 10140-2:2010 | [Laboratory Insulation Measurement](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-lab/) | +| $R'$ | Apparent sound reduction index: the same construction measured in the building, so it includes every flanking path. The prime is the lab-versus-field marker. | dB | ISO 16283-1:2014, 3.12 to 3.15 | [Field Insulation Measurement (ISO 16283)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-field/) | +| TL (panel) | Transmission loss: the airborne insulation of a partition predicted from its physical properties, ten times the base-10 logarithm of the reciprocal transmission factor, the same quantity as $R$ in a prediction context. | dB | Bies, Hansen and Howard (2017), Section 7.2; no governing standard | [Predicting Panel Sound Insulation](https://jmrplens.github.io/phonometry/buildings/design/panel-sound-insulation/) | +| TL (duct element) | Transmission loss of a duct element: ten times the base-10 logarithm of the incident plane-wave power over the power transmitted into an anechoic termination, computed from the four-pole transfer matrix and the two port impedances. The anechoic termination is part of the definition, which is why this transmission loss describes the element alone and is not the noise reduction the same silencer delivers once it is installed between a real source and a real outlet. | dB | Bies, Hansen and Howard (2017), Sections 8.8-8.9; no governing standard | [Silencers](https://jmrplens.github.io/phonometry/devices/noise-control/silencers/) | +| IL | Insertion loss: the level at a receiver before an element is inserted minus the level after, for a silencer the drop in radiated sound power level when a length of duct is replaced by it. Unlike a transmission loss it depends on the source and the termination as well as on the element, which is what makes it the number a client can hear and the transmission loss the number a catalogue can print. | dB | Bies, Hansen and Howard (2017), Section 8.2, Equation (8.1); no governing standard | [Silencers](https://jmrplens.github.io/phonometry/devices/noise-control/silencers/) | +| $\tau$ | Transmission factor, or transmission coefficient: the fraction of the incident sound power a partition passes on. It is the quantity the whole group is a logarithm of, since $R = -10\log_{10}\tau$ and the transmission loss is the same logarithm; a $\tau$ of $10^{-5}$ is a 50 dB partition. Transmission factors of parallel paths add, which is why a prediction sums the direct, flanking and indirect airborne factors and only then takes the logarithm. | dimensionless | ISO 12354-1:2017, Formula (1) | [Detailed Per-Band Prediction (ISO 12354)](https://jmrplens.github.io/phonometry/buildings/design/detailed-prediction/) | +| $R_w$, $R'_w$, $D_{nT,w}$ | The weighted single-number ratings: a fixed reference curve is shifted toward the measured spectrum until the unfavourable deviations reach their allowed sum, and the shifted curve is read at 500 Hz. | dB | ISO 717-1:2020 | [Insulation Ratings (ISO 717)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-ratings/) | +| $D_{n,e,w}$ | The same reference-curve rating applied to the element-normalized level difference. | dB | ISO 717-1:2020 | [Predicting Sound Insulation (EN 12354)](https://jmrplens.github.io/phonometry/buildings/design/insulation-prediction/) | +| $C$, $C_{tr}$ | Spectrum adaptation terms: the corrections that re-rate the measured curve against A-weighted pink noise ($C$) and against A-weighted urban road traffic ($C_{tr}$). | dB | ISO 717-1:2020, Annex A | [Insulation Ratings (ISO 717)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-ratings/) | +| $L_n$ | Normalized impact sound pressure level: the receiving-room level under the standard tapping machine, referred to a 10 m² absorption area. | dB re 20 µPa | ISO 10140-3:2010 | [Laboratory Insulation Measurement](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-lab/) | +| $L'_{nT}$ | Standardized impact sound pressure level, referred to a reference reverberation time. Note the sign: more reverberation lowers it, the opposite of $D_{nT}$. | dB re 20 µPa | ISO 16283-2:2015 | [Field Insulation Measurement (ISO 16283)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-field/) | +| $L_{n,w}$, $L'_{nT,w}$ | The weighted impact ratings. The reference curve is shifted the same way, but an unfavourable deviation is now one where the measurement exceeds the reference. | dB | ISO 717-2:2020 | [Insulation Ratings (ISO 717)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-ratings/) | +| $C_I$ | Impact spectrum adaptation term, from the energetic sum over 100 Hz to 2500 Hz. The enlarged-range $C_{I,50\text{–}2500}$ extends it down to 50 Hz. | dB | ISO 717-2:2020 (enlarged range in A.2.1 NOTE) | [Insulation Ratings (ISO 717)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-ratings/) | +| $\Delta L_w$ | Weighted reduction of impact sound pressure level given by a floor covering, measured as the improvement over the bare reference floor. | dB | ISO 717-2:2020 (measurement in ISO 16251-1:2014, Formulae (3) and (4)) | [Floor-Covering Impact Improvement (ISO 16251-1)](https://jmrplens.github.io/phonometry/buildings/design/impact-improvement/) | +| $\Delta R_w$ | Weighted improvement of airborne insulation contributed by a lining or additional layer, added to the element rating in the prediction. | dB | EN 12354-1:2000, Formulae 27 and 28a | [Predicting Sound Insulation (EN 12354)](https://jmrplens.github.io/phonometry/buildings/design/insulation-prediction/) | +| $K_{ij}$ | Vibration reduction index of a junction: the direction-averaged velocity level difference corrected by the junction length and the equivalent absorption lengths. | dB | ISO 10848-1:2006, Formula (13) | [Laboratory Flanking Transmission (ISO 10848)](https://jmrplens.github.io/phonometry/buildings/insulation/flanking-lab/) | +| $f_c$ | Critical frequency: the frequency at which the bending wavelength of a panel equals the wavelength in air, where the coincidence dip appears. | Hz | Bies, Hansen and Howard (2017), Equation 7.3; no governing standard | [Predicting Panel Sound Insulation](https://jmrplens.github.io/phonometry/buildings/design/panel-sound-insulation/) | +| $\sigma$ | Radiation efficiency of a plate: the airborne power radiated per unit mean-square surface velocity, normalised by the plane-wave value. | dimensionless | Hopkins (2007), Equations 2.227 to 2.230; no governing standard | [Predicting Panel Sound Insulation](https://jmrplens.github.io/phonometry/buildings/design/panel-sound-insulation/) | +| $D_{2m,nT}$ | Standardized facade level difference: the level 2 m in front of the facade minus the indoor level, standardized to a reference reverberation time of 0,5 s for dwellings. The 2 m position sits in the field the facade itself reflects, so it is not a free-field level, and the notation records the source — $D_{tr,2m,nT}$ for road traffic, $D_{ls,2m,nT}$ for a loudspeaker. | dB | ISO 16283-3:2016, 3.15 | [Façade Sound Insulation](https://jmrplens.github.io/phonometry/buildings/insulation/facade-insulation/) | +| $D_{ls,2m,nT,w}$ | The weighted facade rating: $D_{2m,nT}$ measured with a loudspeaker put through the ISO 717-1 reference-curve procedure. The `ls` subscript is not decoration — it records that the source was a loudspeaker at 45 degrees rather than real road traffic, and a facade rated with one source is not interchangeable with the same facade rated with the other. | dB | ISO 717-1:2020 | [Façade Sound Insulation](https://jmrplens.github.io/phonometry/buildings/insulation/facade-insulation/) | +| $R'_{45°}$ | Apparent sound reduction index of a facade element under loudspeaker sound at 45 degrees: the level difference corrected by the specimen area over the receiving-room absorption area, with a further $-1{,}5$ dB that carries the single-angle geometry. It is apparent, so flanking and any other component of the facade are inside the number. | dB | ISO 16283-3:2016, 3.12 | [Façade Sound Insulation](https://jmrplens.github.io/phonometry/buildings/insulation/facade-insulation/) | +| $R_A$, $R_{A,tr}$ | Global airborne index: the A-weighted level a partition transmits when it is excited by a normalised spectrum — pink noise for $R_A$, road traffic for $R_{A,tr}$ — summed energetically over eighteen one-third-octave bands from 100 Hz to 5 kHz. It is a close relative of $R_w + C$ and $R_w + C_{tr}$ but is computed directly, not by shifting a reference curve, and it uses two bands the ISO 717-1 range does not. | dBA | CTE DB-HR, Annex A, Formulae (A.5) and (A.6) | [Spanish Building Code (CTE DB-HR)](https://jmrplens.github.io/phonometry/buildings/insulation/spanish-building-code/) | +| $D_{nT,A}$, $D_{2m,nT,Atr}$ | The same global index applied to a standardized level difference: between two rooms ($D_{nT,A}$, pink noise) and between the outside and a protected room ($D_{2m,nT,Atr}$, road traffic or aircraft). These are the quantities the DB-HR requirement tables are written against, so a project is checked in them and not in the ISO 717-1 ratings. | dBA | CTE DB-HR, Annex A, Formulae (A.5) and (A.6); requirements in clause 2 | [Spanish Building Code (CTE DB-HR)](https://jmrplens.github.io/phonometry/buildings/insulation/spanish-building-code/) | +| $R_I$ | Intensity sound reduction index: the source-room level minus the intensity level scanned over the radiating face, so the transmitted power is measured directly instead of inferred from the receiving room. It is the method of choice where flanking is strong; add the $K_c$ adaptation to get $R_{I,M}$, the value the ISO 10140 pressure method would have produced. | dB | ISO 15186-1:2000, 3.8, Equation (7) | [Sound Insulation by Intensity (ISO 15186)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-intensity/) | +| $D_{I,n,e}$ | Intensity element-normalized level difference: the small-element counterpart of $D_{n,e}$, measured by scanning the element and normalised to a reference absorption area of 10 m². It is rated through the same ISO 717-1 procedure, as $D_{I,n,e,w}$, so a ventilator or a transit sealing system can be compared with a wall on one scale. | dB | ISO 15186-2:2003, Formula (12) | [Sound Insulation by Intensity (ISO 15186)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-intensity/) | + +## Materials and surfaces + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $\alpha$ | Sound absorption coefficient at normal incidence: the fraction of incident energy not returned by the surface, obtained in the impedance tube from the reflection factor. | dimensionless | ISO 10534-2:1998, Equations (17) to (19) | [Impedance Tube](https://jmrplens.github.io/phonometry/materials/absorbers/impedance-tube/) | +| $\alpha_s$ | Random-incidence sound absorption coefficient measured in a reverberation room, from the change in equivalent absorption area with and without the specimen. | dimensionless | ISO 354:2003, Equations (8) and (9) | [Sound Absorption Measurement and Rating](https://jmrplens.github.io/phonometry/materials/absorbers/absorption-measurement/) | +| $\alpha_p$ | Practical sound absorption coefficient: the one-third-octave data grouped into octave bands and rounded to steps of 0.05. | dimensionless | ISO 11654:1997, Clause 4.1 | [Sound Absorption Measurement and Rating](https://jmrplens.github.io/phonometry/materials/absorbers/absorption-measurement/) | +| $\alpha_w$ | Weighted sound absorption coefficient: the fixed reference curve shifted toward the practical values and read at 500 Hz. | dimensionless | ISO 11654:1997, Clause 4.2 | [Sound Absorption Measurement and Rating](https://jmrplens.github.io/phonometry/materials/absorbers/absorption-measurement/) | +| Absorption class | The A to E letter class the weighted coefficient maps to, or "not classified". | class letter | ISO 11654:1997, Table B.1 | [Sound Absorption Measurement and Rating](https://jmrplens.github.io/phonometry/materials/absorbers/absorption-measurement/) | +| $R$ | Airflow resistance: the pressure difference across a specimen divided by the volumetric airflow rate through it. | Pa·s/m³ | ISO 9053-1:2018, Clause 3 | [Airflow Resistance](https://jmrplens.github.io/phonometry/materials/absorbers/airflow-resistance/) | +| $R_s$ | Specific airflow resistance: the airflow resistance referred to the specimen face area. | Pa·s/m | ISO 9053-1:2018, Clause 3 | [Airflow Resistance](https://jmrplens.github.io/phonometry/materials/absorbers/airflow-resistance/) | +| $\sigma$ | Airflow resistivity: the specific airflow resistance per unit thickness, the primary input to every empirical porous model. | Pa·s/m² | ISO 9053-1:2018, Clause 3 | [Airflow Resistance](https://jmrplens.github.io/phonometry/materials/absorbers/airflow-resistance/) | +| $Z$ | Surface impedance: the complex ratio of sound pressure to particle velocity at the face of the sample, usually reported normalised by the characteristic impedance of air. | Pa·s/m | ISO 10534-2:1998, Equations (17) to (19) | [Impedance Tube](https://jmrplens.github.io/phonometry/materials/absorbers/impedance-tube/) | +| $s$ | Scattering coefficient: the fraction of reflected energy that is not returned specularly, measured at random incidence on a turntable in a reverberation room. | dimensionless | ISO 17497-1:2004+A1:2014, Formula (5) | [Diffusers and Their Coefficients](https://jmrplens.github.io/phonometry/materials/diffusers/diffusers/) | +| $d$ | Diffusion coefficient: the uniformity of the polar response of a surface, from the autocorrelation of the free-field goniometer measurement. | dimensionless | ISO 17497-2:2012, Formula (5) (normalised form in Formula (7)) | [Diffusers and Their Coefficients](https://jmrplens.github.io/phonometry/materials/diffusers/diffusers/) | +| $s'$ | Dynamic stiffness per unit area of a resilient layer: a dynamic force per unit area divided by the resulting change in thickness. | MN/m³ | EN 29052-1:1992 (ISO 9052-1:1989), Formula 1 | [Dynamic stiffness of resilient materials](https://jmrplens.github.io/phonometry/materials/resilient/dynamic-stiffness/) | +| $\phi$ (porosity) | Open porosity: the fraction of the material's volume that is air connected to the outside, $\phi = V_a/V_T$. A closed bubble counts as frame, not as pore, because sound cannot enter it; for most fibrous materials and foams $\phi$ lies very close to one, which is why a one-parameter model that assumes so can still work. | dimensionless | Allard and Atalla (2009), Equation (2.25); no governing standard | [Porous and Multilayer Absorbers](https://jmrplens.github.io/phonometry/materials/absorbers/porous-absorbers/) | +| $\alpha_\infty$ (tortuosity) | Tortuosity: how much longer the winding path through the pores is than the straight line, squared — exactly $1/\cos^2\varphi$ for pores inclined at an angle $\varphi$, and one for straight cylindrical pores. It sets the high-frequency limit of the effective density, and despite the $\alpha$ it is not an absorption coefficient of any kind. | dimensionless | Allard and Atalla (2009), Equation (4.143); no governing standard | [Porous and Multilayer Absorbers](https://jmrplens.github.io/phonometry/materials/absorbers/porous-absorbers/) | +| $\Lambda$, $\Lambda'$ | The two pore sizes the Johnson-Champoux-Allard model needs: $\Lambda$ weights the pore surface by the squared flow velocity, so it is set by the narrow constrictions where the viscous losses happen, and $\Lambda'$ is the plain surface-to-volume length that governs the thermal exchange with the frame. $\Lambda'$ is normally the larger, and the two are equal only for identical straight cylindrical pores. | m | Allard and Atalla (2009), Equations (5.24) and (5.27); no governing standard | [Porous and Multilayer Absorbers](https://jmrplens.github.io/phonometry/materials/absorbers/porous-absorbers/) | +| $Z_c$, $k$ | Characteristic impedance and complex wavenumber: the pair that describes a porous medium as an equivalent fluid — the ratio of pressure to particle velocity in a travelling wave inside it, and the wavenumber whose imaginary part is the attenuation per metre. Every empirical or semi-phenomenological model produces this pair, and it is what the transfer-matrix method stacks layer by layer. | Pa·s/m and 1/m | Allard and Atalla (2009), Chapter 5; no governing standard | [Porous and Multilayer Absorbers](https://jmrplens.github.io/phonometry/materials/absorbers/porous-absorbers/) | + +## Vibration and structure-borne sound + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $Y$ | Mobility: the complex ratio of a velocity response to the force that produces it. | m/(N·s) | ISO 7626-1:2011, 3.1.2 and Table 1 | [Mechanical mobility and the FRF family (ISO 7626-1)](https://jmrplens.github.io/phonometry/vibration/structural/mechanical-mobility/) | +| $Z$ | Mechanical impedance: the reciprocal of mobility, force per unit velocity. | N·s/m | ISO 7626-1:2011, Table 1 | [Mechanical mobility and the FRF family (ISO 7626-1)](https://jmrplens.github.io/phonometry/vibration/structural/mechanical-mobility/) | +| $H$ (receptance) | Receptance, or dynamic compliance: displacement response per unit force, the pivot the whole family converts through. | m/N | ISO 7626-1:2011, Table 1 | [Mechanical mobility and the FRF family (ISO 7626-1)](https://jmrplens.github.io/phonometry/vibration/structural/mechanical-mobility/) | +| $A$ | Accelerance, or inertance: acceleration response per unit force. Its reciprocal is the apparent mass. | 1/kg | ISO 7626-1:2011, Table 1 | [Mechanical mobility and the FRF family (ISO 7626-1)](https://jmrplens.github.io/phonometry/vibration/structural/mechanical-mobility/) | +| $k_{21}$ | Dynamic transfer stiffness of a resilient element: the blocking force on the output side divided by the displacement on the input side. | N/m | ISO 10846-1:2008, 3.7 | [Transfer stiffness of resilient elements (ISO 10846)](https://jmrplens.github.io/phonometry/vibration/structural/transfer-stiffness/) | +| $L_k$ | Level of the dynamic transfer stiffness, referred to 1 N/m. | dB re 1 N/m | ISO 10846-2:2008 and ISO 10846-3:2002, 3.17 | [Transfer stiffness of resilient elements (ISO 10846)](https://jmrplens.github.io/phonometry/vibration/structural/transfer-stiffness/) | +| $\eta$ (resilient element) | Loss factor of a resilient element: the tangent of the phase angle of its dynamic transfer stiffness. | dimensionless | ISO 10846-1:2008, 3.8 | [Transfer stiffness of resilient elements (ISO 10846)](https://jmrplens.github.io/phonometry/vibration/structural/transfer-stiffness/) | +| $\eta_{int}$ (internal) | Internal loss factor of a building element: the fraction of its vibrational energy dissipated per radian inside the material itself, before anything is radiated or leaves through the junctions. It is an input to the prediction, not a measured output: Table B.3 of the same standard gives 0,005 for concrete and about 0,01 for most masonry. | dimensionless | ISO 12354-1:2017, Annex C, Formula (C.1) | [Detailed Per-Band Prediction (ISO 12354)](https://jmrplens.github.io/phonometry/buildings/design/detailed-prediction/) | +| $\eta_{tot}$ (total, in situ) | Total loss factor of an element as built in: the internal loss factor plus the losses radiated into the air and absorbed at the perimeter junctions. It is what damps the resonant transmission above the critical frequency, and it fixes the structural reverberation time through $T_s = 2{,}2/(f\,\eta_{tot})$ — so a laboratory value measured in a heavy test frame does not transfer to the building unchanged. | dimensionless | ISO 12354-1:2017, Annex C, Formula (C.1) | [Detailed Per-Band Prediction (ISO 12354)](https://jmrplens.github.io/phonometry/buildings/design/detailed-prediction/) | +| $a_w$ | Frequency-weighted acceleration: the root sum of squares of the band accelerations after the human-response weightings. | m/s² | ISO 2631-1:1997, Equation (9) | [Human Vibration](https://jmrplens.github.io/phonometry/vibration/human/human-vibration/) | +| $A(8)$ | Daily vibration exposure: the exposure magnitude normalised to a reference 8 h day, combined over the operations of the day. | m/s² | ISO 5349-1:2001, Equations (2) and (3) | [Human Vibration](https://jmrplens.github.io/phonometry/vibration/human/human-vibration/) | +| VDV | Vibration dose value: the fourth-power time integral of the weighted acceleration, which weights shocks far more heavily than an r.m.s. does. | m/s^1.75 | ISO 2631-1:1997, Equation (5) | [Human Vibration](https://jmrplens.github.io/phonometry/vibration/human/human-vibration/) | +| MTVV | Maximum transient vibration value: the largest 1 s running r.m.s. of the weighted acceleration. | m/s² | ISO 2631-1:1997, Equation (4) | [Human Vibration](https://jmrplens.github.io/phonometry/vibration/human/human-vibration/) | +| $R$ | Cumulative stress variable of the multiple-shock model: the daily compressive stresses accumulated over the years of exposure, which the lumbar injury probability is read from. | dimensionless | ISO 2631-5:2018, Annex C (Formulae C.1 and C.3 to C.5) | [Multiple-shock whole-body vibration (ISO 2631-5)](https://jmrplens.github.io/phonometry/vibration/human/multiple-shock-vibration/) | +| $L_v$ | Velocity level: twenty times the base-10 logarithm of the surface velocity over the reference velocity. | dB re 50 nm/s | ISO/TS 7849-1:2009, Formula 3 | [Sound power from surface vibration (ISO/TS 7849)](https://jmrplens.github.io/phonometry/devices/emission/vibration-sound-power/) | +| $\varepsilon$ | Radiation factor, or radiation efficiency, of a vibrating machine surface: the airborne power radiated per unit mean-square velocity and area. | dimensionless | ISO/TS 7849-1:2009 and ISO/TS 7849-2:2009 | [Sound power from surface vibration (ISO/TS 7849)](https://jmrplens.github.io/phonometry/devices/emission/vibration-sound-power/) | +| $L_{Ws}$ | Structure-borne sound power level injected by equipment into a reception plate. | dB re 1 pW | EN 15657:2018, Formula 14 | [Structure-borne sound power of equipment (EN 15657)](https://jmrplens.github.io/phonometry/buildings/design/structure-borne-power/) | +| $\eta_{ij}$ | Coupling loss factor: the fraction of energy per radian that a statistical energy analysis subsystem loses into a neighbouring one across a junction. | dimensionless | Hopkins (2007), Equation 2.154; no governing standard | [Bending-wave transmission at plate junctions](https://jmrplens.github.io/phonometry/vibration/structural/junction-transmission/) | +| $\tau_{ij}$ (junction) | Junction transmission coefficient: the fraction of the bending-wave power arriving at a junction from plate $i$ that continues into plate $j$, angle by angle and then averaged over a diffuse field. Both the coupling loss factor $\eta_{ij}$ and the vibration reduction index $K_{ij}$ are derived from it, so it is the wave-approach quantity the junction family bottoms out in. | dimensionless | Hopkins (2007), Equations 5.12 and 5.13; no governing standard | [Bending-wave transmission at plate junctions](https://jmrplens.github.io/phonometry/vibration/structural/junction-transmission/) | + +## Psychoacoustics + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $N$ | Loudness: the perceived magnitude of a sound, anchored so that a 1 kHz tone at 40 dB SPL is exactly 1 sone. | sone | ISO 532-1:2017, clause 5 (stationary) and clause 6 (time-varying) | [Loudness](https://jmrplens.github.io/phonometry/perception/psychoacoustics/loudness/) | +| $N'$ | Specific loudness: the loudness density along the critical-band scale, whose integral is $N$. | sone/Bark | ISO 532-1:2017 (sone/Cam form in ISO 532-2:2017, Formula 7) | [Loudness](https://jmrplens.github.io/phonometry/perception/psychoacoustics/loudness/) | +| $L_N$ | Loudness level: the level of the 1 kHz free-field tone judged equally loud as the sound. | phon | ISO 226:2023, Formula (2) (contours in Formula (1)) | [Loudness](https://jmrplens.github.io/phonometry/perception/psychoacoustics/loudness/) | +| $S$ | Sharpness: the position of the centre of gravity of the specific loudness on the critical-band scale, normalised so that the reference narrow-band noise is exactly 1 acum. | acum | DIN 45692:2009, clause 6 | [Sound Quality Metrics](https://jmrplens.github.io/phonometry/perception/psychoacoustics/sound-quality/) | +| $R$ | Roughness: the perceived harshness of fast amplitude modulation, around 70 Hz, normalised so that the reference modulated tone is 1 asper. | asper | ECMA-418-2:2025, clause 7 (Formula 104) | [Sound Quality Metrics](https://jmrplens.github.io/phonometry/perception/psychoacoustics/sound-quality/) | +| $F$ | Fluctuation strength: the perceived slow amplitude modulation, around 4 Hz, normalised so that the reference modulated tone is 1 vacil. | vacil | ECMA-418-2:2025, clause 9 (Formula 163) | [Sound Quality Metrics](https://jmrplens.github.io/phonometry/perception/psychoacoustics/sound-quality/) | +| $T$ | Tonality: the perceived tonal content of a sound, derived from the autocorrelation of the band envelopes. | tu | ECMA-418-2:2025, clause 6 | [Sound Quality Metrics](https://jmrplens.github.io/phonometry/perception/psychoacoustics/sound-quality/) | +| TNR | Tone-to-noise ratio: the level of a discrete tone above the masking noise in the critical band around it. | dB | ECMA-418-1:2024, clause 11 (Formulae 9 to 11) | [Prominent Discrete Tones (ECMA-418-1)](https://jmrplens.github.io/phonometry/perception/psychoacoustics/tone-prominence/) | +| PR | Prominence ratio: the level of the critical band containing the tone above the mean of the two adjacent bands. | dB | ECMA-418-1:2024, clause 12 (Formula 23) | [Prominent Discrete Tones (ECMA-418-1)](https://jmrplens.github.io/phonometry/perception/psychoacoustics/tone-prominence/) | +| $\Delta L$ | Audibility of a tone in noise: the tone level minus the critical-band masking level minus the masking index. | dB | ISO/PAS 20065:2016, Formula 14 | [Objective audibility of tones in noise (ISO/PAS 20065)](https://jmrplens.github.io/phonometry/perception/psychoacoustics/tone-audibility/) | +| PA | Psychoacoustic annoyance: the percentile loudness scaled by sharpness and by a fluctuation-plus-roughness term. | dimensionless | Fastl and Zwicker (2007), Equation 16.2; no governing standard | [Psychoacoustic annoyance and fluctuation strength](https://jmrplens.github.io/phonometry/perception/psychoacoustics/psychoacoustic-annoyance/) | +| Critical band | Critical band: the frequency span within which the ear sums energy as one event, about 100 Hz wide below 500 Hz and roughly a fifth of the centre frequency above it. Masking, sharpness and the two tone-prominence ratios are all computed band by band on this scale, which is why none of them can be read off a fixed fractional-octave spectrum. | Hz | Fastl and Zwicker (2007), Sections 6.1 and 6.2; no governing standard | [Loudness](https://jmrplens.github.io/phonometry/perception/psychoacoustics/loudness/) | +| $z$ (critical-band rate) | Critical-band rate: the auditory frequency scale on which one unit is one critical band, running 0 to 24 Bark over the audible range. Specific loudness is a density along it, which is why its unit is sone/Bark and why a loudness pattern is plotted against $z$ rather than against frequency. | Bark | Fastl and Zwicker (2007), Section 6.2, Table 6.1; no governing standard | [Loudness](https://jmrplens.github.io/phonometry/perception/psychoacoustics/loudness/) | +| $ERB_N$ (Cam scale) | Equivalent rectangular bandwidth of the auditory filter, and the Cam scale built from it by counting one unit per $ERB_N$: about 132 Hz at 1 kHz, so the step from 934 Hz to 1066 Hz is one Cam. It is narrower than the Bark band at low frequencies, and it is the scale ISO 532-2 and ISO 532-3 compute specific loudness on, so a sone/Cam density is not numerically a sone/Bark one. | Hz (scale in Cam) | ISO 532-2:2017, 3.13 and 3.14 | [Advanced Loudness (ISO 532-2/-3, ECMA-418-2)](https://jmrplens.github.io/phonometry/perception/psychoacoustics/advanced-loudness/) | +| $N_5$ | Percentile loudness: the loudness exceeded 5 % of the time, read off the time-varying loudness of the ISO 532-1 model. It is the stationary stand-in for a fluctuating sound that psychoacoustic annoyance is built on, and it is a loudness in sone, not a loudness level in phon. | sone | Fastl and Zwicker (2007), Equation 16.2; no governing standard | [Psychoacoustic annoyance and fluctuation strength](https://jmrplens.github.io/phonometry/perception/psychoacoustics/psychoacoustic-annoyance/) | +| Short-term and long-term loudness | The two smoothed loudness time series of the Moore-Glasberg-Schlittenlacher model: short-term loudness is the loudness of a brief segment — a syllable, a single note, typically up to 500 ms — and long-term loudness that of a longer one, a whole sentence or musical phrase, typically up to 5 s. The loudness of a sound lasting two or three seconds is predicted by the maximum of the long-term series, not by its average. | sone | ISO 532-3:2023, 3.10 and 3.11 | [Advanced Loudness (ISO 532-2/-3, ECMA-418-2)](https://jmrplens.github.io/phonometry/perception/psychoacoustics/advanced-loudness/) | + +## Electroacoustics and programme loudness + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| THD | Total harmonic distortion: the harmonic content of the output relative to the fundamental ($\mathrm{THD}_F$) or to the total signal ($\mathrm{THD}_R$). | % or dB | IEC 60268-3:2013, 14.12.2 to 14.12.11 (the R form in 14.12.3.2) | [Electroacoustics: distortion and frequency response](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/) | +| THD+N | Total harmonic distortion plus noise: everything left after notching out the fundamental, within the standard measurement bandwidth. | % or dB | AES17-2015, clause 6.3.1 (notch and bandwidth in 5.2.5 and 5.2.8) | [Electroacoustics: distortion and frequency response](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/) | +| SINAD | Signal to noise and distortion ratio, the reciprocal expression of THD+N. | dB | AES17-2015, clause 6.3.1 | [Electroacoustics: distortion and frequency response](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/) | +| IMD, $d_{m,n}$ (modulation) | Modulation intermodulation distortion: the sidebands a strong low-frequency tone produces around a weak high-frequency one. IEC 60268-3 defines several intermodulation families with different test signals, so a bare "IMD" has to say which one it is, and the single number an SMPTE-type analyzer prints combines the modulation sidebands in r.m.s. and is none of them. | % | IEC 60268-3:2013, 14.12.7 | [Electroacoustics: distortion and frequency response](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/) | +| $d_{d,n}$ (difference frequency) | Difference-frequency intermodulation distortion: the products two closely spaced high-frequency tones of equal amplitude create at their difference and its multiples, referred to the fundamentals. Its test signal and its products are both different from the modulation form, so the two numbers are not comparable. | % | IEC 60268-3:2013, 14.12.8 | [Electroacoustics: distortion and frequency response](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/) | +| TDFD | Total difference-frequency distortion: the second- and third-order difference products of the two-tone test combined into one figure and referred to the sum of the two fundamentals, the single number the difference-frequency family reports. | % | IEC 60268-3:2013, 14.12.10 | [Electroacoustics: distortion and frequency response](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/) | +| $H_n$ (harmonic order $n$) | Harmonic transfer function of order $n$: the impulse response that an exponential-sweep deconvolution places $L\ln n$ seconds *before* the linear one, so a single sweep separates the linear response and every harmonic order into its own window. The distortion of order $n$ at excitation frequency $f$ is then read as $\|H_n(nf)\|/\|H_1(f)\|$. | output per input | Farina (2000), no governing standard | [Swept-sine distortion and phase utilities](https://jmrplens.github.io/phonometry/devices/electroacoustics/swept-sine-distortion/) | +| DIM | Dynamic intermodulation distortion, measured with a 15 kHz sine against a filtered 3.15 kHz square wave. | % | IEC 60268-3:2013, 14.12.9 | [Electroacoustics: distortion and frequency response](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/) | +| $L_K$, LUFS | Programme loudness: the channel-weighted sum of K-weighted mean-square powers, gated in 400 ms blocks. LUFS and LKFS name the same unit. | LUFS | ITU-R BS.1770-5, Formula 2 (gating in Formulae 3 to 7) | [Programme loudness and true peak (BS.1770 / EBU R 128)](https://jmrplens.github.io/phonometry/devices/broadcast/program-loudness/) | +| LRA | Loudness range: the spread between the 10th and 95th percentiles of the gated short-term loudness distribution. | LU | EBU Tech 3342 | [Programme loudness and true peak (BS.1770 / EBU R 128)](https://jmrplens.github.io/phonometry/devices/broadcast/program-loudness/) | +| dBTP | True peak level: the peak of the signal reconstructed by oversampling, which catches the inter-sample peaks a sample-domain maximum misses. | dBTP | ITU-R BS.1770-5, Annex 2 | [Programme loudness and true peak (BS.1770 / EBU R 128)](https://jmrplens.github.io/phonometry/devices/broadcast/program-loudness/) | + +## Aircraft and airport noise + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| PNL | Perceived noise level: the 24 one-third-octave band levels converted to noisiness in noys and recombined. | PNdB | ICAO Annex 16, Vol. I, Appendix 2 (noisiness law in Table A2-3) | [Aircraft noise: Effective Perceived Noise Level](https://jmrplens.github.io/phonometry/aircraft/aircraft-noise/) | +| PNLT | Tone-corrected perceived noise level: PNL plus the penalty for spectral irregularities such as fan and turbine tones. | PNdB | ICAO Annex 16, Vol. I, Appendix 2 | [Aircraft noise: Effective Perceived Noise Level](https://jmrplens.github.io/phonometry/aircraft/aircraft-noise/) | +| EPNL | Effective perceived noise level: the maximum PNLT plus the duration correction over the 10 dB-down window, the noise-certification metric. | EPNdB | ICAO Annex 16, Vol. I, Appendix 2 | [Aircraft noise: Effective Perceived Noise Level](https://jmrplens.github.io/phonometry/aircraft/aircraft-noise/) | +| PNLTM | Maximum tone-corrected perceived noise level: the largest PNLT of the half-second time history, after the bandsharing adjustment. It is the peak the certification metric is built on, since $\mathrm{EPNL} = \mathrm{PNLTM} + D$ and the 10 dB-down integration window is measured down from it. | PNdB | ICAO Annex 16, Vol. I, Appendix 2, 4.4 | [Aircraft noise: Effective Perceived Noise Level](https://jmrplens.github.io/phonometry/aircraft/aircraft-noise/) | +| NPD | Noise-power-distance table: the event level of one aircraft — $L_{Amax}$ or SEL — tabulated against distance for a handful of engine power settings, measured in steady flight along a notionally infinite straight path at a reference speed. A calculation interpolates it linearly in power and logarithmically in distance, then corrects that baseline segment by segment. | dB | ECAC Doc 29, 4th ed., Volume 2, section 4.2 | [Airport Noise (ECAC Doc 29)](https://jmrplens.github.io/phonometry/aircraft/airport-noise/) | +| ANP database | Aircraft Noise and Performance database: the international collection of NPD tables, aircraft and engine performance coefficients and default departure and approach profiles, supplied mostly by the manufacturers, that an airport-noise calculation is normally run from. | | ECAC Doc 29, 4th ed., Volume 2, Appendix G | [The ANP fleet database](https://jmrplens.github.io/phonometry/aircraft/anp-fleet/) | +| $d_p$ | Slant distance: the perpendicular distance from the receiver to the flight-path segment, which is the abscissa of every NPD table. It is not the distance along the ground and not the aircraft's altitude, and to the side of the track it is the minimum distance to the segment rather than to the whole path. | m | ECAC Doc 29, 4th ed., Volume 2, section 4.5.2 | [Airport Noise (ECAC Doc 29)](https://jmrplens.github.io/phonometry/aircraft/airport-noise/) | +| $L_{Amax}$ | Maximum A-weighted level of a single event: the largest instantaneous value $L_A(t)$ reaches while the aircraft passes, the simpler of the two event metrics an NPD table carries. Doc 29 reads $L_A$ on the Slow sound-level-meter scale, so the time weighting is part of the quantity; it is not the peak level, which has no time weighting at all. | dB re 20 µPa | ECAC Doc 29, 4th ed., Volume 2, section 4.1 | [Airport Noise (ECAC Doc 29)](https://jmrplens.github.io/phonometry/aircraft/airport-noise/) | + +## Underwater acoustics + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $L_p$ (underwater) | Underwater sound pressure level, referred to 1 µPa rather than 20 µPa. An airborne level never converts to it by subtraction alone. | dB re 1 µPa | ISO 18405:2017 (mean-square level in ISO 18406:2017, Formula 7) | [Underwater acoustics: radiated noise and pile driving](https://jmrplens.github.io/phonometry/underwater/underwater-acoustics/) | +| SEL (underwater) | Underwater sound exposure level, the time integral of squared pressure referred to 1 µPa²·s. | dB re 1 µPa²·s | ISO 18405:2017 | [Underwater acoustics: radiated noise and pile driving](https://jmrplens.github.io/phonometry/underwater/underwater-acoustics/) | +| $L_{RN}$ | Radiated noise level of a ship: the level of the product of the far-field r.m.s. pressure and the source distance. | dB re 1 µPa·m | ISO 17208-1:2016 | [Underwater acoustics: radiated noise and pile driving](https://jmrplens.github.io/phonometry/underwater/underwater-acoustics/) | +| $L_s$ | Equivalent monopole source level: the radiated noise level after the Lloyd's-mirror surface correction, so that one number describes the source itself. | dB re 1 µPa·m | ISO 17208-2:2019, Formula 3 | [Underwater acoustics: radiated noise and pile driving](https://jmrplens.github.io/phonometry/underwater/underwater-acoustics/) | +| TL (underwater) | Transmission loss as the sonar equation uses it: the drop between the source level and the level at the receiver, a geometrical spreading law plus the volume absorption $\alpha R$. Strictly, ISO 18405 calls that quantity propagation loss, $N_{PL} = L_S - L_p(x)$, keeps the name transmission loss for the reduction in level between two stated points, and deprecates using one as a synonym of the other. | dB | ISO 18405:2017, 3.4.1.3 and 3.4.1.4 | [Underwater sound propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/) | +| SL, $L_S$ | Source level: the level of the source factor, equal to the level 1 m from a hypothetical point source radiating into an infinite lossless medium, so it is back-projected from a measurement made much further away and never measured at 1 m. The reference value carries a squared metre, which is why the widespread "dB re 1 µPa at 1 m" is the same number written loosely. | dB re 1 µPa²m² | ISO 18405:2017, 3.3.2.1 | [Underwater sound propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/) | +| NL, $L_N$ | Sonar noise level: the background the signal has to be detected against, in the band of interest, from wind, thermal agitation, distant shipping and the platform's own self-noise. It has to be quoted over the same bandwidth as the source level, since an ambient spectrum level and a broadband level differ by $10\log_{10}B$. | dB re 1 µPa | ISO 18405:2017, 3.6.2.5 | [Underwater sound propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/) | +| DI (receiving array) | Directivity index of a receiving array: the array gain in the special case the sonar equation assumes, a plane-wave signal in isotropic background noise. It is the signal-to-noise ratio the beam buys over a single omnidirectional hydrophone, and it enters the equation as a credit against the noise level. | dB | ISO 18405:2017, 3.6.2.4 (Note 4) | [Underwater sound propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/) | +| DT | Detection threshold: ten times the base-10 logarithm of the signal-to-noise ratio at which a signal counts as just detectable, for a stated probability of detection — often 0,5 — and probability of false alarm. It is where the processing gain and the operator's tolerance for false alarms enter the sonar equation. | dB | ISO 18405:2017, 3.6.2.1 | [Underwater sound propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/) | +| TS, $N_{TS}$ | Target strength: the level of the target's differential scattering cross section, the free-field ratio of what it scatters back to what is incident on it. It is the one term that separates the active sonar equation from the passive one, and it depends on both the incidence and the scattering direction, so a backscattering value is the monostatic special case. | dB re 1 m²/sr | ISO 18405:2017, 3.6.2.8 | [Underwater sound propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/) | +| SE, $\Delta L_{SE}$ | Signal excess: the amount by which the signal-to-noise ratio at the processor output exceeds the detection threshold. It is what the sonar equation returns; the target is detectable where it is positive, and the range at which it crosses zero is the detection range. | dB | ISO 18405:2017, 3.6.2.2 | [Underwater sound propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/) | +| FOM | Figure of merit: the propagation loss at which the probability of detection falls to 50 %, that is, the loss a passive system can afford before the signal excess reaches zero. Inverting any loss law at $TL = \mathrm{FOM}$ gives the detection range directly, which is why it is quoted instead of the whole curve. | dB (re 1 m² as a propagation factor) | Ainslie (2010), Equations (3.48) and (3.111); no governing standard | [Underwater sound propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/) | +| $W(f)$ | Auditory weighting function: a generic band-pass filter shaped to one hearing group's susceptibility to noise-induced hearing loss, with its gain chosen so the flat central part sits at 0 dB. It is applied to the spectrum before an exposure is summed, so the same physical sound weighs differently for a porpoise and for a baleen whale. | dB | NMFS (2024) v3.0, Equation 1 (parameters in Table 5); no governing standard | [Marine-mammal noise exposure](https://jmrplens.github.io/phonometry/underwater/marine-mammal-exposure/) | +| TTS onset | Onset of temporary threshold shift: the exposure at which a recoverable loss of hearing sensitivity begins, published per hearing group as a weighted sound exposure level and, for impulsive sound, together with an unweighted peak level. Both metrics have to be tested; whichever is reached first decides. | dB | NMFS (2024) v3.0, Table 8; no governing standard | [Marine-mammal noise exposure](https://jmrplens.github.io/phonometry/underwater/marine-mammal-exposure/) | +| AUD INJ onset (PTS onset) | Onset of auditory injury, the 2024 guidance's name for what earlier versions called permanent threshold shift onset: the exposure above which the shift no longer recovers. For non-impulsive sound it is the TTS onset plus 20 dB for every group; for impulsive sound the guidance sets it 15 dB above in exposure and 6 dB above in peak level. | dB | NMFS (2024) v3.0, Table ES3; no governing standard | [Marine-mammal noise exposure](https://jmrplens.github.io/phonometry/underwater/marine-mammal-exposure/) | +| $SEL_{cum}$ | Cumulative sound exposure level: the weighted sound exposure of every event of an activity — every strike of a piling campaign, say — summed over its whole duration. The onset criteria are written against this accumulated quantity, not against a single event, so halving the strike energy and doubling the strike count changes nothing. | dB re 1 µPa²·s | NMFS (2024) v3.0, Table ES3; no governing standard | [Marine-mammal noise exposure](https://jmrplens.github.io/phonometry/underwater/marine-mammal-exposure/) | + +## Numerical simulation + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $C_N$ (the cfl argument) | Courant number: how far a wavefront travels in one time step, measured in grid cells, $c\,\Delta t\sqrt{1/\Delta x^2 + 1/\Delta y^2}$. An explicit scheme is stable only up to one and meaningless above it, so it is the number the time step is chosen from rather than the other way round; the library defaults to 0,6. | dimensionless | Attenborough and Van Renterghem (2021), Equations (4.13) and (4.14); no governing standard | [2D FDTD wave simulation](https://jmrplens.github.io/phonometry/simulation/fdtd-simulation/) | +| Numerical dispersion | Numerical dispersion: the error the discrete scheme makes in the propagation speed, which grows with frequency and depends on the direction of travel — largest along a coordinate axis, and zero along the diagonal of square cells at a Courant number of one. It is why ten cells per shortest wavelength is the working rule, and why an FDTD arrival time drifts if the grid is too coarse. | % (speed error) | Attenborough and Van Renterghem (2021), Equation (4.15); no governing standard | [2D FDTD wave simulation](https://jmrplens.github.io/phonometry/simulation/fdtd-simulation/) | +| PML (perfectly matched layer) | Perfectly matched layer: a boundary region whose absorption is graded so that, in principle, it reflects nothing at any angle or frequency, which is what lets a finite grid stand in for open space. What this library ships is the graded sponge layer, its simple precursor, so a grazing-incidence residue at the edge is expected rather than a bug. | | Attenborough and Van Renterghem (2021), Section 4.2.3; no governing standard | [2D FDTD wave simulation](https://jmrplens.github.io/phonometry/simulation/fdtd-simulation/) | + +## Measurement uncertainty + +| Symbol | Definition | Unit | Defined in | Computed in | +| :--- | :--- | :--- | :--- | :--- | +| $u(y)$ | Combined standard uncertainty of a result, propagated from the standard uncertainties of its inputs by the law of propagation of uncertainty. | unit of the result | ISO/IEC Guide 98-3:2008 (JCGM 100:2008), clause 5 | [Measurement uncertainty (GUM and Monte Carlo)](https://jmrplens.github.io/phonometry/signals/metrology/gum-uncertainty/) | +| $U$ | Expanded uncertainty: the combined standard uncertainty multiplied by a coverage factor, which defines a coverage interval. | unit of the result | ISO/IEC Guide 98-3:2008 (JCGM 100:2008), clause 6 and Annex G | [Measurement uncertainty (GUM and Monte Carlo)](https://jmrplens.github.io/phonometry/signals/metrology/gum-uncertainty/) | +| $\sigma_R$ | Reproducibility standard deviation of a sound-insulation quantity: the standard uncertainty ISO 12999-1 assigns to situation A, the widest of the three. The same clause assigns $\sigma_{situ}$ to situation B and the repeatability $\sigma_r$ to situation C — for $R'_w$, 1,2 dB against 0,9 and 0,4 — so the situation has to be stated with the number. | dB | ISO 12999-1:2020, Clause 5.2 (coverage factors in Table 8) | [Field Insulation Measurement (ISO 16283)](https://jmrplens.github.io/phonometry/buildings/insulation/insulation-field/) | + +--- diff --git a/site/public/llms/llms-signals-filters.txt b/site/public/llms/llms-signals-filters.txt index 198ae131d..acaff5030 100644 --- a/site/public/llms/llms-signals-filters.txt +++ b/site/public/llms/llms-signals-filters.txt @@ -65,6 +65,24 @@ parameters) consumes the band signals or band levels these pages produce. - [Multichannel and Performance](https://jmrplens.github.io/phonometry/signals/filters/multichannel/): vectorized multichannel analysis and performance notes. +## What this section does not cover + +`verify_filter_class` checks a designed digital response against Table 1 of +IEC 61260-1. The standard's conformance tests for the physical filter — overload +recovery, linearity, the environmental influence quantities — apply to an +instrument and are not implemented, so a class verdict here is a statement about +the design and not about a device. Near Nyquist the bilinear transform warps +the frequency axis and the bank carries no correction for it, unlike the +`high_accuracy` option of the weighting filters: the stopband beyond the +processing Nyquist is reported as `range_limited` rather than verified, so keep +the top band edge comfortably below Nyquist or raise `fs`. Two operations do +not stream: zero-phase forward-backward filtering needs the whole signal, and +rank statistics such as L90 have to be computed once on the pooled +envelope. And the per-channel path never mixes channels — delay between two +microphones, or how much of one channel a second explains, is +[Correlation and delay](https://jmrplens.github.io/phonometry/signals/spectra/correlation-delay/) and +[Multiple and partial coherence](https://jmrplens.github.io/phonometry/signals/spectra/miso-coherence/). + --- diff --git a/site/public/llms/llms-signals-levels.txt b/site/public/llms/llms-signals-levels.txt index 32c742fac..d484e761b 100644 --- a/site/public/llms/llms-signals-levels.txt +++ b/site/public/llms/llms-signals-levels.txt @@ -79,6 +79,25 @@ Pages elsewhere on the site that this section leans on: the corrected level LKeq, the Kt/Kf/Ki corrections, the evaluation periods and noise phases, and the limit tables. +## What this section does not cover + +These pages implement the signal processing of a sound level meter, not the +meter. The rest of IEC 61672-1 — level ranges, overload indication, the +self-generated noise floor, the directional response and the IEC 61672-3 +periodic tests — is not implemented anywhere in the library, so nothing here +assigns a class to a physical instrument; [Build a sound level +meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) states exactly what a class +verdict from the library does and does not mean. Two curves come without a +verdict of any kind: ISO 7196 defines a single ±1 dB tolerance for G with no +class structure, and the withdrawn IEC 537 left no tolerance table behind for +D, so both curves filter a signal but neither reaches +`verify_weighting_class`, and they are pinned against their published tables in +the conformance report instead. The noise dose is the 1993 +first edition of IEC 61252 only, not the 2025 revision. And a dose is a +quantity, not a verdict: the exposure strategies, the sampling plan and the +limits that decide whether a worker is over-exposed are [Occupational exposure +(ISO 9612)](https://jmrplens.github.io/phonometry/perception/hearing/occupational-exposure/). + --- diff --git a/site/public/llms/llms-signals-metrology.txt b/site/public/llms/llms-signals-metrology.txt index e395061ac..7ac1085a0 100644 --- a/site/public/llms/llms-signals-metrology.txt +++ b/site/public/llms/llms-signals-metrology.txt @@ -9,18 +9,19 @@ Source: https://jmrplens.github.io/phonometry/signals/metrology/ # Calibration and uncertainty -A level printed by software is not yet a measurement. Two things separate the -one from the other: knowing what the digital samples mean **physically**, and -knowing how much the result could reasonably be **wrong**. This section covers -both, and they apply transversally to every other page of the documentation. - -[Calibration and dBFS](https://jmrplens.github.io/phonometry/signals/metrology/calibration/) handles the first. -phonometry works in two reference frames: physical **dB SPL**, established -either from a recorded calibrator tone (the IEC 60942 field ritual) or from a -known microphone sensitivity, and digital **dBFS**, levels relative to full -scale, appropriate when no physical reference exists or when characterising -the digital chain itself. The page explains how each mode is set up and, just -as important, which quantities are meaningful in which frame. +A level printed by software is not yet a measurement. Three things separate +the one from the other: knowing that the record deserves to be **averaged at +all**, knowing what the digital samples mean **physically**, and knowing how +much the result could reasonably be **wrong**. This section covers all three, +and they apply transversally to every other page of the documentation. + +[Calibration and dBFS](https://jmrplens.github.io/phonometry/signals/metrology/calibration/) handles the +physical meaning. phonometry works in two reference frames: physical **dB +SPL**, established from a recorded calibrator tone (the IEC 60942 field +ritual), and digital **dBFS**, levels relative to full scale, appropriate when +no physical reference exists or when characterising the digital chain itself. +The page explains how each mode is set up and, just as important, which +quantities are meaningful in which frame. [Measurement uncertainty (GUM and Monte Carlo)](https://jmrplens.github.io/phonometry/signals/metrology/gum-uncertainty/) handles the second, implementing the *Guide to the Expression of Uncertainty @@ -56,8 +57,8 @@ budgets that are specialisations of the GUM machinery described here. ## Pages in this section - [Calibration and dBFS](https://jmrplens.github.io/phonometry/signals/metrology/calibration/): physical SPL - calibration from a calibrator tone or a known sensitivity, and the digital - full-scale mode. + calibration from a calibrator tone, the stability check it applies to that + recording, and the digital full-scale mode. - [Measurement uncertainty (GUM and Monte Carlo)](https://jmrplens.github.io/phonometry/signals/metrology/gum-uncertainty/): the law of propagation of uncertainty and the Monte Carlo method, expanded uncertainty and coverage intervals. @@ -65,6 +66,24 @@ budgets that are specialisations of the GUM machinery described here. arrangement and runs stationarity tests on segment statistics, and the Rice level-crossing and peak statistics with the irregularity factor. +## What this section does not cover + +Nothing here checks an instrument or a calibrator. The IEC 60942 conformance +tests of the calibrator itself — generated level, frequency, distortion, and +the corrections for static pressure and temperature — are not implemented, so +pass an already corrected `target_spl` when the manual asks for one, and the +IEC 61672-3 periodic tests are cited as laboratory practice rather than run. +The dBFS half of the calibration page sits outside any standard and makes no +physical claim: it is a reference frame, not a measurement. Data qualification +implements the quantitative core of Bendat & Piersol's section 10.3 only — +classifying a record's type, validating it against physical limits and editing +out glitches remain manual steps, as the book describes them. And an +uncertainty budget is a model of *your* measurement: the library propagates +whatever you declare, and never invents the terms. Where a standard publishes +its own budget the guides say so, as ISO 9612 does for [occupational +exposure](https://jmrplens.github.io/phonometry/perception/hearing/occupational-exposure/) and ISO 12999-1 +for [sound insulation](https://jmrplens.github.io/phonometry/buildings/insulation/). + --- diff --git a/site/public/llms/llms-signals-spectra.txt b/site/public/llms/llms-signals-spectra.txt index c2019f7b8..51f33a2a1 100644 --- a/site/public/llms/llms-signals-spectra.txt +++ b/site/public/llms/llms-signals-spectra.txt @@ -18,8 +18,37 @@ same dB SPL / dBFS reference frames as the rest of the library) and carries its **statistical quality**, so a spectrum is not just a curve but a curve with a confidence interval. -[Calibrated spectral analysis](https://jmrplens.github.io/phonometry/signals/spectra/spectral-analysis/) is the -frequency-domain half. The Welch power and cross-spectral density estimators +Eight pages sit under that discipline, in six families: the frequency-domain +estimators ([spectral +analysis](https://jmrplens.github.io/phonometry/signals/spectra/spectral-analysis/), [multiple and +partial coherence](https://jmrplens.github.io/phonometry/signals/spectra/miso-coherence/)), the +time-frequency middle ground +([spectrograms](https://jmrplens.github.io/phonometry/signals/spectra/time-frequency/)), the +spectrum-shape methods +([cepstrum](https://jmrplens.github.io/phonometry/signals/spectra/cepstrum-echoes/)), the period-domain +methods ([synchronous +averaging](https://jmrplens.github.io/phonometry/signals/spectra/synchronous-averaging/)), the +time-domain estimators ([correlation and +delay](https://jmrplens.github.io/phonometry/signals/spectra/correlation-delay/)), and the stimulus and +system toolbox ([test +signals](https://jmrplens.github.io/phonometry/signals/spectra/test-signals/), [system +measurement](https://jmrplens.github.io/phonometry/signals/spectra/system-measurement/)). + +They differ in what they estimate and share two decisions. The first is the +**segment length**. It fixes the resolution bandwidth of a PSD, the cell shape +of a spectrogram, the number of averages behind every confidence interval, the +longest delay a generalized cross-correlation can see and the degrees of +freedom a conditioned MISO estimate has left, so choosing it once and keeping +it is what makes a PSD, a coherence and a delay computed from the same record +mutually consistent. The second is **stationarity**. Every average on these +pages, and every error formula quoted beside it, assumes the process did not +drift while it was being recorded, which is exactly what the [data +qualification](https://jmrplens.github.io/phonometry/signals/metrology/data-qualification/) tests decide; +when a record fails them, the honest tools are the short-time views rather than +the averaged ones. + +[Calibrated spectral analysis](https://jmrplens.github.io/phonometry/signals/spectra/spectral-analysis/) is where +the frequency-domain family starts. The Welch power and cross-spectral density estimators report their effective number of averages, normalized random errors and chi-square confidence intervals; the coherent output spectrum splits a measured output into the part explained by an input and the part that is @@ -52,7 +81,7 @@ root of the number of averages, and choosing that number to place a comb node on an interfering order rejects it far better than the habitual power of two. [Correlation, time delay and envelope](https://jmrplens.github.io/phonometry/signals/spectra/correlation-delay/) -is the time-domain half. Auto- and cross-correlation come with the +is where its time-domain counterpart starts. Auto- and cross-correlation come with the Bendat & Piersol normalizations and random errors; time-delay estimation offers the direct correlator, the cross-spectrum phase slope and the Knapp & Carter generalized cross-correlation weightings (Roth, SCOT, PHAT, @@ -61,12 +90,16 @@ sub-sample precision; and the Hilbert transform yields the envelope with instantaneous phase and frequency. [Test signals and sample-rate tools](https://jmrplens.github.io/phonometry/signals/spectra/test-signals/) is -the toolbox the other two lean on: tone bursts with the exact gating of -IEC 60268-1 (zero-crossing start, integral full periods, repetitive trains), -polyphase resampling behind an explicit anti-alias specification whose -designed filter travels with the result, and band-limited fractional delay -with a linear or circular boundary, sharing its kernel with the sub-sample -alignment of impulse responses. +the toolbox underneath the rest: tone bursts with the exact gating of +IEC 60268-1 (zero-crossing start, integral full periods, repetitive trains) +that exercise detector ballistics, polyphase resampling behind an explicit +anti-alias specification whose designed filter travels with the result and +which every cross-rate comparison needs, and band-limited fractional delay +with a linear or circular boundary, whose kernel is shared by the +impulse-response alignment of +[Correlation, time delay and envelope](https://jmrplens.github.io/phonometry/signals/spectra/correlation-delay/) +and the non-integer period alignment of +[Time synchronous averaging](https://jmrplens.github.io/phonometry/signals/spectra/synchronous-averaging/). [System measurement](https://jmrplens.github.io/phonometry/signals/spectra/system-measurement/) turns the toolbox toward measuring systems themselves: complementary Golay pairs @@ -131,6 +164,25 @@ Pages elsewhere on the site that this section leans on: BPFO, BPFI, BSF and cage frequencies, gear-mesh sidebands, induction-motor slip, pole-pass and rotor-slot harmonics, and blade-passing tones. +## What this section does not cover + +These are Bendat & Piersol's textbook estimators, not a certification method: +no page here carries clause numbers or acceptance limits, and no result is a +compliance verdict. Three capabilities a reader looks for are genuinely absent. +**Multiple arrivals are not separated.** `time_delay` and `echo_detection` +report the single largest peak, so a record with a direct path plus several +reflections needs manual peak-picking or repeated calls on narrowed bands. +**There is no multi-sensor geometry.** Delay estimation is pairwise; there is +no built-in TDOA solver, no beamformer and no source localisation, and a +multiple-output system needs one `miso_coherence` call per output. +**There are no perceptual features.** The cepstrum is the plain +linear-frequency one, with no mel warping and no MFCC variant. Two estimators +that share this section's Welch core are documented where they are used +instead: the transfer function and ordinary coherence on +[Electroacoustics](https://jmrplens.github.io/phonometry/devices/electroacoustics/electroacoustics/), and +the two-microphone intensity probe on [Sound +intensity](https://jmrplens.github.io/phonometry/devices/emission/intensity/). + --- diff --git a/site/public/llms/llms-signals.txt b/site/public/llms/llms-signals.txt index bd06680d0..b40fd0549 100644 --- a/site/public/llms/llms-signals.txt +++ b/site/public/llms/llms-signals.txt @@ -18,9 +18,6 @@ in effect, a sound level meter decomposed into composable functions, and every other section of the documentation builds on it: a loudness model consumes calibrated band levels, a room parameter starts from a filtered impulse response, an environmental rating is an adjusted Leq. -[Build a sound level meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) assembles -that chain end to end on a single runnable page; it is the best starting point -if you want to see the whole area at work before opening the deep guides. Around the level chain sit the general signal-analysis tools: **calibrated spectral estimates** (Welch PSD and cross-spectral density with @@ -32,13 +29,40 @@ calibrator tone (dB SPL), or stay in digital full scale (dBFS). **Measurement un supplement) qualifies any result computed from uncertain inputs, which is what makes a number defensible in a report. -If you are new to the library, read -[Filter Banks](https://jmrplens.github.io/phonometry/signals/filters/filter-banks/) first: it introduces the band -decomposition every other page assumes. Then -[Integrated and Statistical Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/) shows the -metrics most measurements end in, and -[Calibration and dBFS](https://jmrplens.github.io/phonometry/signals/metrology/calibration/) anchors them to -physical units. +Three conventions run through every page below, and every snippet on the site +assumes them. A signal is a NumPy array of sound pressure with **time on the +last axis**, so one channel is `(n,)` and several parallel channels are +`(channels, samples)`. The sample rate always travels as an explicit `fs` +argument: nothing is read from a file header, because the library never opens +the file. And the array is expected to hold **pascals**, which is why a level +function applied to raw soundcard samples returns a number whose reference is +arbitrary, and why every level function also accepts a `calibration_factor` in +pascals per digital unit or the `dbfs=True` escape hatch. Simple metrics come +back as floats and arrays; the richer ones come back as frozen result objects +that expose `.plot()`. [Calibration and +dBFS](https://jmrplens.github.io/phonometry/signals/metrology/calibration/) resolves the third convention +in full, and [Multichannel and +Performance](https://jmrplens.github.io/phonometry/signals/filters/multichannel/) the first. + +Two ways in. To see the whole chain working at once, run [Build a sound level +meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/): it calibrates against a +calibrator tone, applies the frequency and time weightings, integrates into +Leq, SEL and percentile levels, splits the signal into octave bands and checks +the class of every stage, on one runnable page. To learn the pieces in +dependency order, start at [Filter +Banks](https://jmrplens.github.io/phonometry/signals/filters/filter-banks/), which introduces the band +decomposition every other page assumes, then [Integrated and Statistical +Levels](https://jmrplens.github.io/phonometry/signals/levels/levels/) for the metrics most measurements +end in, and [Calibration and dBFS](https://jmrplens.github.io/phonometry/signals/metrology/calibration/) +to anchor them to pascals. + +## [Build a sound level meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) + +- [Build a sound level meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/): the whole + chain assembled on one runnable page — calibration, frequency and time + weighting, the integrated and statistical levels, the band decomposition and + the class verdict of each stage — as the worked introduction to the four + subsections below. ## [Octave filtering](https://jmrplens.github.io/phonometry/signals/filters/) @@ -111,8 +135,9 @@ and carrying its statistical quality. the comb filter that describes it in the frequency domain, the square-root noise-reduction law, and the choice of the number of averages that places a comb node on an interfering order (McFadden 1987). -- [Machine fault frequencies](https://jmrplens.github.io/phonometry/vibration/machinery/machine-diagnostics/): - the kinematic fault-frequency families of rotating machinery (Norton & +- [Machine fault frequencies](https://jmrplens.github.io/phonometry/vibration/machinery/machine-diagnostics/) + (in the vibration section): the kinematic fault-frequency families of + rotating machinery (Norton & Karczub Section 8.4) drawn on top of a measured envelope spectrum: bearing BPFO, BPFI, BSF and cage frequencies, gear-mesh sidebands, induction-motor slip, pole-pass and rotor-slot harmonics, and blade-passing tones. @@ -143,6 +168,39 @@ What the numbers mean and how much to trust them. arrangement and runs stationarity tests on segment statistics, and the Rice level-crossing and peak statistics with the irregularity factor. +## What this section does not cover + +Four things a reader reasonably expects here are absent, and each guide says so +in its own "Not covered" block. **No instrument is verified.** +`verify_filter_class` and `verify_weighting_class` check a designed digital +response against the tolerance tables of IEC 61260-1 and IEC 61672-1; the +IEC 61672-3 pattern-evaluation tests a physical meter needs for type approval, +and the IEC 60942 conformance tests of the calibrator itself, are not run, so a +class verdict here describes the algorithm and not a built device. **No file is +opened.** Nothing in the library decodes WAV, FLAC or any other container: +every function takes an array you have already read, which is why `fs` is +always an argument. **No array processing.** Correlation and time delay model +one common path between exactly two sensors and report the single largest peak; +there is no multi-sensor TDOA solver, no beamformer and no source localisation. +**No perceptual features.** The cepstrum here is the plain linear-frequency +one, with no mel warping or MFCC variant, and loudness as a sensation belongs +to [Psychoacoustics](https://jmrplens.github.io/phonometry/perception/psychoacoustics/), not to the +energy metrics of this section. + +## Before and after these pages + +The derivations behind these pages are in [Signal analysis +theory](https://jmrplens.github.io/phonometry/reference/theory/signal-analysis/): the band grid, the weighting curves, +the time integration, the intensity approximation and the uncertainty +framework. If you have not run anything yet, [Getting +Started](https://jmrplens.github.io/phonometry/start/getting-started/) installs the library and +calibrates a first analysis. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. + --- diff --git a/site/public/llms/llms-simulation.txt b/site/public/llms/llms-simulation.txt index ac39b98b5..b5dc226c8 100644 --- a/site/public/llms/llms-simulation.txt +++ b/site/public/llms/llms-simulation.txt @@ -19,6 +19,14 @@ bit-identical outputs on the same platform), validated against analytic oracles, and double as a cross-check engine for the closed-form models of the other sections. +The 2D domain is a **cross-section**, and that has one consequence worth +settling before any number leaves the solver: a point in the plane is +physically an infinite line source, so amplitudes fall as the inverse square +root of distance, about 3 dB per doubling instead of 6. Interference and +diffraction patterns, arrival times and modal frequencies are faithful; +absolute levels and decay rates belong to that geometry and not to a 3D room. +A quantitative 3D claim needs a closed form or a 3D solver behind it. + The section splits along the media it simulates. The acoustic page explains the numerical method (the staggered leapfrog scheme and its Courant stability bound), the building blocks (sources, probes, obstacles and @@ -68,8 +76,34 @@ The elastic solver adds two: the bending packet entering an L-junction, on and the coincidence plate, on panel sound insulation. Both also appear on the elastic page below, where the solver that produced them is explained. +Several of those guides do more than illustrate: they run a **whole +standardised measurement inside the domain**. The impedance-tube guide performs +the ISO 10534-2 and ASTM E2611 reductions on a simulated tube and recovers the +sample's analytic absorption and transmission loss; the diffuser and +metadiffuser guides drive meshed panels with a plane wave and transform the near +field into a polar response; the panel-insulation and plate-junction guides +launch bending waves into a plate and watch coincidence and junction splitting +happen. In each case the solver is standing in for the laboratory, which is +what makes the closed-form comparison a real test rather than a demonstration. + +Setting up a run is a chain, and each link fixes the next. The highest frequency +you need and the **slowest** sound speed anywhere in the domain fix the cell +size, through the cells-per-wavelength rule that numerical dispersion sets. The +cell size and the **fastest** speed then fix the time step, through the Courant +stability bound. The domain has to hold the geometry plus clearance for the +absorbing layers, which are themselves sized by the **lowest** frequency. The +run must last long enough for the field to cross the domain, and for a +steady-state answer long enough for the transient to leave before the analysis +window opens. The cost is cells times steps, so halving the cell size costs +eight times more in 2D — a factor of four in cells and a factor of two in steps. +The acoustic page gives the numbers for each link, and the elastic page adds the +extra sampling that free surfaces and interface waves demand. + ## Pages in this section +Read the acoustic page first: the elastic page assumes its vocabulary and says +so in its own opening. + - [2D FDTD wave simulation](https://jmrplens.github.io/phonometry/simulation/fdtd-simulation/): the staggered-grid pressure-velocity FDTD method following Attenborough & Van Renterghem (2021) chapter 4, its sources, probes, obstacles and boundary @@ -81,6 +115,42 @@ elastic page below, where the solver that produced them is explained. Scholte interface waves and immersed-plate transmission, each validated against its exact closed form. +## What this section does not cover + +**Two dimensions, and no way around it.** Everything a 2D cross-section cannot +say about a 3D room, neither solver says, and the cylindrical spreading above is +only the most visible consequence. The open boundary is a quadratic-ramp +absorbing layer — the simple precursor of a perfectly matched layer, not a PML — +so grazing incidence is absorbed less cleanly than normal incidence, and the +elastic solver has no elastic PML at all, which shows most on grazing Rayleigh +waves. The medium is non-moving: **wind and flow advection are not modelled**, +so a refraction study here comes from a height-dependent sound-speed profile and +not from a flow field. The only impedance boundary is a frequency-independent +real one, so a porous absorber has to be meshed rather than declared. On the +elastic side the solid is isotropic and purely elastic: no anisotropy, and no +viscoelastic damping beyond the bulk decay rate, so a material loss factor +cannot be entered. + +And nothing here is a room-acoustics package. There is no geometry importer, no +material library, no ray tracer, no auralisation and no 3D solver: obstacles are +rasterised onto the grid from shapes you define, and the output is a field you +analyse yourself. + +## Before and after these pages + +The fields these solvers produce are read back with the same tools as a +measurement: the filtering, weighting and level functions of [Signal +analysis](https://jmrplens.github.io/phonometry/signals/), with [Build a sound level +meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) running that chain end to end on +one runnable page. There is no theory-reference page for the solvers; the +derivations, the stability conditions and the analytic oracles stay inside the +two guides above. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. + --- diff --git a/site/public/llms/llms-start.txt b/site/public/llms/llms-start.txt index fc16cb89e..6a2f604ae 100644 --- a/site/public/llms/llms-start.txt +++ b/site/public/llms/llms-start.txt @@ -9,18 +9,33 @@ Source: https://jmrplens.github.io/phonometry/start/ # Start -Four short pages, meant to be read once before anything else. Each answers one +phonometry computes acoustic quantities from the text of the standards that +define them — ISO, IEC, ANSI and ASTM, the CNOSSOS-EU annex to Directive +2002/49/EC, and the ICAO and ECAC aircraft documents — and every metric names +the clause it implements. What that buys you, and how it is checked, is +[Why phonometry](https://jmrplens.github.io/phonometry/start/why-phonometry/). + +Five short pages, meant to be read once before anything else. Each answers one question, and they are in the order the questions arrive. **Can I install it and get a number out?** -[Getting Started](https://jmrplens.github.io/phonometry/start/getting-started/) installs the library and -runs a first one-third-octave analysis, on a synthetic signal and then on a WAV -file, and states what a recording must satisfy before those numbers mean -anything physical. It stops short of a calibrated measurement on purpose: -[Calibration and dBFS](https://jmrplens.github.io/phonometry/signals/metrology/calibration/) is the next -step, the one that turns band levels into pascals, and -[Build a sound level meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) runs the -whole chain end to end. +[Getting Started](https://jmrplens.github.io/phonometry/start/getting-started/) installs the library, +runs a first one-third-octave analysis on a synthetic signal, then anchors that +analysis to a calibrator tone so the levels are decibels re 20 µPa rather than +decibels re nothing, reduces them to one A-weighted level, and states what a +recording must satisfy for any of it to hold. It stops one stage short of a +meter: the Fast and Slow ballistics, $L_{AE}$, $L_{Cpeak}$ and the percentile +levels are in [Build a sound level +meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/), which runs the whole chain end +to end on one page, and [Calibration and +dBFS](https://jmrplens.github.io/phonometry/signals/metrology/calibration/) is the deep guide behind the +one step that matters most. + +**I have a job, not a subject. Which page is it?** +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes the library by +the task instead of the topic: measure a reverberation time, check a wall +against a building code, rate a machine's sound power, decide whether a worker +is over the exposure limit. **Where is the thing I came for?** [All guides](https://jmrplens.github.io/phonometry/start/guides/) is the map: every guide in the library, @@ -35,11 +50,55 @@ tone-burst check worked through against the acceptance limits. [About](https://jmrplens.github.io/phonometry/start/about/) states who maintains it, how to cite it and under what licence. +## Two things to settle before any guide works + +**Which reference frame a level is in.** A level is either *physical*, in +dB SPL, anchored by a recorded calibrator tone or by a known microphone +sensitivity, or *digital*, in dBFS relative to full scale. The two are not +interchangeable, and most guides assume the first: a level function handed raw +soundcard samples returns a number whose reference is arbitrary, which looks +exactly like a valid answer. [Calibration and +dBFS](https://jmrplens.github.io/phonometry/signals/metrology/calibration/) settles it. + +**That almost everything downstream consumes bands.** Below the raw signal +there is one decomposition: fractional-octave bands whose −3 dB edges sit on +the ANSI S1.11 / IEC 61260-1 nominal frequencies. A loudness model, a room +parameter and an environmental rating all start from it, which is why the +band-filtering page is the one prerequisite that turns up everywhere: [Filter +Banks](https://jmrplens.github.io/phonometry/signals/filters/filter-banks/). + +## What a guide looks like + +Worth knowing before opening one, because it is what lets you decide in thirty +seconds whether a page answers your question. Every guide opens with the +standard it implements, the quantities that standard defines and the +assumptions the implementation makes; then comes runnable code and the figure +it draws; and it closes with a "What this guide covers" block that states +plainly which clauses, annexes and methods are implemented and which are not. +The last of those is the part a reviewer asks about, and it is deliberately the +part written most bluntly. + +## If you already know what you need + +- A first measurement carried end to end: [Build a sound level meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/). +- The whole inventory, by topic: [All guides](https://jmrplens.github.io/phonometry/start/guides/). +- A symbol you have but cannot name: the [glossary](https://jmrplens.github.io/phonometry/reference/glossary/), with its unit, its defining clause and the guide that computes it. +- Evidence that a number is defensible: the [conformance report](https://jmrplens.github.io/phonometry/reference/conformance/), which prints each standard's own expected value beside the computed one. +- A printed expected value that disagrees with the library: the [errata registry](https://jmrplens.github.io/phonometry/reference/errata/), which says which of the two is wrong and why. + The assumed starting point is Python 3.13 or newer with working NumPy and SciPy, and enough acoustics to know what a one-third-octave band and a sound -pressure level are. Any symbol the guides use without introducing is in the -[glossary](https://jmrplens.github.io/phonometry/reference/glossary/), with its unit, its defining clause -and the guide that computes it. +pressure level are. + +## What Start is not + +This is not a tutorial series, and it is not the API. Function signatures and +argument types are in the generated API reference. The derivations, the +numerical conformance report, the errata register for defects found in the +published standards themselves, the glossary of symbols and the bibliography +are all in [Reference](https://jmrplens.github.io/phonometry/reference/). And the acoustics itself is +assumed rather than taught: the guides explain the method a standard +prescribes and why it is written that way, not what a decibel is. --- @@ -434,7 +493,9 @@ Source: https://jmrplens.github.io/phonometry/reference/theory/ # Theoretical Background -The theory reference explains the standards, the mathematics and the design decisions behind every phonometry module. It is split into six domain pages, listed below with the sections each one hosts. Theory for the underwater modules lives with its guides: [Underwater Acoustics](https://jmrplens.github.io/phonometry/underwater/underwater-acoustics/), [Underwater Propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/) and [Underwater Propagation Solvers](https://jmrplens.github.io/phonometry/underwater/underwater-solvers/). +The theory reference collects the derivations, clause references and design decisions for the areas whose mathematics is **shared across many guides**. A theory page maps an implemented method back to the clause, equation and table of the standard or textbook it comes from, states the physics behind each correction term and the assumptions that bound it, and gives the reference values the validation suite checks against. It does not show workflows: that is what the guides are for. + +Several areas keep their theory **inside their guides** instead, because the derivation and the single method it serves would otherwise be separated for nothing: the underwater modules ([Underwater Acoustics](https://jmrplens.github.io/phonometry/underwater/underwater-acoustics/), [Underwater Propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/), [Underwater Propagation Solvers](https://jmrplens.github.io/phonometry/underwater/underwater-solvers/) and [Marine-Mammal Noise Exposure](https://jmrplens.github.io/phonometry/underwater/marine-mammal-exposure/)), the aircraft certification and contour methods ([Aircraft noise](https://jmrplens.github.io/phonometry/aircraft/)), the CNOSSOS-EU road and railway emission models ([Environment and transport](https://jmrplens.github.io/phonometry/environment/)), the IEC 60268 electroacoustic measurements, the BS.1770 broadcast chain and the noise-control models ([Sources and devices](https://jmrplens.github.io/phonometry/devices/)), and the FDTD and elastic solvers ([Wave simulation](https://jmrplens.github.io/phonometry/simulation/)). Everything below is listed with the sections each domain page hosts. ## [Signal Analysis](https://jmrplens.github.io/phonometry/reference/theory/signal-analysis/) @@ -481,6 +542,8 @@ The theory reference explains the standards, the mathematics and the design deci ## [Vibration](https://jmrplens.github.io/phonometry/reference/theory/vibration/) - [Human vibration (ISO 8041-1, ISO 2631-1/2, ISO 5349-1/2, Directive 2002/44/EC)](https://jmrplens.github.io/phonometry/reference/theory/vibration/#human-vibration-iso-8041-1-iso-2631-12-iso-5349-12-directive-200244ec) +- [Multiple shocks (ISO 2631-5)](https://jmrplens.github.io/phonometry/reference/theory/vibration/#multiple-shocks-iso-2631-5) +- [Point mobilities and radiation efficiency (Cremer 5, Hopkins 2.9)](https://jmrplens.github.io/phonometry/reference/theory/vibration/#point-mobilities-and-radiation-efficiency-cremer-5-hopkins-29) --- diff --git a/site/public/llms/llms-underwater.txt b/site/public/llms/llms-underwater.txt index 07c726ff4..01ca63d44 100644 --- a/site/public/llms/llms-underwater.txt +++ b/site/public/llms/llms-underwater.txt @@ -16,7 +16,20 @@ depth-dependent sound speed, refracts sound into channels that carry it for kilometres. This section covers the discipline along the source-path-receiver chain of the rest of the library. -The **source** half, in +That reference difference is the commonest trap for a reader arriving from +airborne acoustics, and it is worth settling before anything else. The same +pressure expressed re 1 µPa is **26 dB larger** than expressed re 20 µPa, which +is arithmetic. On top of that, the same pressure in water carries far less +intensity than in air, because sea water's characteristic impedance is some +3 700 times that of air. An underwater 120 dB and an airborne 120 dB therefore +describe entirely different physical situations, and the two must never be +compared. The rule this section follows is simple: every level carries its +reference explicitly, a conversion between the two conventions is pure +re-referencing and never an energy equivalence, and the only place the airborne +reference appears here at all is for the two in-air carnivore hearing groups on +the exposure page. + +The **source** stage, in [Underwater acoustics: radiated noise and pile driving](https://jmrplens.github.io/phonometry/underwater/underwater-acoustics/), sets up the ISO 18405 terminology (SPL, SEL and peak levels and their references) and applies it to two regulated measurement cases: ships, with @@ -25,7 +38,7 @@ level of ISO 17208-2 via the Lloyd's-mirror surface correction, and percussive pile driving, with the single-strike, peak and cumulative sound exposure of ISO 18406. -The **path** half now spans two pages. +The **path** stage spans two pages. [Underwater sound propagation](https://jmrplens.github.io/phonometry/underwater/underwater-propagation/) predicts what the sea does to that sound in closed form: geometrical spreading plus volume absorption (Francois-Garrison, Ainslie-McColm or @@ -39,7 +52,7 @@ computes the field instead: the normal-mode expansion, ray tracing and the split-step Fourier parabolic equation, with the guidance for choosing between them and the closed forms. -A **receiver** half closes the loop. +A **receiver** stage closes the loop. [Marine-mammal noise exposure](https://jmrplens.github.io/phonometry/underwater/marine-mammal-exposure/) takes the level a source and a path produce and asks what it does to the animals that hear it: the group audiograms of Southall et al., the regulatory @@ -69,6 +82,54 @@ lives inline with the guides rather than in the theory reference. guidance version selectable, the TTS and injury onset criteria, and a worked pile-driving assessment. +## What this section does not cover + +**The measurement discipline is not implemented, only its arithmetic.** ISO +17208-1's four-run, three-hydrophone averaging, its closest-point-of-approach +and water-depth geometry checks, its ±30° data-window scoring and its +background-noise correction are the operator's; the library supplies the +closed-form radiated-noise and monopole source levels that follow. ISO 18406 +itself excludes vibro- and sheet-piling from its scope, so continuous +pile-driving noise has no closed form here or anywhere in the library. + +**The seabed is thin.** The closed-form page models it as a lossless +fluid-fluid Rayleigh reflection, so sediment attenuation is out of scope, and +all three solvers assume a **range-independent** water column with no absorbing +or elastic bottom and no real bathymetry — which rules out range-dependent +problems entirely. The ray solver returns paths and travel times but not +amplitudes (no ray-tube intensity, no caustic correction), and the parabolic +equation is the standard small-angle Tappert form rather than a wide-angle Padé +variant. For the elastic seabed physics these fluid solvers leave out, the +[elastic wave solver](https://jmrplens.github.io/phonometry/simulation/elastic-waves/) is the nearest +thing the library has. + +**The exposure page rates hearing, not behaviour.** Only the auditory-effect +criteria are implemented; behavioural-disturbance thresholds, the ones a +harassment take estimate turns on, are out of scope. Nothing chooses a hearing +group or an accumulation period for you, and nothing models the animal moving +relative to the source, so the cumulative exposure reported is the +stationary-receiver worst case. There is no audiogram for low-frequency +cetaceans, because the source publication does not print one of its parameters. + +Two smaller boundaries: the ambient-noise spectrum leaves out the low-frequency +turbulence band and has no built-in distant-shipping model — supply a shipping +spectrum yourself — and the active sonar equation is monostatic only. + +## Before and after these pages + +Every level here is a level re 1 µPa computed from a hydrophone record, so the +calibration, weighting and spectral estimation behind it are in [Signal +analysis](https://jmrplens.github.io/phonometry/signals/), and [Build a sound level +meter](https://jmrplens.github.io/phonometry/signals/sound-level-meter/) runs that chain end to end on +one runnable page, in air but with the same functions. The underwater theory is +deliberately not in the theory reference: it lives inline with the four guides +above, where the quantity system of ISO 18405 is introduced with them. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. + --- diff --git a/site/public/llms/llms-vibration-human.txt b/site/public/llms/llms-vibration-human.txt index 47b972911..fd4e74136 100644 --- a/site/public/llms/llms-vibration-human.txt +++ b/site/public/llms/llms-vibration-human.txt @@ -20,7 +20,8 @@ of this section cover the general chain and the special case that breaks it. It covers the whole-body and hand-arm frequency weightings of **ISO 8041-1**, the weighted r.m.s. acceleration and the running and dose measures of **ISO 2631-1** (MTVV, VDV, MSDV, crest factor) that flag shocks a plain -r.m.s. would hide, vibration in buildings per ISO 2631-2, the hand-arm +r.m.s. would hide, the direction-independent `Wm` weighting that **ISO 2631-2** +prescribes for building occupants on every axis, the hand-arm vibration total value and daily exposure A(8) of **ISO 5349-1/-2**, and the exposure action and limit values of **Directive 2002/44/EC** that make A(8) legally meaningful. @@ -33,14 +34,16 @@ which load the lumbar spine far beyond what their energy average suggests. a dose from the response peaks, and converts it into compressive stress on the vertebral endplates and a probability of lumbar injury over a working life. -Use ISO 2631-1 metrics first; when the crest factor or the VDV warns that -shocks dominate, ISO 2631-5 is the dedicated follow-up: its clause 5 model, -implemented here, covers severe shocks with possible loss of contact with -the seat, while less severe exposures in which the occupant stays seated -belong to its Annex A finite-element model. The -measurement front-end (weighting filters, band analysis) is shared with the -[core signal analysis](https://jmrplens.github.io/phonometry/signals/) -section. +Use the ISO 2631-1 metrics first, and let two numbers decide when to move on. A +**crest factor above 9** says the basic weighted r.m.s. method is no longer +adequate for that record, which is the ISO 2631-1 trigger for reaching for the +running and dose measures. A **band-limited vertical peak acceleration above +9.81 m/s²** — 1 g, the free-fall threshold — puts the exposure in ISO 2631-5's +clause 5 regime, the severe shocks with possible loss of contact with the seat +that this library implements, rather than in its Annex A finite-element model +for exposures in which the occupant stays seated. The measurement front-end +(weighting filters, band analysis) is shared with the [core signal +analysis](https://jmrplens.github.io/phonometry/signals/) section. ## Pages in this section @@ -51,6 +54,30 @@ section. the spinal-response model, acceleration dose and probability of lumbar injury. +## What this section does not cover + +**No meter is type-tested.** ISO 8041-1's own subject — the design and +type-testing of general-purpose human-vibration meters — is not implemented; +only its frequency-weighting definitions are taken from it, so nothing here +assigns a class to an instrument. + +**Building vibration stops at the weighting.** Of ISO 2631-2 the library +implements the direction-independent `Wm` curve and nothing else, and that is +closer to the standard than it looks: the 2003 edition deliberately deleted its +predecessor's guidance values, so there are no acceptable magnitudes for +building vibration to compare against. A reader looking for a limit will not +find one here, and will not find one in the standard either. + +**Of ISO 2631-5, the clause 5 model only.** The Annex A finite-element model +for less severe seated exposures is distributed separately by ISO and is not +implemented, which is what makes the 1 g delineation above a routing decision +rather than a preference. + +And no exposure verdict is issued. The action and limit values of Directive +2002/44/EC are stated so that an A(8) can be read against them, but the +library applies no national implementation of the directive, and a +risk-assessment conclusion is not a number this section produces. + --- diff --git a/site/public/llms/llms-vibration-machinery.txt b/site/public/llms/llms-vibration-machinery.txt index 180f5ee51..376b44102 100644 --- a/site/public/llms/llms-vibration-machinery.txt +++ b/site/public/llms/llms-vibration-machinery.txt @@ -9,14 +9,74 @@ Source: https://jmrplens.github.io/phonometry/vibration/machinery/ # Machinery -A rotating machine writes its own state into its vibration spectrum. Each -defect has a frequency that follows from the geometry, and finding one under -the broadband noise of a running machine is a signal-processing problem with a -standard answer. +A rotating machine has a **kinematic signature**. Every periodicity in its +vibration belongs to something that turns, meshes or passes, and the geometry +fixes the frequency before any measurement is made: a bearing with fifteen +elements running at a given shaft speed has an outer-race pass frequency that +can be written down, not searched for. Three families cover most machines. For a +**rolling-contact bearing**, the outer-race and inner-race element-pass +frequencies, the cage rate and the rolling-element spin rate, all scaling with +the shaft speed and set by the element and pitch diameters and the contact +angle; their sum is exactly the element count times the shaft rate, which +catches a mistyped geometry instantly. For a **gear pair**, the mesh frequency +and the sideband families that separate a chipped tooth from an eccentric +wheel. For **motors and bladed rotors**, the supply, slip, pole-pass and +rotor-slot lines of an induction motor and the blade-passing tones of fans, +blowers and pumps, with the lobed interaction patterns of a ducted axial fan. + +The standard answer to finding one of those lines under the broadband noise of +a running machine is **envelope analysis**, and it is three steps in three +places. Band-pass the record around the high-frequency housing resonance that +the impacts ring, take the envelope spectrum so the repetition rate of the +impacts becomes a discrete line — that step is [Cepstrum, echoes and the +envelope spectrum](https://jmrplens.github.io/phonometry/signals/spectra/cepstrum-echoes/), one section +away — and overlay the kinematic families, coloured by origin, so a shaft +harmonic can never be misread as bearing evidence. When two shafts have to be +separated before their sidebands can be read, [Time synchronous +averaging](https://jmrplens.github.io/phonometry/signals/spectra/synchronous-averaging/) does it first. [Machine fault frequencies](https://jmrplens.github.io/phonometry/vibration/machinery/machine-diagnostics/) -computes the bearing, gear and shaft frequencies from the geometry and runs the -envelope analysis that brings a bearing defect out of the noise floor. +computes the families and draws them on a measured envelope spectrum. + +## Pages in this section + +- [Machine fault frequencies](https://jmrplens.github.io/phonometry/vibration/machinery/machine-diagnostics/): + the rolling-contact bearing frequencies, the gear-mesh frequency and its + sidebands, the induction-motor supply, slip, pole-pass and rotor-slot + harmonics, and the blade-passing tones of fans, blowers and pumps, all from + the geometry and the shaft speed (Norton & Karczub, Section 8.4). + +## See also + +Pages elsewhere on the site that this section leans on: + +- [Cepstrum, echoes and the envelope spectrum](https://jmrplens.github.io/phonometry/signals/spectra/cepstrum-echoes/): + the envelope spectrum this section's workflow depends on, and the cepstrum + that reads periodic ripple in the spectrum itself. +- [Time synchronous averaging](https://jmrplens.github.io/phonometry/signals/spectra/synchronous-averaging/): + extracting one shaft's contribution before its sidebands are read. +- [Mechanical mobility and the FRF family (ISO 7626-1)](https://jmrplens.github.io/phonometry/vibration/structural/mechanical-mobility/): + the frequency-response vocabulary behind the housing resonance the envelope + method rings. +- [Bending-wave transmission at plate junctions](https://jmrplens.github.io/phonometry/vibration/structural/junction-transmission/): + where the machine's vibration goes once it has left the machine. + +## What this section does not cover + +These are **predictions, not detections**. Nothing here decides whether a line +is present, only where it would be if it were: the overlay is a set of +expectations to read a measured spectrum against, and the reading is yours. A +loaded bearing slips a little, so expect the measured peak within a per cent or +two of the prediction rather than exactly on it. + +Nor is there a severity verdict. The amplitude criteria that turn a present +line into an assessment — crest-factor and kurtosis trending, and the velocity +severity bands of ISO 10816 / ISO 20816 — are outside this module, and rotor +balancing (ISO 21940) and order tracking are absent from the library +altogether. One published convention differs between sources and is flagged on +the guide rather than hidden: the pole-pass frequency is standard +condition-monitoring practice rather than Norton's, who gives the slip frequency +itself as the broken-bar sideband spacing. --- diff --git a/site/public/llms/llms-vibration-structural.txt b/site/public/llms/llms-vibration-structural.txt index 20a160d62..f4d8b2d62 100644 --- a/site/public/llms/llms-vibration-structural.txt +++ b/site/public/llms/llms-vibration-structural.txt @@ -11,9 +11,10 @@ Source: https://jmrplens.github.io/phonometry/vibration/structural/ A machine fixed to a building radiates sound twice: directly from its own vibrating surface, and indirectly by injecting **structure-borne power** into -the structure, which carries it away and re-radiates it in distant rooms. The -six pages of this section cover both paths: one estimates the direct -radiation from the surface vibration itself, and the other five characterise +the structure, which carries it away and re-radiates it in distant rooms. Six +pages cover both paths, three of them here and three elsewhere on the site: one +estimates the direct radiation from the surface vibration itself, and the other +five characterise the second, sneakier structure-borne path end to end, from describing the vibration and characterising the isolators to quantifying the power and predicting the level a listener finally hears. @@ -73,6 +74,30 @@ Pages elsewhere on the site that this section leans on: - [Installed structure-borne sound (EN 12354-5)](https://jmrplens.github.io/phonometry/buildings/design/installed-structure-borne/): the predicted receiving-room level from installed equipment. +## What this section does not cover + +The junction coefficients are a **closed-form idealisation** for a rigid, +simply supported junction between homogeneous plates, not a measurement: the +empirical vibration reduction index obtained from a direction-averaged velocity +level difference is ISO 10848, in [Laboratory flanking +transmission](https://jmrplens.github.io/phonometry/buildings/insulation/flanking-lab/). The +straight-section coefficient is undefined for the T and L geometries, which +have no collinear third plate, so only the corner path applies there. + +The FRF page implements ISO 7626-1 and the ISO 7626-2 acceptance criteria for +an attached exciter; **impact-hammer excitation (ISO 7626-5) is named for +context only**, with nothing that synthesises or processes an impact spectrum, +and the conversions return element-wise *free* reciprocals — correct for a +driving-point or single-path use, not for a full FRF matrix, whose blocked +matrix quantities are not built. + +On the isolator page, parts 4 and 5 of ISO 10846 are not implemented, and two +of the standard's own validity checks are described rather than computed: the +rigid blocking-mass inequality, and the clause 7.6 linearity criterion (two +input spectra 10 dB apart agreeing within 1.5 dB). Finally, nothing here +designs an isolator or a floating base: the pages characterise elements and +predict transmission, and the sizing decision stays yours. + --- diff --git a/site/public/llms/llms-vibration.txt b/site/public/llms/llms-vibration.txt index 6b860b36e..61861f7c2 100644 --- a/site/public/llms/llms-vibration.txt +++ b/site/public/llms/llms-vibration.txt @@ -9,23 +9,28 @@ Source: https://jmrplens.github.io/phonometry/vibration/ # Vibration and structure-borne sound -Vibration matters to acoustics twice. First as a **source of sound**: a pump -or fan bolted to a building injects structure-borne power that travels through -walls and floors and re-radiates as audible noise rooms away. Second as a -**human exposure** in its own right: vibration transmitted to a standing, -seated or hand-gripping person is measured, weighted and limited much like -noise, with its own metrics and legal action values. +Vibration matters to acoustics three times over. First as a **source of +sound**: a pump or fan bolted to a building injects structure-borne power that +travels through walls and floors and re-radiates as audible noise rooms away. +Second as a **human exposure** in its own right: vibration transmitted to a +standing, seated or hand-gripping person is measured, weighted and limited much +like noise, with its own metrics and legal action values. Third as a +**diagnosis of the machine itself**: the same spectrum that feeds the first two +questions also names the bearing, gear or blade that produced it, because every +periodicity in it belongs to something that turns, meshes or passes, at a +frequency fixed by the geometry. The **structure-borne sources** pages follow the source chain in order. The frequency-response-function family of ISO 7626 (receptance, mobility, -accelerance) is the vocabulary; the transfer stiffness of ISO 10846 -characterises the resilient elements that interrupt the path; ISO/TS 7849 -estimates the airborne power a vibrating surface radiates directly; EN 15657 -measures the structure-borne power a machine injects into a reception plate; -and EN 12354-5 assembles all of it into the sound pressure level predicted in -a receiving room. That final prediction is also where this section hands over -to the [sound insulation](https://jmrplens.github.io/phonometry/buildings/insulation/) models -of the buildings section. +accelerance) is the vocabulary; the wave-approach transmission coefficients of +a plate junction describe the structure the power then runs through; the +transfer stiffness of ISO 10846 characterises the resilient elements that +interrupt that path; ISO/TS 7849 estimates the airborne power a vibrating +surface radiates directly; EN 15657 measures the structure-borne power a +machine injects into a reception plate; and EN 12354-5 assembles all of it into +the sound pressure level predicted in a receiving room. That final prediction +is also where this section hands over to the [sound +insulation](https://jmrplens.github.io/phonometry/buildings/insulation/) models of the buildings section. The **human vibration** pages share the measurement philosophy of a sound level meter, applied to acceleration: frequency weightings that reflect body @@ -35,9 +40,11 @@ dedicated spinal-response model for vibration containing repeated shocks. Start with [Mechanical mobility and the FRF family](https://jmrplens.github.io/phonometry/vibration/structural/mechanical-mobility/) -if you care about machines and buildings, or with -[Human Vibration](https://jmrplens.github.io/phonometry/vibration/human/human-vibration/) if you care about -people. +if you care about the noise a machine causes in a building, with +[Human Vibration](https://jmrplens.github.io/phonometry/vibration/human/human-vibration/) if you care +about the dose a person receives, or with [Machine fault +frequencies](https://jmrplens.github.io/phonometry/vibration/machinery/machine-diagnostics/) if you care +about the condition of the machine itself. ## [Structure-borne sources](https://jmrplens.github.io/phonometry/vibration/structural/) @@ -81,4 +88,50 @@ Turning a vibration spectrum into a diagnosis of the machine that made it. the characteristic bearing, gear and shaft frequencies, and the envelope analysis that finds them under the broadband noise of a running machine. +## What this section does not cover + +**No instrument is type-tested.** ISO 8041-1's own subject, the design and +type-testing of human-vibration meters, is not implemented: only its frequency +weightings are taken from it, so a class verdict for a hand-held meter is not +something this library can give. + +**No severity verdict is issued for a machine.** The machinery pages predict +*where* a line would be, never whether it is present or whether the machine is +in trouble: the amplitude criteria that turn a present line into an assessment +— crest-factor and kurtosis trending, and the velocity severity bands of +ISO 10816 / ISO 20816 — are outside the library, as are rotor balancing +(ISO 21940) and order tracking. + +**Nor is one issued for a building.** The 2003 edition of ISO 2631-2 deleted +its predecessor's guidance values on purpose, so there are no acceptable +magnitudes for building vibration to compare against; what the library gives is +the weighted magnitude, and the judgement stays with the assessor and the +national code. + +Two structural predictions are idealisations rather than measurements. The +junction transmission coefficients are a closed-form result for a rigid, simply +supported junction — the *measured* vibration reduction index of ISO 10848 is +[Laboratory flanking transmission](https://jmrplens.github.io/phonometry/buildings/insulation/flanking-lab/) +— and the FRF page returns element-wise free reciprocals, correct for a +driving-point or single-path use but not a full FRF matrix, with no +impact-hammer processing (ISO 7626-5) and no blocked matrix quantities. On the +isolator page, parts 4 and 5 of ISO 10846 are not implemented, and two of the +standard's validity checks (the blocking-mass inequality and the clause 7.6 +linearity criterion) are described but not computed for you. + +## Before and after these pages + +Every quantity here starts from an acceleration record and a spectral estimate, +so the filtering, the weighting curves and the spectral estimators behind them +are in [Signal analysis](https://jmrplens.github.io/phonometry/signals/), and [Spectral +analysis](https://jmrplens.github.io/phonometry/signals/spectra/spectral-analysis/) is the page the +machinery diagnostics build on. The derivations are in [Vibration +theory](https://jmrplens.github.io/phonometry/reference/theory/vibration/): the human-vibration weightings, the ISO 2631-5 +shock model and the point mobilities and radiation efficiency. + +If you arrived here from a search and want the shape of the whole library, +[What do you need to measure?](https://jmrplens.github.io/phonometry/start/tasks/) indexes it by the job +and [All guides](https://jmrplens.github.io/phonometry/start/guides/) lists every page with a line on +each. + --- diff --git a/site/src/components/Glossary.astro b/site/src/components/Glossary.astro index 605227fc6..728728f1c 100644 --- a/site/src/components/Glossary.astro +++ b/site/src/components/Glossary.astro @@ -120,6 +120,44 @@ function plain(source: string): string { .replace(/[$\\{}_^]/g, ''); } +/** + * The character a reader is actually holding. `plain()` drops a Greek command + * along with the rest of the TeX, which is right for a search index and wrong + * for a symbol index: someone scanning for the sigma on a datasheet has to find + * a row that says sigma. This keeps the letter and drops everything else. + */ +const GREEK: Record = { + alpha: 'α', beta: 'β', gamma: 'γ', delta: 'δ', Delta: 'Δ', epsilon: 'ε', + varepsilon: 'ε', zeta: 'ζ', eta: 'η', theta: 'θ', vartheta: 'ϑ', kappa: 'κ', + lambda: 'λ', Lambda: 'Λ', mu: 'µ', nu: 'ν', xi: 'ξ', pi: 'π', rho: 'ρ', + sigma: 'σ', Sigma: 'Σ', tau: 'τ', upsilon: 'υ', phi: 'φ', varphi: 'φ', + Phi: 'Φ', chi: 'χ', psi: 'ψ', omega: 'ω', Omega: 'Ω', infty: '∞', +}; + +function scannable(source: string): string { + return source + .replace(/\\(?:text|mathrm|mathit|mathbf|operatorname)\{([^}]*)\}/g, '$1') + .replace(/\\([a-zA-Z]+)/g, (_match, name: string) => GREEK[name] ?? '') + .replace(/[$\\{}^]/g, '') + .replace(/_/g, ''); +} + +const GREEK_LETTERS = new Set(Object.values(GREEK)); + +/** + * The bucket a symbol files under: its first Latin letter, its own character if + * it is Greek, a digit bucket for the rest. One letter with four meanings ends + * up as one row with the four side by side, which is the case the domain + * grouping below cannot serve. + */ +function indexKey(label: string): string { + for (const character of scannable(label)) { + if (GREEK_LETTERS.has(character)) return character; + if (/[A-Za-z]/.test(character)) return character.toUpperCase(); + } + return '#'; +} + const jsonld = { '@context': 'https://schema.org', '@type': 'DefinedTermSet', @@ -147,14 +185,53 @@ const jsonld = { }), }; +// The symbol index: Latin letters first, then the Greek ones, each row holding +// every entry whose notation starts with that character. +const index = new Map(); +for (const term of terms) { + const key = indexKey(term.label); + const row = index.get(key) ?? []; + row.push({ id: term.id, scan: scannable(term.label), qualifier: term.qualifierText }); + index.set(key, row); +} +const indexRows = [...index.entries()].sort(([a], [b]) => { + const greek = (key: string) => (GREEK_LETTERS.has(key) ? 1 : 0); + return greek(a) - greek(b) || a.localeCompare(b, 'en'); +}); + const t = lang === 'es' - ? { definedIn: 'Definida en', see: 'Guía' } - : { definedIn: 'Defined in', see: 'Guide' }; + ? { + definedIn: 'Definida en', + see: 'Guía', + index: 'Índice de símbolos: todos los significados de una letra, juntos', + } + : { + definedIn: 'Defined in', + see: 'Guide', + index: 'Symbol index: every meaning of a letter, side by side', + }; ---