Swing Music
Project description
Swing Music is a blazingly fast and beautiful, self-hosted music streaming server. Like a cooler Spotify ... but bring your own music.
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
- 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
- Last.fm scrobbling
- Multi-user support
- Cross-platform - Windows, Linux, MacOS (coming soon), arm64, x86
Installation
On Linux or MacOS run the command below to install Swing Music:
curl -fsSL https://setup.swingmx.com | bash
To run Swing Music on Windows, download the portable build from the downloads page and run it.
The app should start at http://localhost:1970 by default. Open the URL in your browser to configure and use Swing Music.
[!TIP] To stream your music from your Android device, download the Android mobile client.
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
Using Docker CLI
docker pull ghcr.io/swingmx/swingmusic:latest
Then run:
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
Replace /path/to/music and /path/to/config with the appropriate values. In addition, specify the /music directory as the root directory inside Swing Music.
[!TIP] For more info, see the Docker section on the docs.
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.
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.
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file swingmusic-2.1.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: swingmusic-2.1.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 2.9 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c06253854c19ac87bdf016583d03032ff02ccdb84d51522c6afc5ebb47452e4
|
|
| MD5 |
14447e3912cb25479ba604c628484486
|
|
| BLAKE2b-256 |
23d222d413e787d92befced2ff531ae38e5c2d7e7a5c486486c2f7dbeadfba99
|
Provenance
The following attestation bundles were made for swingmusic-2.1.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
build.yml on swingmx/swingmusic.pro
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
swingmusic-2.1.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
4c06253854c19ac87bdf016583d03032ff02ccdb84d51522c6afc5ebb47452e4 - Sigstore transparency entry: 1384699092
- Sigstore integration time:
-
Permalink:
swingmx/swingmusic.pro@180ff158e7ca815e81a0a256a0a67e2d8b220467 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/swingmx
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@180ff158e7ca815e81a0a256a0a67e2d8b220467 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file swingmusic-2.1.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: swingmusic-2.1.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 2.6 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eac20136e8ba056cf183d16726e7fccb3af9366f4f19d081b46f3a92b74bb73b
|
|
| MD5 |
6e8ac5d094df44c05ec6111a62ef88ac
|
|
| BLAKE2b-256 |
dab19e84202aa554bcec13104f0e5d30234326c23946b34d8c700b6644ed1914
|
Provenance
The following attestation bundles were made for swingmusic-2.1.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl:
Publisher:
build.yml on swingmx/swingmusic.pro
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
swingmusic-2.1.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
eac20136e8ba056cf183d16726e7fccb3af9366f4f19d081b46f3a92b74bb73b - Sigstore transparency entry: 1384699031
- Sigstore integration time:
-
Permalink:
swingmx/swingmusic.pro@180ff158e7ca815e81a0a256a0a67e2d8b220467 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/swingmx
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@180ff158e7ca815e81a0a256a0a67e2d8b220467 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file swingmusic-2.1.11-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: swingmusic-2.1.11-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52658f39af24bfd7c7839e7328d07772636cdbdde9967c1c1a8fe4b25ca125e4
|
|
| MD5 |
fd0658f09cd4ae4cad948c836c211a58
|
|
| BLAKE2b-256 |
bc38b5238000dc973ed2e33732d70fa3307c7f94bf2b5fb5285d546dc1d71067
|
Provenance
The following attestation bundles were made for swingmusic-2.1.11-cp313-cp313-macosx_11_0_arm64.whl:
Publisher:
build.yml on swingmx/swingmusic.pro
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
swingmusic-2.1.11-cp313-cp313-macosx_11_0_arm64.whl -
Subject digest:
52658f39af24bfd7c7839e7328d07772636cdbdde9967c1c1a8fe4b25ca125e4 - Sigstore transparency entry: 1384699068
- Sigstore integration time:
-
Permalink:
swingmx/swingmusic.pro@180ff158e7ca815e81a0a256a0a67e2d8b220467 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/swingmx
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@180ff158e7ca815e81a0a256a0a67e2d8b220467 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file swingmusic-2.1.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: swingmusic-2.1.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 2.9 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a7ba522aa37062388dc3aacece2c178a79f5ae938c89f267eb0dfd38083b363
|
|
| MD5 |
21ca20b624fd3549d668edc8f0a3bc5a
|
|
| BLAKE2b-256 |
fc28ddadbd6b877c5847e2015d95ce4e5be3886664cefc06f1997d20da7a4942
|
Provenance
The following attestation bundles were made for swingmusic-2.1.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
build.yml on swingmx/swingmusic.pro
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
swingmusic-2.1.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
4a7ba522aa37062388dc3aacece2c178a79f5ae938c89f267eb0dfd38083b363 - Sigstore transparency entry: 1384699012
- Sigstore integration time:
-
Permalink:
swingmx/swingmusic.pro@180ff158e7ca815e81a0a256a0a67e2d8b220467 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/swingmx
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@180ff158e7ca815e81a0a256a0a67e2d8b220467 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file swingmusic-2.1.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: swingmusic-2.1.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 2.6 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be08efa4b4745cc944edd653b1b08c377f7e6fe7654afa563b675cb4d9957686
|
|
| MD5 |
d6c3d0ccadf1c71edb2537fbabfb1c31
|
|
| BLAKE2b-256 |
af62021b670850164d9b9cf5ca41dcba07a2b591cf28a03d020b15b2465b715c
|
Provenance
The following attestation bundles were made for swingmusic-2.1.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl:
Publisher:
build.yml on swingmx/swingmusic.pro
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
swingmusic-2.1.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
be08efa4b4745cc944edd653b1b08c377f7e6fe7654afa563b675cb4d9957686 - Sigstore transparency entry: 1384699054
- Sigstore integration time:
-
Permalink:
swingmx/swingmusic.pro@180ff158e7ca815e81a0a256a0a67e2d8b220467 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/swingmx
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@180ff158e7ca815e81a0a256a0a67e2d8b220467 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file swingmusic-2.1.11-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: swingmusic-2.1.11-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b503fe4d2f875b9a0c691fd1a6d6ff3052a874ba556972af26828a652bff002
|
|
| MD5 |
4e8c6336ef47c82637c9040bb28d0518
|
|
| BLAKE2b-256 |
f945bf65a33ee61af722468c165470c571d3326a596fd3b8c6f665940eae9db3
|
Provenance
The following attestation bundles were made for swingmusic-2.1.11-cp312-cp312-macosx_11_0_arm64.whl:
Publisher:
build.yml on swingmx/swingmusic.pro
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
swingmusic-2.1.11-cp312-cp312-macosx_11_0_arm64.whl -
Subject digest:
9b503fe4d2f875b9a0c691fd1a6d6ff3052a874ba556972af26828a652bff002 - Sigstore transparency entry: 1384699002
- Sigstore integration time:
-
Permalink:
swingmx/swingmusic.pro@180ff158e7ca815e81a0a256a0a67e2d8b220467 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/swingmx
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@180ff158e7ca815e81a0a256a0a67e2d8b220467 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file swingmusic-2.1.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: swingmusic-2.1.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 2.6 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1325469a4f015c3d87fca2f7d2d99a8bd8e4bab1fc49c9973c1619da0e47251
|
|
| MD5 |
90d7771ae92a9a820210e5fe3e051d7f
|
|
| BLAKE2b-256 |
054be85b6f41739572e8437b89668194ec48b1eb875d431547f83867d881b1a0
|
Provenance
The following attestation bundles were made for swingmusic-2.1.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
build.yml on swingmx/swingmusic.pro
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
swingmusic-2.1.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
f1325469a4f015c3d87fca2f7d2d99a8bd8e4bab1fc49c9973c1619da0e47251 - Sigstore transparency entry: 1384699019
- Sigstore integration time:
-
Permalink:
swingmx/swingmusic.pro@180ff158e7ca815e81a0a256a0a67e2d8b220467 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/swingmx
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@180ff158e7ca815e81a0a256a0a67e2d8b220467 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file swingmusic-2.1.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: swingmusic-2.1.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 2.5 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99f2aac739ceb61089e5cca60db1712510c932989de746555f8460834d5389cd
|
|
| MD5 |
b364d0c037e63dcf9b7ff070e87a8953
|
|
| BLAKE2b-256 |
91e903dbc2f7c8270ef243824424e3e5f96eaabdef4f1e964d2cd5ed78cefb41
|
Provenance
The following attestation bundles were made for swingmusic-2.1.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl:
Publisher:
build.yml on swingmx/swingmusic.pro
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
swingmusic-2.1.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
99f2aac739ceb61089e5cca60db1712510c932989de746555f8460834d5389cd - Sigstore transparency entry: 1384699043
- Sigstore integration time:
-
Permalink:
swingmx/swingmusic.pro@180ff158e7ca815e81a0a256a0a67e2d8b220467 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/swingmx
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@180ff158e7ca815e81a0a256a0a67e2d8b220467 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file swingmusic-2.1.11-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: swingmusic-2.1.11-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f4f9fa611ef96f045c01668766ee10f11de8c46cf8c8540358b54a50d858607
|
|
| MD5 |
584b50fd6b622c7ecc5be979bcb0471d
|
|
| BLAKE2b-256 |
36196b4ca2c117656c1737f8ed39cd3280929f27965bb6e9f55a12d680e4bab8
|
Provenance
The following attestation bundles were made for swingmusic-2.1.11-cp311-cp311-macosx_11_0_arm64.whl:
Publisher:
build.yml on swingmx/swingmusic.pro
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
swingmusic-2.1.11-cp311-cp311-macosx_11_0_arm64.whl -
Subject digest:
6f4f9fa611ef96f045c01668766ee10f11de8c46cf8c8540358b54a50d858607 - Sigstore transparency entry: 1384699084
- Sigstore integration time:
-
Permalink:
swingmx/swingmusic.pro@180ff158e7ca815e81a0a256a0a67e2d8b220467 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/swingmx
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@180ff158e7ca815e81a0a256a0a67e2d8b220467 -
Trigger Event:
workflow_dispatch
-
Statement type: