musiscape
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.
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.
An older concept DOI, https://doi.org/10.5281/zenodo.21948999, is frozen at 0.5.0. It was created by a hand deposit made on 2026-08-15, before the Zenodo GitHub integration was archiving this repository; the integration began working the next day and every release since is under the DOI above. Zenodo cannot merge two concepts, so both records exist and only one of them advances. Cite the DOI above.
CITATION.cff in this repository carries the same information in machine-readable form.
Metadata
Release files for musiscape 0.10.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| musiscape-0.10.0.tar.gz | 88.8 kB | With provenance | Details for musiscape-0.10.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| musiscape-0.10.0-py3-none-any.whl | Python 3 | none | any | Details for musiscape-0.10.0-py3-none-any.whl |
Total release size: 163.4 kB
Release files / musiscape-0.10.0.tar.gz
| Download URL | musiscape-0.10.0.tar.gz |
|---|---|
| Size | 88.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1ec492cb98b5cb79996154d6e9eac6fc42168fbc30e3a0d9971596e32d90fb63
|
|
BLAKE2b-256 checksum How to use checksums |
0e2860a6e4eb0640c7def14f8500390061ae254bc1ba08f7a35cdd1274ae7913
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.
Transparency logRelease files / musiscape-0.10.0-py3-none-any.whl
| Download URL | musiscape-0.10.0-py3-none-any.whl |
|---|---|
| Size | 74.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6073242d9d846ac02200c6812e1e8638fe7d79a71a434ba27746080998defaa5
|
|
BLAKE2b-256 checksum How to use checksums |
1b6d9e58b720c055101667952ccb93eb95f6fa02f3a645b67ac01e14d856a7b4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.
Transparency logSecurity for musiscape 0.10.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for musiscape-0.10.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.