Digital edition of Mozart piano sonatas
This repository contain a digital edition of 17 piano sonatas composed by Wolfgang Amadeus Mozart (with one sonata re-attributed to August Eberhard Müller), encoded in the Humdrum file format. The reference edition is the Alte Mozart-Ausgabe, series 20, published in 1878 by Breitkopf & Härtel, Leipzig, Germany.
Graphical notation for the data files can be viewed online at Verovio Humdrum Viewer. Here are links to the individual movements:
NMAstands for Neue Mozart-Ausgabe. The NMA inserts a new sonata between the 14th and 15th one of the AMA.
You can hide the underlying musical data in VHV by using the alt-y command. You can hide the data via the URL by changing
k=ey. Here is an index of the works that navigate between the movement with the data hidden: http://verovio.humdrum.org/?file=mozart/sonatas&k=ey (in this case press
alt-yto reveal the data).
Use the left/right arrow keys to changes pages
Use shift left/right arrow keys to change movements (or click on the left/right buttons at the top left corner of the VHV page).
Online conversion to MEI data can be done by typing the alt-m command.
Press the space bar or click the play button to listen to the music. MIDI file conversions cannot be download online, but can be produced via command-line tools.
You can transpose the music to any key by adding
&filter=transpose%20-kto the above URLs, followed by the name of the tonic note, such as
&filter=transpose%20-kcfor C major/minor,
&filter=transpose%20-kf#for F-sharp major/minor, or
&filter=transpose%20-kb-for B-flat major/minor. Example URL transposing the first movement of the first sonata into B-flat major: http://verovio.humdrum.org?k=ey&file=mozart/sonata/sonata01-1.krn&filter=transpose%20-kb-
If you think that there is a mistake in the data, verify that there is a problem by typing alt-p in VHV to compare to a scan of the source edition. The following figure demonstrates viewing of the PDF of the reference edition underneath the VHV webpage (click to view the image at full resolution):
If an error is found, there are two methods for fixing it. A simple method is to report the problem
on the issues page for this repository. You
should cite the work and movement numbers with a description of the error. Preferably you should alto mention
the page number and system in the PDF where the error occurs, since the source edition does not have
measure numbers. Cite the measure number in the source edition (visible at the start of the systems
in VHV, as well as after
= signs in the data). Also preferably you should include a snapshot of the
error in the VHV notation and PDF scan of the corresponding spot.
For example, here is a slur missing on beat three of measure three from a sonata:
Snapshot from VHV:
Snapshot from PDF:
How you generate the snapshots will depend on your operating system. On MacOS computers, type
command-shift-4 and then draw a box around the region to capture.
Images can be added to the issue report by dragging-and-dropping them into the report form.
In both case, you will have to create a free account on Github.
Some mistakes are intentional and are related to limitations in verovio which is used to render the graphical notation, or in the converter from Humdrum-to-MEI. You can report these sorts of errors, but they will be fixed over time on their own by magical programming gnomes. Errors worth reporting include wrong pitches, invisible accidentals (correct pitch, but cautionary accidental matching the source edition is not visible). Slurs starting/stopping on wrong notes (cross staff slurs are only partially implemented in verovio). The wrong stem directions on notes or beams, or slurs are on the wrong sides of the staves. Missing dynamics (dynamics placement is currently limited to the middle of the grand staff and cannot yet be shown below the staff).
The vertical positions of rests are intended to match the source edition as well. These are currently being implemented in the converter, with some rests requiring manual placement in the data. Rests requiring automatic positioning have a few bugs which should improve over time.
Slur angles are determined solely by verovio and are not interesting to submit as bug reports (only slur orientation and note attachments are of interest for error correction). Stem lengths and beam angles are also not encoded in the data and are left to verovio to determine (and verovio still needs work on this point).
Line/page breaks and staff spacings are dependent on verovio and not taken from the source edition.
The files can be downloaded by clicking on the green "Clone or download" button that should be near the top right corner of this page. Then choose "Download ZIP" in the drop-down menu that appears.
To download with
git clone https://github.com/craigsapp/mozart-piano-sonatas
To update your copy with any new changes to the data, type this command within the mozart-piano-sonatas directory:
Alternate access to data
This digital edition is also accessible in a variety of interfaces described below.
KernScores website access
These digital scores are available on the kernScores library of Humdrum musical scores:
with mirrors at:
this includes dynamic conversions to other data formats.
Command-line downloading with Humdrum Extras
The Humdrum Extras command-line programs can download these files from kernScores. A quick method of downloading:
mkdir -p mozart/piano-sonatas cd mozart/piano-sonatas humsplit h://mozart/sonatas
To get online access to a single movement, for example to transpose the first movement of the first sonata from C major to B major:
transpose -k b h://mozart/sonatas/sonata01-1.krn
To interface to the original Humdrum Toolkit commands, use the humcat command to download to standard input (the -s option is needed when downloading multiple files):
humcat -s h://mozart/sonatas | census -k
(There are 96637 notes in this data set, which is an average of 5685 notes per sonata, or 1895 notes per movement.)
This digital edition is also available in the Mozart directory of the Humdrum-data repository along with other digital scores in the Humdrum format.
Using the included makefile
The makefile provided in the base directory includes example data
processing commands. Type
make when in the same directory as the
makefile to list commands that can be run with the makefile:
Run this makefile with one of the following labels: "make update" : download any new changes from online repository. "make reference" : download PDF scans of reference editions. "make clean" : delete data directories created by this makefile. Commands requiring the Humdrum Toolkit to be installed: "make census" : run the census command on all files. Commands requiring Humdrum Extras to be installed. "make ctonic" : transpose scores to C major/minor. "make keyscape" : generate keyscape plots by movement. "make ckeyscape" : generate keyscape plots by movement in C major/minor. "make midi" : convert to MIDI files (full repeats) "make midi-norep" : convert to MIDI files (no repeats) "make musedata" : convert to MuseData files. "make musicxml" : convert to MusicXML files. "make notearray" : create notearray files. "make searchindex" : create themax search index. Commands requiring other software to be installed. "make pdf-lilypond": convert to PDF files with lilypond. "make pdf-musedata": convert to PDF files with muse2ps.
make command does not work for you, then most likely it must be
installed. In linux, the following command might install
sudo apt-get install build-essential # or sudo yum install build-essential
In MacOS Mavericks or later, install the Xcode command-line tools by typing this command in the terminal:
Most of the make targets also require Humdrum Extras to process the data. See https://github.com/humdrum-tools for instructions on downloading and installing it. A few other make targets require additional software to be installed, such as ImageMagick tools, muse2ps, lilypond, and verovio.
Creating absolute and relative keyscapes
If you have the Humdrum tools for command-line
processing of the files installed (as well as the
convert tool from ImageMagick), you can create
plots of the key structure for each movement by typing the following command in the base directory
of the repository:
Plots are store in the
Time goes from left to right in the plots, with the color mapping between keys and colors being:
Example keyscape from the first movement of the 14th sonata:
This is a sonata-allegro form. The main key is C minor (dark green), and the second theme is in E-flat major (red). The black ticks at the bottom of the plot indicate the measures. The modulation to E-flat major occurs around measure 20.
Here is the opening of the movement:
And at the transition to E-flat major:
The recapitulation occurs around measure 100 (tick with a crossbar):
And the second theme is transposed to C minor in the recapitulation (so it is not differentiable in the keyscape since it is now in the same key as the first theme). The deveopment section lasts from about measure 70 to 100, where there are several small key regions at the bottom of the keyscape plot.
To create relative keyscapes of each movement (by transposing the music to C before generating the keyscape), type:
This will display the tonic key in green, blue is dominant, yellow is subdominant, etc.
Darker colors indicate minor keys.
Downloading scans of the source edition
Scans of the source edition can be downloaded from kernScores with this command:
This will create a directory called
reference-edition with a
set of PDF files, one for each movement.
Creating MIDI files
To convert the Humdrum data files into MIDI files, type:
This will create a directory called
midi containing the resulting MIDI files. These files
contain the full repeats indicated in the music. To generate MIDI files that take only second
endings (suitble for most types of analysis), instead type:
This will generate MIDI files without repeats ("norep").
The total performance time of all sonatas, without breaks between movements and using the interpreted tempos in the data files, is 4 hours and 41 minutes, calculated with this use of Humdrum Extras:
thrux kern/*.krn | gettime -T
The longest movement is sonata 13, movement 1. Total duration of the data without taking repeats is 3 hours and 2 minutes, calcuated with the command pipeline:
thrux -v norep kern/*.krn | gettime -T