Paramuse

Posted:
Updated:
Current version: 1.3

Paramuse is a music server which can stream music over a network to a web browser. I wrote it to meet some specific requirements:

  • Play whole albums, chosen at random.
  • Use a web browser as a client, so it works on every platform.
  • Support ReplayGain.

I mostly intended it for use on a LAN, so it has no built-in security. If you want to use it over the internet, you will need to secure it behind a VPN, or reverse proxy or something, so it isn't publicly accessible.

At the top of the screen is a summary of what's playing, and controls. Underneath is a list of albums.
This is what it looks like running on a PC.
It's like the desktop version, but smaller.
And on a phone.
Do you like cool 80's-style LED spectrum analysers? I hope so, because you can't turn it off.

Requirements

Server

  • .NET 6. Both the .NET Runtime (or Desktop Runtime) and the ASP.NET Core Runtime are required.
  • Windows 7 or newer (it will run on other OSes, but you'll have to recompile it from source).
  • Lots of music in MP3, OGG, or FLAC format.

Client

  • A fairly new web browser. Current versions of Firefox and Chrome will work. It might not work properly on older phone browsers.

Installation

Assuming you're using the precompiled version, not compiling it yourself, then:

  1. Extract the zip somewhere.
  2. Edit appsettings.json and set BasePath to where your music is stored.

Running the server

Just run the executable. It may take anywhere from a few seconds to a few minutes to scan through all the available music, depending on how much there is, and how fast the computer is.

All audio files in the same folder are treated as a single album, so for Paramuse to work as intended, you have to organize your music into separate folders. If music files are added/removed/changed while Paramuse is running, it will automatically pick up the changes after a few seconds. Any running clients will have to be refreshed before they will show the changes.

Album, track, and artist names are read from tags where available. If not, Paramuse will assume the folder is the album name, and the parent folder is the artist name.

Running the client

Open a web browser and go to http://localhost:8080. It might take a while to load initially if you have a lot of music. Of course if the browser isn't on the same machine as the server, then replace "localhost" with the address of the machine the server is running on.

Once it's finished loading, press the play/pause button to start playing a random album, or scroll through the list and press the play button next an album to play it.

The button with the squiggly arrows next to the play/pause button toggles shuffling. When it's enabled (glowing green) then when the current album is finished, the next one will be chosen at random. When it's disabled, albums will be played sequentially from the list (alphabetical order).

Click on an album in the list to expand it to see all the tracks it contains. If one is currently playing, it will be highlighted. Click on a track name in the list to show details such as tags and codec.

Note that the volume control goes from -18dB all the way up to +6dB (in 1dB steps). This is because most modern music will have ReplayGain gain that is strongly negative, due to the loudness war, so settings above 0dB may be helpful to bring the overall volume back up closer to full. This risks making any less-compressed tracks sound relatively too quiet though. If your music doesn't have ReplayGain tags, then setting the volumn above 0dB will not increase the volume any higher than 0dB.

Possible problems

  • Pressing play doesn't work the first time, or playback stops after every track. Autoplay must be allowed in the browser.
  • An album cover won't load, even though one is available. This might be because the image is corrupt. Paramuse will try to load images from inside audio files if present, and those can be corrupt too.
  • The server won't start from a command line or batch file etc. Make sure the current working directory is set to where Paramuse.exe is.

Download

Paramuse_1.3.zip - 1MB

Source code

Available on GitHub, or directly from here.