Skip to main content

Dynamic Range (DR) algorithm implementation in python

Project description

Dynamic Range (DR) meter ๐ŸŽง

Tests Coverage Status Docker

PyPI PyPI - Python Version PyPI - Downloads

Linter/Formatter: Ruff Code style: Black Dependency management: poetry

A Dynamic Range (DR) analyzer for audiofiles.

Asciicast of installing and using drmeter

The algorithm has been reverse-engineered using the available information and officially endorsed software to calcuate the DR value. The analysis results of drmeter are verified to be within a ยฑ0.5 absolute tolerance from the results produced by officially endorsed software (see #testing).

This project is in no way affiliated with the Pleasurize Music Foundation or its Dynamic Range Project.

Installation

The recommended method for using drmeter is with uv and uvx specifically:

uvx drmeter --help

Any regular pip install drmeter will do, too.

There is also a container image available at codeberg.org/janw/drmeter:

docker run --rm --tty --workdir /src -v "$PWD:/src" \
    codeberg.org/janw/drmeter --output json path/to/files

Usage

See drmeter --help for usage instructions. drmeter expects a single path to a file or a directory to analyze, and defaults to an "animated" progress display, emitting the results to stdout in the process.

$ drmeter 'Nobody There (Beautiful Scars).wav'
Analyzing Dynamic Range of Nobody There (Beautiful Scars).wav ...

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ DR            Peak          RMS   Filename                           โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ DR12      -0.10 dB    -15.02 dB   Nobody There (Beautiful Scars).wav โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

Using the --quiet/-q flag will silence most of the output and only print the calculated DR score to stdout:

$ drmeter 'Nobody There (Beautiful Scars).wav' -q
DR12

Alternatively drmeter supports a more detailed JSON-formatted output using the --output/-o json parameter, including both per-channel and totaled results. Using the --output parameter redirects the progress display to stderr, so that the formatted output can be piped to other applications or to file. If you do not require the progress display, it can be silenced using --quiet/-q here, too.

# Save a copy to file
$ drmeter -ojson -q 'Nobody There (Beautiful Scars).wav' | tee dr.json
{
  "filename": "/โ€ฆ/Nobody There (Beautiful Scars).wav",
  "dr_score": [
    11.93,
    11.63
  ],
  "peak_db": [
    โ€ฆ
  ]
}
# Parse JSON using jq
$ drmeter -ojson -q 'Nobody There (Beautiful Scars).wav' | jq '.[].overall_dr_score'
11.78

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

drmeter-0.4.6.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

drmeter-0.4.6-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file drmeter-0.4.6.tar.gz.

File metadata

  • Download URL: drmeter-0.4.6.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for drmeter-0.4.6.tar.gz
Algorithm Hash digest
SHA256 9ebba0cb05db585658786b338f2c1bd6058a85d5f15937968f65305edc344ab7
MD5 b913a53c8e58d447561bbc391f6b8b0a
BLAKE2b-256 56674293233bb235d586268d0b85072c1e1268bb48172e9e51e95c31146dbf86

See more details on using hashes here.

File details

Details for the file drmeter-0.4.6-py3-none-any.whl.

File metadata

  • Download URL: drmeter-0.4.6-py3-none-any.whl
  • Upload date:
  • Size: 12.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for drmeter-0.4.6-py3-none-any.whl
Algorithm Hash digest
SHA256 a4751b438d3f99a29b2516081e35f8997d43c942f0a369614b51eed04235e96d
MD5 7f48f09c452dd7781b7e5d97cee697b5
BLAKE2b-256 6aa23ae2dc34854d932d6c86c39af61140fe0044f9b5b36b3f152cd787c32c00

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page