The applet below gives a demonstration of software under development to derive a quasi-Schenkerian reduction from a musical score. A Java plug-in version 1.6 or greater is required to run this applet, and it must be registered as the default Java system for your browser. The applet will be replaced by updated versions as the project progresses, or removed, without notice.
Description of the project of which this forms a part, and a paper describing the theory and background, can be found here.
Currently metre is not represented or considered in any way, and no assumptions are made about the assignment of notes to voices except that voice-crossing is avoided. (This will be a topic of future research, since voice-crossing does occasionally occur in actual pieces.) There is no concept of a bass voice, and the lowest notes at each point are currently handled in the same way as every other note. The treatment of harmony and tonality in reductions is currently rather loose. Some bizarre reductions are included among the possibilities derived by the software, but it is often to possible to see that these are indeed possible interpretations if one ignores rhythm, allows very complex elaborations, and considers the possibility of the music being analysed occurring as part of a wider context which might make this locally unlikely interpretation valid in the larger context.
The music must be represented as a sequence of 'segments' of simultaneous notes. Long notes which extend across a single segment must be split into several tied notes. Ties are indicated by an underscore ("_") or a vertical var ("|"), depending on the orientation of the representation. In reductions a sequence of passing notes can be represented as a single 'note'. In these cases the representation begins with "c" for a chromatic sequence, "p" for a diatonic one, and "a" for an arpeggio. This is followed by the pitch on which the sequence starts and the pitch towards which it passes. Pitches are represented internally in a 12-note scale. The 'spelling' used in the display of a reduction (e.g. C# or Db) is determined by "Pitch Spelling" buttons. When entering pitches, any valid combination of letter name (A-G), accidental (any sequence from "x#snfbd" or none), and octave number (ISO, i.e., "C4" = middle C) is acceptable. A rest is indicated by dot ("."). The duration of a segment is indicated by a number (fractional numbers are possible) at the head or to the left of the column or row of notes making up that segment. (Note that in the reduction durations are converted to whole multiples of base duration unit.)
You may load a representation of a piece to reduce using the "Load Example" buttons. The three examples are extracted from Beethoven piano sonata op.27, no2, Mozart K.494, and Schumann's Erster Verlust from Clavierstükcke für die Jugend. Alternatively, you may type a representation in the panel yourself.
The software derives a matrix of segments which contains within it all the possible valid reductions of the music. Each cell of the reduction spans two or more of the 'surface' segments on row 0. Each cell contains a number of segments, each of which is a possible reduction at this point. These segments are derived by reducing each possible pair of segments below them. For example, the cell in row 1 columns 0-1 will contain all the segments which can validly arise from the reduction of segments 0 and 1 in row 0. The cell in row 2 columns 0-2 will contain the segments which arise from reducing row 0 column 0 with the segments in row 1 column 1-2, and also the segments which arise from reducing row 1 column 0-1 with row 0 column 2. The segments in row 3 column 0-3 will come from row 0 column 0 with row 2 column 1-3, row 1 column 0-1 with row 1 column 2-3, and row 2 column 0-2 with row 0 column 3. An actual reduction of the piece can be found by selecting a segment from those in the top row, then selecting a pair of segments from which this segment was derived, and recursively selecting the pairs from which those segments were derived, until the surface is reached.
Once a piece is reduced, the applet shows a representation of the matrix which gives the pitches in all segments in each cell, and the percentage of segments in the cell which contain that pitch. This same information is given in the table above, where the user may move from cell to cell using the "Up", "Down", "Back" and "Fwd" buttons. The table at the right gives the pitches in one of the possible segments of a cell. The user may move through the list of possible segments using the "Previous" and "Next" buttons. To the right of the list of notes in the segment, information is given about the possible constraints on that segment: the pitch classes required to be harmony notes, and the notes required to exist in an immediately preceding or following segment to provide a context for suspensions, passing notes, etc. Any constraint following a blank line is a superset of some constraint above.
Segments may be deleted from the matrix of possibilities to derive a particular reduction. A single reduction is found when all the notes have percentages of 100, the top cell of the matrix contains just one segment, and no cell of the matrix contains more than one segment. The "Delete" button at the right deletes the current segment from the matrix, and the "Select" button deletes all segments at this point in the reduction except the current segment. These deletions are propagated through the matrrix so that segments which consequently have no children and those which have no parent are also deleted. Buttons associated with cells allow selection or deletion of all the segments in a cell: the "Clear" button deletes all the segments in this cell, and the "Select" button here forces the reduction to include a segment from this point, so all overlapping segments which start or end within this span are deleted.
The "Revert to Full Reduction" button at the top undoes all deletions and returns the matrix to the full set of possibilities.
An error which allowed improper harmonies to be recorded has been corrected, and the mechanism for initial display of the reduction slightly revised to move a time-consuming task off the event-despatch thread, allowing better information for the user about the progress of processing.
Segments are now separated from constraints, so that only one segment with a particular combination of notes can exist in any one cell. A segment has two sets of associated constraints: a 'loosest' set in which none is a superset of any other; and a 'reserve' set in which all are supersets of some set in the 'loosest' set. Only the loosest constraints are used in reduction. It is now possible to impose some restrictions on reductions, specifically the maximum number of notes in a segment formed by reduction, the maximum number of voices which may join or separate at a single note, and a restriction on the ratio of durations of segments to be reduced. These avoid some of the most bizarre reductions and allow a reduction matrix to be computed in a reasonable time.
The scoring mechanisms which were a feature of the April 2007 version have been removed because they do not work with the revisions made above. Experiments will be made with scoring mechanisms on 'single reductions' and the distribution of scores in the universe of possible reductions compared with their distribution in 'good' reductions, with the aim of discovering scoring mechanisms which distinguish 'good' from 'bad' reductions.
The mechanism for entering music to be reduced has been simplified.