# PALA โ Python Audio Loudness Analysis
PALA is a modular Python package for measuring audio loudness according to the ITU-R BS.1770-5 standard.\
It provides LUFS (I/S/M), True Peak, RMS, DR and LRA calculations with K-weighting and gating.
---
## ๐ Purpose
The aim of PALA is to offer a unified, open-source loudness analysis tool for:
- mastering and post-production engineers
- researchers in psychoacoustics and signal processing
- developers building automated workflows
---
## ๐ข Installation
```bash
pip install pala
```
Or from source:
```bash
git clone https://github.com/HBB-ThinkTank/PALA.git
cd PALA
pip install .
```
---
## ๐ง Features (v0.2.0)
- โ
LUFS calculation (Integrated, Short-Term, Momentary)
- โ
True Peak (with oversampling), Sample Peak
- โ
RMS (AES and ITU-R variants)
- โ
DR (Dynamic Range), Crest Factor, Headroom
- โ
Loudness Range (LRA using 10โ95 percentile)
- โ
Chunked processing for large audio files
- โ
Modular structure with `lufs`, `dynamics`, `utils`, `io`
---
## ๐ Development Roadmap
### Equal-Loudness Curves (Fletcher-Munson)
- ๐ ๏ธ **Integration into frequency weighting**
- ๐ ๏ธ **Application to LUFS evaluation**
### Frequency Analysis
- ๐ ๏ธ **FFT or Bark/octave band analysis**
- ๐ ๏ธ **Loudness per frequency band**
### LRA (Loudness Range)
- โ
**LRA based on LUFS segments (10โ95 percentile)**
- ๐ ๏ธ **Interchannel gating / hysteresis**
### LUFS Calculation (ITU-R BS.1770)
- โ
**Momentary LUFS (400ms)**
- โ
**Short-Term LUFS (3s)**
- โ
**Integrated LUFS**
- โ
**Gating: Absolute (-70 LUFS)**
- โ
**Gating: Relative (-10 LU below average level)**
- โ
**Multichannel weighting (e.g. 1.0, 1.41)**
- ๐ ๏ธ **Comparison with reference tools (e.g. pyloudnorm, ffmpeg)**
- ๐ ๏ธ **Validation using ITU-R BS.2217 material**
### Package Structure & Interfaces
- โ
**Modular package with analysis/lufs/dynamics/utils/io**
- โ
**Chunking support for large files**
- โ
**CLI support for single file input**
- ๐ ๏ธ **CLI batch mode**
- ๐ ๏ธ **Plot output (e.g. LUFS-M time curve)**
### True Peak / Peak / RMS / DR
- โ
**True Peak with oversampling**
- โ
**Sample Peak (maximum sample value)**
- โ
**AES RMS (unweighted)**
- โ
**ITU-R RMS (K-weighted)**
- โ
**Crest Factor / Headroom**
- โ
**DR (True Peak - RMS)**
### Publishing & Distribution
- โ
**setup.cfg / pyproject.toml**
- โ
**GitHub with README**
- ๐ ๏ธ **Upload to PyPI (production release)**
---
## ๐ฎ Status
This project is in **alpha** stage. Results are close to professional tools (e.g. ffmpeg, pyloudnorm, APU plugins)\
but not yet fully validated against ITU-R BS.2217 reference material.
Expect minor deviations (especially for edge cases or extreme signals).
---
## ๐ ๏ธ Requirements
- Python 3.8+
- numpy, scipy, soundfile, soxr, numba
---
## ๐ License
MIT License โ free to use, modify and redistribute.
---
## ๐ Contributions Welcome
Youโre invited to test, extend or improve the code โ feel free to open issues or pull requests.
Raw data
{
"_id": null,
"home_page": "https://github.com/HBB-ThinkTank/PALA",
"name": "PALA",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "audio, loudness, LUFS, ITU-R BS.1770, true peak, RMS, analysis",
"author": "HBB-ThinkTank",
"author_email": "HBB-ThinkTank <your-email@example.com>",
"download_url": "https://files.pythonhosted.org/packages/09/1b/73891e807fef13bed108e426bbf13e00eb4e85904513b48afe13a7d7b88b/pala-0.2.0.tar.gz",
"platform": null,
"description": "# PALA \u2013 Python Audio Loudness Analysis\r\n\r\nPALA is a modular Python package for measuring audio loudness according to the ITU-R BS.1770-5 standard.\\\r\nIt provides LUFS (I/S/M), True Peak, RMS, DR and LRA calculations with K-weighting and gating.\r\n\r\n---\r\n\r\n## \ud83c\udf47 Purpose\r\n\r\nThe aim of PALA is to offer a unified, open-source loudness analysis tool for:\r\n\r\n- mastering and post-production engineers\r\n- researchers in psychoacoustics and signal processing\r\n- developers building automated workflows\r\n\r\n---\r\n\r\n## \ud83c\udfe2 Installation\r\n\r\n```bash\r\npip install pala\r\n```\r\n\r\nOr from source:\r\n\r\n```bash\r\ngit clone https://github.com/HBB-ThinkTank/PALA.git\r\ncd PALA\r\npip install .\r\n```\r\n\r\n---\r\n\r\n## \ud83e\udde0 Features (v0.2.0)\r\n\r\n- \u2705 LUFS calculation (Integrated, Short-Term, Momentary)\r\n- \u2705 True Peak (with oversampling), Sample Peak\r\n- \u2705 RMS (AES and ITU-R variants)\r\n- \u2705 DR (Dynamic Range), Crest Factor, Headroom\r\n- \u2705 Loudness Range (LRA using 10\u201395 percentile)\r\n- \u2705 Chunked processing for large audio files\r\n- \u2705 Modular structure with `lufs`, `dynamics`, `utils`, `io`\r\n\r\n---\r\n\r\n## \ud83d\udcca Development Roadmap\r\n\r\n### Equal-Loudness Curves (Fletcher-Munson)\r\n\r\n- \ud83d\udee0\ufe0f **Integration into frequency weighting**\r\n- \ud83d\udee0\ufe0f **Application to LUFS evaluation**\r\n\r\n### Frequency Analysis\r\n\r\n- \ud83d\udee0\ufe0f **FFT or Bark/octave band analysis**\r\n- \ud83d\udee0\ufe0f **Loudness per frequency band**\r\n\r\n### LRA (Loudness Range)\r\n\r\n- \u2705 **LRA based on LUFS segments (10\u201395 percentile)**\r\n- \ud83d\udee0\ufe0f **Interchannel gating / hysteresis**\r\n\r\n### LUFS Calculation (ITU-R BS.1770)\r\n\r\n- \u2705 **Momentary LUFS (400ms)**\r\n- \u2705 **Short-Term LUFS (3s)**\r\n- \u2705 **Integrated LUFS**\r\n- \u2705 **Gating: Absolute (-70 LUFS)**\r\n- \u2705 **Gating: Relative (-10 LU below average level)**\r\n- \u2705 **Multichannel weighting (e.g. 1.0, 1.41)**\r\n- \ud83d\udee0\ufe0f **Comparison with reference tools (e.g. pyloudnorm, ffmpeg)**\r\n- \ud83d\udee0\ufe0f **Validation using ITU-R BS.2217 material**\r\n\r\n### Package Structure & Interfaces\r\n\r\n- \u2705 **Modular package with analysis/lufs/dynamics/utils/io**\r\n- \u2705 **Chunking support for large files**\r\n- \u2705 **CLI support for single file input**\r\n- \ud83d\udee0\ufe0f **CLI batch mode**\r\n- \ud83d\udee0\ufe0f **Plot output (e.g. LUFS-M time curve)**\r\n\r\n### True Peak / Peak / RMS / DR\r\n\r\n- \u2705 **True Peak with oversampling**\r\n- \u2705 **Sample Peak (maximum sample value)**\r\n- \u2705 **AES RMS (unweighted)**\r\n- \u2705 **ITU-R RMS (K-weighted)**\r\n- \u2705 **Crest Factor / Headroom**\r\n- \u2705 **DR (True Peak - RMS)**\r\n\r\n### Publishing & Distribution\r\n\r\n- \u2705 **setup.cfg / pyproject.toml**\r\n- \u2705 **GitHub with README**\r\n- \ud83d\udee0\ufe0f **Upload to PyPI (production release)**\r\n\r\n---\r\n\r\n## \ud83d\udd2e Status\r\n\r\nThis project is in **alpha** stage. Results are close to professional tools (e.g. ffmpeg, pyloudnorm, APU plugins)\\\r\nbut not yet fully validated against ITU-R BS.2217 reference material.\r\n\r\nExpect minor deviations (especially for edge cases or extreme signals).\r\n\r\n---\r\n\r\n## \ud83d\udee0\ufe0f Requirements\r\n\r\n- Python 3.8+\r\n- numpy, scipy, soundfile, soxr, numba\r\n\r\n---\r\n\r\n## \ud83d\udcc4 License\r\n\r\nMIT License \u2013 free to use, modify and redistribute.\r\n\r\n---\r\n\r\n## \ud83d\ude4c Contributions Welcome\r\n\r\nYou\u2019re invited to test, extend or improve the code \u2013 feel free to open issues or pull requests.\r\n\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python Audio Loudness Analysis",
"version": "0.2.0",
"project_urls": {
"Homepage": "https://github.com/HBB-ThinkTank/PALA",
"Issues": "https://github.com/HBB-ThinkTank/PALA/issues",
"Repository": "https://github.com/HBB-ThinkTank/PALA"
},
"split_keywords": [
"audio",
" loudness",
" lufs",
" itu-r bs.1770",
" true peak",
" rms",
" analysis"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "2d21a588ff39b7d53a62ea397316b211f892f7da8dc97c1f388ccdaec215007d",
"md5": "3f2b769c4a3670d66772c1a08d4671fd",
"sha256": "c2a96775438247d00d1a33b72c56326ba7b38c28b1773ab4abfc23fb8d6d17a3"
},
"downloads": -1,
"filename": "pala-0.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3f2b769c4a3670d66772c1a08d4671fd",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 12878,
"upload_time": "2025-07-19T22:19:11",
"upload_time_iso_8601": "2025-07-19T22:19:11.569707Z",
"url": "https://files.pythonhosted.org/packages/2d/21/a588ff39b7d53a62ea397316b211f892f7da8dc97c1f388ccdaec215007d/pala-0.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "091b73891e807fef13bed108e426bbf13e00eb4e85904513b48afe13a7d7b88b",
"md5": "0f7e391626c5a6b6588dab6af40b06e2",
"sha256": "891ab22546003940638e8a8e6ad313428d665d9dc33f08745386166512ba3ed1"
},
"downloads": -1,
"filename": "pala-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "0f7e391626c5a6b6588dab6af40b06e2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 13114,
"upload_time": "2025-07-19T22:19:12",
"upload_time_iso_8601": "2025-07-19T22:19:12.568058Z",
"url": "https://files.pythonhosted.org/packages/09/1b/73891e807fef13bed108e426bbf13e00eb4e85904513b48afe13a7d7b88b/pala-0.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-19 22:19:12",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "HBB-ThinkTank",
"github_project": "PALA",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "pala"
}