Giter Club home page Giter Club logo

audio_limiter's Introduction

Audio Limiter

This is an audio limiter, a tool to restrict audio signals to a specific range (typically -1 to 1) while reducing perceived distortion.

This audio limiter works by filling a delay line with samples of the incoming signal. This delay line is searched for peaks that exceed the range even after being multiplied by the attenuation signal. If a peak is found, the attenuation signal is adjusted to make that peak lie within the range. The attenuation signal is the convolution of impulses placed some samples before the signal value to be attenuated and a signal consisting of half of a Hann window for the ramp up, and an exponential decay of an infinite impulse-response (IIR) filter for the ramp down. In this way, the attenuation signal can be updated efficiently for future values (simply by computing the output of the filter).

Noise Gate

There is also a very simple noise gate. This simply makes the signal 0 by multiplying with an attenuation signal if the power as estimated over a local window is less than some threshold. There is some fading done to smooth the attenuation signal.

Using

Limiter

Some optimization has been done to use this on the ARM Cortex-M4 architecture. See the liblimiter_ir_af.a recipe in arm_cm4.mk for a command line that will compile the limiter into a library for this architecture.

You can also compile a simple program that will limit little-endian float-32 encoded files. See the bin/limit_mono_f32 recipe of tools/Makefile

Noise Gate

To compile a simple program that applies a noise gate to a little-endian float-32 encoded file, see the bin/noise_gate_mono_f32 recipe of tools/Makefile.

Copyright, License and Warranty

All source code in this repository is Copyright (c) 2019 Nicholas Esterer.

All source code in this repository is covered under the GNU General Public License V3 (https://www.gnu.org/licenses/gpl-3.0.en.html).

Please contact nicholas dot esterer at gmail dot com for other licensing.

This software comes with absolutely no warranty.

audio_limiter's People

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

audio_limiter's Issues

[REQ] add a (GH-compliant) license file

Hi there, 1st of all thanks for this awesome work !

Since we've 'doxed' it in our HyMPS project (under AUDIO resources \ Effects \ General page \ Limiting), can you please add a GH-compliant license file for it ?

As you know, expliciting licensing terms is extremely important to let anyone better/faster understand how to reuse/adapt/modify sources (and not only) in other open projects and vice-versa.

Although it may sounds like a minor aspect, license file omission obviously causes an inconsistent generation of the relative badge too:


(badge-generator URL: https://badgen.net/github/license/mondaugen/audio_limiter)

You can easily set a standardized one through the GH's license wizard tool.

Last but not least, let us know how we could improve - in your opinion - our categorizations and links to resources in order to favor collaboration between developers (and therefore evolution) of listed projects.

Hope that helps/inspires !

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.