A cross-platform audio player with a waveform-centric interface
Go to file
Simon Repp d3a277ede2
Update hosting location for documentation and assets
2021-02-06 10:18:30 +01:00
book Update hosting location for documentation and assets 2021-02-06 10:18:30 +01:00
src Introduce export of selections 2020-04-15 11:51:13 +02:00
.gitignore Add resources to gitignore 2019-08-13 10:11:57 +02:00
Cargo.lock Update vulkan backend 2020-03-30 00:37:14 +02:00
Cargo.toml Update vulkan backend 2020-03-30 00:37:14 +02:00
LICENSE.txt License the application under GPL-3.0-or-later 2019-08-11 12:02:32 +02:00
README.md Update hosting location for documentation and assets 2021-02-06 10:18:30 +01:00
build.rs Introduce draggable selection end markers 2020-04-08 15:46:25 +02:00


Good Form

A cross-platform audio player with a waveform-centric interface

A screenshot of Good Form's interface

Research & Development

Good Form is presently in alpha. It already offers the solid technical foundation and base functionality of an audio player and works very reliably on compatible systems. However due to limited user testing as of now there might just as well be systems on which it will entirely refuse to run. The user interface does not yet represent anything of what Good Form intends to be - this is for now just a usable foundation to work from.

Design philosophy

Good Form positions itself somewhere between a professional DAW and a casual player - a professional player probably. It is designed for intent listening and workflows such as browsing samples, evaluating recordings, studying musical pieces, analyzing audio material ... and at the end of the day enjoying music with a beautiful player.

Technological and political mission

Good Form is solidly engineered, cross-platform software, written in Rust. It is built around modern graphics (Vulkan, Metal) and also runs on older systems through OpenGL. It is free and open source software and always will be.

User Manual

All available features are documented in the Good Book. Given that much of Good Form's featureset is for now only available through keyboard shortcuts this is a must read if you're interested.


Currently you can choose from two experimental snapshot packages provided for debian-based (Debian, Ubuntu) and rpm-based (CentOS, Fedora, RHEL) 64bit systems, both of which are configured for modern graphics only (your system needs to support Vulkan).

For now please use at your own risk and anticipate that the package might not yet work for you.
Note: You can make a valuable contribution by reporting issues you run into on your system!

Still with me? Awesome!

Experimental Debian/Ubuntu 64bit .deb snapshot package
Experimental CentOS/Fedora/RHEL 64bit .rpm snapshot package

Building Good Form

You will most likely need to install dependencies, see further below for instructions.

Linux/Windows with support for Vulkan

cargo build --features=vulkan --release

macOS with support for Metal

cargo build --features=metal --release

Platforms that only support OpenGL

cargo build --features=gl --release

Note that this currently only compiles, but does not run due to unresolved issues in the gfx-backend-gl crate. I am currently in touch with the gfx-rs developers to work out solutions. You can follow up on progress with the most recent blocker in this issue on GitHub.


This is a best-effort listing of dependencies that might be required on different systems, along with installation instructions.

macOS Catalina

You need cmake installed, for this you can for instance install Homebrew and then run:

brew install cmake

Ubuntu 19.10

Just install all dependencies through the apt package manager:

sudo apt install cmake libasound2-dev libexpat-dev libfreetype6-dev libxml2-dev libx11-dev python3-distutils

Windows 10

You need to install CMake and Ninja, for instance through the CMake installer and Chocolatey Ninja package.

Building Good Book

The markdown files that comprise the documentation for Good Form in the Good Book can be edited in the book/src/ directory.

To compile the book first install mdBook through cargo:

cargo install mdbook

Then run the following command inside the book/ directory:

mdbook serve --open

The compiled book is written to target/book/, see the mdBook documentation for detailed information regarding the build process.