Tidal Wave is not affiliated with TIDAL Music AS.
Tidal Wave is a native, lightweight desktop client for the Tidal music streaming service. It is built using C++20, CMake, and Qt 6/QML, delivering a fast, system-integrated music listening experience.
- Native Performance: Built with C++20 and Qt 6, bypassing heavy web wrappers for a minimal CPU and memory footprint.
- Media Keys and MPRIS2: Full Linux media player integration via D-Bus MPRIS2, supporting lockscreen controls, system volume widgets, and media keys.
- Secure Authentication: Implements Tidal OAuth device login flow with secure local session caching using SQLite.
- Custom Audio Player: Native streaming audio engine utilizing QMediaPlayer and QAudioOutput with selectable stream qualities.
- Persistent Navigation State: Separate loaders retain individual page states when jumping between Home, Search, and My Collection views.
- Queue Panel: Full queue management including track ordering, shuffle, and cycle repeat modes.
- System Tray Integration: Background playback support with system tray control options to show, hide, and quit the application.
- Rich Detail Pages: Dedicated views for albums, artists, playlists, and mixes. Biographies are parsed as rich text with clickable navigation links.
- Robust Sleep Timer: Persistent background sleep timer in the Now Playing page with presets, a custom slider, a toggleable fade-out fader (with pop-prevention delay), and an end-of-track stopping mode.
I used Claude Code over the course of 3 days to generate most of the code for this project, since I recently won some Anthropic API credits and wanted to put them to use. I also don't currently have the time to do this any other way, even if I wanted to. It's a shame, since I'm generally really not a supporter of AI, but I wanted the performance increase and the money was already spent.
| Shortcut | Action |
|---|---|
| Space | Play / Pause |
| Ctrl + Right | Next track |
| Ctrl + Left | Previous track |
| Right | Seek forward 10 seconds |
| Left | Seek backward 10 seconds |
| Up | Volume up (5% increment) |
| Down | Volume down (5% increment) |
| Ctrl + M | Mute / Unmute |
| Ctrl + S | Toggle Shuffle |
| Ctrl + R | Cycle Repeat Mode (Off / All / One) |
| Ctrl + 1 | Go to Home |
| Ctrl + 2 | Go to Search |
| Ctrl + 3 | Go to Collection |
| Ctrl + N | Fullscreen Now Playing view |
| Ctrl + Q | Toggle Queue panel |
| Escape | Go back |
| Alt + Left | Go back |
| Ctrl + , | Open Settings |
- C++20-compliant compiler (GCC 11+, Clang 13+, MSVC 2022+)
- CMake 3.20+
- Qt 6 SDK (6.4+), specifically the following modules: Core, Gui, Widgets, Quick, Qml, QmlModels, Network, DBus, Multimedia, Sql, Svg, Concurrent
- On Linux: libsqlite3-dev and libasound2-dev (or similar ALSA development libraries)
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release --parallel 4On Linux and macOS:
./build/tidal-waveOn Windows:
build\Release\tidal-wave.exeThis project is licensed under the GNU GPL v3 License. See the LICENSE file for details.
