Skip to main content

A language for harmonic analysis and roman numerals.

Project description

Notating roman numeral analysis

A quick reference

# Using the default key (C Major)
I           # C Major triad
IV          # F Major triad
V7          # G Dominant seventh chord

# Using a reference key
a:i         # A Minor triad
a:viio7     # G# Fully-diminished seventh chord
a:VI        # F Major triad

# Establishing a new key
I           # C Major triad
iii         # E Minor triad
V7/V        # D Dominant seventh chord
G=>:I       # G Major triad
IV          # C Major triad
ii7         # A Minor seventh chord
V           # D Major triad

# Use of special chords and inversions
f=>:i       # F Minor triad
viio7/ii    # F# Fully-diminished seventh chord
iio         # G Diminished triad
V43/V       # G Dominant seventh chord, second inversion
V6          # C Major triad, first inversion
V7          # C Dominant seventh chord
i           # F Minor triad
V6/N        # Db Major triad, first inversion (Dominant of the Neapolitan)
N           # Gb Major triad (Neapolitan of F Minor, root position)
i           # F Minor triad


A notation for roman numerals could be divided in three types of chords

  • Tertian chords (e.g., I, ii, V7, etc.)
  • Special chords (e.g., Neapolitan, German augmented sixth, etc.)
  • Descriptive chords (e.g., CM3D5)

Let's start with Tertian chords.

Tertian chords

The syntax of a tertian chord is based mainly on the definition of a key, scale degree, added intervals, and an inversion.

Other features like missing intervals, tonicizations, modulations, and alternative notations also exist and will be covered later.


Keys in the notation are divided in three categories, depending on their function:

  • Reference key: A key given by the user as the reference key for a particular annotation.



A first degree major triad, I, in the context of F Major.

  • Established key: Similar to a reference key, except that a established key becomes the new default key when no key is specified (default mechanism for annotating modulations).



A first degree major triad, I, in the context of F Major. The second annotation corresponds to a IV degree in F Major, namely, Bb Major.

  • Applied key: The applied key is the key from which the roman numeral is interpreted


C=>:V/V     # G Major is the applied key, 
            # roman numeral is V of G Major (D Major triad)

V/V/V       # D Major is the applied key, 
            # roman numeral is V of D Major (A Major triad)

Scale degrees (or roman numerals)

  • Scale degrees consist of the symbols I-VII and i-vii
  • The notation for roman numerals is case sensitive
  • The reason why it is case sensitive is because roman numerals provide two assets of information
    • The root of the chord with respect to a key, given by the roman numeral itself, and,
    • The quality of the third accompanying that root, given by the case of the roman numeral

For example:

I - The root is the first degree of the establshed key, and it is accompanied by a major third

i - The root is the first degree of the establshed key, and it is accompanied by a minor third

It might seem weird to denote the root of the chord and (only) its third with the scale degree.

What about the fifth of the triad?

Behavior of the fifth

By default, the fifth of the chord is a perfect fifth, therefore, in major and minor triads, it is not necessary to add any additional symbol to denote the triad other than:

  • The scale degree
  • The case of the scale degree

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for harmalysis, version 0.4.1
Filename, size File type Python version Upload date Hashes
Filename, size harmalysis-0.4.1-py2.py3-none-any.whl (36.0 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size harmalysis-0.4.1.tar.gz (13.5 kB) File type Source Python version None Upload date Hashes View

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page