-
Notifications
You must be signed in to change notification settings - Fork 39
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Complete re-write of the algorithms as a separate library. Separate a…
…daptive and manual versions (#89)
- Loading branch information
1 parent
21fce06
commit a3e9d59
Showing
29 changed files
with
1,836 additions
and
3,255 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,60 +1,38 @@ | ||
[](https://app.travis-ci.com/lucianodato/noise-repellent) | ||
[](https://ci.appveyor.com/project/lucianodato/noise-repellent-xcg0f/branch/master) | ||
|
||
noise-repellent | ||
------- | ||
An lv2 plug-in for broadband noise reduction. | ||
|
||
Demo | ||
------- | ||
[](http://www.youtube.com/watch?v=iNVxCvgcnig "") | ||
[](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. | ||
|
||
[](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> |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.