Skip to main content

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


Download files

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

Source Distribution

musiscape-0.2.0.tar.gz (27.1 kB view details)

Uploaded Source

Built Distribution

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

musiscape-0.2.0-py3-none-any.whl (28.5 kB view details)

Uploaded Python 3

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

Hashes for musiscape-0.2.0.tar.gz
Algorithm Hash digest
SHA256 2a0070feb439959dd78dbffedec3402fc85efa5e7c930da6f7f72e364c20db79
MD5 444916e96ea802f5073ca785d8239593
BLAKE2b-256 a5d8f6dfb1b787b0d69683d7a956266fd5b06135faaa2ba04e8473f44f2418ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for musiscape-0.2.0.tar.gz:

Publisher: python-publish.yml on fourMs/musiscape

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

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

Hashes for musiscape-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6756a7614769743cf4d256fc1948f81534b5c4b5b3a991a029b4e9a45c186c6c
MD5 5a68348c6f03ba8809369d63005cee4d
BLAKE2b-256 697f1c1db50c18972f6fa7c13cef89d6e0345ed82f0929e1eca088432fcca732

See more details on using hashes here.

Provenance

The following attestation bundles were made for musiscape-0.2.0-py3-none-any.whl:

Publisher: python-publish.yml on fourMs/musiscape

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