Method & sources
Principles
- Every metric carries its definition, formula, sample and caveats. That is what makes baseball's sabermetrics persuasive.
- Measurement is kept apart from interpretation. "The chromatic ratio is higher" is a measurement; "so it is more innovative" is a reading. This site does only the former.
- One codebase measures every composer. Measuring Bach, Beethoven and Mozart differently would not be a comparison.
- Only open corpora. Scores, MIDI and audio are not redistributed; only the numbers are.
Source
dcml — DCML corpora (Digital and Cognitive Musicology Lab, EPFL): Beethoven string quartets (ABC; Neuwirth, Harasim, Moss & Rohrmeier 2018), Beethoven piano sonatas (Hentschel et al. 2024), Bach English and French Suites and solo works (Hentschel et al. 2025), Bach chorales (converted from Kaiser 2002), Mozart's 18 piano sonatas (Hentschel, Neuwirth & Rohrmeier 2021, after the Neue Mozart-Ausgabe; added in 1.1). Note, measure and harmony tables extracted from MuseScore files with ms3. https://github.com/DCMLab · License: CC BY-NC-SA 4.0 (chorales: CC0 1.0)
kern370 — Craig Sapp, Bach 370 chorales (Humdrum **kern, Breitkopf & Härtel numbering). Second, independent encoding used to cross-check the chorale metrics. https://github.com/craigsapp/bach-370-chorales · License: CC BY-NC-SA 4.0
bmetr — Martín-Castro & Ucar (2020), "Conductors' tempo choices shed light over Beethoven's metronome", PLOS ONE 15(12): e0243616. Track lengths and coda tempo estimates for 36 conductors' complete Beethoven symphony cycles (1,332 tracks), plus metronome marks and bar counts from the scores. R package bmetr. https://github.com/Enchufa2/bmetr · License: MIT
asap — ASAP dataset (Foscarin et al., ISMIR 2020). Piano MIDI performances aligned beat-by-beat to scores: 169 Bach (Well-Tempered Clavier) and 271 Beethoven (sonatas); 169 and 259 of these have beat counts matching the score and only those are used. Version 1.1 adds Mozart: 6 movements (K.310/i, K.331/iii, K.332 complete, Fantasia K.475), 16 performances — one to five per piece, so they appear in tables but not in comparison charts. Performances come from MAESTRO (International Piano-e-Competition). https://github.com/fosfrancesco/asap-dataset · License: CC BY-NC-SA 4.0
nyphil — New York Philharmonic Performance History: works, composers and conductors on more than 15,000 programs from the first concert in December 1842 to the current season. Besides the Philharmonic proper, the archive holds programs of the New York Symphony, the Stadium concerts and chamber series; this site does not filter them out. Updated nightly. https://github.com/nyphilarchive/PerformanceHistory · License: CC0 1.0
wikidata — Wikidata (Wikimedia Foundation) person items: year of birth (P569) and death (P570). Composers with at least 10 NY Phil performances (U1) were searched by name; only human items with a music occupation were kept and checked against the composer's first season (born at least five years earlier). Names with several candidates or a failed check were resolved one by one by the editor. The matching table (composer_wikidata.csv) is published. https://www.wikidata.org/ · License: CC0 1.0
imslp — Composition year, genre tags, instrumentation and movement fields of IMSLP (International Music Score Library Project) work pages: ten composer categories and the Symphonies category, fetched through the MediaWiki API (allowed by robots.txt, two seconds between requests) and parsed by the editor. Added in 1.2. https://imslp.org/ · License: CC BY-SA 4.0
ellis — Helmholtz, On the Sensations of Tone, tr. A. J. Ellis, 3rd ed. (1895), Appendix XX, Section H: tables of historical pitch (Tables I and II), transcribed from the page images by the editor and checked against the 2nd edition (1885). Public domain. Added in 1.2. https://archive.org/details/onsensationsofto00helmrich · License: Public domain
Counting unit for repertoire (1.1)
The NY Phil archive lists work entries per program; an overture and an aria from the same opera are two entries. Version 1.0 counted each entry once (U0, 110,410 in all); 1.1 counts the entries the archive files under one work number on a program once (U1, 97,432). Arrangements given a different work number are counted separately. Either way the count is multiplied by the program's number of concerts. Those with no movement or part named are counted separately as complete performances (U2, 73,314). U2 is a proxy from the record: 73 pairs with a part number but an empty movement field count as complete, and 105 pairs mixing unmarked and excerpt entries count as excerpts. The population is the 15,027 programs with at least one credited work (the source has 15,074 program records).
The unit changes rankings. Wagner is 2nd by work performances (U1) but, with 86% excerpts, 27th by complete performances (U2). Shares and concentration therefore use U1, and the excerpt share is its own metric. The four 1.0 metrics are recomputed under the old definition in a '1.0 unit' column (identical to the published 1.0 values for every completed season).
The 'subscription only' series counts only concerts whose event type is Subscription Season, leaving out Stadium, parks, tour and young people's concerts.
Composer names
The archive already uses authority forms, so no composer is split by accents or capitalization. Instead, 91 non-person credits are classified and one pen name is merged (P.D.Q. Bach → Peter Schickele): traditional, anthem, unattributed, not a work (talks, demonstrations, improvisation), and joint or arrangement credits ('Vivaldi-Bach', 'Lennon-McCartney', slash-joined names, bands and ensembles). They stay in every denominator but are not counted as composers; joint credits are not assigned to the original composer, since doing so would move an arranger's share into the composer's. Table: aliases/nyphil_composers.csv.
Composer dates (Wikidata)
The 529 composers with 10+ performances were searched by name in Wikidata; only human items with a music occupation were kept and checked against the first NY Phil season (born at least five years earlier). 478 with a single candidate passing the check were accepted automatically; 40 with several same-name candidates or a failed check were resolved by the editor from the works performed and the dates (e.g. Humperdinck the composer, born 1854, not the singer born 1936); 10 remain unresolved and blank. 'P.D.Q. Bach' is Peter Schickele's pen name and is merged into Schickele in the composer tables. Where an item holds several dates the preferred-rank value is used, otherwise the earliest normal-rank year; one clear error (Guarnieri's death, 1933 → 1993) was corrected by hand. Years are taken as written, so a date recorded in the Julian calendar can be one year off. Only death years enter the repertoire metrics; a composer without a death year is treated as living. Table: aliases/composer_wikidata.csv.
Cross-check
The Bach chorales were measured from two independent encodings (DCML MuseScore and Sapp Humdrum). On the 235 chorales whose note counts agree within 2%, the nine metrics correlate at r ≥ 0.92.| Metric | n | DCML | Humdrum | r | |diff| median |
|---|---|---|---|---|---|
| chromatic_ratio | 235 | 0.068 | 0.068 | 0.983 | 0.0002 |
| pitch_class_entropy | 235 | 3.008 | 3.009 | 0.967 | 0.0010 |
| rhythm_entropy | 235 | 1.512 | 1.504 | 0.979 | 0.0040 |
| offbeat_onset_ratio | 235 | 0.205 | 0.208 | 0.984 | 0.0004 |
| mean_simultaneity | 235 | 2.821 | 2.820 | 0.976 | 0.0000 |
| notes_per_quarter | 235 | 4.318 | 4.327 | 0.975 | 0.0048 |
| top_leap_ratio | 235 | 0.143 | 0.143 | 0.957 | 0.0000 |
| top_mean_interval_semitones | 235 | 1.857 | 1.857 | 0.967 | 0.0000 |
| pitch_range_semitones | 235 | 36.000 | 36.000 | 0.923 | 0.0000 |
Comparison with the source paper
Martín-Castro & Ucar (2020) report, from a mixed-effects regression, that period-instrument (HIP), HIP-influenced and Romantic conductors fall below the marks by 6(2), 8(2) and 13(2) bpm. The plain medians here are −6, −8 and −12.7 bpm — the same picture by a simpler route.AI disclosure
Metric design, code and draft text were produced with help from Claude (Anthropic) and verified by the editor against the source data. All numbers are reproducible from the published code.
Not yet here (long-term)
- Score metrics for the Beethoven symphonies — no open machine-readable full scores; needs OMR plus human correction.
- Bach recording durations over time (before/after the period-instrument movement) — requires de-duplicating reissues in release metadata.
- Conductor tempo statistics beyond Beethoven.
- Repertoire of orchestras other than the New York Philharmonic — bulk open data is rare.
- Cadence metrics for works without cadence annotation — cadence density and PAC share have been published since 1.3 for annotated movements only. The Beethoven string quartets, Bach's solo violin works and Cello Suites 1–2 carry no cadence labels in the corpora, so they are blank.
Changelog
- 1.0 (2026-10-31) — Bach and Beethoven: 14 score metrics, 6 performance metrics, 4 NY Phil repertoire metrics.
- 1.1 (2026-11-01) — Added Mozart's piano sonatas (54 movements, all 14 score metrics) and 16 ASAP Mozart performances. Widened the NY Phil repertoire layer to every composer, with five new metrics (Mozart share, excerpt share, living-composer share, repertoire age, canon turnover) and composer pages. The repertoire counting unit changed from 'work entry on a program' to 'work on a program', so 1.0 repertoire values changed (old values kept in a '1.0 unit' column).
- 1.2 (2026-11-01) — New 'Works & history' page: ten composers' work activity from IMSLP work pages (career ribbons, work pages by age, composed vs performed), symphony orchestration, tempo markings, instrument use, and the history of the pitch of a′ from Ellis's tables (1361–1885). Tables derived from IMSLP are CC BY-SA 4.0 (a different license from the other tables). Each file's license and sources are listed in data/datapackage.json.
- 1.2.1 (2026-11-02) — Added an 'At a glance' box at the top of the 29 metric pages and the seven sections of the Works & history page: a summary computed from the page's own tables and the most important limit. Made the caveats for the chromatic ratio and repertoire concentration (HHI) more precise.
- 1.3 (2026-11-02) — Score metrics grew from 14 to 39. Sixteen that had already been computed were published (top-line step and repeat ratios and range, melodic direction changes, mean pitch and spread, pitch-name vocabulary, duration vocabulary and mean length, mean chord length, chromatic chords, inversions, keys visited, minor-key share, cadence density, PAC share), and nine were new (nPVI rhythmic contrast, post-leap reversal, beat-crossing syncopation, motif repetition, diminished sevenths, Neapolitan and augmented sixths, pedal points, phrase length, 4- and 8-bar phrase share). Cadence density for works without cadence annotation (Bach's solo violin works and Cello Suites 1–2) was changed from 0 to blank.
- 1.3.1 (2026-11-02) — Fixed the median bar in the strip charts on metric pages: with an even number of values it showed the upper middle value instead of the mean of the two middle values. On 38 metric pages the median changes in 111 strip rows, which now match the median in the table on the same page (after rounding, the bar position or tooltip value differs in 109 of them; e.g. cadence density, Bach's solo works: 16.7 → 15.8). Numbers in tables, summary boxes and CSVs are unchanged. Revised wording, terms, spelling (now American) and table-header capitalization on the English pages, and removed the IMSLP entry from the record of input commits (raw_manifest.json): IMSLP has no commit, and the build repository's own commit had been recorded in its place.
- 1.4 (2026-11-02) — Added three performance metrics (tempo trend by recording year, damper pedal time share, soft pedal use) and three repertoire metrics (repertoire by conductor, new-work re-performance, women composers' share — lower bound, middle value and upper bound from the Wikidata gender table aliases/composer_gender.csv). The conductor-name normalization table (aliases/nyphil_conductors.csv) and the composer gender table are published. The pedal metrics count a recording cut into several pieces once (456 ASAP files → 359 recordings). Displayed negatives now use the minus sign (−) and seasons in generated text use the en dash (1842–43); raw season cells in tables are unchanged. Medians and quartiles of integer metrics are shown with one decimal place when they are not whole numbers (e.g. pitch range, Bach's solo works: 30 → 29.5). On narrow screens tables no longer break inside words but scroll sideways, and chart labels are larger. Metric and composer pages have a breadcrumb, a list of the other pages in the same group (a sidebar on wide screens, a collapsed box above the title on narrow ones) and previous/next links (arrow keys); the language link opens the same page. 'Every fifteen bars' is corrected to every 14 bars (100 ÷ 7). US spelling and dates in a few places; HIP labels without nested parentheses.