PC Download

Introduction
Drive Analyzer is a tool for analysing musical events (chords/notes) in an xml music score; it searches for common chord configurations (triads / sevenths etc). It shows results in a grid and can export PDF output. It is a useful method of analysing 20th century art-music in the western tradition, which, through its tonal complexity, often obscures diatonic drive. It may, however, have other uses.

The method of musical analysis – “drive analysis” – is explained on this video, as well as at the bottom of this page, and complements Kenneth Smith’s book, Desire in Chromatic Harmony (OUP, 2020).

As an advanced feature, the program further allows users to track “entropy” across the course of a piece as described in the article, “The Enigma of Entropy in Extended Tonality” (Music Theory Spectrum 43, no. 1, 2021).

Installation

Download the latest version and open the zip file. The programme requires no installation. However, because I have no security certificate, your operating system is likely to try and prevent the file opening. This will require you to insist; be firm with your OS – don’t let it win.

Load XML

  • Load a music xml file – either made by you, or downloaded from one of many online repositories. The programme will analyse the file. The window will be populated with information about the “drives” (recognisable chord shapes within larger chord complexes). This may look like this:
Bar 2, Beat 1 (3/8): A#m7✅, C#, F#, G#7 (bass = F#+G#)
Bar 2, Beat 2 (3/8): A#2 (bass = C#)
  • Ignore the ✅ and any 2 or 3 markers; these are part of the advanced entropy analysis.
  • This list of events can be saved as a .txt file and reloaded. Users can change the text file to suit their own needs, or even create their own list, following this format precisely.
  • Before loading the “Grid view,” users may wish to tweak the settings, depending on the piece of music they are analysing.
.
Settings

The settings dialog contains the following options: click “apply” to operate the profile and re-load the analysis:

Include triads
This setting allows users to include or exclude triads from the analysis. (Because, in drive analysis, triads are considered to have a weaker sense of drive than most seventh chords, users may not wish to include them in the search).

Include anacrusis
In pieces which commonly have an “up-beat”, this option may be useful. It joins the upbeat to the subsequent chordal analysis.

Arpeggio searching
Where chords are commonly constructed as arpeggios (i.e., the notes are not literally all present at the same time), turn this option on.


Neighbour notes
This option records both passing notes in the melody and any neighbour notes that resonate with a recognisable chord in the harmony. Be warned, this can lead to a heavily populated graph.

Remove repeated patterns
In music with significant repetition, it can be desirable to reduce the chord progressions to show patterns only once. For example, when selected, this option will reduce a pattern of events ABABA to ABA. It will, however, allow ABCAB.

Include non-drive events
Where four-pitches that do not produce a common chord are found together, this option returns the result “no recognisable drive”, registering only the bass note. This is only recorded at moments where there are no other common chords present. Thus, the pitches c, c#, d might yield the result: “no recognisable drive (bass C)”, put the pitches c, c#, d, g, b would still record “G” as a triad.

Merge Similar Events together (slider, 5 positions)
This merges or collapses events together when there is very little variety between them. You may find this useful in music with small harmonic changes that are barely worth noting.

Position 1: low merging (events must be very similar/close to merge)..
Position 2: Conservative merging
Position 3: Balanced (default))
Position 4: quite strong merging
Position 5: Aggressive merging (shows fewer events).

Note detail sensitivity

As with event merging, this slider bar changes the amount of detail you want to capture. Choose 5 if you want more detail (captures shorter note durations); Choose 1 if you want less detail (filters out notes with shorter durations)

Show Grid
The scrollable grid shows detected musical events. Time flows along the x-axis, showing every recorded event; the y-axis represents the circle of fifths. Tetrachords are shown in circles; triads are shown as triangles (upward pointing = major; downward pointing = minor).
The grid has three optional parameters:

Show resolution patterns
This produces arrows where drives move to their related local “tonic”. Assuming no global tonic, the option simply shows patterns of local V-I or II-V progression. It only considers the root, and does not consider the modal quality of the chord.

Colour-code chords
When checked, this codes the chords in terms of their strength. The strongest chords are rendered in black; the weakest in white or light grey. Strength is determined by 8 variables; the inner-workings of this formula can be examined by clicking "show entropy" and exploring the grid contained there.

Show entropy
This is an advanced feature, following the method of calculating entropy shown in this video. In brief, the feature calculates the tonal “randomness” at any given moment. The strength of each chord within a complex is modelled and returned as a probability score, essentially asking the question: “if any one of these chords is going to resolve; what’s the chances of it being this one?” This is then fed into Claude Shannon’s formula for calculating “entropy” or “information” (measured in bits) and plotted on a line graph beneath the main grid. The individual variables used to calculate the probabilities (strengths) themselves are shown on a list at the foot of the pop-up window table of information.

Save as pdf
This option produces a beautifully rendered pdf version of the scrollable window.

Save / Load
Save as a text file; Load a text file. Useful if you have particular settings that you want to keep, or you want to edit the results yourself later on.

Keyboard
This opens a keyboard window in which users can either (1) click the keys with the mouse, or (b) play live using a midi-device if available. Playing this keyboard does not affect, or draw from, the main analysis; it’s just a place to noodle around and play chords with a display that shows the drives present. Have a play around below!


 

 

Drive Analysis

What is drive analysis?

Pick any five or six pitches on the keyboard (above)—something dense, maybe even strange, ideally a sound you’ve never stumbled across before. Beneath your chord, you’ll see several labels appear. These aren’t meant as the “true” name of the chord, but as glimpses into the tug-of-war between different tonal centers—those subtle inner harmonies that often jostle for attention in music beyond the Common Practice era. Each of these hidden “chords within the chord” is genuinely there, woven into the larger sonority, even if we wouldn’t usually use them as the main label. Think of them as signposts pointing to the chord’s delicious ambiguity. [Watch my video about it here]

Have a look at the famous “Mystic” chord below, used by Scriabin, Szymanowski, and even found in jazz. This chord has been interpreted in many ways: as nearly octatonic, nearly whole-tone, a synthetic chord derived from the acoustic overtone series, or a jazzy V13(#7). The theory in drive analysis doesn’t contradict any of these views, but instead explores the various tonal pulls—what I call “drives” (a term borrowed from Freudian theory, in which humans are influenced by multiple partial drives pulling in different directions at once).

The drives

First, play the chord—either in real life or using the keyboard above—then resolve it as described in the three examples to the right. Each resolution will sound a bit surprising at first, but once your ear adjusts, each will feel natural, even inevitable. These three “drives” are therefore in conflict, each vying for resolution. In some ways, this might even model the way human listening works.

What does it look like?

If you do it the way I do, you’ll end up with a large grid: the cycle of fifths runs down the y-axis, and “time” (in a flexible sense) runs along the x-axis. The “drives” present are marked with symbols. In Desire in Chromatic Harmony I used one particular set of symbols, but the Harmonic Drive Analyzer program uses a simpler code. Circles represent 4-note chords (the darker the circle, the stronger the drive), while triangles represent triads (optional here, since in this style of harmony they tend to carry less tension). Bass notes are shown with dots. A grid might look something like this:

Drive Analysis

 

  Version History
Version 1.2
(1st Septmebr 2025)

Added Features

  • MAC Compatability

  • Extended range of options
  • Fixed time signature recognition bug

  • Improved scrolling in grid window.

Version 1.1
(26th August 2025)

Added Features

  • Analyze Music XML Files

  • Additional options for: arpeggios, anacruses, sensitivity, "non event" display, repeated patterns etc.

  • Calculate entropy and produce lilne graph, with additional breakdown of variables

  • Load / Save analyses

  • Increase enharmonic capabilities.

Version 1.0
(8th August 2025)

Features

  • Analyze MIDI and MusicXML files, producing a list of drives with time codes.

  • Choose whether to include triads.

  • View a complete, scrollable drive analysis of your entire piece.

  • Export results to PDF (vector-scalable).

  • Includes a keyboard experimentation tool with MIDI input.

Known Problems

  • Currently plots all repeated patterns — this will be disabled in the next update.

  • Under-represents bass notes that are not associated with a drive on the grids (to be fixed).

  • Over-represents some bass notes, including cases with two or more ambiguous pitches.

Planned Developments

  • Calculation of entropy and graphical display, following Kenneth Smith, “The Enigma of Entropy in Extended Tonality”, Music Theory Spectrum 43:1 (2021), pp. 1–18.

  • Export as .png images.

 

© Kenneth Forkert-Smith, University of Liverpool