# LastWave: a Flutter desktop player for lossless music with synced lyrics

> LastWave is a Dart and Flutter desktop music player for Windows, Linux and macOS that adds algorithmic smart playlists, real-time synchronised lyrics, Last.fm scrobbling and a YouTube Music integration on top of local playback. It suits desktop listeners who want the smart features of a streaming client, and its licence is not stated, which is a problem for anyone who intends to build on it.

**Clash-Projects/LastWave-Desktop** — High-Resolution Lossless Desktop Music Player for Windows, Linux & macOS

- Repository: https://github.com/Clash-Projects/LastWave-Desktop
- Stars: 705 · Forks: 18
- Language: Dart
- License: not declared
- Published: 2026-10-21 · Updated: 2026-10-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/clash-projects-lastwave-desktop

## A Flutter desktop app for people with a local music library

LastWave is described as a high resolution lossless desktop music player for Windows, Linux and macOS, and the README calls it a next-gen lossless music player with an algorithmic smart playlist generator, real-time synced lyrics and a Last.fm scrobbler for desktop.

The technology choice is Flutter, with Dart as the primary language, and the repository layout is the standard Flutter desktop one: lib/ for the Dart application code, windows/, linux/ and macos/ for the platform runners, assets/ for bundled resources, test/ for the tests, tool/ for Dart tooling, and pubspec.yaml with pubspec.lock for the package definition. A .metadata file and an analysis_options.yaml sit alongside them, both of which are Flutter project files, and a .github/ directory holds the workflows. There is also a flake.nix and a flake.lock, so Nix packaging is part of the setup.

The question the project answers is the one that shows up when a music collection is a folder of files rather than an account. A local library has no recommendations, no playlists that update themselves, no lyrics and no listening history in any useful sense. LastWave is the layer that adds those things back, on top of ordinary local playback.

The one thing worth being careful about is the word lossless. The README says lossless music playback for high quality audio experience, and the project description says high-resolution lossless, but the documentation does not enumerate which codecs or formats are supported, and it does not describe a resampling or upscaling path. If lossless support is the reason you are looking at it, that is the first question to ask, because the README does not answer it.

The release line is moving quickly. The tags are v1.1.1 on 2026-10-05, v1.2.0 on 2026-10-07 and v1.3.0 on 2026-10-19, and the last push was on 2026-10-20. A project shipping minor versions days apart is a project in its first year of life, and the README is written in a way that shows it.

## Smart playlists, synced lyrics and what the README actually says

The three features that distinguish LastWave from a plain audio player are described in a list, and each is worth reading for what it does and does not claim.

The algorithmic smart playlist generator creates playlists based on your listening habits. The interesting word is algorithmic, and the interesting omission is the mechanism. The README does not say what signals are used, whether the analysis is local or done through a service, how large a history is needed before the results mean anything, or whether the generated lists can be pinned, ordered or exported. It is a feature description without a specification.

Real-time synced lyrics display is the second, and for a lossless-focused player it is arguably the more visible one. The description says real-time synced lyrics display for an immersive music experience, and the screenshots include a player view with lyrics. What the README does not say is where the lyrics come from, which is the question that matters for a feature like this. There is no mention of a bundled lyrics file, an external database, or a local LRC library, and the .env.example in the repository contains a single secret related to an addon server, which hints at a networked component without documenting it.

The last feature in that group is the Last.fm scrobbler, described as integration to track your listening history and discover new music. Scrobbling is a well-defined protocol with a defined threshold, and connecting a Last.fm account is the sort of thing the documentation would normally walk through in a screenshot. The README does not show that.

The pattern across the feature list is that each entry is a single sentence of benefit with no mechanism, no configuration path and no screenshots of the settings that would set it up. The two screenshots in the repository are the homepage and the player. For a project at version 1.3.0 with a release every few days, that is what you would expect, and it means evaluation has to be done by installing it rather than by reading it.

## The YouTube Music integration and the disclaimer that comes with it

The fifth feature listed is YouTube Music integration for streaming and managing your favourite tracks, and it is the one that carries the most legal weight, so it deserves careful reading rather than a summary.

The README carries an Educational and Research Notice stating that LastWave is an open-source, non-commercial application developed strictly for research and educational purposes. It states that the project is independent and not affiliated with, endorsed by or sponsored by Google LLC, YouTube, YouTube Music, Spotify, Apple Inc., Last.fm or any music service. It states that LastWave does not host, stream from private servers, or distribute any copyrighted media, that all content and metadata are accessed directly from public endpoints in accordance with their respective terms, and that all trademarks belong to their respective owners.

So the position is: the app is a client, it does not distribute media itself, it talks to public endpoints, and the developer asserts the use is within the services' terms. Whether a third-party client accessing YouTube Music endpoints is within YouTube's terms is a question the project asserts rather than demonstrates, and the same applies to the Last.fm integration. This article does not give legal advice and does not verify the terms of any of those services.

There is also an interesting remnant in the README that reveals the project's history. A commented out Getting Started block describes downloading an APK, installing LastWave-v4.2.2-release.apk on an Android device with Android 7.0 or later, and connecting a Last.fm account in Settings then Integrations to unlock the scrobbler, taste mixes and personalised discovery radar. It also mentions ad-free streaming.

That block describes a mobile application at version 4.2.2, while this desktop repository is at version 1.3.0. The desktop project appears to be a separate or later line of development, and the commented block is documentation left over from the Android version. It also tells you the feature set the authors had in mind, including discovery features and account linking, which the desktop README does not mention.

One more detail from the environment file. The .env.example in the repository is a copy-and-fill file with a single secret:

```
# Addon one-way lock (HMAC request proofs). Must match the addon
# server's ADDON_CLIENT_SECRET, otherwise every addon call 404s.
ADDON_CLIENT_SECRET=
```

So there is an addon server that the desktop client calls, and its calls are authenticated with an HMAC proof keyed on a shared secret. If you self-host, that secret has to match on both sides, and the comment notes that a mismatch makes every addon call fail with a 404 rather than a clear error. The .env file itself is not committed, and the example file warns never to commit it with real secrets.

## Installing the desktop build

Installation is the desktop equivalent of downloading a build and running an installer. The README's Installation section says to download the latest version of LastWave from the Releases tab, and then run the installer and follow the on-screen instructions.

That is all the documentation there is, and for a Flutter desktop application that is a reasonable amount, because the platform runners in the repository are what produce those installers. The repository has windows/, linux/ and macos/ directories, which is where a Flutter desktop build puts its platform-specific packaging, so the release artefacts are built from those.

The Nix files in the repository, flake.nix and flake.lock, suggest a second route for Linux users who prefer reproducible builds, and the presence of a tool/ directory means there is Dart tooling in the repository for tasks beyond the standard Flutter commands. The README does not document the Nix workflow, so treat that as something to discover in the files rather than something to follow from the documentation.

What you should check after installing is whether the features you came for are actually exposed in the interface. Given that the feature list is thin and the settings are not documented, the practical test is to connect a Last.fm account if scrobbling matters to you, open a local file and check whether lyrics appear, and then see whether the smart playlist generator produces anything from your listening history. Those three checks tell you more about the release you have installed than the README does.

One thing to keep in mind is that the app is young and the release notes are not summarised in the README. With v1.1.1, v1.2.0 and v1.3.0 published within a fortnight, the behaviour of your installed build and the behaviour of the current main branch may differ.

## Where LastWave is the wrong tool

The first problem is the licence, and it is not a small one. The licence field for the repository is listed as unknown, there is no LICENSE file in the top-level entries, and the README carries a statement that the application is non-commercial and developed for research and educational purposes. That combination means you can read the source and you can run it, but you do not have the rights you would need to redistribute it, to ship it inside a product, or to make money from it, and there is no clear permission to do any of those things. If your use is personal, that may not matter. If it is anything else, this blocks you before any technical question does.

The second is the format question. The project is built around lossless playback and high resolution, yet the documentation never states which codecs are supported, whether gapless playback works, whether the metadata model covers the tags people actually use, or whether there is any library management such as tag editing or transcoding. A player for FLAC and ALAC libraries is a specific thing to build, and the README leaves you to find out by trying.

The third is the network dependency. The addon secret, the YouTube Music integration and the Last.fm scrobbler all point at a design where some functionality lives on a server. The README does not document the server, does not say whether you can point the client at your own, and describes the client as accessing public endpoints. If you want a player that works with no network at all, this is not obviously it.

The fourth is documentation depth. Two screenshots, a feature list, an install instruction and a disclaimer is the whole README, with more in the docs/ directory that the README does not summarise. For a desktop application with four integrations, that leaves the integration setup, the playlist rules and the lyric source as things you discover by trial.

The fifth is the mobile story. The commented out block shows an Android application with its own settings, its own integrations screen and a higher version number. If you want one player across desktop and phone, this repository does not deliver that, and the version numbering suggests the two code bases are separate.

## A project moving faster than its documentation

The repository contents describe a real desktop application rather than a weekend project. There is a lib/ directory, the three platform runner directories, a test/ directory, a tool/ directory, a docs/ directory, assets/ and screenshots/, a flake.nix and a flake.lock, a pubspec.lock so dependency versions are pinned, a .env.example, and a .github/ directory for the workflows. The pubspec.lock in particular tells you the project is committed to reproducible dependency resolution, which is more discipline than most projects of this age show.

Against that, the documentation is a page long, the licence is unstated, and the version numbers move every few days. The release sequence is worth reading as a signal: v1.1.1 on 2026-10-05, v1.2.0 on 2026-10-07 and v1.3.0 on 2026-10-19, with the last push on 2026-10-20. Two minor versions in a fortnight is a project that is shipping to get feedback rather than to ship a settled product, which is fine for a personal tool and awkward for anything you depend on.

The .env.example is the one piece of configuration documentation, and it is well written. It explains the copy to .env workflow, warns never to commit the .env file with real secrets, notes that the variable names mirror the native LastWave environment file, and states the operational consequence of getting the addon secret wrong. That is a better description of one variable than the README gives of the whole application.

Attribution is in the README too, crediting three people by name, and the project sits under the Clash-Projects organisation. The topic tags list desktop-app, flutter, lossless and music-player, and the primary language is Dart.

The honest summary is this. LastWave is a young, actively built Flutter desktop player that has shipped the interesting features before it has shipped the documentation, and it carries a non-commercial research notice that makes it a personal project rather than a dependency. If you want a lossless desktop player with lyrics and scrobbling and you are willing to experiment, it is worth an install. If you want a project you can build a product on, the missing licence settles that question first.

## Conclusion

Adopt LastWave if you listen on the desktop, you want synced lyrics, Last.fm scrobbling and generated playlists in one place, and you are willing to accept a young project with an unstated licence. Do not adopt it as a foundation for a product you intend to ship, because the licence is not identified, and do not expect the YouTube Music integration to be a documented, supported feature with clear terms, since the project itself states it is not affiliated with any of the services it talks to. Verify first that the installer runs on your platform, that the smart playlist and lyrics features work with your library, and that the licence question is settled in writing, since releases moved from v1.1.1 to v1.3.0 in October 2026 and the last push was on 2026-10-20.

## FAQ

### How do I install LastWave on a desktop?

The README says to download the latest version from the Releases tab and run the installer, following the on-screen instructions. The project is built with Flutter and the repository holds windows/, linux/ and macos/ directories for the platform builds, and it also ships a flake.nix.

### What features does LastWave add to local music playback?

The README lists lossless music playback, an algorithmic smart playlist generator that creates playlists based on your listening habits, real-time synced lyrics display, Last.fm scrobbler integration for tracking listening history, and a YouTube Music integration for streaming and managing favourite tracks.

### Does LastWave host or distribute copyrighted music?

The README states that LastWave does not host, stream from private servers, or distribute any copyrighted media, and that all content and metadata are accessed directly from public endpoints in accordance with their respective terms. It also states the project is not affiliated with, endorsed by or sponsored by Google LLC, YouTube, YouTube Music, Spotify, Apple Inc. or Last.fm.

### What licence does LastWave use and how often is it released?

The licence is not identified in the repository, there is no LICENSE file among the top-level entries, and the README describes the application as non-commercial and developed for research and educational purposes. The recent tags are v1.1.1 on 2026-10-05, v1.2.0 on 2026-10-07 and v1.3.0 on 2026-10-19, with the last push on 2026-10-20.

## Sources

- [Clash-Projects/LastWave-Desktop on GitHub](https://github.com/Clash-Projects/LastWave-Desktop)
- [Issues](https://github.com/Clash-Projects/LastWave-Desktop/issues)
- [README](https://github.com/Clash-Projects/LastWave-Desktop/blob/main/README.md)
- [Releases](https://github.com/Clash-Projects/LastWave-Desktop/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/clash-projects-lastwave-desktop
