Wave is a music client for Subsonic and Navidrome servers. It's developed for both Linux and Android: on Linux it's a native GNOME application, built with GTK4 and libadwaita; on Android it is a Material 3 app. The two versions share the same core, written in Rust.
Library
The library is organized by artists, albums, and playlists. The home screen shows recently played, most played, and recently added albums; there is also a Discover section that suggests albums by artists similar to the ones played that are not yet in the library, along with new releases by artists already in it.
Playback
Audio is decoded in the application with GStreamer. Playback is gapless, and volume is optionally normalized with ReplayGain; the ten-band equalizer has presets and an automatic mode based on local AI, which equalizes each track in real time according to its genre.
Compact player
On the Linux application, in addition to the player in the side panel, Wave has a compact player, horizontal or vertical, that can show the queue or the equalizer.
Sync across devices
Devices on the same account share the music server address and credentials, the wishlist, and recent searches. The account can be restored with a 24-word BIP39 phrase, from which the asymmetric key pair used to authenticate with the sync server is derived. The server knows only the account's public key and stores encrypted data that it cannot read.
A new device is linked by scanning the QR code shown by one that is already synced, without having to enter the music server details. Each device can play on another one and control it.
Distribution
Wave is distributed as a Flatpak, .deb and .rpm packages, an AppImage, and an APK for Android 14 and later. The interface is in Italian and English, and the code is released under the GPL-3.0-or-later license.
The repository is not public yet: development takes place on a private Gitea instance, so for now Wave cannot be downloaded. I can share both the packages and the source code on request.