Spaces:
Sleeping
title: Theme Generator
emoji: 🎼
colorFrom: blue
colorTo: green
sdk: docker
app_port: 7860
pinned: false
short_description: Theme generators trained from the dict of musical themes
Theme Generator
FastAPI web app for browsing the musical theme dictionary, playing catalog themes, generating new themes with variable-order Markov or transformer engines, and exporting MIDI, ABC, MusicXML, and Verovio-rendered SVG scores.
This Space is based on Harold Barlow and Sam Morgenstern's A Dictionary of
Musical Themes (Crown Publishers, New York, 1949), a printed reference catalog
of classical themes intended for identifying works from short melodic incipits.
The digitized working corpus lives in the GitHub repository
fpachet/musical_themes, including
the midis/ directory used by the app.
The GitHub repository contains the code, corpus data, generation scripts, and FastAPI app sources. This Hugging Face Space is the small public client for exploring them: it displays the musical-theme dictionary, plays catalog and generated samples, and lets users compare the variable-order Markov and small transformer engines from the browser.
Generation engines
The app offers two symbolic engines trained from the same normalized theme
corpus. Both generate (relative pitch class, duration) tokens and then realize
them as MIDI, ABC, MusicXML, and Verovio score previews.
- Variable-order Markov: backed by
vo_regular_bp, with finite-state constraints for length, rhythmic phase, duration vocabulary, triplet policy, and soft endpoint priors. The model is precomputed and loaded frommodels/theme_lab_markov_cache/default.pkl. This follows François Pachet, "Exact Regular-Constrained Variable-Order Markov Generation via Sparse Context-State Belief Propagation", arXiv:2605.07839 (arxiv.org/abs/2605.07839). - Small transformer: a vanilla PyTorch autoregressive transformer trained
on the same token sequences. The deployed checkpoint has a 64-token context,
84-symbol musical vocabulary, 48-wide embeddings, 4 attention heads, 2
transformer layers, 96-wide feed-forward blocks, dropout 0.1, AdamW at
3e-4, and was trained for 200 CPU steps. Sampling defaults are temperature1.0and top-k16.
The Docker image starts apps.theme_lab.app on port 7860.