An open, machine-readable corpus encoding all 123 counterpoint exercises from Johann Joseph Fux's pedagogical treatise Gradus ad Parnassum (1725). The corpus digitises every cantus firmus, Fux's solutions, interval annotations, and a distilled set of "distinct" exercises, released in editable notation formats under open licences so teachers and researchers can reuse and adapt the material. It is maintained as a versioned repository, with derived files generated by scripts and checked for consistency.
Key Points
Covers 123 exercises across three parts, organised by number of voices: Part I (2 voices, 46 exercises), Part II (3 voices, 45), Part III (4 voices, 32).
Each part is further divided into the five species of counterpoint, mirroring Fux's original structure ('EXERCITII' and 'Lectio/species').
Every part provides four file types: Exercises (cantus firmus only), Solutions (cantus firmus plus added part(s)), Annotations (interval labels), and Distinct (minimal reusable exercises).
The canonical version of record is a paired .krn (Humdrum) score plus .json metadata; all other files are derived.
Distributed in .mxl (MusicXML, openable in nearly any notation software), .mscz (MuseScore Studio), and .pdf, plus source PDFs of the original 1725 edition.
Licence: code under MIT; rendered scores dedicated to the public domain (CC0).
Initiated from Jay Wilson's transcriptions; subsequent annotation, analysis, and code by Mark Gotham.
Concepts
Cantus firmus — the given melodic line; Fux uses one broadly constant cantus firmus per modal final, with occasional variants.
Species (1–5) — the graduated counterpoint exercises (note-against-note through florid/fifth species).
Modal final — the closing pitch of the exercise; six are used: d, e, f, g, a, c.
Distinct exercises — the minimal set of cantus firmus × voice combinations from which any exercise can be built.
Annotations — interval labels showing every interval between each added part and the cantus firmus, including compound intervals (e.g. P12 vs P5) and quality (m3 vs M3).
Version of Record (VoR) — the authoritative .krn + .json pair; everything else is generated.
Figure number — the exercise identifier, taken from the modern Norton/Mann edition (1965), which explains numbering gaps (the set starts at no. 5).
Details
Structure and files
Each of the three parts is split into five species directories (sp1–sp5). At the deepest level sit the paired .krn score and .json metadata files — the canonical version of record. Derived files include .mxl conversions of individual exercises and combined files that aggregate everything at a given structural level or deeper (e.g. all exercises of a species, or of a whole part).
The four file types per section:
File type
Contents
Exercises
Cantus firmus only
Solutions
Cantus firmus plus Fux's added part(s)
Annotations
Solutions labelled with every interval formed against the cantus firmus
Distinct
One file per combination of cantus firmus (6 finals) and voice
The Distinct set distils all possibilities: 12 distinct 2-voice exercises (6 finals × 2 voices), 18 for 3 voices, and 24 for 4 voices. Because all of Fux's exercises follow this format, these files can be used to construct any species exercise, on any cantus firmus, in any part arrangement.
Each exercise also carries metadata: figure number, species type (1–5), modal final, and which of the parts holds the cantus firmus.
Cantus firmus per modal final
Fux's cantus firmus stays broadly constant per final across exercises and parts, with a few variants:
Modal final
Variants / notes
D
Two-octave form (D3 and D4)
E
Three-octave form (E3, E4, E5; fig. 184)
F
Two-octave form (F3 and F4)
G
None
A
Three-octave form (A2, A3, A4); some omit the opening D
C
One substantially different related form
Counts by species
Part
Sp. 1
Sp. 2
Sp. 3
Sp. 4
Sp. 5
Total
I
10
12
6
6
12
46
II
16
9
5
9
6
45
III
11
4
8
4
5
32
Total
37
25
19
19
23
123
Counts by modal final
Final
Part I
Part II
Part III
Total
D
10
17
21
48
E
10
12
7
29
F
10
9
4
23
G
6
2
0
8
A
6
3
0
9
C
4
2
0
6
Total
46
45
32
123
Derivation pipeline
The canonical notation files flow into derived and then public-facing files:
Rendering diagram…
Review and layout
Round-trip checking: conversions are verified (e.g. .krn ↔ .mxl), and manually formatted files are checked to confirm no notes changed inadvertently (match_check).
Programmatic layout: system breaks are set relative to note density (sparsest in species 1, densest in 3 and 5); the clef is chosen automatically from treble, treble8, or bass.
Manual layout work is limited to hiding courtesy clefs (which does not pass reliably through the toolchain) and a final check of the 12 flagship public-facing files, including page breaks set between species and balanced systems per page.
Layout targets MuseScore 4.7.X; default page is A4 portrait, with a US-Letter alternative for the final PDFs aimed at non-computational musicians and pedagogues. Layout remains a common source of breaking changes across MuseScore versions.
Downloads
Whole parts can be downloaded in .pdf, .mscz, or .mxl, in each of the four file types. Individual figures are also available and best explored through a searchable, sortable HTML summary that can be filtered by the metadata criteria (e.g. species type). Contributions are welcomed via pull requests (edits to the .krn/.json VoR files), issues, or direct contact.