MusicTheory Help

Building Chords

The Chord class represents a collection of notes played simultaneously. The MusicTheory library supports over 40 chord types, from simple triads to complex jazz voicings.

Understanding Chords

A chord consists of:

Root Note

The fundamental note upon which the chord is built

Chord Type

Defines the intervals that make up the chord (Major, Minor7, Dom7b9, etc.)

Inversion

Which note is in the bass (root position, first inversion, etc.)

Extensions

Additional notes beyond the basic chord structure

Supported Chord Types

The library supports 40+ chord types across multiple categories:

Type

Symbol

Intervals

Example

Major

C

1-3-5

C-E-G

Minor

Cm

1-♭3-5

C-E♭-G

Diminished

1-♭3-♭5

C-E♭-G♭

Augmented

C+

1-3-♯5

C-E-G♯

Type

Symbol

Intervals

Example

Major 7th

Cmaj7

1-3-5-7

C-E-G-B

Minor 7th

Cm7

1-♭3-5-♭7

C-E♭-G-B♭

Dominant 7th

C7

1-3-5-♭7

C-E-G-B♭

Half-diminished

Cø7

1-♭3-♭5-♭7

C-E♭-G♭-B♭

Diminished 7th

C°7

1-♭3-♭5-♭♭7

C-E♭-G♭-B♭♭

Type

Symbol

Notes

Major 9th

Cmaj9

C-E-G-B-D

Minor 11th

Cm11

C-E♭-G-B♭-D-F

Dominant 13th

C13

C-E-G-B♭-D-F-A

Type

Symbol

Notes

Dom7♭5

C7♭5

C-E-G♭-B♭

Dom7♯9

C7♯9

C-E-G-B♭-D♯

Alt

C7alt

C-E-G♭-G♯-B♭-D♭

Creating Chords

Basic Chord Creation

// Create root note var c4 = new Note(NoteName.C, Alteration.Natural, 4); // Create basic triads var cMajor = new Chord(c4, ChordType.Major); var cMinor = new Chord(c4, ChordType.Minor); var cDim = new Chord(c4, ChordType.Diminished); var cAug = new Chord(c4, ChordType.Augmented); // Create seventh chords var cMaj7 = new Chord(c4, ChordType.Major7); var cm7 = new Chord(c4, ChordType.Minor7); var c7 = new Chord(c4, ChordType.Dominant7); var cHalfDim = new Chord(c4, ChordType.HalfDiminished7);

Extended and Altered Chords

// Extended chords var cMaj9 = new Chord(c4, ChordType.Major9); var cm11 = new Chord(c4, ChordType.Minor11); var c13 = new Chord(c4, ChordType.Dominant13); // Altered chords var c7b5 = new Chord(c4, ChordType.Dominant7Flat5); var c7sharp9 = new Chord(c4, ChordType.Dominant7Sharp9); var c7alt = new Chord(c4, ChordType.Dominant7Alt); // Suspended chords var csus2 = new Chord(c4, ChordType.Sus2); var csus4 = new Chord(c4, ChordType.Sus4); var c7sus4 = new Chord(c4, ChordType.Dominant7Sus4);

Working with Chord Properties

Getting Chord Information

var cm7 = new Chord(new Note(NoteName.C, Alteration.Natural, 4), ChordType.Minor7); // Basic properties Note root = cm7.Root; // C4 ChordType type = cm7.Type; // ChordType.Minor7 ChordInversion inv = cm7.Inversion; // ChordInversion.Root // Get chord symbol string symbol = cm7.GetSymbol(); // "Cm7" // Get notes in the chord var notes = cm7.GetNotes().ToList(); // [C4, Eb4, G4, Bb4]

Chord Notes and Voicings

var cMaj7 = new Chord(new Note(NoteName.C, Alteration.Natural, 4), ChordType.Major7); // Get all notes foreach (var note in cMaj7.GetNotes()) { Console.WriteLine(note); // C4, E4, G4, B4 } // Get specific note var third = cMaj7.GetNotes().ElementAt(1); // E4 var seventh = cMaj7.GetNotes().ElementAt(3); // B4

Chord Inversions

Inversions change which note is in the bass:

var c = new Note(NoteName.C, Alteration.Natural, 4); var cMajor = new Chord(c, ChordType.Major); // Create inversions var firstInversion = cMajor.WithInversion(ChordInversion.First); // E in bass var secondInversion = cMajor.WithInversion(ChordInversion.Second); // G in bass // Get bass note var bassNote = firstInversion.GetBassNote(); // E4 // Get notes in inversion order var inversionNotes = firstInversion.GetNotesInInversion(); // E4, G4, C5 // Slash chord notation string slashChord = firstInversion.GetSlashChordNotation(); // "C/E"

Inversion Types

  • Root Position: Root in bass (C major: C-E-G)

  • First Inversion: Third in bass (C major: E-G-C)

  • Second Inversion: Fifth in bass (C major: G-C-E)

  • Third Inversion: Seventh in bass (C7: Bb-C-E-G) - requires 7th chord

Adding Extensions

Add extensions to existing chords using the fluent API:

var c = new Note(NoteName.C, Alteration.Natural, 4); var cMajor = new Chord(c, ChordType.Major); // Add a major 7th var cMaj7 = cMajor.AddExtension(7, IntervalQuality.Major); // Add multiple extensions (fluent API) var cMaj9add13 = cMajor .AddExtension(7, IntervalQuality.Major) .AddExtension(9, IntervalQuality.Major) .AddExtension(13, IntervalQuality.Major); // Create complex voicings var c7sharp11 = new Chord(c, ChordType.Dominant7) .AddExtension(11, IntervalQuality.Augmented);

Chord Progressions

Work with chords in the context of a key:

// Define the key var cMajorKey = new KeySignature(new Note(NoteName.C), KeyMode.Major); var progression = new ChordProgression(cMajorKey); // Get diatonic chords var diatonicChords = progression.GetDiatonicChords().ToList(); // I (C), ii (Dm), iii (Em), IV (F), V (G), vi (Am), vii° (Bdim) // Common progressions var twoFiveOne = progression.ParseProgression("ii7 - V7 - IMaj7"); var popProgression = progression.ParseProgression("I - V - vi - IV"); // Get chord by scale degree var dominant = progression.GetChordByDegree(5); // G major var submediant = progression.GetChordByDegree(6); // A minor

Transposition

Transpose chords to different keys:

var c = new Note(NoteName.C, Alteration.Natural, 4); var cm7 = new Chord(c, ChordType.Minor7); // Transpose up a perfect fifth var gm7 = cm7.Transpose(new Interval(IntervalQuality.Perfect, 5), Direction.Up); // Transpose down a major third var abm7 = cm7.Transpose(new Interval(IntervalQuality.Major, 3), Direction.Down); // Verify transposition Console.WriteLine(gm7.GetSymbol()); // "Gm7" Console.WriteLine(abm7.GetSymbol()); // "Abm7"

Common Chord Patterns

Jazz Chord Voicings

// ii-V-I in C major var dm7 = new Chord(new Note(NoteName.D, 4), ChordType.Minor7); var g7 = new Chord(new Note(NoteName.G, 3), ChordType.Dominant7); var cMaj7 = new Chord(new Note(NoteName.C, 4), ChordType.Major7); // Altered dominant var g7alt = new Chord(new Note(NoteName.G, 3), ChordType.Dominant7Alt); // Extended voicings var dm11 = new Chord(new Note(NoteName.D, 4), ChordType.Minor11); var g13 = new Chord(new Note(NoteName.G, 3), ChordType.Dominant13);

Pop/Rock Patterns

// Power chords var a5 = new Chord(new Note(NoteName.A, 2), ChordType.Power5); var d5 = new Chord(new Note(NoteName.D, 3), ChordType.Power5); // Add chords var cAdd9 = new Chord(new Note(NoteName.C, 4), ChordType.MajorAdd9); var fAdd9 = new Chord(new Note(NoteName.F, 4), ChordType.MajorAdd9); // Suspended chords var dsus2 = new Chord(new Note(NoteName.D, 4), ChordType.Sus2); var gsus4 = new Chord(new Note(NoteName.G, 4), ChordType.Sus4);

Enharmonic Equivalents

Get enharmonically equivalent chords:

var cSharpMajor = new Chord( new Note(NoteName.C, Alteration.Sharp, 4), ChordType.Major ); var enharmonic = cSharpMajor.GetEnharmonicEquivalent(); // Db major Console.WriteLine(enharmonic?.GetSymbol()); // "Db"

Best Practices

  • Choose appropriate chord types: Use the specific ChordType enum values rather than building chords with extensions

  • Consider voice leading: When creating progressions, consider the movement between chord tones

  • Use proper enharmonic spelling: Choose sharps or flats based on the key context

  • Leverage the fluent API: Chain methods for readable code

Advanced Topics

Voice Leading

Consider smooth voice movement between chords:

// Good voice leading: minimal movement var c = new Chord(new Note(NoteName.C, 4), ChordType.Major); var am = new Chord(new Note(NoteName.A, 3), ChordType.Minor); var f = new Chord(new Note(NoteName.F, 4), ChordType.Major); var g = new Chord(new Note(NoteName.G, 3), ChordType.Major); // Common tones: C is in both C major and A minor // Stepwise motion: E → E, G → A

Chord Substitutions

Common jazz substitutions:

// Tritone substitution var g7 = new Chord(new Note(NoteName.G, 3), ChordType.Dominant7); var db7 = new Chord(new Note(NoteName.D, Alteration.Flat, 3), ChordType.Dominant7); // G7 can be substituted with Db7 (tritone away) // Minor for major substitution var cMajor = new Chord(new Note(NoteName.C, 4), ChordType.Major); var aMinor = new Chord(new Note(NoteName.A, 3), ChordType.Minor); // C major can be substituted with A minor (relative minor)

See Also

13 June 2025