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

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

swingmusic-2.1.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (2.6 MB view details)

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

swingmusic-2.1.8-cp313-cp313-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

swingmusic-2.1.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (2.9 MB view details)

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

swingmusic-2.1.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (2.6 MB view details)

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

swingmusic-2.1.8-cp312-cp312-macosx_11_0_arm64.whl (1.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

swingmusic-2.1.8-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.8-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.8-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.8-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.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4ad10d3b1f850249e5bb9c4f1b3f2f8050b2d7de3c286ae61b32f32a241dbcc3
MD5 4cc51881312ea02b7bd811195afbe4d1
BLAKE2b-256 cb883d176a38f9f4410d6b41204c5cb53cc513ebed19d22de61b2a253d70f57d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for swingmusic-2.1.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 029ef6f105febbcb40e9aab5fbbf7a02a34355ef9056e659187b70b53eeba4ce
MD5 3b6bd811cc566c42f71eeb29f340fe9c
BLAKE2b-256 2f0ad7cf0b4d520ecf326bd501c51c5e4060261388fbd099615a9a7780b1adcd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for swingmusic-2.1.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ff1815a152ec7e92888cd2764082aca965f35bee335260988df390e44313cca0
MD5 704750e091dd0842a38534bbe05e5917
BLAKE2b-256 7dbd47a47afa8133803f3404de288a0b21fd2993b248fdbc6d43c633f42fa24a

See more details on using hashes here.

Provenance

The following attestation bundles were made for swingmusic-2.1.8-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.8-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.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 08f86eeca9ad2e606857d5bdc787965b98e4951653fd678dbf0f41f387e6ef4d
MD5 a32999fbb1196458c677f309b222a77e
BLAKE2b-256 98991f1c506ab88c9168fb9ebe6321f2259dff1db30e38edbdc9837cbb8a8650

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for swingmusic-2.1.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e58cb633e348da9f2a49bda690a0b5d206e05d32a7331bb61d8437e95ec5222e
MD5 185247a55527764bcb3e09500d05f03e
BLAKE2b-256 cde614be08e181bb867c2710bea2b75622beda0100f9aaf1f66a819d803121d6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for swingmusic-2.1.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8f00f4d502e498b5983d03f1200c3318facb097c9b46f4391aae21aa082ff726
MD5 aee2fa428630c6dd728264ebed68b65a
BLAKE2b-256 d6e7de51a3b4df8fe4fd0cb4e7262bbac1dc349af4038cd77e0bd3bd8c2f55da

See more details on using hashes here.

Provenance

The following attestation bundles were made for swingmusic-2.1.8-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.8-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.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 613bed41cc3d82148b259ae073e9f0f67203980f18314c77aa20be9bdc643a2f
MD5 042b530aeeaf4103801d671059cc9167
BLAKE2b-256 0fa10fdb7c7682dd39844706bdc12df583f556b6d407ff7112a1da306092b00f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for swingmusic-2.1.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b2f3a5425941160c1c7038ad3d243fa6e9f6ae8f8a5967799e9316c80b2e13f8
MD5 065fcf69f2fa3daced33ff3f56c759d3
BLAKE2b-256 9ebec138b77d236a9cb947c334491d0c4aed1d9df3295fa7348afdb874813313

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for swingmusic-2.1.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 61a1ba36a092b296f500f4eeb54482dd452762320ed8a7c9480563ab18c04319
MD5 517c7a74777e1f8de37f29b0f497f447
BLAKE2b-256 2959b81fd19b04aa0dfd1c5be870c471d899120582421f6c112842980c42a0f9

See more details on using hashes here.

Provenance

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