audioquality / gwc

Gnome Wave Cleaner - denoise & declick audio
Other
17 stars 3 forks source link

GTK Wave Cleaner

Denoise & Declick audio files. Clean up digitalized vinyl and tape recordings, remove common distortion while preserving the musical information. The input is expected to be 16bit 44.1kHz stereo WAV file format.

About

Original GWC Homepage: [http://gwc.sourceforge.net]()

The GWC was started in 2002 by Jeff Welty. The latest original version is 0.21.19 released in 2013-04-05. The author responds to open tickets on sourceforge, but there was no significant development activity for a decade. Most of the used GTK2 API is marked as deprecated. This fork is based on the GWC 0.21.19 code with included Debian repository fixes.

The original GWC attempts to do everything: audio recording, tag editing, format conversion, CD-R exports... so a lot of development time was wasted on non-essential features. Today, there are many new programs doing it all better, but the GWC still has the best code for cleaning vinyl audio.

This fork throws the non-essential features overboard and improves the usability instead. I changed what I was missing while cleaning more than 70 albums:

Changes

The old version 0.21.19 had some interface issues that have been addressed:

New in this (master branch) version:

v0.30 branch

This branch contains a few fixes and improvements from the master branch, but also the old non-essential code, like the confusing ledbar, inferior batch functionality, and lossy compression support. Check out this branch only if you know what you are doing.

Installation

This is a Linux application, compiled and tested on Debian Linux 9 stretch. It should compile on any other distribution, the dependencies have to be preinstalled accordingly.

Install dependencies (Debian):

apt-get install autoconf automake libc6-dev libgtk-2.0-dev libfftw3-dev libsndfile1-dev libasound-dev libmeschach-dev

Download, Compile & Install:

git clone https://github.com/audioquality/gwc.git
cd gwc/src
aclocal && autoconf && automake --add-missing
./configure
make
make install

The program shortcut is in Menu->Multimedia->Gtk Wave Cleaner , or run in terminal:

gwc

If the menu icons are missing (disabled by default for GTK2 apps), they can be enabled by:

gconftool-2 --type bool --set /desktop/gnome/interface/menus_have_icons true

Usage

WARNING: GWC commits all changes to the original file instantly! Undo saves the deltas needed to get back to the original, so on exit all your changes are saved. GWC will notify you that changes have been made, and give you the chance to exit (or open a new file) without making the changes permanent.

Keyboard functions

Function Keyboard Shortcut
Play/Stop playback Space
Play selection in a loop Shift + Space, Ctrl + Space
Go foward / backward by half revolution of 33 rpm record Right / Left
Go foward / backward by 2 revolutions of 33 rpm record Ctrl + Right / Left
Go foward / backward by 4 revolutions of 33 rpm record Shift + Right / Left
Select last S seconds of audio S
Edit -> Undo Bksp
Edit -> Declick Strong U
Edit -> Declick Weak I
Edit -> Declick Manual O
Edit -> Decrackle C
Edit -> Sample H
Edit -> Denoise J
Edit -> Estimate Signal K
Deselect All Esc
View -> Select View *
View -> Zoom In Up , +
View -> Zoom Out Down , -
View -> Zoom to All \
View -> Zoom to Selected /
Markers -> Toggle beginning marker N
Markers -> Toggle end marker M
Markers -> Clear markers R
Markers -> Expand selection to nearest marker E
Select Markers W
Settings -> Declick P
Settings -> Denoise L
Settings -> Decrackle ;
Settings -> Preferences Ctrl + P
Zoom in Y scale F
Zoom out Y scale D
Reset Y scale G
Amplify sonogram B
Attenuate sonogram V

Mouse functions

Menu

ToDo

This codebase seems a little clunky from the UI perspective. Considering that it is more than a decade old, it makes no sense to build more advanced features on top of this code. A good idea might be a complete code rewrite, while keeping the original audio restoration algorithms. The GWC is still missing:

Currently the playback buffering can fail, if another CPU intensive task is running. Even during GWC waveform scrolling and main window resizing! This is very buggy behavior and cannot be changed within the current implementation :(

License

This program is released under the GNU GPL, see the COPYING file.