Skip to main content

Audio limiter in Cython.

Project description

cylimiter

A small package with stateful audio limiter implementation in Cython. Since the limiter is stateful it is suitable for streaming audio processing.

Examples

import numpy as np
from cylimiter import Limiter

limiter = Limiter(attack=0.5, release=0.9, delay=100, threshold=0.9)
chunk_size = 1200  # for streaming processing

# Example of applying limiter in-place (more efficient)
audio = np.random.randn(44100) * 10
for i in range(0, 44100, chunk_size):
    chunk = audio[i * chunk_size: (i + 1) * chunk_size]
    limiter.limit_inplace(chunk)
    # ... do sth with chunk

# Example of applying limiter that copies the signal
audio = np.random.randn(1, 44100) * 10
audio_lim = limiter.limit(audio)

# Reset the limiter to re-use it on other signals
limiter.reset()

Installation

From PyPI via pip:

pip install cylimiter

From source:

git clone https://github.com/pzelasko/cylimiter
cd cylimiter
pip install .

Re-generate C++ sources from Cython:

cd extensions
cython -3 --cplus *.pyx

Motivation

I couldn't easily find a package that implements audio limiter in Python in a suitable way for streaming audio. The closest (and the main inspiration) is this gist by @bastibe. Since the algorithm is auto-regressive, I figured C++ will be much more efficient than Python.

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

cylimiter-0.2.0.tar.gz (44.7 kB view details)

Uploaded Source

Built Distribution

cylimiter-0.2.0-cp310-cp310-macosx_11_0_arm64.whl (32.4 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

File details

Details for the file cylimiter-0.2.0.tar.gz.

File metadata

  • Download URL: cylimiter-0.2.0.tar.gz
  • Upload date:
  • Size: 44.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.4

File hashes

Hashes for cylimiter-0.2.0.tar.gz
Algorithm Hash digest
SHA256 463adf43fa81e48b132849fce18bf925547db627bbee584edef4eccab496061e
MD5 c654f51d0bbd0a32a5a4cfb764099524
BLAKE2b-256 e3937f65edeadf39d6f880f3b2503fa52f47bfe52778cd9c321a0a45bf7aef0a

See more details on using hashes here.

File details

Details for the file cylimiter-0.2.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cylimiter-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3ff032dd1d5d6c2db94fa706705cda2d21cf7ae8f1dee8bd255b6405080923bf
MD5 fd9a1645f6ba17f60fb4f7eb184cfcd7
BLAKE2b-256 e6781d564ce0c990da359059c98e85350b761d30ca0f9e0f11b32342b5f29601

See more details on using hashes here.

Supported by

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