A toolbox for analysing music collections: corpus fingerprints, similarity landscapes, and honest categorisation from folders of audio files
Project description
Musiscape
A toolbox for analysing music collections in the form of audio files in folders. The aim is to provide tools to visualise many tracks so you can compare them. It can help answer questions about how albums differ, which tracks resemble which, how internally consistent each album is, where the outliers live, and what categories the corpus falls into.
Musiscape is a sibling of ambiscape, which is focused on analysing soundscapes (including those with some music being played). The toolboxes share some analysis types, including circular statistics and Pierre Schaeffer-inspired typology machinery (ambiscape.music), tonal centres on the circle of fifths, and object-level TARSOM (Tableau rècapitulatif du solfège des objets musicaux) and TARTYP (Tableau rècapitulatif de la typologie).
Install
pip install -e . # from a checkout; PyPI release to follow
Quickstart
A collection is simply a folder tree — each subfolder holding audio files (mp3/wav/flac/ogg/m4a) is an album:
musiscape probe ~/Music/my-collection # what's here?
musiscape report ~/Music/my-collection # everything → analysis/README.md
musiscape fingerprint ~/Music/my-collection # per-album profile bars
musiscape landscape ~/Music/my-collection # PCA similarity map + affinity
musiscape categorize ~/Music/my-collection # k-means with named signatures
report produces a per-collection README.md with an album table
(note density, brightness, dynamics, minor-key share, internal consistency,
key-space clustering R), overview figures, self-explaining categories
("sparse, dark, drone-like" — signed z-scores of the distinguishing
features, never just "cluster 3"), and the corpus extremes.
In Python
import musiscape
from musiscape import features, corpus, categorize
coll = musiscape.open_collection("~/Music/my-collection")
f = features.load_features(features.extract_collection(coll, "analysis"))
corpus.album_stats(f) # per-album fingerprints
corpus.similarity(f) # track matrix + album affinity/consistency
corpus.landscape(f) # PCA coords, variance, loadings
corpus.tonal_spread(f) # key-space clustering per album (circular)
categorize.cluster(f) # interpretable categories
Combine with listening
This toolbox is meant for quick visualisations and overviews. Combine it with listening!
License
MIT.
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 Distribution
Built Distribution
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 musiscape-0.2.0.tar.gz.
File metadata
- Download URL: musiscape-0.2.0.tar.gz
- Upload date:
- Size: 27.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a0070feb439959dd78dbffedec3402fc85efa5e7c930da6f7f72e364c20db79
|
|
| MD5 |
444916e96ea802f5073ca785d8239593
|
|
| BLAKE2b-256 |
a5d8f6dfb1b787b0d69683d7a956266fd5b06135faaa2ba04e8473f44f2418ea
|
Provenance
The following attestation bundles were made for musiscape-0.2.0.tar.gz:
Publisher:
python-publish.yml on fourMs/musiscape
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
musiscape-0.2.0.tar.gz -
Subject digest:
2a0070feb439959dd78dbffedec3402fc85efa5e7c930da6f7f72e364c20db79 - Sigstore transparency entry: 2251681179
- Sigstore integration time:
-
Permalink:
fourMs/musiscape@f44e10aeb2ef8363a78fb8b3bd818213735c9944 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/fourMs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@f44e10aeb2ef8363a78fb8b3bd818213735c9944 -
Trigger Event:
release
-
Statement type:
File details
Details for the file musiscape-0.2.0-py3-none-any.whl.
File metadata
- Download URL: musiscape-0.2.0-py3-none-any.whl
- Upload date:
- Size: 28.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6756a7614769743cf4d256fc1948f81534b5c4b5b3a991a029b4e9a45c186c6c
|
|
| MD5 |
5a68348c6f03ba8809369d63005cee4d
|
|
| BLAKE2b-256 |
697f1c1db50c18972f6fa7c13cef89d6e0345ed82f0929e1eca088432fcca732
|
Provenance
The following attestation bundles were made for musiscape-0.2.0-py3-none-any.whl:
Publisher:
python-publish.yml on fourMs/musiscape
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
musiscape-0.2.0-py3-none-any.whl -
Subject digest:
6756a7614769743cf4d256fc1948f81534b5c4b5b3a991a029b4e9a45c186c6c - Sigstore transparency entry: 2251681799
- Sigstore integration time:
-
Permalink:
fourMs/musiscape@f44e10aeb2ef8363a78fb8b3bd818213735c9944 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/fourMs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@f44e10aeb2ef8363a78fb8b3bd818213735c9944 -
Trigger Event:
release
-
Statement type: