Skip to content

Commit

Permalink
Complete re-write of the algorithms as a separate library. Separate a…
Browse files Browse the repository at this point in the history
…daptive and manual versions (#89)
  • Loading branch information
lucianodato authored Apr 20, 2022
1 parent 21fce06 commit a3e9d59
Show file tree
Hide file tree
Showing 29 changed files with 1,836 additions and 3,255 deletions.
249 changes: 249 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,249 @@
name: build
on:
push:
branches:
- "*"
pull_request:
branches:
- "*"

env:
PAWPAW_VERSION: c37490457b3b9a8183d99145ab0cbf8921da03a8
DEBIAN_FRONTEND: noninteractive
HOMEBREW_NO_AUTO_UPDATE: 1

jobs:
ubuntu_20_04:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Set up dependencies
run: |
# add repository to get a newer meson version where cross compiling works
sudo add-apt-repository -y ppa:ubuntustudio-ppa/backports
sudo apt-get update -qq
sudo apt-get install -qq meson lv2-dev libfftw3-dev ninja-build
- name: Build noise-repellent
shell: bash
run: |
CFLAGS="-fvisibility=hidden -ffast-math -msse -msse2 -mfpmath=sse" meson build --buildtype release --prefix /tmp --libdir /tmp
ninja -v -C build
ninja -C build install
mv /tmp/lv2/nrepellent.lv2 ./nrepellent.lv2
- name: Set sha8
id: slug
run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
- uses: actions/upload-artifact@v2
with:
name: noise-repellent-ubuntu-20.04-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
path: ~/work/noise-repellent/noise-repellent/nrepellent.lv2

macos_universal:
runs-on: macos-10.15
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Set up cache
uses: actions/cache@v2
with:
path: |
~/PawPawBuilds/builds
~/PawPawBuilds/downloads
~/PawPawBuilds/targets
key: macos-universal
- name: Set up dependencies
run: |
brew install meson ninja
- name: Fix up Xcode
run: |
sudo rm -Rf /Library/Developer/CommandLineTools/SDKs/*
sudo xcode-select -s /Applications/Xcode_12.3.app
- name: Bootstrap macOS universal
shell: bash
run: |
if [ ! -d PawPaw ]; then
git clone https://github.com/DISTRHO/PawPaw.git
git -C PawPaw checkout ${PAWPAW_VERSION}
fi
./PawPaw/bootstrap-plugins.sh macos-universal && ./PawPaw/.cleanup.sh macos-universal
- name: Build noise-repellent
shell: bash
run: |
pushd PawPaw && source local.env macos-universal && popd
meson build --buildtype release --prefix /tmp --libdir /tmp
ninja -v -C build
ninja -C build install
mv /tmp/lv2/nrepellent.lv2 ./nrepellent.lv2
- name: Set sha8
id: slug
run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
- uses: actions/upload-artifact@v2
with:
name: noise-repellent-macOS-universal-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
path: ~/work/noise-repellent/noise-repellent/nrepellent.lv2

macos:
runs-on: macos-10.15
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Set up cache
uses: actions/cache@v2
with:
path: |
~/PawPawBuilds/builds
~/PawPawBuilds/downloads
~/PawPawBuilds/targets
key: macos
- name: Set up dependencies
run: |
brew install meson ninja
- name: Bootstrap macOS intel
shell: bash
run: |
if [ ! -d PawPaw ]; then
git clone https://github.com/DISTRHO/PawPaw.git
git -C PawPaw checkout ${PAWPAW_VERSION}
fi
./PawPaw/bootstrap-plugins.sh macos && ./PawPaw/.cleanup.sh macos
- name: Build noise-repellent
shell: bash
run: |
pushd PawPaw && source local.env macos && popd
meson build --buildtype release --prefix /tmp --libdir /tmp
ninja -v -C build
ninja -C build install
mv /tmp/lv2/nrepellent.lv2 ./nrepellent.lv2
- name: Set sha8
id: slug
run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
- uses: actions/upload-artifact@v2
with:
name: noise-repellent-macOS-intel-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
path: ~/work/noise-repellent/noise-repellent/nrepellent.lv2

win32:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Set up cache
uses: actions/cache@v2
with:
path: |
~/PawPawBuilds/builds
~/PawPawBuilds/debs
~/PawPawBuilds/downloads
~/PawPawBuilds/targets
key: win32
- name: Restore debian packages cache
run: |
if [ -d ~/PawPawBuilds/debs ] && [ "$(ls ~/PawPawBuilds/debs | wc -l)" -ne 0 ]; then \
sudo cp ~/PawPawBuilds/debs/*.deb /var/cache/apt/archives/; \
fi
- name: Fix GitHub's mess
run: |
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get update -qq
sudo apt-get install -yqq --allow-downgrades libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal
# add repository to get a newer meson version where cross compiling works
sudo add-apt-repository -y ppa:ubuntustudio-ppa/backports
- name: Set up dependencies
run: |
sudo dpkg --add-architecture i386
sudo apt update
sudo apt-get install -qy build-essential meson mingw-w64 \
binutils-mingw-w64-i686 g++-mingw-w64-i686 wine-stable:i386 wine-binfmt \
- name: Cache debian packages
run: |
mkdir -p ~/PawPawBuilds/debs && \
sudo mv /var/cache/apt/archives/*.deb ~/PawPawBuilds/debs/
- name: Bootstrap win32 cross-compiled
shell: bash
run: |
if [ ! -d PawPaw ]; then
git clone https://github.com/DISTRHO/PawPaw.git
git -C PawPaw checkout ${PAWPAW_VERSION}
fi
./PawPaw/bootstrap-plugins.sh win32 && ./PawPaw/.cleanup.sh win32
- name: Build noise-repellent
shell: bash
run: |
pushd PawPaw && source local.env win32 && popd
wineboot -u
meson build --buildtype release --prefix /tmp --libdir /tmp --cross-file $PWD/setup/win32.ini
ninja -v -C build
ninja -C build install
mv /tmp/lv2/nrepellent.lv2 ./nrepellent.lv2
- name: Set sha8
id: slug
run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
- uses: actions/upload-artifact@v2
with:
name: noise-repellent-win32-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
path: ~/work/noise-repellent/noise-repellent/nrepellent.lv2

win64:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Set up cache
uses: actions/cache@v2
with:
path: |
~/PawPawBuilds/builds
~/PawPawBuilds/debs
~/PawPawBuilds/downloads
~/PawPawBuilds/targets
key: win32
- name: Restore debian packages cache
run: |
if [ -d ~/PawPawBuilds/debs ] && [ "$(ls ~/PawPawBuilds/debs | wc -l)" -ne 0 ]; then \
sudo cp ~/PawPawBuilds/debs/*.deb /var/cache/apt/archives/; \
fi
- name: Fix GitHub's mess
run: |
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get update -qq
sudo apt-get install -yqq --allow-downgrades libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal
# add repository to get a newer meson version where cross compiling works
sudo add-apt-repository -y ppa:ubuntustudio-ppa/backports
- name: Set up dependencies
run: |
sudo apt update
sudo apt-get install -qy build-essential meson mingw-w64 \
binutils-mingw-w64-x86-64 g++-mingw-w64-x86-64 wine-stable wine-binfmt \
- name: Cache debian packages
run: |
mkdir -p ~/PawPawBuilds/debs && \
sudo mv /var/cache/apt/archives/*.deb ~/PawPawBuilds/debs/
- name: Bootstrap win64 cross-compiled
shell: bash
run: |
if [ ! -d PawPaw ]; then
git clone https://github.com/DISTRHO/PawPaw.git
fi
./PawPaw/bootstrap-plugins.sh win64 && ./PawPaw/.cleanup.sh win64
- name: Build noise-repellent
shell: bash
run: |
pushd PawPaw && source local.env win64 && popd
wineboot -u
meson build --buildtype release --prefix /tmp --libdir /tmp --cross-file $PWD/setup/win64.ini
ninja -v -C build
ninja -C build install
mv /tmp/lv2/nrepellent.lv2 ./nrepellent.lv2
- name: Set sha8
id: slug
run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
- uses: actions/upload-artifact@v2
with:
name: noise-repellent-win64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
path: ~/work/noise-repellent/noise-repellent/nrepellent.lv2
10 changes: 8 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,11 @@
# Builds
build/

# VScode
.vscode
# Valgrind dumps
*.valgrind

# Vscode files
.vscode/

# Downloaded wrap files
subprojects/libspecbleach/
64 changes: 21 additions & 43 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,60 +1,38 @@
[![Build Status](https://app.travis-ci.com/lucianodato/noise-repellent.svg?branch=master)](https://app.travis-ci.com/lucianodato/noise-repellent)
[![Build status](https://ci.appveyor.com/api/projects/status/l83vvg2l0b4x7s44/branch/master?svg=true)](https://ci.appveyor.com/project/lucianodato/noise-repellent-xcg0f/branch/master)

noise-repellent
-------
An lv2 plug-in for broadband noise reduction.

Demo
-------
[![](http://img.youtube.com/vi/iNVxCvgcnig/0.jpg)](http://www.youtube.com/watch?v=iNVxCvgcnig "")
[![](http://img.youtube.com/vi/LeKyGoAmbFE/0.jpg)](https://www.youtube.com/watch?v=LeKyGoAmbFE "")

Features
-------
* Spectral gating and spectral subtraction suppression rule
* Adaptive and manual noise thresholds estimation
* Adjustable noise floor
* Adjustable offset of thresholds to perform over-subtraction
* Time smoothing and a masking estimation to reduce artifacts
* Basic onset detector to avoid transients suppression
* Whitening of the noise floor to mask artifacts and to recover higher frequencies
# noise-repellent

A suite of lv2 plugins for noise reduction that uses [libspecbleach](https://github.com/lucianodato/libspecbleach) C library.

[![build](https://github.com/lucianodato/noise-repellent/actions/workflows/build.yml/badge.svg)](https://github.com/lucianodato/noise-repellent/actions/workflows/build.yml)

## Features

* Adaptive noise reduction plugin for low latency voice denoise
* Manual noise capture based plugin for customizable noise reduction
* Adjustable Reduction and many other parameters to tweak the reduction
* Option to listen to the residual signal
* Soft bypass
* Noise profile saved with the session

Limitations
-------
* The plug-in will introduce latency so it's not appropriate to be used while recording (35 ms for 44.1 kHz)
* It was developed to be used with Ardour however it is known to work with other hosts
## Install

Install
-------
Binaries for most platforms are provided with releases but if you are an experienced user you can go ahead an compile it from source. Just extract the adequate zip file for your platform to your lv2 plugins folder (normally /usr/local/lib/lv2 or $HOME/.lv2)
Binaries for most platforms are provided with Github release. Just extract the adequate zip file for your platform to your [lv2 plugins folder](https://lv2plug.in/pages/filesystem-hierarchy-standard.html)

To compile and install this plug-in you will need the LV2 SDK, Meson build system (use pip3 to install it), ninja compiler, git and fftw3 library (>= 3.3.5 is recommended to avoid threading issues).
If you wish to compile yourself and install this plug-in you will need the a C compiling toolchain, LV2 SDK, Meson build system, ninja compiler, git and fftw3 library.

Installation:

```bash
git clone https://github.com/lucianodato/noise-repellent.git
cd noise-repellent
meson build --buildtype release --prefix (your-os-appropriate-location-fullpath)
ninja -v -C build
meson build --buildtype=release --prefix=/usr --libdir=lib (your-os-appropriate-location-fullpath)
ninja -C build -v
sudo ninja -C build install
```
Noise-repellent is on Arch community at https://www.archlinux.org/packages/community/x86_64/noise-repellent/.

Noise-repellent is also available in KXStudios repositories https://kx.studio/Repositories:Plugins
Noise-repellent is on Arch community at <https://www.archlinux.org/packages/community/x86_64/noise-repellent/>.

Usage Instuctions
-----
Please refer to project's wiki https://github.com/lucianodato/noise-repellent/wiki
Noise-repellent is also available in KXStudios repositories <https://kx.studio/Repositories:Plugins>

Code Documentation
-----
Code is documented using doxygen. To read it be sure to install doxygen in your system and run the following command:
## Use Instuctions

```bash
doxygen -s doc/doxygen.conf
```
This will generate an html folder inside doc folder. Accessing index.html you can read the documentation.
Please refer to project's wiki <https://github.com/lucianodato/noise-repellent/wiki>
31 changes: 0 additions & 31 deletions appveyor.yml

This file was deleted.

7 changes: 0 additions & 7 deletions doc/doxygen.conf

This file was deleted.

Loading

0 comments on commit a3e9d59

Please sign in to comment.