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.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (2.6 MB view details)

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

swingmusic-2.1.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (2.5 MB view details)

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

swingmusic-2.1.6-cp313-cp313-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

swingmusic-2.1.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (2.6 MB view details)

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

swingmusic-2.1.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (2.5 MB view details)

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

swingmusic-2.1.6-cp312-cp312-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

swingmusic-2.1.6-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.6-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.6-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.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for swingmusic-2.1.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 46d1387d8bec7925e8e1cfef30757b8b6989436c3ea229b8ef4974640391579b
MD5 adee2e034c9570dd510d1efca7826f61
BLAKE2b-256 82b7ab2369b72f85ae79cd3582e5d0dd63ec955ca4d70038e2226201068d5b6d

See more details on using hashes here.

Provenance

The following attestation bundles were made for swingmusic-2.1.6-cp313-cp313-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.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for swingmusic-2.1.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 21aca739d78e2e4cbf1288640d8cedb4a44f1b291a9e4186408b0966af18842f
MD5 a75f517ebdfe24c7acdfd592fb176600
BLAKE2b-256 efb57a754a5f2b5c588bd1a940289023dacb6b0d12392f835de995b9eac45ef2

See more details on using hashes here.

Provenance

The following attestation bundles were made for swingmusic-2.1.6-cp313-cp313-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.6-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for swingmusic-2.1.6-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 428c5c11ac38b56ddbd0d034f35e6cfc17d3749bf6932e8bfa386a5b0acf9426
MD5 623ff1f4e76cf9e2ee6ee3bc1e00dec5
BLAKE2b-256 f83619146325d5ef41d801991ba2a81cd7cd83f1388248da573e5a91c4edc104

See more details on using hashes here.

Provenance

The following attestation bundles were made for swingmusic-2.1.6-cp313-cp313-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.

File details

Details for the file swingmusic-2.1.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for swingmusic-2.1.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 79ea77abb7ddaa34daacdd305cb5353ed129811c99aab33e05284c8d3b2c3ae7
MD5 c373f8b34aafe98c62b0821b0e495b0b
BLAKE2b-256 7bf674a67239aa7c6d6ad63aeff8a3e03562892f7b4ca6970907a65662d6fe13

See more details on using hashes here.

Provenance

The following attestation bundles were made for swingmusic-2.1.6-cp312-cp312-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.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for swingmusic-2.1.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5f42aff934322b2601af9083c6c029ce301052605605f4fcc90bc9a2f9511fd8
MD5 1fd5bf2a9b83ba8d103e78c2f739ef11
BLAKE2b-256 9da73d07d1e12fe380694eaadd43d3080c3d5166a01baa69d59f7a1d7e992cdf

See more details on using hashes here.

Provenance

The following attestation bundles were made for swingmusic-2.1.6-cp312-cp312-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.6-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for swingmusic-2.1.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 93a249995d97170f3f98f512d2c00943848f1b9d221617a7304a02e2a58819a5
MD5 70d0045da1858a67407fdd1b352655ed
BLAKE2b-256 8a304dba10dddaf0e51737f4b2d4748b0e3cd5f69bdcec1c96dd4d2e9ada6c86

See more details on using hashes here.

Provenance

The following attestation bundles were made for swingmusic-2.1.6-cp312-cp312-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.

File details

Details for the file swingmusic-2.1.6-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.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d25f724f3b507a0404667a8f904d14be4c9b3aab9b684444aec8fc5ec3d06d6f
MD5 3325f4cb509c4ee43bf9def1cdf59d0f
BLAKE2b-256 1b83a8c3daef6cd05bdaa034f697d4a113d23ef53b25c4a1e6370411deada81b

See more details on using hashes here.

Provenance

The following attestation bundles were made for swingmusic-2.1.6-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.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for swingmusic-2.1.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c0d65ee31e780e71ce1169acbdb4b225e7715e86e894041e90b48cd09f0aac1a
MD5 e26a8337525a16738cb5d8a558594e9d
BLAKE2b-256 04b6d9b55ef6d8bf08752db52646b3cee202eebfeafafad3f9cd97c0b2642a74

See more details on using hashes here.

Provenance

The following attestation bundles were made for swingmusic-2.1.6-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.6-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for swingmusic-2.1.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 32c6891aa79e4f943bef6037b0cf32c11c94d844179cd7a42564c9939491dc34
MD5 49a5711c16c81d3ae37c83bdf6f2ee30
BLAKE2b-256 15c75173bfe623c7dfea60c740d129e929d3a1182aa194ca324c314f501556c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for swingmusic-2.1.6-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