diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8a95a00..c89ce0a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,32 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [v1.2.0] - 2023/08/20
+
+### Added
+
+- **PipeWire is officially supported!**
+ - Utilizes `pactl`.
+ - On Ubuntu / Debian / Mint / Pop!_OS you'll need `pulseaudio-utils` and `pipewire-pulse` (`.deb` will auto install).
+ - On most other distros `pipewire-pulse` provides `pactl` (check your distro documentation before installing).
+- The active preset is now clearly selected in the UI.
+- Lyrebird dependencies (Python modules and shell commands) are now checked at application launch resulting in a warning alert when something is missing instead of a crash later down the line.
+
+### Changed
+
+- Custom presets have been overhauled:
+ - Default presets now live in Lyrebird instead of `presets.toml` meaning that they can be more easily kept up to date.
+ - Launching Lyrebird v1.2.0 will now automatically migrate your `presets.toml` by removing all the old defaults while retaining your custom presets. A backup (`presets.toml.old`) is made in the unlikely case of any presets being lost during the migration.
+ - Preset options have been changed while remaining fully backwards compatible:
+ - `pitch_value`, `downsample_amount`, and `volume_boost` can now be omitted instead of providing `none` or `scale`.
+ - `override_pitch_scale` is now deprecated and no longer has an effect, to achieve the same effect omit `pitch_value`.
+ - Custom presets are now validated at launch and will be disabled if they are malformed along with a warning alert.
+- Only Lyrebird controlled PulseAudio sinks are now unloaded instead of all sinks on the system. This fixes a crash on some distros.
+- The pitch slider is no longer disabled when a preset is active.
+- Default buffer size for SoX is now 128, recommended that you change in `~/.config/lyrebird/config.toml` for improved latency.
+- Codebase has been refactored into `core` and `ui`. Audio related methods now live in `core/audio.py` instead of the UI code.
+- `AudioVideo` category added to `.desktop`.
+
## [v1.1.0] - 2020/08/30
### Added
@@ -44,4 +70,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- Initial version of Lyrebird with options to change pitch of voice and downsample audio
-- Presets and config are at `/etc/lyrebird`
\ No newline at end of file
+- Presets and config are at `/etc/lyrebird`
diff --git a/README.md b/README.md
index f16efc7..f6b621a 100644
--- a/README.md
+++ b/README.md
@@ -18,27 +18,45 @@ Simple and powerful voice changer for Linux, written with Python & GTK.
## Install
-### Distro Packages
+Once installed, Lyrebird can be launched from your launcher (GNOME, Xfce, Rofi) or by running `lyrebird` in the command line.
-Check the [releases page](https://github.com/lyrebird-voice-changer/lyrebird/releases) to find a package for your distro.
+### Ubuntu / Debian / Mint / Pop!_OS
-- [x] Ubuntu/Debian (download `.deb` from [releases page](https://github.com/lyrebird-voice-changer/lyrebird/releases))
-- [x] Arch (AUR package `lyrebird`)
+```sh
+wget "https://github.com/lyrebird-voice-changer/lyrebird/releases/download/v1.2.0/lyrebird_1.2.0-1.deb" && sudo apt install ./lyrebird_1.2.0-1.deb
+```
-#### Community
+You can find more [releases here](https://github.com/lyrebird-voice-changer/lyrebird/releases).
-These packages are provided by the community and are not maintained by Lyrebird developers.
+### Arch Linux
-- [x] Gentoo (ebuild in the [edgets overlay](https://github.com/BlueManCZ/edgets/tree/master/media-sound/lyrebird))
+Use an AUR package manager?
+
+```sh
+yay -S lyrebird
+```
+
+Otherwise:
+
+```sh
+wget "https://github.com/lyrebird-voice-changer/lyrebird/releases/download/v1.2.0/lyrebird-1.2.0-1-any-archlinux.pkg.tar.zst" && sudo pacman -U lyrebird-1.2.0-1-any-archlinux.pkg.tar.zst
+```
+
+You can find more [releases here](https://github.com/lyrebird-voice-changer/lyrebird/releases).
### Manually
If a package for your distro isn't provided above then you can install the requirements below and use the provided installer script:
-1. Download the latest `tar.gz` from the [releases page](https://github.com/lyrebird-voice-changer/lyrebird/releases) and extract it
-2. Make sure you satisfy all requirements listed below (e.g. Python 3.7, using PulseAudio, sox)
-3. Run `install.sh` to install dependencies and Lyrebird itself
-4. Launch Lyrebird from your preferred application launcher (e.g. GNOME, Rofi)
+```sh
+wget "https://github.com/lyrebird-voice-changer/lyrebird/releases/download/v1.2.0/lyrebird_1.2.0-1.tar.gz" && tar xf lyrebird_1.2.0-1.tar.gz && cd lyrebird_1.2.0-1 && sudo ./install.sh
+```
+
+### Community Packages
+
+These packages are provided by the community and are not maintained by Lyrebird developers.
+
+- [x] Gentoo (ebuild in the [edgets overlay](https://github.com/BlueManCZ/edgets/tree/master/media-sound/lyrebird))
## Requirements
@@ -49,11 +67,12 @@ Installing via package manager will automatically install these packages, only c
- **python-gobject** - Ubuntu/Debian `python3-gi` / Arch `python-gobject`
- **pavucontrol** - Ubuntu/Debian `pavucontrol` / Arch `pavucontrol`
- **SoX** - Ubuntu/Debian `sox libsox-fmt-pulse` / Arch `sox`
-- PulseAudio utilities (compatible with PipeWire) - Ubuntu/Debian `pipewire-pulse pulseaudio-utilities`
+- **PipeWire**
+- **PulseAudio utilities** (compatible with PipeWire) - Ubuntu/Debian `pipewire-pulse pulseaudio-utils` / Arch `pipewire-pulse`
-One-liners for install:
+One-liners to install requirements:
- * Ubuntu/Debian - `sudo apt install python3 python3-toml python3-gi pavucontrol sox libsox-fmt-pulse pulseaudio-utilities`
+ * Ubuntu/Debian - `sudo apt install python3 python3-toml python3-gi pavucontrol sox libsox-fmt-pulse pulseaudio-utils`
* Arch - `sudo pacman -S python3 python-toml python-gobject pavucontrol sox`
*(If you wish to see your distro here please submit an issue/pull request for this section.)*
@@ -89,31 +108,29 @@ If the issue still sticks around then please open a GitHub issue and include the
## Editing Presets
-Presets and config is initally stored in `/etc/lyrebird/` however it can be overriden by copying the files to `~/.config/lyrebird/`.
-
-To edit and add your own presets edit the file `presets.toml`, this file is in the TOML format and the syntax is described below.
+Custom presets are stored in `~/.config/lyrebird/presets.toml`. To edit and add your own presets edit the file `presets.toml`, this file is in the TOML format and the syntax is described below.
```toml
-# name = Preset name, will be displayed in the GUI
-# pitch_value = The pitch value of the preset, if you want to be able to adjust this use "scale"
-# downsample_amount = The amount of downsampling to do, set as "none" if you don't want any
-# override_pitch_slider = Whether the preset overrides the pitch slider or not
-# volume_boost = The amount of decibels to boost by
-
-# Example preset, the [[presets]] is required for each preset
-[[presets]]
-name = "Woman"
-pitch_value = "2.5"
-downsample_amount = "none"
-override_pitch_slider = true
-
-# Boost by 2 dB to make the voice louder
-volume_boost = "2"
+# Effect presets are defined in presets.toml
+# The following parameters are available for presets
+
+# name: Preset name, will be displayed in the GUI
+# pitch_value: The pitch value of the preset, float value between -10.0 to 10.0. Omit if pitch value should not be affected from slider value.
+# downsample_amount Downsample by an integer factor.
+# volume_boost: Amount in dB to boost the audio. Can be negative to make the audio quieter.
+
+# e.g.
+# [[presets]]
+# name = "Bad Mic"
+# pitch_scale = -1.5
+# downsample_amount = 8
+# volume_boost = 8
```
## Packaging
- * Packaging for Debian is handled in a (separate repo)[https://github.com/lyrebird-voice-changer/lyrebird-deb].
+ * Packaging for Debian is handled in a [separate repo](https://github.com/lyrebird-voice-changer/lyrebird-deb).
+ * Packaging for Arch (AUR) is handled in a [separate repo](https://github.com/lyrebird-voice-changer/lyrebird-arch).
## Developers
diff --git a/app.py b/app.py
index ca70b9b..5a0bcef 100755
--- a/app.py
+++ b/app.py
@@ -51,7 +51,7 @@
if not Launch.check_pactl():
console_msg = '''[error] PulseAudio utilities are missing from your system.
- * On Ubuntu, Debian, pop_OS, or Mint, try running: sudo apt install pulseaudio-utilities
+ * On Ubuntu, Debian, pop_OS, or Mint, try running: sudo apt install pulseaudio-utils
* On Arch, this comes with the package "pipewire-pulse", please refer to the Arch Wiki page (below).
* On all other distros, this package may have a different name, try searching for "pactl" or "pulseaudio utilities".
@@ -64,7 +64,7 @@
msg = '''Error: PulseAudio utilities are missing from your system.
On Ubuntu, Debian, pop_OS, or Mint, try running:
- sudo apt install pulseaudio-utilities
+ sudo apt install pulseaudio-utils
On Arch, this comes with the package pipewire-pulse, please refer to the Arch Wiki page.
diff --git a/install.sh b/install.sh
index 801bd8c..65c606c 100755
--- a/install.sh
+++ b/install.sh
@@ -2,7 +2,7 @@
# Lyrebird installer script. If running as root then will install at /usr/local/{bin,share},
# otherwise will install at ~/.local/{bin,share}.
-VERSION="1.1"
+VERSION="1.2.0"
VERBOSE=${VERBOSE:-1}
DRYRUN=${DRYRUN:-0}