Skip to main content

musiscape

CI docs PyPI version Python License: MIT DOI

A Python toolbox for analysing large music collections and long music recordings.

Point it at a folder of audio files, where each subfolder counts as an album, and it renders figures, tables and thumbnails that let you compare many tracks at a glance: albums, similarity, outliers, categories. Point it at a concert recording instead and it finds the songs inside it first, so the same tools apply to a live set.

Install

pip install musiscape

Quickstart

musiscape report ~/Music/my-collection

One command runs the whole pipeline and writes analysis/README.md next to your music: an album table, a similarity landscape, self-explaining categories, and the corpus extremes.

Per-album fingerprint bars from a synthetic demo collection

Commands

Command What it does
probe list albums and tracks, no analysis
extract per-track features, cached in features.json
fingerprint per-album profile bars
landscape PCA similarity map and album-affinity matrix
categorize k-means categories with named signatures
report everything above, gathered into analysis/README.md
thumbnails one visual card per track (--style, seventeen styles)
poster the whole collection as one image (--style vinyl for discs)
sonic a ~12-second audio summary per track, plus album medleys
segment finds the songs in a concert recording, labels every second of it, and writes one file per song
figures labelled chromagram and tempogram per track, at any pixel width
pdf one PDF: a summary table, then a page of figures per track

A live recording is not a collection until it is cut into songs, which is what segment is for (video files included, since concerts usually arrive as video):

musiscape segment ~/video/concert -o ~/video/concert/analysis
musiscape report  ~/video/concert/analysis/songs

Common options: -o sets the output folder (default <root>/analysis), --workers N parallelises, --duration S analyses only the first S seconds per track, and -k fixes the number of categories.

Learn more

  • Documentation—guides, an illustrated gallery of the visualisation styles, and the API reference
  • Wiki—methodology notes and a case study

The toolbox is meant for quick visualisations and overviews. Combine it with listening.

The four toolboxes

Four packages from the fourMs lab at the University of Oslo, each released separately on PyPI. Which one you want is decided by what you have in hand rather than by what you want to know:

you have use it gives you
a folder of music, or a concert recording musiscape (this one) many tracks and albums compared at a glance
a motion time series from a body — optical markers, an accelerometer, a respiration belt, a force plate micromotion quantity of motion, posture, balance, and the band conventions the others follow
a video file, with or without its sound musicalgestures motiongrams, videograms, motion analysis from ordinary video
a recording of a place — mono, stereo, binaural or ambisonic ambiscape the sonic ambience of that place: level, spectrum, space, rhythm, sources

Where a measure appears in more than one package it has a single owner and a single implementation, so the answer does not depend on which package you called. Circular statistics belong to micromotion, and musiscape imports pulse clarity, fifths-circle centres and the Rayleigh test from there rather than keeping its own copy. A test in each package checks its numbers against the owner's and fails if they diverge.

musiscape requires micromotion, which pip installs for you; that is the only sibling it needs. Its own boundary with ambiscape is worth stating, since both read audio: ambiscape is about a PLACE and its sonic ambience, musiscape about a COLLECTION of music. Music analysis moved out of ambiscape into musiscape on 2026-08-12, so a release of either from before then may still carry the other's functions.

Licence and credit

MIT licence. musiscape is developed as part of the AMBIENT project at RITMO Centre for Interdisciplinary Studies in Rhythm, Time and Motion, University of Oslo.

Citing

Cite the concept DOI, which always resolves to the newest version:

Jensenius, A. R. (2026). musiscape: A Python toolbox for analysing large music collections and long music recordings [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.21964192

Where the exact behaviour matters, add the version you ran. Every release has its own DOI, listed on the Zenodo record.

CITATION.cff in this repository carries the same information in machine-readable form.

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.8.0.tar.gz (75.9 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.8.0-py3-none-any.whl (62.2 kB view details)

Uploaded Python 3

File details

Details for the file musiscape-0.8.0.tar.gz.

File metadata

  • Download URL: musiscape-0.8.0.tar.gz
  • Upload date:
  • Size: 75.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for musiscape-0.8.0.tar.gz
Algorithm Hash digest
SHA256 84db5eeb9ad9d453e1c97978909ef6b91713bb44412380dbb5bed6bbba0b02ce
MD5 0eb8d44ee44e9f3fb6bdbdbe7aaf3827
BLAKE2b-256 c91e9ab152f98e1d4e513abb38d478920f8bd4da869751f60d1ad0d86c168250

See more details on using hashes here.

Provenance

The following attestation bundles were made for musiscape-0.8.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.8.0-py3-none-any.whl.

File metadata

  • Download URL: musiscape-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 62.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for musiscape-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e104d49e3f110901fc43af88383dd6524061dfe8825199e27c65bb233022f571
MD5 464fb166988edc4d56abbc63bbef0742
BLAKE2b-256 a7c044f24f8587f60755714f81209f7d10a622c4476f9a0fc638f8a499b0f289

See more details on using hashes here.

Provenance

The following attestation bundles were made for musiscape-0.8.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.

Release history Release notifications | RSS feed

0.10.0

2 files

0.9.0

2 files

This release

0.8.0 This release

2 files

0.7.3

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page