Skip to main content

Swing Music

Project description

Swing Music
v2.1.0

Image showing the Swing Music artist page

Swing Music is a fast and beautiful, self-hosted music player for your local audio files. Like a cooler Spotify ... but bring your own music. Just run the app and enjoy your music library in a web browser.

Features

  • Daily Mixes - curated everyday based on your listening activity
  • Metadata normalization - a clean and consistent library
  • Album versioning - normalized albums and association with version labels (eg. Deluxe, Remaster, etc)
  • Related artist and albums
  • Folder view - Browse your music library by folders
  • Playlist management
  • Beautiful browser based UI
  • Silence detection - Combine cross-fade with silence detection to create a seamless listening experience
  • Collections - Group albums and artists based on your preferences
  • Statistics - Get insights into your listening activity
  • Lyrics view
  • Android client
  • Last.fm scrobbling
  • Multi-user support
  • Cross-platform - Windows, Linux, MacOS (coming soon), arm64, x86
  • Blazingly fast
  • Pure awesomeness

Installation

Swing Music is available as pre-compiled binaries for Windows and Linux. Just download the latest release from the downloads page and launch it.

FFmpeg is needed for the audio silence skip feature, so you need to install it first. On windows, you can follows this tutorial to install FFmpeg.

On Linux, you can install FFmpeg using:

sudo apt-get install ffmpeg libev-dev libavcodec-extra -y

The libev package is needed on Linux and MacOS. You can install it on other system as shown:

# Arch Linux
pacman -S libev

# Fedora, CentOS
dnf install libev-devel

# MacOS
brew install libev

Then make the file executable first.

chmod a+x ./swingmusic

./swingmusic

The app should start at http://localhost:1970 by default. Open it in your browser to configure and use Swing Music. You can change the default port by using the --port flag.

./swingmusic --port 1980

[!IMPORTANT] The default password for user admin is "admin". Please change the password via the settings after first login.

To stream your music from your Android device, you can download the Android mobile client.

Options

Options flags can be passed when starting the app in the terminal to tweak runtime settings or perform tasks. You can use the -h flag to see all supported options.

[!TIP] You can read more about options in the docs.

Docker

Pull the latest Docker image and run it:

docker pull ghcr.io/swingmx/swingmusic:latest
docker run --name swingmusic -p 1970:1970 \
  -v /path/to/music:/music \
  -v /path/to/config:/config \
  --restart unless-stopped \
  ghcr.io/swingmx/swingmusic:latest

Don't forget to replace /path/to/music and /path/to/config with the appropriate values. In addition, specify the the /music directory as the root directory. Using the Home Directory option won't work.

[!TIP] For more info, see the Docker section on the docs.

Using Docker Compose

Here's a sample Docker compose file:

services:
  swingmusic:
    image: ghcr.io/swingmx/swingmusic:latest
    container_name: swingmusic
    volumes:
      - /path/to/music:/music
      - /path/to/config:/config
    ports:
      - "1970:1970"
    restart: unless-stopped

Contributing and Development

Swing Music is looking for contributors. If you're interested, please join us at the Swing Music Community group on Telegram. For more information, take a look at https://github.com/swing-opensource/swingmusic/issues/186.

CONTRIBUTING GUIDELINES.

[!TIP] This project runs on Python 3.11 or newer and uses uv to manage dependencies. Please install uv before continuing for an easy setup.

To set up this project on your computer follow the following steps:

# 1. Fork the project

git clone https://github.com/swingmx/swingmusic.git

# or via SSH

git clone git@github.com:swingmx/swingmusic.git
# 2. Install dependencies

uv sync

[!TIP] The libev package is needed on Linux and MacOS. You can install it on other system as shown:

# Arch Linux
pacman -S libev

# Fedora, CentOS
dnf install libev-devel

# MacOS
brew install libev
# 4. Run the program

uv run python run.py

License

This software is provided to you with terms stated in the AGPLv3 License or any later version. Read the full text in the LICENSE file located at the root of this repository.

Contributors

Shout out to the following code contributors who have helped maintain and improve Swing Music:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

swingmusic-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

swingmusic-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (2.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

swingmusic-2.1.5-cp311-cp311-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file swingmusic-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for swingmusic-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b8a424aaee621d39559cf4b94a9354261c711a534e9c71c0d3655413da584252
MD5 68fa88a271dfd2fd0daac43234e9dabc
BLAKE2b-256 e9a66547230e6c7f92823d9b54d28b6fc7bae3f1f391a783d05fa8a94490e549

See more details on using hashes here.

Provenance

The following attestation bundles were made for swingmusic-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on swingmx/swingmusic.pro

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file swingmusic-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for swingmusic-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8e0431a44ed68e74a66a022cae70c40ea26991b3511651da9d8802bd36845bae
MD5 79b9bb831dc0baff2f69f0b50b495c9c
BLAKE2b-256 b398db79becebe4fe9ab4aa83b5b8988d7e57a028d94a4bdf3a2bc43bda61eb5

See more details on using hashes here.

Provenance

The following attestation bundles were made for swingmusic-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl:

Publisher: build.yml on swingmx/swingmusic.pro

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file swingmusic-2.1.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for swingmusic-2.1.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 47f5923915f4baa28094102c7ba69761f31452e34ddd1045126ea555c782bd14
MD5 317d55173a26451177dc66b8753845c0
BLAKE2b-256 2ec6250fe3d2ee74b6ec29179903a61b7a605de16594bbf54e800031db9487f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for swingmusic-2.1.5-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: build.yml on swingmx/swingmusic.pro

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page