Paramuse: Album-oriented music server/web app

This is a little bit of software I wrote to meet my particular preferences for a music server/player:
  • Play random albums (rather than individual tracks).
  • Run locally (no dependence on 3rd parties, or an internet connection at all)
  • Use a normal web browser as a client (so it works on any device, including phones, with no need to install anything).
  • Support ReplayGain (so I don't have to keep adjusting the volume up and down, especially for new vs. old recordings).
  • Glowy neon and LED bits (because why not).

I released it to the public in case anyone else finds it useful, but bear in mind that since I wrote it for myself, I didn't put any effort into making it easy to use, or any thought into what features other people might want. Also note that it has no auth, so don't expose it directly to the internet unless you want everyone on Earth to have access to your music collection.

Here's what the client looks like in a desktop browser:
Desktop.png


And in a phone browser:
Phone.jpg


And a short video clip of the spectrum analyser:


To run the server you need to
  • Install both the .NET 6.0 Runtime (or Desktop Runtime) and the ASP.NET Core Runtime.
  • Extract Paramuse_1.1.zip to a folder somewhere.
  • Edit appsettings.json and set BasePath to where your music is stored.
  • Run Paramuse.exe
  • Wait a while for it to scan all the music (should take just a few seconds with an SSD. It might take a minute or two if the music is stored somewhere slower). Only MP3, OGG and FLAC are supported.

It should work on Windows, Linux and Mac, but I've only tested it on Windows. It should also have relatively low hardware requirements, but I haven't experimented with that either.

Once the server is running, you can connect to it with a web browser on port 8080, e.g. if the browser and server are on the same machine, this will be http://localhost:8080. If you want to connect to it from a different machine then you'll need to find the server's local IP address and use that instead of "localhost". You need a newish browser (current Firefox and Chrome work; old phone browsers may not).

The client has just the bare minimum needed to play albums. In the box at the top it shows details of the currently playing track, with some controls (prev/next track, play/pause, shuffle, a timeline, and a volume control). There's also a spectrum analyser just because I love those.

Underneath is a list of every album that was detected. All audio files in the same folder are classed as a single album, so it only works properly if you organize your music well. The actual names will be read from ID3 tags where possible. It will also get album art from ID3 tags, or from separate image files if either are present. There's a play button next to each album to play that album directly. You can also click on the album to expand it to list all the tracks it contains.

There's source code available on GitHub or my own website.
 

Attachments

  • Paramuse_1.3.zip
    1 MB · Views: 14
Last edited:
  • Like
Reactions: 1 users
On the off-chance that anyone is actually using this, I updated it to 1.2, with the following changes:
  • Improve performance by not rendering so many audio elements in the HTML.
  • Allow overall volume to be higher than 0dB, though this will only affect rare tracks where this is possible without clipping.
  • Use colour to identify missing (pink) or inconsistent (cyan) album/artist/track name/ReplayGain tags. In the case of ReplayGain tags, it's the play button for each album that the colour is applied to.
 
Given the lack of interest, I won't waste space by updating this thread for future versions, but one last update to 1.3:
  • Update ImageSharp library, to address CVE-2024-27929.
  • Show tags and other details when clicking on a track name in the album list.
  • Support mp4/m4a.
  • Change caching behaviour so changed images are picked up quicker.
  • Cope with corrupt files better.
  • Fix settings failing to load when last played track is missing.
  • Fix next track button when nothing has been played yet.
 
  • Like
Reactions: 1 users