phonometry 3.1.0__tar.gz → 3.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. phonometry-3.3.0/MANIFEST.in +2 -0
  2. {phonometry-3.1.0 → phonometry-3.3.0}/PKG-INFO +56 -15
  3. phonometry-3.1.0/src/phonometry.egg-info/PKG-INFO → phonometry-3.3.0/README.md +40 -39
  4. phonometry-3.3.0/VERSION +1 -0
  5. phonometry-3.3.0/pyproject.toml +122 -0
  6. {phonometry-3.1.0 → phonometry-3.3.0}/src/phonometry/__init__.py +1845 -1378
  7. phonometry-3.3.0/src/phonometry/_compat.py +162 -0
  8. phonometry-3.3.0/src/phonometry/_i18n.py +111 -0
  9. phonometry-3.3.0/src/phonometry/_internal/__init__.py +8 -0
  10. phonometry-3.3.0/src/phonometry/_internal/peaks.py +69 -0
  11. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/_internal}/utils.py +29 -4
  12. phonometry-3.1.0/src/phonometry/_warnings.py → phonometry-3.3.0/src/phonometry/_internal/warnings.py +4 -2
  13. phonometry-3.3.0/src/phonometry/_plot/__init__.py +7 -0
  14. phonometry-3.3.0/src/phonometry/_plot/aircraft.py +489 -0
  15. phonometry-3.3.0/src/phonometry/_plot/broadcast.py +176 -0
  16. phonometry-3.3.0/src/phonometry/_plot/building.py +909 -0
  17. phonometry-3.3.0/src/phonometry/_plot/common.py +878 -0
  18. phonometry-3.3.0/src/phonometry/_plot/electroacoustics.py +804 -0
  19. phonometry-3.3.0/src/phonometry/_plot/emission.py +295 -0
  20. phonometry-3.3.0/src/phonometry/_plot/environmental.py +498 -0
  21. phonometry-3.3.0/src/phonometry/_plot/hearing.py +436 -0
  22. phonometry-3.3.0/src/phonometry/_plot/junction.py +108 -0
  23. phonometry-3.3.0/src/phonometry/_plot/materials.py +905 -0
  24. phonometry-3.3.0/src/phonometry/_plot/metrology.py +2023 -0
  25. phonometry-3.3.0/src/phonometry/_plot/noise_control.py +177 -0
  26. phonometry-3.3.0/src/phonometry/_plot/psychoacoustics.py +917 -0
  27. phonometry-3.3.0/src/phonometry/_plot/room.py +885 -0
  28. phonometry-3.3.0/src/phonometry/_plot/simulation.py +131 -0
  29. phonometry-3.3.0/src/phonometry/_plot/underwater.py +535 -0
  30. phonometry-3.3.0/src/phonometry/_plot/vibration.py +506 -0
  31. phonometry-3.3.0/src/phonometry/_plotting.py +203 -0
  32. phonometry-3.3.0/src/phonometry/_report/__init__.py +16 -0
  33. phonometry-3.3.0/src/phonometry/_report/_frf_fiche.py +160 -0
  34. phonometry-3.3.0/src/phonometry/_report/_i18n.py +976 -0
  35. phonometry-3.3.0/src/phonometry/_report/_insulation_fiche.py +338 -0
  36. phonometry-3.3.0/src/phonometry/_report/_layout.py +871 -0
  37. phonometry-3.3.0/src/phonometry/_report/_material_fiche.py +177 -0
  38. phonometry-3.3.0/src/phonometry/_report/_noise_control_fiche.py +233 -0
  39. phonometry-3.3.0/src/phonometry/_report/_sound_power_fiche.py +404 -0
  40. phonometry-3.3.0/src/phonometry/_report/annex16_epnl.py +274 -0
  41. phonometry-3.3.0/src/phonometry/_report/ansi_s12_2.py +598 -0
  42. phonometry-3.3.0/src/phonometry/_report/broadcast.py +342 -0
  43. phonometry-3.3.0/src/phonometry/_report/en12354_5.py +241 -0
  44. phonometry-3.3.0/src/phonometry/_report/en15657.py +231 -0
  45. phonometry-3.3.0/src/phonometry/_report/enclosure.py +220 -0
  46. phonometry-3.3.0/src/phonometry/_report/human_vibration.py +495 -0
  47. phonometry-3.3.0/src/phonometry/_report/hvac.py +370 -0
  48. phonometry-3.3.0/src/phonometry/_report/iec60268_4.py +363 -0
  49. phonometry-3.3.0/src/phonometry/_report/iec60268_5.py +411 -0
  50. phonometry-3.3.0/src/phonometry/_report/iec61260.py +297 -0
  51. phonometry-3.3.0/src/phonometry/_report/iec61400.py +362 -0
  52. phonometry-3.3.0/src/phonometry/_report/iso10052.py +263 -0
  53. phonometry-3.3.0/src/phonometry/_report/iso10140.py +148 -0
  54. phonometry-3.3.0/src/phonometry/_report/iso10534.py +327 -0
  55. phonometry-3.3.0/src/phonometry/_report/iso10846.py +205 -0
  56. phonometry-3.3.0/src/phonometry/_report/iso10848.py +496 -0
  57. phonometry-3.3.0/src/phonometry/_report/iso11654.py +431 -0
  58. phonometry-3.3.0/src/phonometry/_report/iso12354.py +434 -0
  59. phonometry-3.3.0/src/phonometry/_report/iso15186.py +378 -0
  60. phonometry-3.3.0/src/phonometry/_report/iso16251.py +405 -0
  61. phonometry-3.3.0/src/phonometry/_report/iso16283.py +335 -0
  62. phonometry-3.3.0/src/phonometry/_report/iso17497.py +566 -0
  63. phonometry-3.3.0/src/phonometry/_report/iso1996_impulse.py +459 -0
  64. phonometry-3.3.0/src/phonometry/_report/iso1996_tone.py +432 -0
  65. phonometry-3.3.0/src/phonometry/_report/iso1999.py +623 -0
  66. phonometry-3.3.0/src/phonometry/_report/iso2631_5.py +483 -0
  67. phonometry-3.3.0/src/phonometry/_report/iso3382.py +563 -0
  68. phonometry-3.3.0/src/phonometry/_report/iso3382_3.py +319 -0
  69. phonometry-3.3.0/src/phonometry/_report/iso354.py +305 -0
  70. phonometry-3.3.0/src/phonometry/_report/iso3741.py +254 -0
  71. phonometry-3.3.0/src/phonometry/_report/iso3744.py +295 -0
  72. phonometry-3.3.0/src/phonometry/_report/iso4871.py +470 -0
  73. phonometry-3.3.0/src/phonometry/_report/iso532.py +293 -0
  74. phonometry-3.3.0/src/phonometry/_report/iso717.py +510 -0
  75. phonometry-3.3.0/src/phonometry/_report/iso7626.py +185 -0
  76. phonometry-3.3.0/src/phonometry/_report/iso7849.py +257 -0
  77. phonometry-3.3.0/src/phonometry/_report/iso9052.py +220 -0
  78. phonometry-3.3.0/src/phonometry/_report/iso9053.py +213 -0
  79. phonometry-3.3.0/src/phonometry/_report/iso9612.py +517 -0
  80. phonometry-3.3.0/src/phonometry/_report/iso9613.py +624 -0
  81. phonometry-3.3.0/src/phonometry/_report/iso9614.py +262 -0
  82. phonometry-3.3.0/src/phonometry/_report/metadata.py +238 -0
  83. phonometry-3.3.0/src/phonometry/_report/reverberation.py +544 -0
  84. phonometry-3.3.0/src/phonometry/_report/sii.py +274 -0
  85. phonometry-3.3.0/src/phonometry/_report/silencer.py +220 -0
  86. phonometry-3.3.0/src/phonometry/_report/sti.py +281 -0
  87. phonometry-3.3.0/src/phonometry/aircraft/__init__.py +107 -0
  88. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/aircraft}/aircraft_noise.py +142 -33
  89. phonometry-3.3.0/src/phonometry/aircraft/airport_noise.py +1078 -0
  90. phonometry-3.3.0/src/phonometry/aircraft/anp_fleet.py +653 -0
  91. phonometry-3.1.0/src/phonometry/aircraft_atmospheric_absorption.py → phonometry-3.3.0/src/phonometry/aircraft/atmospheric_absorption.py +12 -11
  92. phonometry-3.3.0/src/phonometry/aircraft/data/anp/Aerodynamic_coefficients.csv +1219 -0
  93. phonometry-3.3.0/src/phonometry/aircraft/data/anp/Aircraft.csv +156 -0
  94. phonometry-3.3.0/src/phonometry/aircraft/data/anp/Default_approach_procedural_steps.csv +1066 -0
  95. phonometry-3.3.0/src/phonometry/aircraft/data/anp/Default_departure_procedural_steps.csv +9379 -0
  96. phonometry-3.3.0/src/phonometry/aircraft/data/anp/Default_fixed_point_profiles.csv +897 -0
  97. phonometry-3.3.0/src/phonometry/aircraft/data/anp/Default_weights.csv +633 -0
  98. phonometry-3.3.0/src/phonometry/aircraft/data/anp/Jet_engine_coefficients.csv +465 -0
  99. phonometry-3.3.0/src/phonometry/aircraft/data/anp/NPD_data.csv +2777 -0
  100. phonometry-3.3.0/src/phonometry/aircraft/data/anp/PROVENANCE.md +50 -0
  101. phonometry-3.3.0/src/phonometry/aircraft/data/anp/Propeller_engine_coefficients.csv +39 -0
  102. phonometry-3.3.0/src/phonometry/aircraft/data/anp/Spectral_classes.csv +42 -0
  103. phonometry-3.3.0/src/phonometry/aircraft/rotorcraft_noise.py +2080 -0
  104. phonometry-3.3.0/src/phonometry/broadcast/__init__.py +32 -0
  105. phonometry-3.3.0/src/phonometry/broadcast/program_loudness.py +823 -0
  106. phonometry-3.3.0/src/phonometry/building/__init__.py +300 -0
  107. phonometry-3.3.0/src/phonometry/building/aperture_transmission.py +319 -0
  108. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/building}/building_prediction.py +372 -48
  109. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/building}/building_uncertainty.py +56 -48
  110. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/building}/facade_prediction.py +171 -17
  111. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/building}/flanking_transmission.py +309 -28
  112. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/building}/floor_covering_improvement.py +128 -20
  113. phonometry-3.3.0/src/phonometry/building/installed_structure_borne.py +463 -0
  114. phonometry-3.3.0/src/phonometry/building/insulation.py +1889 -0
  115. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/building}/intensity_insulation.py +304 -25
  116. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/building}/lab_insulation.py +143 -5
  117. phonometry-3.3.0/src/phonometry/building/panel_transmission.py +418 -0
  118. phonometry-3.3.0/src/phonometry/building/structure_borne_power.py +466 -0
  119. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/building}/survey_insulation.py +185 -9
  120. phonometry-3.3.0/src/phonometry/electroacoustics/__init__.py +74 -0
  121. phonometry-3.3.0/src/phonometry/electroacoustics/distortion.py +1132 -0
  122. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/electroacoustics}/frequency_response.py +47 -54
  123. phonometry-3.3.0/src/phonometry/electroacoustics/loudspeaker.py +632 -0
  124. phonometry-3.3.0/src/phonometry/electroacoustics/microphone.py +607 -0
  125. phonometry-3.3.0/src/phonometry/electroacoustics/piston.py +400 -0
  126. phonometry-3.3.0/src/phonometry/electroacoustics/swept_sine.py +642 -0
  127. phonometry-3.3.0/src/phonometry/emission/__init__.py +101 -0
  128. phonometry-3.3.0/src/phonometry/emission/declaration.py +320 -0
  129. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/emission}/intensity.py +141 -58
  130. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/emission}/sound_power.py +241 -39
  131. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/emission}/sound_power_intensity.py +135 -13
  132. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/emission}/sound_power_reverberation.py +137 -30
  133. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/emission}/vibration_sound_power.py +91 -8
  134. phonometry-3.3.0/src/phonometry/environmental/__init__.py +166 -0
  135. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/environmental}/air_absorption.py +145 -3
  136. phonometry-3.3.0/src/phonometry/environmental/atmospheric_refraction.py +679 -0
  137. phonometry-3.3.0/src/phonometry/environmental/ground_barriers.py +841 -0
  138. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/environmental}/impulse_prominence.py +134 -14
  139. phonometry-3.3.0/src/phonometry/environmental/impulsive_sound.py +560 -0
  140. phonometry-3.1.0/src/phonometry/environmental_measurement.py → phonometry-3.3.0/src/phonometry/environmental/measurement.py +98 -26
  141. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/environmental}/outdoor_propagation.py +173 -21
  142. phonometry-3.1.0/src/phonometry/environmental.py → phonometry-3.3.0/src/phonometry/environmental/rating.py +4 -4
  143. phonometry-3.3.0/src/phonometry/environmental/wind_turbine_noise.py +446 -0
  144. phonometry-3.3.0/src/phonometry/hearing/__init__.py +81 -0
  145. phonometry-3.3.0/src/phonometry/hearing/noise_induced_hearing_loss.py +493 -0
  146. phonometry-3.3.0/src/phonometry/hearing/objective_intelligibility.py +375 -0
  147. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/hearing}/occupational_exposure.py +87 -21
  148. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/hearing}/sii.py +153 -7
  149. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/hearing}/sti.py +101 -22
  150. phonometry-3.1.0/src/phonometry/hearing.py → phonometry-3.3.0/src/phonometry/hearing/threshold.py +8 -7
  151. phonometry-3.3.0/src/phonometry/materials/__init__.py +344 -0
  152. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/materials}/absorption_rating.py +108 -8
  153. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/materials}/absorption_uncertainty.py +12 -9
  154. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/materials}/airflow_resistance.py +81 -9
  155. phonometry-3.3.0/src/phonometry/materials/diffuser_design.py +482 -0
  156. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/materials}/dynamic_stiffness.py +87 -11
  157. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/materials}/impedance_tube.py +107 -5
  158. phonometry-3.3.0/src/phonometry/materials/porous_absorber.py +1199 -0
  159. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/materials}/road_absorption.py +14 -12
  160. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/materials}/scattering_diffusion.py +265 -14
  161. phonometry-3.3.0/src/phonometry/materials/slow_sound_absorber.py +727 -0
  162. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/materials}/sound_absorption.py +249 -2
  163. phonometry-3.3.0/src/phonometry/metrology/__init__.py +224 -0
  164. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/metrology}/calibration.py +13 -8
  165. phonometry-3.3.0/src/phonometry/metrology/cepstrum.py +544 -0
  166. phonometry-3.3.0/src/phonometry/metrology/compliance.py +1182 -0
  167. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/metrology}/core.py +242 -32
  168. phonometry-3.3.0/src/phonometry/metrology/correlation.py +890 -0
  169. phonometry-3.3.0/src/phonometry/metrology/envelope.py +396 -0
  170. phonometry-3.3.0/src/phonometry/metrology/equalizer.py +560 -0
  171. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/metrology}/filter_design.py +9 -11
  172. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/metrology}/frequencies.py +27 -13
  173. phonometry-3.3.0/src/phonometry/metrology/inversion.py +343 -0
  174. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/metrology}/levels.py +15 -19
  175. phonometry-3.3.0/src/phonometry/metrology/miso.py +499 -0
  176. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/metrology}/parametric_filters.py +167 -55
  177. phonometry-3.3.0/src/phonometry/metrology/phase.py +323 -0
  178. phonometry-3.3.0/src/phonometry/metrology/random_data.py +968 -0
  179. phonometry-3.3.0/src/phonometry/metrology/signals.py +663 -0
  180. phonometry-3.3.0/src/phonometry/metrology/spectra.py +1404 -0
  181. phonometry-3.3.0/src/phonometry/metrology/synchronous_average.py +335 -0
  182. phonometry-3.3.0/src/phonometry/metrology/time_frequency.py +378 -0
  183. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/metrology}/uncertainty.py +127 -20
  184. phonometry-3.3.0/src/phonometry/noise_control/__init__.py +51 -0
  185. phonometry-3.3.0/src/phonometry/noise_control/enclosures.py +274 -0
  186. phonometry-3.3.0/src/phonometry/noise_control/hvac.py +413 -0
  187. phonometry-3.3.0/src/phonometry/noise_control/silencers.py +654 -0
  188. phonometry-3.3.0/src/phonometry/psychoacoustics/__init__.py +130 -0
  189. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/psychoacoustics}/_zwicker_data.py +5 -5
  190. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/psychoacoustics}/fluctuation_strength.py +152 -93
  191. phonometry-3.3.0/src/phonometry/psychoacoustics/fluctuation_strength_ecma.py +888 -0
  192. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/psychoacoustics}/loudness_contours.py +109 -4
  193. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/psychoacoustics}/loudness_ecma.py +179 -123
  194. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/psychoacoustics}/loudness_moore_glasberg.py +32 -19
  195. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/psychoacoustics}/loudness_moore_glasberg_time.py +32 -16
  196. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/psychoacoustics}/loudness_zwicker.py +238 -82
  197. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/psychoacoustics}/psychoacoustic_annoyance.py +17 -13
  198. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/psychoacoustics}/roughness_ecma.py +47 -34
  199. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/psychoacoustics}/sharpness.py +19 -35
  200. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/psychoacoustics}/tonality.py +93 -17
  201. phonometry-3.3.0/src/phonometry/psychoacoustics/tonality_ecma.py +243 -0
  202. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/psychoacoustics}/tone_audibility.py +471 -80
  203. phonometry-3.3.0/src/phonometry/room/__init__.py +117 -0
  204. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/room}/enclosed_space_absorption.py +61 -5
  205. phonometry-3.3.0/src/phonometry/room/image_source.py +534 -0
  206. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/room}/open_plan.py +86 -15
  207. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/room}/reverberation_prediction.py +173 -35
  208. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/room}/room_acoustics.py +105 -32
  209. phonometry-3.3.0/src/phonometry/room/room_ir.py +997 -0
  210. phonometry-3.3.0/src/phonometry/room/room_noise.py +560 -0
  211. phonometry-3.3.0/src/phonometry/room/steady_field.py +291 -0
  212. phonometry-3.3.0/src/phonometry/simulation/__init__.py +22 -0
  213. phonometry-3.3.0/src/phonometry/simulation/fdtd.py +862 -0
  214. phonometry-3.3.0/src/phonometry/underwater/__init__.py +122 -0
  215. phonometry-3.1.0/src/phonometry/underwater_acoustics.py → phonometry-3.3.0/src/phonometry/underwater/acoustics.py +5 -5
  216. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/underwater}/numerical_propagation.py +115 -55
  217. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/underwater}/ocean_ambient_noise.py +38 -22
  218. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/underwater}/pile_driving_noise.py +10 -9
  219. phonometry-3.1.0/src/phonometry/underwater_propagation.py → phonometry-3.3.0/src/phonometry/underwater/propagation.py +33 -22
  220. phonometry-3.3.0/src/phonometry/underwater/seabed_reflection.py +263 -0
  221. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/underwater}/ship_radiated_noise.py +22 -16
  222. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/underwater}/ship_traffic_noise.py +23 -22
  223. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/underwater}/sonar_equation.py +12 -11
  224. phonometry-3.1.0/src/phonometry/underwater_sound_speed.py → phonometry-3.3.0/src/phonometry/underwater/sound_speed.py +59 -27
  225. phonometry-3.3.0/src/phonometry/vibration/__init__.py +208 -0
  226. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/vibration}/human_vibration.py +140 -21
  227. phonometry-3.3.0/src/phonometry/vibration/junction_transmission.py +565 -0
  228. phonometry-3.3.0/src/phonometry/vibration/mechanical_mobility.py +505 -0
  229. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/vibration}/multiple_shock_vibration.py +113 -14
  230. phonometry-3.3.0/src/phonometry/vibration/point_mobility.py +384 -0
  231. phonometry-3.3.0/src/phonometry/vibration/radiation_efficiency.py +233 -0
  232. {phonometry-3.1.0/src/phonometry → phonometry-3.3.0/src/phonometry/vibration}/transfer_stiffness.py +173 -15
  233. phonometry-3.1.0/README.md → phonometry-3.3.0/src/phonometry.egg-info/PKG-INFO +80 -9
  234. phonometry-3.3.0/src/phonometry.egg-info/SOURCES.txt +266 -0
  235. phonometry-3.3.0/src/phonometry.egg-info/requires.txt +18 -0
  236. phonometry-3.3.0/tests/test_api_docs_generator.py +290 -0
  237. {phonometry-3.1.0 → phonometry-3.3.0}/tests/test_audio_processing.py +1 -16
  238. {phonometry-3.1.0 → phonometry-3.3.0}/tests/test_basic.py +8 -8
  239. {phonometry-3.1.0 → phonometry-3.3.0}/tests/test_conformance_report.py +8 -3
  240. {phonometry-3.1.0 → phonometry-3.3.0}/tests/test_deprecated_aliases.py +242 -1
  241. {phonometry-3.1.0 → phonometry-3.3.0}/tests/test_errors_and_edge_cases.py +5 -5
  242. phonometry-3.3.0/tests/test_fdtd2d.py +191 -0
  243. phonometry-3.3.0/tests/test_generate_reports.py +62 -0
  244. phonometry-3.3.0/tests/test_golden_baseline.py +53 -0
  245. {phonometry-3.1.0 → phonometry-3.3.0}/tests/test_graph_measurements.py +1 -1
  246. {phonometry-3.1.0 → phonometry-3.3.0}/tests/test_impact_insulation.py +2 -2
  247. {phonometry-3.1.0 → phonometry-3.3.0}/tests/test_matplotlib_backend.py +4 -3
  248. {phonometry-3.1.0 → phonometry-3.3.0}/tests/test_multichannel_rejection.py +1 -1
  249. phonometry-3.3.0/tests/test_package_architecture.py +156 -0
  250. {phonometry-3.1.0 → phonometry-3.3.0}/tests/test_parametric_filters.py +8 -1
  251. {phonometry-3.1.0 → phonometry-3.3.0}/tests/test_performance.py +1 -1
  252. phonometry-3.3.0/tests/test_plot_common_i18n.py +217 -0
  253. {phonometry-3.1.0 → phonometry-3.3.0}/tests/test_result_plots.py +229 -10
  254. {phonometry-3.1.0 → phonometry-3.3.0}/tests/test_utils.py +0 -1
  255. {phonometry-3.1.0 → phonometry-3.3.0}/tests/test_zero_phase.py +2 -2
  256. phonometry-3.1.0/MANIFEST.in +0 -1
  257. phonometry-3.1.0/VERSION +0 -1
  258. phonometry-3.1.0/pyproject.toml +0 -62
  259. phonometry-3.1.0/src/phonometry/_plotting.py +0 -3656
  260. phonometry-3.1.0/src/phonometry/airport_noise.py +0 -662
  261. phonometry-3.1.0/src/phonometry/compliance.py +0 -558
  262. phonometry-3.1.0/src/phonometry/distortion.py +0 -612
  263. phonometry-3.1.0/src/phonometry/installed_structure_borne.py +0 -267
  264. phonometry-3.1.0/src/phonometry/insulation.py +0 -976
  265. phonometry-3.1.0/src/phonometry/loudness.py +0 -41
  266. phonometry-3.1.0/src/phonometry/mechanical_mobility.py +0 -262
  267. phonometry-3.1.0/src/phonometry/noise_induced_hearing_loss.py +0 -282
  268. phonometry-3.1.0/src/phonometry/room_ir.py +0 -533
  269. phonometry-3.1.0/src/phonometry/room_noise.py +0 -294
  270. phonometry-3.1.0/src/phonometry/rotorcraft_noise.py +0 -308
  271. phonometry-3.1.0/src/phonometry/seabed_reflection.py +0 -151
  272. phonometry-3.1.0/src/phonometry/structure_borne_power.py +0 -216
  273. phonometry-3.1.0/src/phonometry/tonality_ecma.py +0 -377
  274. phonometry-3.1.0/src/phonometry/wind_turbine_noise.py +0 -258
  275. phonometry-3.1.0/src/phonometry.egg-info/SOURCES.txt +0 -210
  276. phonometry-3.1.0/src/phonometry.egg-info/requires.txt +0 -12
  277. phonometry-3.1.0/tests/test_absorption_rating.py +0 -300
  278. phonometry-3.1.0/tests/test_absorption_uncertainty.py +0 -208
  279. phonometry-3.1.0/tests/test_air_absorption.py +0 -195
  280. phonometry-3.1.0/tests/test_aircraft_atmospheric_absorption.py +0 -104
  281. phonometry-3.1.0/tests/test_aircraft_noise.py +0 -166
  282. phonometry-3.1.0/tests/test_aircraft_noise_system.py +0 -76
  283. phonometry-3.1.0/tests/test_airflow_resistance.py +0 -313
  284. phonometry-3.1.0/tests/test_airport_noise.py +0 -388
  285. phonometry-3.1.0/tests/test_building_prediction.py +0 -405
  286. phonometry-3.1.0/tests/test_building_uncertainty.py +0 -426
  287. phonometry-3.1.0/tests/test_calibration_validation.py +0 -144
  288. phonometry-3.1.0/tests/test_compliance.py +0 -185
  289. phonometry-3.1.0/tests/test_distortion.py +0 -231
  290. phonometry-3.1.0/tests/test_dynamic_stiffness.py +0 -173
  291. phonometry-3.1.0/tests/test_enclosed_space_absorption.py +0 -182
  292. phonometry-3.1.0/tests/test_environmental.py +0 -89
  293. phonometry-3.1.0/tests/test_environmental_measurement.py +0 -231
  294. phonometry-3.1.0/tests/test_facade_insulation.py +0 -292
  295. phonometry-3.1.0/tests/test_facade_prediction.py +0 -400
  296. phonometry-3.1.0/tests/test_filter_design.py +0 -211
  297. phonometry-3.1.0/tests/test_flanking_transmission.py +0 -306
  298. phonometry-3.1.0/tests/test_floor_covering_improvement.py +0 -199
  299. phonometry-3.1.0/tests/test_fluctuation_strength.py +0 -140
  300. phonometry-3.1.0/tests/test_frequency_response.py +0 -122
  301. phonometry-3.1.0/tests/test_g_weighting.py +0 -90
  302. phonometry-3.1.0/tests/test_hearing.py +0 -117
  303. phonometry-3.1.0/tests/test_human_vibration.py +0 -458
  304. phonometry-3.1.0/tests/test_iec_compliance.py +0 -141
  305. phonometry-3.1.0/tests/test_iec_weighting_table3.py +0 -56
  306. phonometry-3.1.0/tests/test_impedance_tube.py +0 -557
  307. phonometry-3.1.0/tests/test_impulse_prominence.py +0 -111
  308. phonometry-3.1.0/tests/test_installed_structure_borne.py +0 -187
  309. phonometry-3.1.0/tests/test_insulation.py +0 -313
  310. phonometry-3.1.0/tests/test_intensity.py +0 -299
  311. phonometry-3.1.0/tests/test_intensity_insulation.py +0 -222
  312. phonometry-3.1.0/tests/test_lab_insulation.py +0 -300
  313. phonometry-3.1.0/tests/test_levels.py +0 -376
  314. phonometry-3.1.0/tests/test_loudness_contours.py +0 -95
  315. phonometry-3.1.0/tests/test_loudness_ecma.py +0 -156
  316. phonometry-3.1.0/tests/test_loudness_moore_glasberg.py +0 -368
  317. phonometry-3.1.0/tests/test_loudness_moore_glasberg_time.py +0 -375
  318. phonometry-3.1.0/tests/test_loudness_zwicker.py +0 -309
  319. phonometry-3.1.0/tests/test_mechanical_mobility.py +0 -143
  320. phonometry-3.1.0/tests/test_multiple_shock_vibration.py +0 -233
  321. phonometry-3.1.0/tests/test_noise_induced_hearing_loss.py +0 -149
  322. phonometry-3.1.0/tests/test_nominal_frequencies.py +0 -139
  323. phonometry-3.1.0/tests/test_numerical_propagation.py +0 -203
  324. phonometry-3.1.0/tests/test_occupational_exposure.py +0 -358
  325. phonometry-3.1.0/tests/test_ocean_ambient_noise.py +0 -105
  326. phonometry-3.1.0/tests/test_open_plan.py +0 -164
  327. phonometry-3.1.0/tests/test_outdoor_propagation.py +0 -388
  328. phonometry-3.1.0/tests/test_parametrized_signals.py +0 -313
  329. phonometry-3.1.0/tests/test_pile_driving_noise.py +0 -91
  330. phonometry-3.1.0/tests/test_psychoacoustic_annoyance.py +0 -104
  331. phonometry-3.1.0/tests/test_reverberation_prediction.py +0 -286
  332. phonometry-3.1.0/tests/test_road_absorption.py +0 -505
  333. phonometry-3.1.0/tests/test_room_acoustics.py +0 -335
  334. phonometry-3.1.0/tests/test_room_ir.py +0 -539
  335. phonometry-3.1.0/tests/test_room_noise.py +0 -176
  336. phonometry-3.1.0/tests/test_rotorcraft_noise.py +0 -199
  337. phonometry-3.1.0/tests/test_roughness_ecma.py +0 -151
  338. phonometry-3.1.0/tests/test_scattering_diffusion.py +0 -568
  339. phonometry-3.1.0/tests/test_seabed_reflection.py +0 -94
  340. phonometry-3.1.0/tests/test_sharpness.py +0 -96
  341. phonometry-3.1.0/tests/test_ship_radiated_noise.py +0 -129
  342. phonometry-3.1.0/tests/test_ship_traffic_noise.py +0 -98
  343. phonometry-3.1.0/tests/test_signal_theory_limits.py +0 -139
  344. phonometry-3.1.0/tests/test_sii.py +0 -160
  345. phonometry-3.1.0/tests/test_sonar_equation.py +0 -87
  346. phonometry-3.1.0/tests/test_sound_absorption.py +0 -343
  347. phonometry-3.1.0/tests/test_sound_power.py +0 -435
  348. phonometry-3.1.0/tests/test_sound_power_intensity.py +0 -402
  349. phonometry-3.1.0/tests/test_sound_power_precision.py +0 -657
  350. phonometry-3.1.0/tests/test_sound_power_reverberation.py +0 -389
  351. phonometry-3.1.0/tests/test_stateful_octave_filter_bank.py +0 -120
  352. phonometry-3.1.0/tests/test_stateful_weighting_filter.py +0 -140
  353. phonometry-3.1.0/tests/test_sti.py +0 -368
  354. phonometry-3.1.0/tests/test_structure_borne_power.py +0 -148
  355. phonometry-3.1.0/tests/test_survey_insulation.py +0 -299
  356. phonometry-3.1.0/tests/test_tonality.py +0 -183
  357. phonometry-3.1.0/tests/test_tonality_ecma.py +0 -218
  358. phonometry-3.1.0/tests/test_tone_audibility.py +0 -483
  359. phonometry-3.1.0/tests/test_transfer_stiffness.py +0 -151
  360. phonometry-3.1.0/tests/test_uncertainty.py +0 -201
  361. phonometry-3.1.0/tests/test_underwater_acoustics.py +0 -70
  362. phonometry-3.1.0/tests/test_underwater_propagation.py +0 -116
  363. phonometry-3.1.0/tests/test_underwater_sound_speed.py +0 -85
  364. phonometry-3.1.0/tests/test_vibration_sound_power.py +0 -179
  365. phonometry-3.1.0/tests/test_weighting_class_verifier.py +0 -137
  366. phonometry-3.1.0/tests/test_wind_turbine_noise.py +0 -144
  367. {phonometry-3.1.0 → phonometry-3.3.0}/LICENSE +0 -0
  368. {phonometry-3.1.0 → phonometry-3.3.0}/setup.cfg +0 -0
  369. /phonometry-3.1.0/src/phonometry/_levels_math.py → /phonometry-3.3.0/src/phonometry/_internal/levels_math.py +0 -0
  370. /phonometry-3.1.0/src/phonometry/_types.py → /phonometry-3.3.0/src/phonometry/_internal/types.py +0 -0
  371. /phonometry-3.1.0/src/phonometry/_validation.py → /phonometry-3.3.0/src/phonometry/_internal/validation.py +0 -0
  372. {phonometry-3.1.0 → phonometry-3.3.0}/src/phonometry/_version.py +0 -0
  373. {phonometry-3.1.0 → phonometry-3.3.0}/src/phonometry/py.typed +0 -0
  374. {phonometry-3.1.0 → phonometry-3.3.0}/src/phonometry.egg-info/dependency_links.txt +0 -0
  375. {phonometry-3.1.0 → phonometry-3.3.0}/src/phonometry.egg-info/top_level.txt +0 -0
  376. {phonometry-3.1.0 → phonometry-3.3.0}/tests/test_advanced.py +0 -0
  377. {phonometry-3.1.0 → phonometry-3.3.0}/tests/test_multichannel.py +0 -0
  378. {phonometry-3.1.0 → phonometry-3.3.0}/tests/test_packaging.py +0 -0
  379. {phonometry-3.1.0 → phonometry-3.3.0}/tests/test_spectrogram.py +0 -0
@@ -0,0 +1,2 @@
1
+ include VERSION
2
+ recursive-include src/phonometry/aircraft/data/anp *.csv *.md
@@ -1,10 +1,15 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: phonometry
3
- Version: 3.1.0
3
+ Version: 3.3.0
4
4
  Summary: Acoustic measurement toolkit: fractional octave-band filters, A/C/Z and time weighting, and sound level metrology per IEC 61260-1 and IEC 61672-1.
5
5
  Author-email: Jose Manuel Requena Plens <jmrplens@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/jmrplens/phonometry
7
+ Project-URL: Documentation, https://jmrplens.github.io/phonometry/
8
+ Project-URL: Source, https://github.com/jmrplens/phonometry
9
+ Project-URL: Changelog, https://github.com/jmrplens/phonometry/blob/main/CHANGELOG.md
7
10
  Project-URL: Bug Tracker, https://github.com/jmrplens/phonometry/issues
11
+ Project-URL: DOI, https://doi.org/10.5281/zenodo.21215280
12
+ Keywords: acoustics,sound level meter,sound level,octave band,fractional octave band,octave filter bank,frequency weighting,signal processing,psychoacoustics,loudness,sharpness,roughness,room acoustics,reverberation time,sound absorption,sound insulation,building acoustics,sound power,vibration,human vibration exposure,environmental noise,aircraft noise,underwater acoustics,electroacoustics,loudspeaker measurement,broadcast loudness,noise control,acoustic metrology,standards conformance,ANSI S1.11,IEC 61260-1,IEC 61672-1,IEC 60942,IEC 60268-3,ISO 226,ISO 532-1,ISO 354,ISO 3382-1,ISO 717-1,ISO 16283-1,EN 12354,ISO 1996-1,ISO 9613-2,ISO 2631-1,ISO 7196,ECMA-418-1,EBU R 128,ITU-R BS.1770,ICAO Annex 16
8
13
  Classifier: Programming Language :: Python :: 3
9
14
  Classifier: Programming Language :: Python :: 3.13
10
15
  Classifier: Programming Language :: Python :: 3.14
@@ -18,14 +23,19 @@ Requires-Python: >=3.13
18
23
  Description-Content-Type: text/markdown
19
24
  License-File: LICENSE
20
25
  Requires-Dist: numpy>=2.4.4
21
- Requires-Dist: scipy>=1.17.1
26
+ Requires-Dist: scipy>=1.18.0
22
27
  Provides-Extra: perf
23
- Requires-Dist: numba>=0.65.1; extra == "perf"
28
+ Requires-Dist: numba>=0.66.0; extra == "perf"
24
29
  Provides-Extra: plot
25
- Requires-Dist: matplotlib>=3.10.9; extra == "plot"
30
+ Requires-Dist: matplotlib>=3.11.1; extra == "plot"
31
+ Provides-Extra: report
32
+ Requires-Dist: reportlab>=5.0.0; extra == "report"
33
+ Requires-Dist: svglib>=2.0.2; extra == "report"
26
34
  Provides-Extra: full
27
- Requires-Dist: numba>=0.65.1; extra == "full"
28
- Requires-Dist: matplotlib>=3.10.9; extra == "full"
35
+ Requires-Dist: numba>=0.66.0; extra == "full"
36
+ Requires-Dist: matplotlib>=3.11.1; extra == "full"
37
+ Requires-Dist: reportlab>=5.0.0; extra == "full"
38
+ Requires-Dist: svglib>=2.0.2; extra == "full"
29
39
  Dynamic: license-file
30
40
 
31
41
  <!-- Package -->
@@ -45,7 +55,7 @@ Dynamic: license-file
45
55
 
46
56
  > *phonometry* — the measurement of sound. Formerly published as **PyOctaveBand**.
47
57
 
48
- Acoustic measurement toolkit for Python: fractional octave-band filter banks, frequency and time weighting, and sound level metrology — conformance-tested against **IEC 61260-1:2014 / ANSI S1.11-2004** (filters) and **IEC 61672-1:2013** (weighting and levels) class 1 tolerance limits.
58
+ Acoustic measurement toolkit for Python, from fractional octave-band filters, weighting and sound level metrology to psychoacoustics, rooms and buildings, vibration, environmental and aircraft noise, underwater acoustics, electroacoustics and wave simulation. Every metric is conformance-tested against its governing standard (371 checks across 46 domains and 235 standards), with class 1 filters per **IEC 61260-1:2014 / ANSI S1.11-2004** and class 1 weightings and levels per **IEC 61672-1:2013**.
49
59
 
50
60
  <img src="https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/filter_type_comparison.svg" alt="Magnitude response comparison of the five filter architectures for the 1 kHz octave band, with a zoom at the -3 dB crossover" width="80%">
51
61
 
@@ -53,18 +63,30 @@ Acoustic measurement toolkit for Python: fractional octave-band filter banks, fr
53
63
 
54
64
  - 🎛️ 1/1, 1/3 and arbitrary fractional octave filter banks (stable SOS + multirate decimation)
55
65
  - 🏗️ Five architectures: Butterworth, Chebyshev I/II, Elliptic, Bessel — all with −3 dB points on the ANSI band edges
56
- - 🔊 A/C/Z frequency weighting within IEC 61672-1 class 1 tolerances
66
+ - 🔊 A/C/Z frequency weighting within IEC 61672-1 class 1 tolerances, plus G weighting for infrasound (ISO 7196)
57
67
  - ⏱️ Fast/Slow/Impulse time ballistics, `Leq`, `LAeq` and `L10/L50/L90` statistical levels
58
68
  - 🗺️ Octave spectrogram (band levels over time) and zero-phase offline filtering
59
69
  - 🧠 Loudness in sones three ways: Zwicker (ISO 532-1 Annex B validated), Moore-Glasberg stationary & time-varying (ISO 532-2/3) and Sottek Hearing Model (ECMA-418-2); DIN 45692 sharpness, ISO 226:2023 contours
60
- - 🎻 Sound-quality metrics: ECMA-418-2 tonality (tu_HMS) and roughness (asper)
70
+ - 🎻 Sound-quality metrics: ECMA-418-2 tonality (tu_HMS), roughness (asper) and fluctuation strength (vacil_HMS)
61
71
  - 🗣️ Speech Transmission Index: STI and STIPA per IEC 60268-16 Ed. 5, with signal generator
62
72
  - 🎯 Tone prominence (TNR/PR, ECMA-418-1), environmental Lden/Ldn (ISO 1996-1), IEC 61252 noise dose
63
73
  - ↗️ Two-microphone sound intensity (IEC 61043) with ISO 9614-1 field indicators
64
74
  - 🏛️ Room & building acoustics: swept-sine/MLS impulse responses (ISO 18233), EDT/T20/T30/C50/C80/Ts (ISO 3382-1/2), open-plan speech metrics (ISO 3382-3), field airborne + impact + façade insulation with R′w/DnT,w/L′nT,w/D2m,nT,w and C/Ctr/CI (ISO 16283-1/2/3, ISO 717-1/2), laboratory R/Ln (ISO 10140), flanking-transmission prediction of R′w/L′n,w (EN 12354-1/2), measurement uncertainty (ISO 12999-1), sound absorption (ISO 354)
65
75
  - 🌬️ Outdoor propagation & occupational exposure: atmospheric absorption α(f) (ISO 9613-1), the ISO 9613-2 general method (divergence + atmospheric + ground + barrier terms) with a per-term octave-band breakdown, and daily noise exposure LEX,8h with task/job/full-day strategies and Annex C uncertainty (ISO 9612)
66
- - 🔊 Sound power LW three ways: enveloping-surface pressure (ISO 3744/3746), reverberation-room precision with Waterhouse/C1/C2 (ISO 3741), intensity scanning with field indicators and grade (ISO 9614-2)
76
+ - 🔊 Sound power LW five ways: enveloping-surface pressure (ISO 3744/3746), reverberation-room precision with Waterhouse/C1/C2 (ISO 3741), intensity scanning with field indicators and grade (ISO 9614-2), precision anechoic rooms (ISO 3745) and precision intensity scanning (ISO 9614-3), plus ISO 4871 noise-emission declarations
77
+ - 🦻 Hearing: age-related threshold distributions (ISO 7029) and noise-induced permanent threshold shift with HTLAN (ISO 1999)
78
+ - 🧱 Materials: absorption ratings αw (ISO 11654), impedance-tube absorption (ISO 10534-2), porous-absorber models, airflow resistance, scattering and diffusion (ISO 17497), dynamic stiffness
79
+ - 🔩 Vibration & structure-borne sound: mobility and FRFs (ISO 7626), isolator transfer stiffness (ISO 10846), sound power from surface vibration (ISO/TS 7849), reception-plate power (EN 15657), installed-source prediction (EN 12354-5) and human vibration (ISO 2631-1/-5, ISO 5349)
80
+ - ✈️ Aircraft noise: EPNL certification chain (ICAO Annex 16) with IEC 61265 verification and SAE ARP 5534 absorption, ECAC Doc 29 airport contours with the EASA ANP fleet database, and the ECAC Doc 32 rotorcraft hemisphere method
81
+ - 🌊 Underwater acoustics: ISO 18405 levels re 1 µPa, ship radiated noise (ISO 17208-1/2), pile driving (ISO 18406), sonar equation, Wenz/JOMOPANS-ECHO ambient noise, and transmission loss from spreading laws to normal-mode, ray and parabolic-equation solvers
82
+ - 🔈 Electroacoustics: distortion per IEC 60268-3 (THD, THD+N, SMPTE/CCIF intermodulation, DIM), frequency response and coherence, rigid-piston radiation, and loudspeaker/microphone rated characteristics (IEC 60268-5/-4)
83
+ - 🔇 Noise control: silencer insertion loss, enclosures and HVAC spectra
84
+ - 🌐 Deterministic 2D FDTD wave simulation with sources, probes, rasterised obstacles and rigid/impedance/absorbing boundaries
85
+ - 📄 Typed, frozen result dataclasses with `.plot(language="en"|"es")` figures and normative `.report()` PDF fiches (ISO 717, ISO 11654, ISO 532-1, EBU R 128, ICAO EPNL, IEC 61260-1, ISO 4871, IEC 60268-5/-4); documentation fully in English and Spanish
67
86
  - 📏 Physical SPL calibration with IEC 60942:2017 stability validation, and dBFS modes
87
+ - 📉 Calibrated spectral analysis (Bendat & Piersol): PSD/CSD with chi-square confidence intervals and random errors, coherent output spectrum & spectral SNR, 1/n-octave smoothing, exact-slope colored-noise generators
88
+ - ⏱️ Correlation & time-delay estimation (Bendat & Piersol, Knapp & Carter): biased/unbiased/coefficient correlation with random errors, GCC with Roth/SCOT/PHAT/ML weightings, sub-sample IR delay & alignment, Hilbert envelope with instantaneous frequency
89
+ - 🌀 Swept-sine distortion & phase utilities: harmonic separation and THD(f) from one exponential sweep (Farina 2000, Novak et al. 2015 synchronized sweep), minimum phase from |H|, group delay & excess phase
68
90
  - ⚡ Vectorized multichannel processing and stateful block (real-time) workflows
69
91
 
70
92
  ## 🚀 Installation
@@ -73,7 +95,7 @@ Acoustic measurement toolkit for Python: fractional octave-band filter banks, fr
73
95
  pip install phonometry
74
96
  ```
75
97
 
76
- Optional extras: `phonometry[plot]` (matplotlib for response plots and result `.plot()` methods), `phonometry[perf]` (numba for faster impulse ballistics), `phonometry[full]` (both).
98
+ Optional extras: `phonometry[plot]` (matplotlib for response plots and result `.plot()` methods), `phonometry[perf]` (numba for faster impulse ballistics), `phonometry[report]` (reportlab and svglib, so result `.report()` methods can render normative PDF fiches), `phonometry[full]` (all of the above).
77
99
 
78
100
  ## 📚 Documentation
79
101
 
@@ -90,17 +112,25 @@ Or browse the Markdown docs on GitHub:
90
112
  | [Levels](https://github.com/jmrplens/phonometry/blob/main/docs/levels.md) | Leq, LAeq, percentiles, LCpeak, SEL, noise dose (IEC 61252), Lden and rating levels (ISO 1996-1), octave spectrogram |
91
113
  | [Occupational Exposure](https://github.com/jmrplens/phonometry/blob/main/docs/occupational-exposure.md) | ISO 9612 task-based, job-based and full-day strategies with the Annex C uncertainty budget (LEX,8h + U) |
92
114
  | [Tone Prominence](https://github.com/jmrplens/phonometry/blob/main/docs/tone-prominence.md) | ECMA-418-1 tone-to-noise ratio and prominence ratio with frequency-dependent prominence criteria |
93
- | [Psychoacoustics](https://github.com/jmrplens/phonometry/blob/main/docs/psychoacoustics.md) | Zwicker (ISO 532-1), Moore-Glasberg (ISO 532-2/3) and Sottek (ECMA-418-2) loudness, sharpness (DIN 45692), equal-loudness contours (ISO 226), tonality & roughness (ECMA-418-2) |
115
+ | [Loudness](https://github.com/jmrplens/phonometry/blob/main/docs/loudness.md) | Zwicker (ISO 532-1), Moore-Glasberg (ISO 532-2/3) and Sottek (ECMA-418-2) loudness in sones, plus the equal-loudness contours (ISO 226) |
116
+ | [Sound Quality Metrics](https://github.com/jmrplens/phonometry/blob/main/docs/sound-quality.md) | Sharpness (DIN 45692) and the ECMA-418-2 Sottek Hearing Model tonality, roughness & fluctuation strength |
94
117
  | [Speech Transmission](https://github.com/jmrplens/phonometry/blob/main/docs/speech-transmission.md) | STI/STIPA (IEC 60268-16): modulation transfer function, indirect method from impulse responses and direct STIPA measurement |
95
118
  | [Speech Intelligibility Index](https://github.com/jmrplens/phonometry/blob/main/docs/speech-intelligibility.md) | SII (ANSI S3.5-1997): band importance, masking and audibility, the index in noise and hearing loss, standard vocal-effort spectra |
96
119
  | [Electroacoustics](https://github.com/jmrplens/phonometry/blob/main/docs/electroacoustics.md) | Distortion (IEC 60268-3): THD, nth-order harmonic, THD+N & SINAD (AES17), SMPTE & CCIF intermodulation, DIM and weighted THD; frequency response & coherence (Bendat & Piersol H1/H2) |
120
+ | [Swept-Sine Distortion & Phase](https://github.com/jmrplens/phonometry/blob/main/docs/swept-sine-distortion.md) | Harmonic separation & THD(f) from one exponential sweep (Farina 2000; Novak et al. 2015 synchronized sweep with coherent harmonic phases); minimum phase from \|H\| (real cepstrum), group delay & excess phase |
121
+ | [Calibrated Spectral Analysis](https://github.com/jmrplens/phonometry/blob/main/docs/spectral-analysis.md) | Welch PSD/CSD with effective averages, random errors & chi-square confidence intervals; coherent output spectrum & spectral SNR; 1/n-octave smoothing; colored-noise generators (Bendat & Piersol) |
122
+ | [Programme Loudness](https://github.com/jmrplens/phonometry/blob/main/docs/program-loudness.md) | ITU-R BS.1770-5 programme loudness (K-weighting, gating, multichannel weights incl. Annex 3) and true peak in dBTP; EBU R 128 with the Tech 3341 EBU Mode M/S/I meters and the Tech 3342 loudness range |
123
+ | [Correlation, Time Delay & Envelope](https://github.com/jmrplens/phonometry/blob/main/docs/correlation-delay.md) | Auto/cross-correlation with B&P normalizations & random errors; TDE by direct correlation, cross-spectrum phase slope & Knapp-Carter GCC (Roth/SCOT/PHAT/ML); sub-sample IR delay & alignment; Hilbert envelope & instantaneous frequency |
97
124
  | [Underwater Acoustics](https://github.com/jmrplens/phonometry/blob/main/docs/underwater-acoustics.md) | Reference levels re 1 µPa (SPL, SEL, peak; ISO 18405); ship radiated noise & equivalent monopole source level (ISO 17208); pile-driving single-strike, peak & cumulative SEL (ISO 18406) |
98
125
  | [Underwater Sound Propagation](https://github.com/jmrplens/phonometry/blob/main/docs/underwater-propagation.md) | Transmission loss (geometrical spreading + volume absorption: Francois-Garrison, Ainslie-McColm, Thorp); speed of sound in sea water (UNESCO/Chen-Millero, Del Grosso, Mackenzie); passive & active sonar equation; seabed reflection loss (Rayleigh); ocean ambient noise (Wenz wind/thermal + JOMOPANS-ECHO ship traffic); numerical solvers (normal modes, ray tracing, parabolic equation) |
99
126
  | [Aircraft Noise](https://github.com/jmrplens/phonometry/blob/main/docs/aircraft-noise.md) | Effective Perceived Noise Level (ICAO Annex 16): perceived noisiness & PNL, tone correction, 10 dB-down duration correction (EPNL); IEC 61265 measurement-system verification; SAE ARP 5534 one-third-octave-band atmospheric absorption; ECAC Doc 29 noise-power-distance (NPD) event-level interpolation |
100
127
  | [Wind-Turbine Noise](https://github.com/jmrplens/phonometry/blob/main/docs/wind-turbine-noise.md) | Apparent sound power level referred to the rotor centre and tonal audibility (Zwicker critical band, masking-noise level, audibility criterion) — IEC 61400-11 |
101
128
  | [Sound Intensity](https://github.com/jmrplens/phonometry/blob/main/docs/intensity.md) | Two-microphone p-p intensity (IEC 61043), ISO 9614-1 field indicators |
102
129
  | [Room Acoustics](https://github.com/jmrplens/phonometry/blob/main/docs/room-acoustics.md) | Impulse responses (ISO 18233), room parameters (ISO 3382-1/2), open-plan metrics (ISO 3382-3), sound absorption (ISO 354) |
103
- | [Building Acoustics](https://github.com/jmrplens/phonometry/blob/main/docs/building-acoustics.md) | Field airborne + impact + façade insulation and weighted ratings (ISO 16283-1/2/3, ISO 717-1/2), laboratory characterisation (ISO 10140), flanking-transmission prediction (EN 12354-1/2), measurement uncertainty (ISO 12999-1) |
130
+ | [Image Sources & Steady-State Field](https://github.com/jmrplens/phonometry/blob/main/docs/room-image-sources.md) | Image-source room impulse response of a shoebox (Kuttruff/Vorländer), and the steady-state level with the room constant, critical distance and Schroeder frequency (Bies) |
131
+ | [Field Insulation Measurement and Ratings](https://github.com/jmrplens/phonometry/blob/main/docs/insulation-field.md) | Field airborne + impact + façade insulation and weighted ratings (ISO 16283-1/2/3, ISO 717-1/2), measurement uncertainty (ISO 12999-1) and the ISO 10052 survey method |
132
+ | [Laboratory Insulation Measurement](https://github.com/jmrplens/phonometry/blob/main/docs/insulation-lab.md) | Laboratory characterisation (ISO 10140), sound insulation by intensity (ISO 15186), floor-covering impact improvement (ISO 16251-1) and laboratory flanking transmission (ISO 10848) |
133
+ | [Predicting Sound Insulation (EN 12354)](https://github.com/jmrplens/phonometry/blob/main/docs/insulation-prediction.md) | Flanking-transmission prediction (EN 12354-1/2), façade insulation and outdoor radiation (EN 12354-3/4) |
104
134
  | [Outdoor Sound Propagation](https://github.com/jmrplens/phonometry/blob/main/docs/outdoor-propagation.md) | Atmospheric absorption α(f) (ISO 9613-1) and the ISO 9613-2 general method: geometrical divergence, atmospheric absorption, ground effect, barrier screening and meteorological correction |
105
135
  | [Sound Power](https://github.com/jmrplens/phonometry/blob/main/docs/sound-power.md) | Sound power level LW by enveloping surface (ISO 3744/3746), reverberation room (ISO 3741) and intensity scanning (ISO 9614-2) |
106
136
  | [Calibration and dBFS](https://github.com/jmrplens/phonometry/blob/main/docs/calibration.md) | Physical SPL, digital full-scale, RMS vs peak |
@@ -115,7 +145,7 @@ Or browse the Markdown docs on GitHub:
115
145
 
116
146
  ```python
117
147
  import numpy as np
118
- from phonometry import octave_filter
148
+ from phonometry import metrology
119
149
 
120
150
  fs = 48000
121
151
  t = np.linspace(0, 1, fs, endpoint=False)
@@ -123,12 +153,23 @@ t = np.linspace(0, 1, fs, endpoint=False)
123
153
  signal = np.sin(2 * np.pi * 100 * t) + np.sin(2 * np.pi * 1000 * t)
124
154
 
125
155
  # Apply 1/3 octave filter bank
126
- spl, freq = octave_filter(signal, fs=fs, fraction=3)
156
+ spl, freq = metrology.octave_filter(signal, fs=fs, fraction=3)
127
157
 
128
158
  print(f"Bands: {freq}")
129
159
  print(f"SPL [dB]: {spl}")
130
160
  ```
131
161
 
162
+ The library is organized into fifteen domain namespaces; every public name is
163
+ also re-exported at the top level, so `from phonometry import octave_filter`
164
+ keeps working:
165
+
166
+ ```python
167
+ from phonometry import building, underwater
168
+
169
+ r = building.airborne_insulation(...)
170
+ tl = underwater.transmission_loss(...)
171
+ ```
172
+
132
173
  <img src="https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/signal_response_fraction_3.svg" alt="One-third-octave spectrum analysis of a multi-tone signal with the raw PSD in the background" width="80%">
133
174
 
134
175
  *1/3 Octave Band spectrum analysis of a complex signal. More examples in the
@@ -1,33 +1,3 @@
1
- Metadata-Version: 2.4
2
- Name: phonometry
3
- Version: 3.1.0
4
- Summary: Acoustic measurement toolkit: fractional octave-band filters, A/C/Z and time weighting, and sound level metrology per IEC 61260-1 and IEC 61672-1.
5
- Author-email: Jose Manuel Requena Plens <jmrplens@gmail.com>
6
- Project-URL: Homepage, https://github.com/jmrplens/phonometry
7
- Project-URL: Bug Tracker, https://github.com/jmrplens/phonometry/issues
8
- Classifier: Programming Language :: Python :: 3
9
- Classifier: Programming Language :: Python :: 3.13
10
- Classifier: Programming Language :: Python :: 3.14
11
- Classifier: License :: OSI Approved :: MIT License
12
- Classifier: Operating System :: OS Independent
13
- Classifier: Intended Audience :: Science/Research
14
- Classifier: Topic :: Multimedia :: Sound/Audio :: Analysis
15
- Classifier: Topic :: Scientific/Engineering :: Physics
16
- Classifier: Typing :: Typed
17
- Requires-Python: >=3.13
18
- Description-Content-Type: text/markdown
19
- License-File: LICENSE
20
- Requires-Dist: numpy>=2.4.4
21
- Requires-Dist: scipy>=1.17.1
22
- Provides-Extra: perf
23
- Requires-Dist: numba>=0.65.1; extra == "perf"
24
- Provides-Extra: plot
25
- Requires-Dist: matplotlib>=3.10.9; extra == "plot"
26
- Provides-Extra: full
27
- Requires-Dist: numba>=0.65.1; extra == "full"
28
- Requires-Dist: matplotlib>=3.10.9; extra == "full"
29
- Dynamic: license-file
30
-
31
1
  <!-- Package -->
32
2
  [![PyPI version](https://img.shields.io/pypi/v/phonometry?logo=pypi&logoColor=white)](https://pypi.org/project/phonometry/)
33
3
  [![Python versions](https://img.shields.io/pypi/pyversions/phonometry?logo=python&logoColor=white)](https://pypi.org/project/phonometry/)
@@ -45,7 +15,7 @@ Dynamic: license-file
45
15
 
46
16
  > *phonometry* — the measurement of sound. Formerly published as **PyOctaveBand**.
47
17
 
48
- Acoustic measurement toolkit for Python: fractional octave-band filter banks, frequency and time weighting, and sound level metrology — conformance-tested against **IEC 61260-1:2014 / ANSI S1.11-2004** (filters) and **IEC 61672-1:2013** (weighting and levels) class 1 tolerance limits.
18
+ Acoustic measurement toolkit for Python, from fractional octave-band filters, weighting and sound level metrology to psychoacoustics, rooms and buildings, vibration, environmental and aircraft noise, underwater acoustics, electroacoustics and wave simulation. Every metric is conformance-tested against its governing standard (371 checks across 46 domains and 235 standards), with class 1 filters per **IEC 61260-1:2014 / ANSI S1.11-2004** and class 1 weightings and levels per **IEC 61672-1:2013**.
49
19
 
50
20
  <img src="https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/filter_type_comparison.svg" alt="Magnitude response comparison of the five filter architectures for the 1 kHz octave band, with a zoom at the -3 dB crossover" width="80%">
51
21
 
@@ -53,18 +23,30 @@ Acoustic measurement toolkit for Python: fractional octave-band filter banks, fr
53
23
 
54
24
  - 🎛️ 1/1, 1/3 and arbitrary fractional octave filter banks (stable SOS + multirate decimation)
55
25
  - 🏗️ Five architectures: Butterworth, Chebyshev I/II, Elliptic, Bessel — all with −3 dB points on the ANSI band edges
56
- - 🔊 A/C/Z frequency weighting within IEC 61672-1 class 1 tolerances
26
+ - 🔊 A/C/Z frequency weighting within IEC 61672-1 class 1 tolerances, plus G weighting for infrasound (ISO 7196)
57
27
  - ⏱️ Fast/Slow/Impulse time ballistics, `Leq`, `LAeq` and `L10/L50/L90` statistical levels
58
28
  - 🗺️ Octave spectrogram (band levels over time) and zero-phase offline filtering
59
29
  - 🧠 Loudness in sones three ways: Zwicker (ISO 532-1 Annex B validated), Moore-Glasberg stationary & time-varying (ISO 532-2/3) and Sottek Hearing Model (ECMA-418-2); DIN 45692 sharpness, ISO 226:2023 contours
60
- - 🎻 Sound-quality metrics: ECMA-418-2 tonality (tu_HMS) and roughness (asper)
30
+ - 🎻 Sound-quality metrics: ECMA-418-2 tonality (tu_HMS), roughness (asper) and fluctuation strength (vacil_HMS)
61
31
  - 🗣️ Speech Transmission Index: STI and STIPA per IEC 60268-16 Ed. 5, with signal generator
62
32
  - 🎯 Tone prominence (TNR/PR, ECMA-418-1), environmental Lden/Ldn (ISO 1996-1), IEC 61252 noise dose
63
33
  - ↗️ Two-microphone sound intensity (IEC 61043) with ISO 9614-1 field indicators
64
34
  - 🏛️ Room & building acoustics: swept-sine/MLS impulse responses (ISO 18233), EDT/T20/T30/C50/C80/Ts (ISO 3382-1/2), open-plan speech metrics (ISO 3382-3), field airborne + impact + façade insulation with R′w/DnT,w/L′nT,w/D2m,nT,w and C/Ctr/CI (ISO 16283-1/2/3, ISO 717-1/2), laboratory R/Ln (ISO 10140), flanking-transmission prediction of R′w/L′n,w (EN 12354-1/2), measurement uncertainty (ISO 12999-1), sound absorption (ISO 354)
65
35
  - 🌬️ Outdoor propagation & occupational exposure: atmospheric absorption α(f) (ISO 9613-1), the ISO 9613-2 general method (divergence + atmospheric + ground + barrier terms) with a per-term octave-band breakdown, and daily noise exposure LEX,8h with task/job/full-day strategies and Annex C uncertainty (ISO 9612)
66
- - 🔊 Sound power LW three ways: enveloping-surface pressure (ISO 3744/3746), reverberation-room precision with Waterhouse/C1/C2 (ISO 3741), intensity scanning with field indicators and grade (ISO 9614-2)
36
+ - 🔊 Sound power LW five ways: enveloping-surface pressure (ISO 3744/3746), reverberation-room precision with Waterhouse/C1/C2 (ISO 3741), intensity scanning with field indicators and grade (ISO 9614-2), precision anechoic rooms (ISO 3745) and precision intensity scanning (ISO 9614-3), plus ISO 4871 noise-emission declarations
37
+ - 🦻 Hearing: age-related threshold distributions (ISO 7029) and noise-induced permanent threshold shift with HTLAN (ISO 1999)
38
+ - 🧱 Materials: absorption ratings αw (ISO 11654), impedance-tube absorption (ISO 10534-2), porous-absorber models, airflow resistance, scattering and diffusion (ISO 17497), dynamic stiffness
39
+ - 🔩 Vibration & structure-borne sound: mobility and FRFs (ISO 7626), isolator transfer stiffness (ISO 10846), sound power from surface vibration (ISO/TS 7849), reception-plate power (EN 15657), installed-source prediction (EN 12354-5) and human vibration (ISO 2631-1/-5, ISO 5349)
40
+ - ✈️ Aircraft noise: EPNL certification chain (ICAO Annex 16) with IEC 61265 verification and SAE ARP 5534 absorption, ECAC Doc 29 airport contours with the EASA ANP fleet database, and the ECAC Doc 32 rotorcraft hemisphere method
41
+ - 🌊 Underwater acoustics: ISO 18405 levels re 1 µPa, ship radiated noise (ISO 17208-1/2), pile driving (ISO 18406), sonar equation, Wenz/JOMOPANS-ECHO ambient noise, and transmission loss from spreading laws to normal-mode, ray and parabolic-equation solvers
42
+ - 🔈 Electroacoustics: distortion per IEC 60268-3 (THD, THD+N, SMPTE/CCIF intermodulation, DIM), frequency response and coherence, rigid-piston radiation, and loudspeaker/microphone rated characteristics (IEC 60268-5/-4)
43
+ - 🔇 Noise control: silencer insertion loss, enclosures and HVAC spectra
44
+ - 🌐 Deterministic 2D FDTD wave simulation with sources, probes, rasterised obstacles and rigid/impedance/absorbing boundaries
45
+ - 📄 Typed, frozen result dataclasses with `.plot(language="en"|"es")` figures and normative `.report()` PDF fiches (ISO 717, ISO 11654, ISO 532-1, EBU R 128, ICAO EPNL, IEC 61260-1, ISO 4871, IEC 60268-5/-4); documentation fully in English and Spanish
67
46
  - 📏 Physical SPL calibration with IEC 60942:2017 stability validation, and dBFS modes
47
+ - 📉 Calibrated spectral analysis (Bendat & Piersol): PSD/CSD with chi-square confidence intervals and random errors, coherent output spectrum & spectral SNR, 1/n-octave smoothing, exact-slope colored-noise generators
48
+ - ⏱️ Correlation & time-delay estimation (Bendat & Piersol, Knapp & Carter): biased/unbiased/coefficient correlation with random errors, GCC with Roth/SCOT/PHAT/ML weightings, sub-sample IR delay & alignment, Hilbert envelope with instantaneous frequency
49
+ - 🌀 Swept-sine distortion & phase utilities: harmonic separation and THD(f) from one exponential sweep (Farina 2000, Novak et al. 2015 synchronized sweep), minimum phase from |H|, group delay & excess phase
68
50
  - ⚡ Vectorized multichannel processing and stateful block (real-time) workflows
69
51
 
70
52
  ## 🚀 Installation
@@ -73,7 +55,7 @@ Acoustic measurement toolkit for Python: fractional octave-band filter banks, fr
73
55
  pip install phonometry
74
56
  ```
75
57
 
76
- Optional extras: `phonometry[plot]` (matplotlib for response plots and result `.plot()` methods), `phonometry[perf]` (numba for faster impulse ballistics), `phonometry[full]` (both).
58
+ Optional extras: `phonometry[plot]` (matplotlib for response plots and result `.plot()` methods), `phonometry[perf]` (numba for faster impulse ballistics), `phonometry[report]` (reportlab and svglib, so result `.report()` methods can render normative PDF fiches), `phonometry[full]` (all of the above).
77
59
 
78
60
  ## 📚 Documentation
79
61
 
@@ -90,17 +72,25 @@ Or browse the Markdown docs on GitHub:
90
72
  | [Levels](https://github.com/jmrplens/phonometry/blob/main/docs/levels.md) | Leq, LAeq, percentiles, LCpeak, SEL, noise dose (IEC 61252), Lden and rating levels (ISO 1996-1), octave spectrogram |
91
73
  | [Occupational Exposure](https://github.com/jmrplens/phonometry/blob/main/docs/occupational-exposure.md) | ISO 9612 task-based, job-based and full-day strategies with the Annex C uncertainty budget (LEX,8h + U) |
92
74
  | [Tone Prominence](https://github.com/jmrplens/phonometry/blob/main/docs/tone-prominence.md) | ECMA-418-1 tone-to-noise ratio and prominence ratio with frequency-dependent prominence criteria |
93
- | [Psychoacoustics](https://github.com/jmrplens/phonometry/blob/main/docs/psychoacoustics.md) | Zwicker (ISO 532-1), Moore-Glasberg (ISO 532-2/3) and Sottek (ECMA-418-2) loudness, sharpness (DIN 45692), equal-loudness contours (ISO 226), tonality & roughness (ECMA-418-2) |
75
+ | [Loudness](https://github.com/jmrplens/phonometry/blob/main/docs/loudness.md) | Zwicker (ISO 532-1), Moore-Glasberg (ISO 532-2/3) and Sottek (ECMA-418-2) loudness in sones, plus the equal-loudness contours (ISO 226) |
76
+ | [Sound Quality Metrics](https://github.com/jmrplens/phonometry/blob/main/docs/sound-quality.md) | Sharpness (DIN 45692) and the ECMA-418-2 Sottek Hearing Model tonality, roughness & fluctuation strength |
94
77
  | [Speech Transmission](https://github.com/jmrplens/phonometry/blob/main/docs/speech-transmission.md) | STI/STIPA (IEC 60268-16): modulation transfer function, indirect method from impulse responses and direct STIPA measurement |
95
78
  | [Speech Intelligibility Index](https://github.com/jmrplens/phonometry/blob/main/docs/speech-intelligibility.md) | SII (ANSI S3.5-1997): band importance, masking and audibility, the index in noise and hearing loss, standard vocal-effort spectra |
96
79
  | [Electroacoustics](https://github.com/jmrplens/phonometry/blob/main/docs/electroacoustics.md) | Distortion (IEC 60268-3): THD, nth-order harmonic, THD+N & SINAD (AES17), SMPTE & CCIF intermodulation, DIM and weighted THD; frequency response & coherence (Bendat & Piersol H1/H2) |
80
+ | [Swept-Sine Distortion & Phase](https://github.com/jmrplens/phonometry/blob/main/docs/swept-sine-distortion.md) | Harmonic separation & THD(f) from one exponential sweep (Farina 2000; Novak et al. 2015 synchronized sweep with coherent harmonic phases); minimum phase from \|H\| (real cepstrum), group delay & excess phase |
81
+ | [Calibrated Spectral Analysis](https://github.com/jmrplens/phonometry/blob/main/docs/spectral-analysis.md) | Welch PSD/CSD with effective averages, random errors & chi-square confidence intervals; coherent output spectrum & spectral SNR; 1/n-octave smoothing; colored-noise generators (Bendat & Piersol) |
82
+ | [Programme Loudness](https://github.com/jmrplens/phonometry/blob/main/docs/program-loudness.md) | ITU-R BS.1770-5 programme loudness (K-weighting, gating, multichannel weights incl. Annex 3) and true peak in dBTP; EBU R 128 with the Tech 3341 EBU Mode M/S/I meters and the Tech 3342 loudness range |
83
+ | [Correlation, Time Delay & Envelope](https://github.com/jmrplens/phonometry/blob/main/docs/correlation-delay.md) | Auto/cross-correlation with B&P normalizations & random errors; TDE by direct correlation, cross-spectrum phase slope & Knapp-Carter GCC (Roth/SCOT/PHAT/ML); sub-sample IR delay & alignment; Hilbert envelope & instantaneous frequency |
97
84
  | [Underwater Acoustics](https://github.com/jmrplens/phonometry/blob/main/docs/underwater-acoustics.md) | Reference levels re 1 µPa (SPL, SEL, peak; ISO 18405); ship radiated noise & equivalent monopole source level (ISO 17208); pile-driving single-strike, peak & cumulative SEL (ISO 18406) |
98
85
  | [Underwater Sound Propagation](https://github.com/jmrplens/phonometry/blob/main/docs/underwater-propagation.md) | Transmission loss (geometrical spreading + volume absorption: Francois-Garrison, Ainslie-McColm, Thorp); speed of sound in sea water (UNESCO/Chen-Millero, Del Grosso, Mackenzie); passive & active sonar equation; seabed reflection loss (Rayleigh); ocean ambient noise (Wenz wind/thermal + JOMOPANS-ECHO ship traffic); numerical solvers (normal modes, ray tracing, parabolic equation) |
99
86
  | [Aircraft Noise](https://github.com/jmrplens/phonometry/blob/main/docs/aircraft-noise.md) | Effective Perceived Noise Level (ICAO Annex 16): perceived noisiness & PNL, tone correction, 10 dB-down duration correction (EPNL); IEC 61265 measurement-system verification; SAE ARP 5534 one-third-octave-band atmospheric absorption; ECAC Doc 29 noise-power-distance (NPD) event-level interpolation |
100
87
  | [Wind-Turbine Noise](https://github.com/jmrplens/phonometry/blob/main/docs/wind-turbine-noise.md) | Apparent sound power level referred to the rotor centre and tonal audibility (Zwicker critical band, masking-noise level, audibility criterion) — IEC 61400-11 |
101
88
  | [Sound Intensity](https://github.com/jmrplens/phonometry/blob/main/docs/intensity.md) | Two-microphone p-p intensity (IEC 61043), ISO 9614-1 field indicators |
102
89
  | [Room Acoustics](https://github.com/jmrplens/phonometry/blob/main/docs/room-acoustics.md) | Impulse responses (ISO 18233), room parameters (ISO 3382-1/2), open-plan metrics (ISO 3382-3), sound absorption (ISO 354) |
103
- | [Building Acoustics](https://github.com/jmrplens/phonometry/blob/main/docs/building-acoustics.md) | Field airborne + impact + façade insulation and weighted ratings (ISO 16283-1/2/3, ISO 717-1/2), laboratory characterisation (ISO 10140), flanking-transmission prediction (EN 12354-1/2), measurement uncertainty (ISO 12999-1) |
90
+ | [Image Sources & Steady-State Field](https://github.com/jmrplens/phonometry/blob/main/docs/room-image-sources.md) | Image-source room impulse response of a shoebox (Kuttruff/Vorländer), and the steady-state level with the room constant, critical distance and Schroeder frequency (Bies) |
91
+ | [Field Insulation Measurement and Ratings](https://github.com/jmrplens/phonometry/blob/main/docs/insulation-field.md) | Field airborne + impact + façade insulation and weighted ratings (ISO 16283-1/2/3, ISO 717-1/2), measurement uncertainty (ISO 12999-1) and the ISO 10052 survey method |
92
+ | [Laboratory Insulation Measurement](https://github.com/jmrplens/phonometry/blob/main/docs/insulation-lab.md) | Laboratory characterisation (ISO 10140), sound insulation by intensity (ISO 15186), floor-covering impact improvement (ISO 16251-1) and laboratory flanking transmission (ISO 10848) |
93
+ | [Predicting Sound Insulation (EN 12354)](https://github.com/jmrplens/phonometry/blob/main/docs/insulation-prediction.md) | Flanking-transmission prediction (EN 12354-1/2), façade insulation and outdoor radiation (EN 12354-3/4) |
104
94
  | [Outdoor Sound Propagation](https://github.com/jmrplens/phonometry/blob/main/docs/outdoor-propagation.md) | Atmospheric absorption α(f) (ISO 9613-1) and the ISO 9613-2 general method: geometrical divergence, atmospheric absorption, ground effect, barrier screening and meteorological correction |
105
95
  | [Sound Power](https://github.com/jmrplens/phonometry/blob/main/docs/sound-power.md) | Sound power level LW by enveloping surface (ISO 3744/3746), reverberation room (ISO 3741) and intensity scanning (ISO 9614-2) |
106
96
  | [Calibration and dBFS](https://github.com/jmrplens/phonometry/blob/main/docs/calibration.md) | Physical SPL, digital full-scale, RMS vs peak |
@@ -115,7 +105,7 @@ Or browse the Markdown docs on GitHub:
115
105
 
116
106
  ```python
117
107
  import numpy as np
118
- from phonometry import octave_filter
108
+ from phonometry import metrology
119
109
 
120
110
  fs = 48000
121
111
  t = np.linspace(0, 1, fs, endpoint=False)
@@ -123,12 +113,23 @@ t = np.linspace(0, 1, fs, endpoint=False)
123
113
  signal = np.sin(2 * np.pi * 100 * t) + np.sin(2 * np.pi * 1000 * t)
124
114
 
125
115
  # Apply 1/3 octave filter bank
126
- spl, freq = octave_filter(signal, fs=fs, fraction=3)
116
+ spl, freq = metrology.octave_filter(signal, fs=fs, fraction=3)
127
117
 
128
118
  print(f"Bands: {freq}")
129
119
  print(f"SPL [dB]: {spl}")
130
120
  ```
131
121
 
122
+ The library is organized into fifteen domain namespaces; every public name is
123
+ also re-exported at the top level, so `from phonometry import octave_filter`
124
+ keeps working:
125
+
126
+ ```python
127
+ from phonometry import building, underwater
128
+
129
+ r = building.airborne_insulation(...)
130
+ tl = underwater.transmission_loss(...)
131
+ ```
132
+
132
133
  <img src="https://raw.githubusercontent.com/jmrplens/phonometry/main/.github/images/signal_response_fraction_3.svg" alt="One-third-octave spectrum analysis of a multi-tone signal with the raw PSD in the background" width="80%">
133
134
 
134
135
  *1/3 Octave Band spectrum analysis of a complex signal. More examples in the
@@ -0,0 +1 @@
1
+ 3.3.0
@@ -0,0 +1,122 @@
1
+ [build-system]
2
+ requires = ["setuptools>=83.0.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "phonometry"
7
+ dynamic = ["version"]
8
+ authors = [
9
+ { name="Jose Manuel Requena Plens", email="jmrplens@gmail.com" },
10
+ ]
11
+ description = "Acoustic measurement toolkit: fractional octave-band filters, A/C/Z and time weighting, and sound level metrology per IEC 61260-1 and IEC 61672-1."
12
+ readme = "README.md"
13
+ requires-python = ">=3.13"
14
+ # Search terms for PyPI: the domains the library actually covers, plus the
15
+ # designations of the standards its metrics are implemented from, so a search
16
+ # for a standard number finds the package.
17
+ keywords = [
18
+ "acoustics",
19
+ "sound level meter",
20
+ "sound level",
21
+ "octave band",
22
+ "fractional octave band",
23
+ "octave filter bank",
24
+ "frequency weighting",
25
+ "signal processing",
26
+ "psychoacoustics",
27
+ "loudness",
28
+ "sharpness",
29
+ "roughness",
30
+ "room acoustics",
31
+ "reverberation time",
32
+ "sound absorption",
33
+ "sound insulation",
34
+ "building acoustics",
35
+ "sound power",
36
+ "vibration",
37
+ "human vibration exposure",
38
+ "environmental noise",
39
+ "aircraft noise",
40
+ "underwater acoustics",
41
+ "electroacoustics",
42
+ "loudspeaker measurement",
43
+ "broadcast loudness",
44
+ "noise control",
45
+ "acoustic metrology",
46
+ "standards conformance",
47
+ "ANSI S1.11",
48
+ "IEC 61260-1",
49
+ "IEC 61672-1",
50
+ "IEC 60942",
51
+ "IEC 60268-3",
52
+ "ISO 226",
53
+ "ISO 532-1",
54
+ "ISO 354",
55
+ "ISO 3382-1",
56
+ "ISO 717-1",
57
+ "ISO 16283-1",
58
+ "EN 12354",
59
+ "ISO 1996-1",
60
+ "ISO 9613-2",
61
+ "ISO 2631-1",
62
+ "ISO 7196",
63
+ "ECMA-418-1",
64
+ "EBU R 128",
65
+ "ITU-R BS.1770",
66
+ "ICAO Annex 16",
67
+ ]
68
+ classifiers = [
69
+ "Programming Language :: Python :: 3",
70
+ "Programming Language :: Python :: 3.13",
71
+ "Programming Language :: Python :: 3.14",
72
+ "License :: OSI Approved :: MIT License",
73
+ "Operating System :: OS Independent",
74
+ "Intended Audience :: Science/Research",
75
+ "Topic :: Multimedia :: Sound/Audio :: Analysis",
76
+ "Topic :: Scientific/Engineering :: Physics",
77
+ "Typing :: Typed",
78
+ ]
79
+ dependencies = [
80
+ "numpy>=2.4.4",
81
+ "scipy>=1.18.0",
82
+ ]
83
+
84
+ [project.optional-dependencies]
85
+ perf = ["numba>=0.66.0"]
86
+ plot = ["matplotlib>=3.11.1"]
87
+ report = ["reportlab>=5.0.0", "svglib>=2.0.2"]
88
+ full = ["numba>=0.66.0", "matplotlib>=3.11.1", "reportlab>=5.0.0", "svglib>=2.0.2"]
89
+
90
+ [project.urls]
91
+ "Homepage" = "https://github.com/jmrplens/phonometry"
92
+ "Documentation" = "https://jmrplens.github.io/phonometry/"
93
+ "Source" = "https://github.com/jmrplens/phonometry"
94
+ "Changelog" = "https://github.com/jmrplens/phonometry/blob/main/CHANGELOG.md"
95
+ "Bug Tracker" = "https://github.com/jmrplens/phonometry/issues"
96
+ "DOI" = "https://doi.org/10.5281/zenodo.21215280"
97
+
98
+ [tool.setuptools.packages.find]
99
+ where = ["src"]
100
+
101
+ [tool.setuptools.package-data]
102
+ phonometry = ["py.typed", "aircraft/data/anp/*.csv", "aircraft/data/anp/*.md"]
103
+
104
+ [tool.setuptools.dynamic]
105
+ version = {file = "VERSION"}
106
+
107
+ [tool.mypy]
108
+ python_version = "3.13"
109
+ strict = true
110
+ ignore_missing_imports = true
111
+
112
+ [tool.bandit]
113
+ exclude_dirs = ["tests", ".venv"]
114
+
115
+ [tool.coverage.run]
116
+ relative_files = true
117
+
118
+ [tool.pytest.ini_options]
119
+ pythonpath = ["tests"]
120
+ filterwarnings = [
121
+ "ignore:Low sampling rate:UserWarning",
122
+ ]