/mozart-piano-sonatas

Digital edition of W.A. Mozart's piano sonatas in the Humdrum file format, based on the Alte Mozart-Ausgabe.

Primary LanguageMakefileOtherNOASSERTION

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.

Online viewing

Graphical notation for the data files can be viewed online at Verovio Humdrum Viewer. Here are links to the individual movements:

Number NMA key K1 K6 mvmt. 1 mvmt. 2 mvmt. 3
1 1 C major 279 189d Allegro Andante Allegro
2 2 F major 280 189e Allegro assai Adagio Presto
3 3 B-flat major 281 189f Allegro Andante amoroso Rondo: Allegro
4 4 E-flat major 282 189g Allegro Menuett I & II Allegro
5 5 G major 283 189h Allegro Andante Presto
6 6 D major 284 205b Allegro Rondeau en polonaise: Andante Thema
7 7 C major 309 284b Allegro con spirito Andante un poco adagio Rondo: Allegretto grazioso
8 8 A minor 310 300d Allegro maestoso Andante cantabile con expressione Presto
9 9 D major 311 284c Allegro con spirito Andante con expressione Rondo: Allegro
10 10 C major 330 300h Allegro moderato Andante cantabile Allegretto
11 11 A major 331 300i Thema: Andante grazioso Menuetto & Trio Alla Turca: Allegretto
12 12 F major 332 300k Allegro Adagio Allegro assai
13 13 B-flat major 333 315c Allegro Andante cantabile Allegretto grazioso
14 14 C minor 457 Allegro Adagio Molto allegro
15 16 C major 545 Allegro Andante Rondo: Allegretto
16 17 B-flat major Anh. 136 Anh.C 25.04/05 Allegro Adagio Allegretto
17 18 D major 576 Allegro Adagio Allegretto
  • NMA stands 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=e to 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-y to 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-k to the above URLs, followed by the name of the tonic note, such as &filter=transpose%20-kc for 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-

Corrections

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.

More advanced users can submit a pull request fixing the error, after first making a fork (i.e., a copy) into their Github account.

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.

Downloading

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:

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:

git pull

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.)

Humdrum-data repository

This digital edition is also available in the Mozart directory of the Humdrum-data repository along with other digital scores in the Humdrum format.

Command-line processing

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.

If the make command does not work for you, then most likely it must be installed. In linux, the following command might install make:

   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:

   xcode-select --install

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:

make keyscape

Plots are store in the keyscape directory:

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:

make ckeyscape

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:

make reference

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:

make midi

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:

make midi-norep

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