head_music 11.7.0 → 11.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3b46e3fb288b9c9179eec4397fd0312aab21df1f065ea6c1c43f365799eca658
4
- data.tar.gz: 6c9580ca858748560c38e7853ec4e424a0e839ec88c6c66e7c2a5d9dd02132ad
3
+ metadata.gz: 2683c0fce1a231c327156e69951df7590f9ba507a08643d9838bb7c67371dc4d
4
+ data.tar.gz: 120a035414104720af26cf0cdada21785da646f8827f4354f37c12e45c263f89
5
5
  SHA512:
6
- metadata.gz: 0d0386f1547c3446fee2901c295006883bbe0538a7f57210b6dbbe048a62539c1ab49827709d3ef78451c830e85efb668d8f33afdbee4cc8305c04ca037c1d94
7
- data.tar.gz: cc70579574da99b3c5b2cbf7fcc3fbf1f5f31e7a35945e61fba7b293a260487a1213f496e27343665a655706e7010d6b936f93b3dc2ab51725286879fdb950e9
6
+ metadata.gz: 78fd1c9698ae12bf14e9db26131f4d642b241251a9f50ce29aabcf7c631888c2a558572977ed9240e26719b5f7feea28dd1274c2e3985eec0f1c7a922af2c5b7
7
+ data.tar.gz: 236fd7f24ee4a4ad073cca5dae89da522b62ba8d34601d75d40523ad274b9c427d210f34e933e145c055f8485ff2c7a03d780fa967892340c2c4ec67c7c016f6
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- head_music (11.7.0)
4
+ head_music (11.8.0)
5
5
  activesupport (>= 7.0, < 10)
6
6
  humanize (~> 2.0)
7
7
  i18n (~> 1.8)
@@ -0,0 +1,90 @@
1
+ # Module for style guidelines.
2
+ module HeadMusic::Style::Guidelines; end
3
+
4
+ # A counterpoint guideline
5
+ class HeadMusic::Style::Guidelines::FourToOne < HeadMusic::Style::Annotation
6
+ MESSAGE = "Use four quarter notes against each whole note in the cantus firmus."
7
+
8
+ QUARTER = HeadMusic::Rudiment::RhythmicValue.get(:quarter)
9
+ WHOLE = HeadMusic::Rudiment::RhythmicValue.get(:whole)
10
+
11
+ def marks
12
+ return [] unless cantus_firmus&.notes&.any?
13
+
14
+ cantus_firmus.notes.each_with_index.filter_map do |cf_note, index|
15
+ bar_number = cf_note.position.bar_number
16
+ if index == cantus_firmus.notes.length - 1
17
+ check_final_bar(bar_number)
18
+ elsif index == 0
19
+ check_first_bar(bar_number)
20
+ else
21
+ check_middle_bar(bar_number)
22
+ end
23
+ end
24
+ end
25
+
26
+ private
27
+
28
+ def check_first_bar(bar_number)
29
+ bar_notes = notes_in_bar(bar_number)
30
+ bar_rests = rests_in_bar(bar_number)
31
+ return if four_quarter_notes?(bar_notes)
32
+ return if rest_then_three_quarter_notes?(bar_notes, bar_rests)
33
+ return if three_quarter_notes_after_downbeat?(bar_notes)
34
+
35
+ mark_bar(bar_number)
36
+ end
37
+
38
+ def check_middle_bar(bar_number)
39
+ bar_notes = notes_in_bar(bar_number)
40
+ return if four_quarter_notes?(bar_notes)
41
+
42
+ mark_bar(bar_number)
43
+ end
44
+
45
+ def check_final_bar(bar_number)
46
+ bar_notes = notes_in_bar(bar_number)
47
+ return if one_whole_note?(bar_notes)
48
+
49
+ mark_bar(bar_number)
50
+ end
51
+
52
+ def four_quarter_notes?(bar_notes)
53
+ bar_notes.length == 4 && bar_notes.all? { |n| n.rhythmic_value == QUARTER }
54
+ end
55
+
56
+ def one_whole_note?(bar_notes)
57
+ bar_notes.length == 1 && bar_notes.first.rhythmic_value == WHOLE
58
+ end
59
+
60
+ def rest_then_three_quarter_notes?(bar_notes, bar_rests)
61
+ bar_notes.length == 3 &&
62
+ bar_notes.all? { |n| n.rhythmic_value == QUARTER } &&
63
+ bar_rests.length == 1 &&
64
+ bar_rests.first.rhythmic_value == QUARTER
65
+ end
66
+
67
+ def three_quarter_notes_after_downbeat?(bar_notes)
68
+ bar_notes.length == 3 &&
69
+ bar_notes.all? { |n| n.rhythmic_value == QUARTER } &&
70
+ bar_notes.first.position.count > 1
71
+ end
72
+
73
+ def notes_in_bar(bar_number)
74
+ notes.select { |n| n.position.bar_number == bar_number }
75
+ end
76
+
77
+ def rests_in_bar(bar_number)
78
+ rests.select { |r| r.position.bar_number == bar_number }
79
+ end
80
+
81
+ def mark_bar(bar_number)
82
+ bar_placements = notes_in_bar(bar_number)
83
+ if bar_placements.any?
84
+ HeadMusic::Style::Mark.for_all(bar_placements)
85
+ else
86
+ cf_note = cantus_firmus.notes.detect { |n| n.position.bar_number == bar_number }
87
+ HeadMusic::Style::Mark.for(cf_note) if cf_note
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,165 @@
1
+ # Module for style guidelines.
2
+ module HeadMusic::Style::Guidelines; end
3
+
4
+ # A counterpoint guideline for third-species dissonance treatment.
5
+ # Every dissonant note on beats 2, 3, or 4 must be treated as a passing tone,
6
+ # neighbor tone, nota cambiata, or double neighbor figure.
7
+ class HeadMusic::Style::Guidelines::ThirdSpeciesDissonanceTreatment < HeadMusic::Style::Annotation
8
+ MESSAGE = "Treat dissonances as passing tones, neighbor tones, cambiata, or double neighbor figures."
9
+
10
+ def marks
11
+ return [] unless cantus_firmus&.notes&.any?
12
+
13
+ unresolved_dissonant_notes.map { |note| HeadMusic::Style::Mark.for(note) }
14
+ end
15
+
16
+ private
17
+
18
+ def unresolved_dissonant_notes
19
+ dissonant_weak_beat_notes.reject { |note| recognized_figure?(note) }
20
+ end
21
+
22
+ def recognized_figure?(note)
23
+ passing_tone?(note) || neighbor_tone?(note) || cambiata_dissonance?(note) || double_neighbor_member?(note)
24
+ end
25
+
26
+ # Passing tone: approached by step and left by step in the same direction.
27
+ def passing_tone?(note)
28
+ prev = preceding_note(note)
29
+ foll = following_note(note)
30
+ return false unless prev && foll
31
+
32
+ approach = melodic_interval_between(prev, note)
33
+ departure = melodic_interval_between(note, foll)
34
+
35
+ approach.step? && departure.step? && approach.direction == departure.direction
36
+ end
37
+
38
+ # Neighbor tone: approached by step, left by step in the opposite direction.
39
+ def neighbor_tone?(note)
40
+ prev = preceding_note(note)
41
+ foll = following_note(note)
42
+ return false unless prev && foll
43
+
44
+ approach = melodic_interval_between(prev, note)
45
+ departure = melodic_interval_between(note, foll)
46
+
47
+ approach.step? && departure.step? && approach.direction != departure.direction
48
+ end
49
+
50
+ # Nota cambiata: a five-note figure where note 2 is dissonant,
51
+ # approached by step from note 1, leaps a third in the same direction to note 3,
52
+ # then notes 3-4-5 proceed stepwise in the opposite direction.
53
+ # Notes 1, 3, and 5 must be consonant with the CF.
54
+ def cambiata_dissonance?(note)
55
+ index = notes.index(note)
56
+ return false unless index
57
+
58
+ cambiata_as_note_2?(index)
59
+ end
60
+
61
+ def cambiata_as_note_2?(index)
62
+ return false if index < 1 || index + 3 > notes.length - 1
63
+
64
+ n1 = notes[index - 1]
65
+ n2 = notes[index]
66
+ n3 = notes[index + 1]
67
+ n4 = notes[index + 2]
68
+ n5 = notes[index + 3]
69
+
70
+ approach = melodic_interval_between(n1, n2)
71
+ leap = melodic_interval_between(n2, n3)
72
+ step_back_1 = melodic_interval_between(n3, n4)
73
+ step_back_2 = melodic_interval_between(n4, n5)
74
+
75
+ approach.step? &&
76
+ leap.number == 3 && approach.direction == leap.direction &&
77
+ step_back_1.step? && step_back_2.step? &&
78
+ step_back_1.direction != leap.direction &&
79
+ step_back_2.direction != leap.direction &&
80
+ consonant_with_cantus?(n1) && consonant_with_cantus?(n3) && consonant_with_cantus?(n5)
81
+ end
82
+
83
+ # Double neighbor: a four-note figure within one bar.
84
+ # Beats 1 and 4 are the same pitch (consonant), beats 2 and 3 are
85
+ # upper and lower neighbors connected by a leap of a third.
86
+ def double_neighbor_member?(note)
87
+ index = notes.index(note)
88
+ return false unless index
89
+
90
+ double_neighbor_as_note_2?(index) || double_neighbor_as_note_3?(index)
91
+ end
92
+
93
+ def double_neighbor_as_note_2?(index)
94
+ return false if index < 1 || index + 2 > notes.length - 1
95
+
96
+ n1 = notes[index - 1]
97
+ n2 = notes[index]
98
+ n3 = notes[index + 1]
99
+ n4 = notes[index + 2]
100
+
101
+ approach = melodic_interval_between(n1, n2)
102
+ middle = melodic_interval_between(n2, n3)
103
+ departure = melodic_interval_between(n3, n4)
104
+
105
+ approach.step? && middle.number == 3 && departure.step? &&
106
+ n1.pitch == n4.pitch &&
107
+ consonant_with_cantus?(n1) && consonant_with_cantus?(n4)
108
+ end
109
+
110
+ def double_neighbor_as_note_3?(index)
111
+ return false if index < 2 || index + 1 > notes.length - 1
112
+
113
+ n1 = notes[index - 2]
114
+ n2 = notes[index - 1]
115
+ n3 = notes[index]
116
+ n4 = notes[index + 1]
117
+
118
+ approach = melodic_interval_between(n1, n2)
119
+ middle = melodic_interval_between(n2, n3)
120
+ departure = melodic_interval_between(n3, n4)
121
+
122
+ approach.step? && middle.number == 3 && departure.step? &&
123
+ n1.pitch == n4.pitch &&
124
+ consonant_with_cantus?(n1) && consonant_with_cantus?(n4)
125
+ end
126
+
127
+ def dissonant_weak_beat_notes
128
+ weak_beat_notes.select { |note| dissonant_with_cantus?(note) }
129
+ end
130
+
131
+ def weak_beat_notes
132
+ notes.reject { |note| downbeat_position?(note.position) }
133
+ end
134
+
135
+ def downbeat_position?(position)
136
+ cantus_firmus_positions.include?(position.to_s)
137
+ end
138
+
139
+ def cantus_firmus_positions
140
+ @cantus_firmus_positions ||= Set.new(cantus_firmus.notes.map { |n| n.position.to_s })
141
+ end
142
+
143
+ def dissonant_with_cantus?(note)
144
+ interval = HeadMusic::Analysis::HarmonicInterval.new(cantus_firmus, voice, note.position)
145
+ interval.notes.length == 2 && interval.dissonance?(:two_part_harmony)
146
+ end
147
+
148
+ def consonant_with_cantus?(note)
149
+ !dissonant_with_cantus?(note)
150
+ end
151
+
152
+ def melodic_interval_between(note1, note2)
153
+ HeadMusic::Analysis::MelodicInterval.new(note1, note2)
154
+ end
155
+
156
+ def preceding_note(note)
157
+ index = notes.index(note)
158
+ notes[index - 1] if index && index > 0
159
+ end
160
+
161
+ def following_note(note)
162
+ index = notes.index(note)
163
+ notes[index + 1] if index && index < notes.length - 1
164
+ end
165
+ end
@@ -0,0 +1,22 @@
1
+ # Module for guides
2
+ module HeadMusic::Style::Guides; end
3
+
4
+ # Rules for third species harmony
5
+ class HeadMusic::Style::Guides::ThirdSpeciesHarmony
6
+ RULESET = [
7
+ HeadMusic::Style::Guidelines::ApproachPerfectionContrarily,
8
+ HeadMusic::Style::Guidelines::AvoidCrossingVoices,
9
+ HeadMusic::Style::Guidelines::AvoidOverlappingVoices,
10
+ HeadMusic::Style::Guidelines::ConsonantDownbeats,
11
+ HeadMusic::Style::Guidelines::NoParallelPerfectAcrossBarline,
12
+ HeadMusic::Style::Guidelines::NoParallelPerfectOnDownbeats,
13
+ HeadMusic::Style::Guidelines::NoStrongBeatUnisons,
14
+ HeadMusic::Style::Guidelines::PreferContraryMotion,
15
+ HeadMusic::Style::Guidelines::PreferImperfect,
16
+ HeadMusic::Style::Guidelines::ThirdSpeciesDissonanceTreatment
17
+ ].freeze
18
+
19
+ def self.analyze(voice)
20
+ RULESET.map { |rule| rule.new(voice) }
21
+ end
22
+ end
@@ -0,0 +1,26 @@
1
+ # Module for guides
2
+ module HeadMusic::Style::Guides; end
3
+
4
+ # Rules for third species melodies
5
+ class HeadMusic::Style::Guides::ThirdSpeciesMelody
6
+ RULESET = [
7
+ HeadMusic::Style::Guidelines::AlwaysMove,
8
+ HeadMusic::Style::Guidelines::ConsonantClimax,
9
+ HeadMusic::Style::Guidelines::Diatonic,
10
+ HeadMusic::Style::Guidelines::EndOnTonic,
11
+ HeadMusic::Style::Guidelines::FourToOne,
12
+ HeadMusic::Style::Guidelines::FrequentDirectionChanges,
13
+ HeadMusic::Style::Guidelines::LimitOctaveLeaps,
14
+ HeadMusic::Style::Guidelines::MostlyConjunct,
15
+ HeadMusic::Style::Guidelines::PrepareOctaveLeaps,
16
+ HeadMusic::Style::Guidelines::SingableIntervals,
17
+ HeadMusic::Style::Guidelines::SingableRange,
18
+ HeadMusic::Style::Guidelines::StartOnPerfectConsonance,
19
+ HeadMusic::Style::Guidelines::StepOutOfUnison,
20
+ HeadMusic::Style::Guidelines::StepUpToFinalNote
21
+ ].freeze
22
+
23
+ def self.analyze(voice)
24
+ RULESET.map { |rule| rule.new(voice) }
25
+ end
26
+ end
@@ -1,3 +1,3 @@
1
1
  module HeadMusic
2
- VERSION = "11.7.0"
2
+ VERSION = "11.8.0"
3
3
  end
data/lib/head_music.rb CHANGED
@@ -161,6 +161,7 @@ require "head_music/style/guidelines/diatonic"
161
161
  require "head_music/style/guidelines/direction_changes"
162
162
  require "head_music/style/guidelines/end_on_perfect_consonance"
163
163
  require "head_music/style/guidelines/end_on_tonic"
164
+ require "head_music/style/guidelines/four_to_one"
164
165
  require "head_music/style/guidelines/frequent_direction_changes"
165
166
  require "head_music/style/guidelines/limit_octave_leaps"
166
167
  require "head_music/style/guidelines/moderate_direction_changes"
@@ -185,6 +186,7 @@ require "head_music/style/guidelines/step_down_to_final_note"
185
186
  require "head_music/style/guidelines/step_out_of_unison"
186
187
  require "head_music/style/guidelines/step_to_final_note"
187
188
  require "head_music/style/guidelines/step_up_to_final_note"
189
+ require "head_music/style/guidelines/third_species_dissonance_treatment"
188
190
  require "head_music/style/guidelines/two_to_one"
189
191
  require "head_music/style/guidelines/up_to_fourteen_notes"
190
192
  require "head_music/style/guidelines/weak_beat_dissonance_treatment"
@@ -196,3 +198,5 @@ require "head_music/style/guides/first_species_melody"
196
198
  require "head_music/style/guides/first_species_harmony"
197
199
  require "head_music/style/guides/second_species_melody"
198
200
  require "head_music/style/guides/second_species_harmony"
201
+ require "head_music/style/guides/third_species_melody"
202
+ require "head_music/style/guides/third_species_harmony"
@@ -0,0 +1,707 @@
1
+ # Third-Species Counterpoint: Pedagogical Reference
2
+
3
+ A survey of third-species counterpoint guidelines from Fux (1725) through contemporary pedagogy, noting points of agreement and disagreement across sources. Intended as a reference for implementing style guidelines in the `head_music` gem.
4
+
5
+ ---
6
+
7
+ ## 1. Fundamental Premise
8
+
9
+ Third-species counterpoint sets **four quarter notes** in the counterpoint voice against each **whole note** in the cantus firmus, creating a 4:1 rhythmic ratio. This species introduces several concepts beyond second species:
10
+
11
+ 1. **Richer metric hierarchy** -- four distinct beat levels (strong, weak, moderately strong, weak) vs. the two-level hierarchy of second species
12
+ 2. **New dissonance types** -- the neighbor tone, double neighbor, and nota cambiata join the passing tone
13
+ 3. **Greater melodic fluency** -- the faster rhythm demands even more stepwise motion and careful shaping
14
+ 4. **Compound parallel-consonance checking** -- perfect consonances must be monitored between many more beat-position combinations
15
+
16
+ Third species is the primary vehicle for teaching melodic fluency and ornamentation within the species framework. Where second species introduces dissonance in its simplest form (the passing tone), third species expands the vocabulary of acceptable dissonant figures while maintaining strict control over their deployment.
17
+
18
+ ---
19
+
20
+ ## 2. Sources Surveyed
21
+
22
+ | Abbreviation | Source | Orientation |
23
+ |---|---|---|
24
+ | **Fux** | Johann Joseph Fux, *Gradus ad Parnassum* (1725); trans. Alfred Mann | Ostensibly Palestrina style; actually reflects 18th-century practice |
25
+ | **Albrechtsberger** | Johann Georg Albrechtsberger, *Grundliche Anweisung zur Composition* (1790) | Extended Fuxian method; teacher of Beethoven |
26
+ | **Cherubini** | Luigi Cherubini, *A Treatise on Counterpoint and Fugue* (1835) | French conservatory codification of Fuxian species |
27
+ | **Bellermann** | Heinrich Bellermann, *Der Contrapunkt* (1862) | Systematic Fuxian treatment; used by Schoenberg |
28
+ | **Schenker** | Heinrich Schenker, *Kontrapunkt* (1910/1922); trans. Rothgeb & Thym | Abstract voice-leading principles underlying tonal music |
29
+ | **Jeppesen** | Knud Jeppesen, *Counterpoint: The Polyphonic Vocal Style of the 16th Century* (1931) | Closest to actual Palestrina/Renaissance practice |
30
+ | **S&S** | Felix Salzer & Carl Schachter, *Counterpoint in Composition* (1969) | Schenkerian -- species as foundation for prolongational voice-leading |
31
+ | **Kennan** | Kent Kennan, *Counterpoint*, 4th ed. (1999) | 18th-century tonal counterpoint (Bach-oriented) |
32
+ | **Gauldin** | Robert Gauldin, *A Practical Approach to 16th-Century Counterpoint* / *18th-Century Counterpoint* | Separate treatments for Renaissance and Baroque styles |
33
+ | **A&S** | Edward Aldwell & Carl Schachter, *Harmony and Voice Leading*, 4th ed. | Tonal harmony with Schenkerian foundation |
34
+ | **Schubert** | Peter Schubert, *Modal Counterpoint: Renaissance Style*, 2nd ed. (2008) | Renaissance modal; draws directly on Renaissance treatises; divides rules into "hard" and "soft" |
35
+ | **Laitz** | Steven Laitz, *The Complete Musician*, 4th ed. | Comprehensive tonal theory with species counterpoint |
36
+ | **Kostka** | Stefan Kostka, *Materials and Techniques of Post-Tonal Music* / *Tonal Harmony* (with Payne/Almen) | Standard theory pedagogy with counterpoint chapters |
37
+ | **C&M** | Jane Piper Clendinning & Elizabeth West Marvin, *The Musician's Guide to Theory and Analysis* | Contemporary comprehensive theory |
38
+ | **BHN** | Thomas Benjamin, Michael Horvit, Robert Nelson, *Music for Analysis* / *Counterpoint in the Style of J.S. Bach* | Practical analysis and composition orientation |
39
+ | **OMT** | Open Music Theory (Shaffer, Hughes, Gotham, et al.) | Contemporary open-source online pedagogy |
40
+
41
+ ---
42
+
43
+ ## 3. Guideline Synthesis
44
+
45
+ ### 3.1 Rhythmic Structure
46
+
47
+ **Universal agreement.** Four quarter notes against each whole note in the cantus firmus. The final measure is a whole note.
48
+
49
+ | Bar position | Rhythmic content |
50
+ |---|---|
51
+ | **First bar** | Four quarter notes, OR quarter rest followed by three quarter notes |
52
+ | **Middle bars** | Four quarter notes (no exceptions) |
53
+ | **Final bar** | One whole note |
54
+
55
+ **Source variations on the first bar:**
56
+ - **Fux, Bellermann, Schenker:** Prefer beginning with a rest on beat 1 followed by three quarter notes, mirroring second species.
57
+ - **OMT, Gauldin:** Allow either option. Four quarter notes are acceptable.
58
+ - **Cherubini:** Insists on beginning with a rest.
59
+ - **Swindale, Kennan:** Some preference for beginning on beat 2 (with rest).
60
+
61
+ ### 3.2 Beginning
62
+
63
+ **Pitch (universal agreement):**
64
+ - Above the cantus firmus: begin on *do* (unison/octave) or *sol* (fifth).
65
+ - Below the cantus firmus: begin on *do* (unison/octave).
66
+
67
+ **Intervallic rule:** The first sounding note must form a perfect consonance (unison, fifth, or octave) with the cantus firmus, following first-species conventions for opening intervals.
68
+
69
+ **Unison:** Permitted at the opening only. If starting with a rest, the first sounding note (beat 2) may be a unison. If starting with four quarter notes, the downbeat of bar 1 may be a unison.
70
+
71
+ ### 3.3 Beat Hierarchy
72
+
73
+ The 4:1 ratio creates a four-level metric hierarchy that governs dissonance placement:
74
+
75
+ | Beat | Metric weight | Consonance requirement |
76
+ |---|---|---|
77
+ | **Beat 1** (downbeat) | Strong | Must be consonant; never a unison (except at opening/closing) |
78
+ | **Beat 2** | Weak | May be consonant or dissonant |
79
+ | **Beat 3** | Moderately strong | Must be consonant (most sources) or may be dissonant with restrictions (some sources) |
80
+ | **Beat 4** | Weak | May be consonant or dissonant |
81
+
82
+ #### Beat 3 Controversy
83
+
84
+ This is one of the most significant areas of disagreement:
85
+
86
+ | Source | Beat 3 dissonance? | Conditions |
87
+ |---|---|---|
88
+ | **Fux** | Allowed (as passing tone) | Stepwise, same direction |
89
+ | **Bellermann** | Allowed | As passing tone |
90
+ | **Jeppesen** | Allowed sparingly | As passing or neighbor tone |
91
+ | **S&S** | Allowed sparingly | "Very sparingly in the 3rd quarter" for neighbor tones |
92
+ | **Schenker** | Restricted | Prefers consonance on beat 3 |
93
+ | **OMT (Gotham et al.)** | Allowed | Beats 2, 3, and 4 all permit dissonance |
94
+ | **OMT (Shaffer)** | Beat 3 consonant | Treats beat 3 as "moderately strong," consonance preferred |
95
+ | **Gauldin** | Generally consonant | Beat 3 should generally be consonant |
96
+ | **Kennan** | Allowed | As passing tone in stepwise motion |
97
+
98
+ **Practical consensus:** Most sources allow dissonance on beat 3 if it functions as a properly handled passing tone. The stricter sources (Schenker, some interpretations of Gauldin) treat beat 3 as a secondary strong beat requiring consonance.
99
+
100
+ ### 3.4 Strong Beats (Downbeats)
101
+
102
+ **Universal agreement.** Every downbeat must be **consonant** with the cantus firmus. Permissible consonances: unison, third, fifth, sixth, octave, and compound equivalents. The perfect fourth is a dissonance in two-voice counterpoint (all sources agree).
103
+
104
+ **Preference.** Imperfect consonances (thirds, sixths) are preferred over perfect consonances (fifths, octaves, unisons) -- carried forward from first and second species.
105
+
106
+ **Consecutive downbeat constraints (OMT):**
107
+ - No three consecutive bars may begin with the same perfect interval (two in a row acceptable).
108
+ - No more than three consecutive bars should start with the same imperfect consonance.
109
+ - Consecutive downbeat pitches in the counterpoint must not form a dissonant melodic interval.
110
+
111
+ **Additional constraint (OMT):**
112
+ - If a downbeat contains a perfect fifth, neither beat 3 nor beat 4 of the previous bar may also be a fifth.
113
+ - If a downbeat contains an octave, beats 2, 3, and 4 of the previous bar should not be octaves.
114
+
115
+ ### 3.5 Dissonance Treatment
116
+
117
+ All sources agree that dissonance in third species must follow specific, named patterns. The permitted dissonance types are:
118
+
119
+ #### 3.5.1 Dissonant Passing Tone
120
+
121
+ **Universal agreement.** The dissonant passing tone is carried forward from second species and remains the most basic dissonance type.
122
+
123
+ **Definition:** Fills in the space of a melodic third via stepwise motion. The note before and the note after the passing tone must both be consonant with the cantus firmus.
124
+
125
+ **Requirements:**
126
+ - Approached by step
127
+ - Left by step
128
+ - Approach and departure in the **same direction** (ascending or descending)
129
+ - May occur on beats 2, 3, or 4 (never beat 1)
130
+
131
+ **Two consecutive dissonant passing tones:**
132
+
133
+ | Source | Consecutive dissonant PTs? | Conditions |
134
+ |---|---|---|
135
+ | **Fux** | Not explicitly addressed | His examples show mostly single PTs |
136
+ | **OMT (Gotham)** | Allowed | P4-d5 or d5-P4 patterns; must be unidirectional stepwise; no downbeat dissonance |
137
+ | **S&S** | Allowed | In rapid stepwise passages |
138
+ | **Jeppesen** | Allowed | In Palestrina's practice |
139
+ | **Bellermann** | Allowed cautiously | |
140
+
141
+ **Practical consensus:** Two consecutive dissonant passing tones are acceptable when they fill in a larger stepwise passage, provided no dissonance falls on beat 1 and the passage is stepwise throughout.
142
+
143
+ #### 3.5.2 Dissonant Neighbor Tone (Auxiliary)
144
+
145
+ **Definition:** Ornaments a consonant tone by stepping away and stepping back to the original consonance. The neighbor note itself is dissonant with the cantus firmus.
146
+
147
+ **Requirements:**
148
+ - Approached by step from a consonance
149
+ - Left by step back to the same consonance (or to a different consonance by step in the opposite direction from the approach)
150
+ - The note before and after must be consonant
151
+
152
+ **Pattern example:** consonance - step up to dissonance - step down back to consonance (e.g., intervals 6-7-6 over the CF).
153
+
154
+ | Source | Dissonant neighbor? | Conditions |
155
+ |---|---|---|
156
+ | **Fux** | Not explicitly discussed | Neighbor figures appear in his examples |
157
+ | **Bellermann** | Allowed | "Enters by step and continues by step in the opposite direction" |
158
+ | **Jeppesen** | Allowed | Present in Palestrina's practice |
159
+ | **S&S** | Allowed | "Freely on 2nd and 4th quarters, very sparingly on 3rd quarter" |
160
+ | **Schenker** | Allowed cautiously | |
161
+ | **OMT** | Allowed | "Most effective on weak beats (2 or 4)" |
162
+ | **Gauldin** | Allowed | |
163
+ | **Kennan** | Allowed | |
164
+
165
+ **Key distinction from second species:** The dissonant neighbor tone is **not** permitted in second species but **is** permitted in third species. This is a major expansion of the dissonance vocabulary.
166
+
167
+ #### 3.5.3 Nota Cambiata (Changing Tone / Cambiata Figure)
168
+
169
+ The nota cambiata is the most distinctive ornamental figure in third-species counterpoint and the subject of the most detailed scholarly discussion.
170
+
171
+ **Fux's original formulation:** A five-note figure spanning two bars. The second note is dissonant, entered by step, and then -- uniquely -- **leaps a third** in the same direction to a consonance, after which the melody returns stepwise in the opposite direction.
172
+
173
+ **Two forms of the figure:**
174
+
175
+ | Form | Intervallic motion | Direction |
176
+ |---|---|---|
177
+ | **Descending** | Step down, leap down a 3rd, step up, step up | Net motion: step down from downbeat to downbeat |
178
+ | **Ascending** | Step up, leap up a 3rd, step down, step down | Net motion: step up from downbeat to downbeat |
179
+
180
+ **Structural diagram (descending form):**
181
+ ```
182
+ Beat: 1 2 3 4 | 1
183
+ Note: C B G A | B
184
+ cons dis cons cons | cons
185
+ ↓s ↓3rd ↑s ↑s
186
+ ```
187
+
188
+ **Requirements (universal):**
189
+ - Notes 1, 3, and 5 (the downbeats and the middle note) must be consonant with the CF
190
+ - Note 2 is dissonant, approached by step
191
+ - Note 2 leaps a third to note 3 (the only permitted leap from a dissonance in species counterpoint)
192
+ - Notes 3-4-5 are stepwise
193
+ - The surrounding stepwise motion minimizes the effect of the leap from dissonance
194
+
195
+ **Source variations:**
196
+
197
+ | Source | Treatment |
198
+ |---|---|
199
+ | **Fux** | Presents as a standard ornamental figure; descending form is the primary example |
200
+ | **Jeppesen** | Traces the figure to actual Palestrina practice; emphasizes its historical authenticity |
201
+ | **Schenker** | Treats as a legitimate but carefully controlled figure |
202
+ | **S&S** | Integrates into prolongational analysis |
203
+ | **OMT** | Presents both ascending and descending forms as standard |
204
+ | **Bellermann** | Includes as an "advanced" dissonant formation |
205
+ | **Kennan** | Presents primarily the descending form |
206
+ | **Schubert** | Includes as standard Renaissance practice |
207
+
208
+ **Historical note:** The nota cambiata is the only figure in species counterpoint where a leap from a dissonance is permitted. This exception is universally acknowledged. Later theorists sometimes restrict the figure to the descending form only, but Fux's own examples and Renaissance practice support both directions.
209
+
210
+ #### 3.5.4 Double Neighbor (Changing Tones / Double Auxiliary)
211
+
212
+ **Definition:** A four-note figure where beats 1 and 4 contain the same pitch (or the same consonance), and beats 2 and 3 are the upper and lower neighbors (or vice versa). Both beats 2 and 3 may be dissonant.
213
+
214
+ **Two orderings:**
215
+ ```
216
+ Form A: C - D - B - C (upper neighbor first)
217
+ Form B: C - B - D - C (lower neighbor first)
218
+ ```
219
+
220
+ **Requirements:**
221
+ - Beat 1 consonant with CF
222
+ - Beats 2 and 3 are the two neighbors (one step above, one step below)
223
+ - Beat 4 returns to the same pitch as beat 1
224
+ - A leap of a third occurs between beats 2 and 3 (this is permitted because the figure is understood as an ornament of a single tone)
225
+ - Motion from beat 3 to beat 4 should continue in the same direction as from beat 4 to the following downbeat (OMT)
226
+
227
+ | Source | Double neighbor? | Notes |
228
+ |---|---|---|
229
+ | **Fux** | Not explicitly named | Some scholars identify it in his examples |
230
+ | **Jeppesen** | Recognized | Present in Palestrina's music |
231
+ | **S&S** | Allowed | |
232
+ | **OMT (Gotham)** | Allowed | Detailed treatment with motion constraints |
233
+ | **Ars Nova** | Noted | "Not known in the Palestrina style" (disputed) |
234
+ | **Gauldin** | Allowed | |
235
+ | **Bellermann** | Recognized | As a legitimate formation |
236
+
237
+ **Controversy:** Some scholars question whether the double neighbor is truly a separate figure or merely a combination of upper and lower neighbor tones. The practical distinction is that in the double neighbor, the leap between beats 2 and 3 is permitted even though one or both may be dissonant -- a license that would not be available if they were analyzed as independent neighbor tones.
238
+
239
+ #### 3.5.5 Escape Tone (Echappee)
240
+
241
+ **Definition:** An unaccented dissonance approached by step and left by leap in the opposite direction. The escape tone "escapes" from stepwise motion via a leap.
242
+
243
+ **Pattern:** Consonance - step to dissonance - leap (opposite direction) to consonance.
244
+
245
+ | Source | Escape tone? | Notes |
246
+ |---|---|---|
247
+ | **Fux** | Not discussed | |
248
+ | **Jeppesen** | Not a standard Palestrina figure | Rare in 16th-century practice |
249
+ | **S&S** | Allowed | As an embellishment on beats 2 and 4 |
250
+ | **OMT (Shaffer)** | Allowed | Listed as a valid weak-beat dissonance |
251
+ | **Ars Nova** | Allowed | "Approached by step and left by downward leap" |
252
+ | **Kennan** | Allowed cautiously | |
253
+ | **Gauldin** | Mixed | Depends on style orientation (16th-c. vs. 18th-c.) |
254
+ | **Schenker** | Not standard | |
255
+ | **Schubert** | Not standard in Renaissance | |
256
+
257
+ **This is the most controversial dissonance type in third species.** Sources oriented toward Renaissance/Palestrina practice generally exclude it. Sources oriented toward 18th-century tonal counterpoint or contemporary pedagogy often include it. For a strict Fuxian implementation, the escape tone should be excluded or treated as a soft-rule violation.
258
+
259
+ #### 3.5.6 Appoggiatura (Accented Dissonance)
260
+
261
+ **Definition:** A dissonance on a strong beat, approached by leap and resolved by step.
262
+
263
+ | Source | Appoggiatura in third species? | Notes |
264
+ |---|---|---|
265
+ | **Fux** | No | Beat 1 must be consonant |
266
+ | **Jeppesen** | No | Not in Palestrina practice for this species |
267
+ | **S&S** | Mentioned | But only on beats 2 and 4 (effectively making it a different figure) |
268
+ | **Most sources** | No | Accented dissonances belong to fourth species (suspensions) and free counterpoint |
269
+
270
+ **Consensus:** The appoggiatura is not a standard third-species figure. Beat 1 must always be consonant. Some sources allow what they call "appoggiaturas" on beats 2 and 4, but these are better understood as approached dissonances that function like incomplete neighbor tones.
271
+
272
+ ### 3.6 Ending / Cadence
273
+
274
+ **Universal agreement.** End with a clausula vera: stepwise contrary motion into a perfect consonance (unison or octave).
275
+
276
+ **Final bar:** Always a whole note on the tonic, forming a unison or octave with the cantus firmus.
277
+
278
+ **Penultimate bar:** Four quarter notes, with the last quarter note (beat 4) functioning as the leading tone or supertonic approach to the final note.
279
+
280
+ **Specific cadential formulas:**
281
+
282
+ | CF position | Penultimate bar approach | Scale degrees in CP | Interval pattern |
283
+ |---|---|---|---|
284
+ | CF below, CP above | CP's beat 4 = leading tone (*ti*) | ...6-7-8 | ...6th - M6th - 8ve |
285
+ | CF above, CP below | CP's beat 4 = supertonic (*re*) | ...4-3-1 or ...5-4-3m-1 | ...varies - m3rd - unison |
286
+
287
+ **Additional cadential options (Fux):**
288
+ - Above CF: Cambiata formula 8-7-5-6-8, or scale run 3-4-5-6-8
289
+ - Below CF: 3m-5-4-3m-1
290
+
291
+ **Penultimate note specifics:**
292
+ - If the CF has *re* (scale degree 2): the counterpoint's beat 4 should be *ti* (scale degree 7, raised if necessary)
293
+ - If the CF has *ti* (scale degree 7): the counterpoint's beat 4 should be *re* (scale degree 2)
294
+
295
+ ### 3.7 Melodic Guidelines
296
+
297
+ These carry forward from first and second species with modifications appropriate to the faster rhythm:
298
+
299
+ #### 3.7.1 Stepwise Motion
300
+
301
+ **Universal agreement.** Third species should be **even more dominated by stepwise motion** than first or second species. The 4:1 ratio provides ample room for stepwise passage work, and the dissonance types (passing tone, neighbor tone) all require stepwise motion.
302
+
303
+ **Quantitative guidance:** While most sources do not give exact percentages, the expectation is that conjunct motion should constitute a large majority (roughly 75-85% or more) of melodic intervals.
304
+
305
+ #### 3.7.2 Melodic Shape and Climax
306
+
307
+ - **Single overall climax** that does not coincide with the climax of the cantus firmus.
308
+ - **One or two secondary climaxes** (local high points) permitted, given the greater number of notes (OMT, S&S).
309
+ - Avoid aimless scalar passages -- even stepwise motion should have direction and purpose.
310
+ - The line should have an overall arch or wave shape.
311
+
312
+ #### 3.7.3 Leap Treatment
313
+
314
+ - **All leaps must be melodic consonances** (m3, M3, P4, P5, m6 ascending only in 16th-c. style, P8).
315
+ - **Forbidden leaps:** tritone (d5/A4), M6 (in Renaissance style), 7ths, any augmented or diminished interval.
316
+ - **Recover from leaps** by moving stepwise in the opposite direction.
317
+ - **Prefer leaps within the bar** (e.g., beat 1 to beat 2, or beat 2 to beat 3) rather than across the barline (beat 4 to the next beat 1). This is a stronger preference in third species than in second species (OMT, S&S).
318
+ - **Avoid consecutive leaps** in the same direction. Most sources limit consecutive same-direction leaps to two at most, and only if they outline a consonant triad.
319
+ - **Large leaps** (P5 or greater) should be followed by stepwise motion in the opposite direction.
320
+
321
+ #### 3.7.4 No Repeated Notes
322
+
323
+ **Universal agreement.** Repeating the same pitch on consecutive quarter notes is **forbidden**, both within the bar and across the barline. This is even more critical in third species than in second species, as repetition at the quarter-note level completely arrests the forward motion the species is designed to cultivate.
324
+
325
+ #### 3.7.5 Range
326
+
327
+ - **Singable range** -- generally not exceeding a tenth (some sources allow up to a twelfth).
328
+ - Stay within a single voice register; avoid extreme register changes.
329
+
330
+ #### 3.7.6 Direction Changes
331
+
332
+ - **Frequent direction changes** are needed to maintain interest and avoid aimless scalar runs.
333
+ - However, the faster rhythm means that short ascending or descending runs (3-5 notes) are natural and acceptable.
334
+ - Avoid extended passages of more than about 5-6 notes in the same direction without a change.
335
+
336
+ ### 3.8 Parallel Perfect Consonances
337
+
338
+ This is significantly more complex in third species than in first or second species because there are four attack points per bar that can form intervals with the cantus firmus.
339
+
340
+ #### 3.8.1 Core Rule
341
+
342
+ **Universal agreement.** Parallel perfect fifths and octaves are forbidden. The question is: between which beat positions must they be checked?
343
+
344
+ #### 3.8.2 Beat Positions to Check
345
+
346
+ | Pair | Check for parallels? | Source agreement |
347
+ |---|---|---|
348
+ | Beat 1 to next Beat 1 (downbeat to downbeat) | **Yes** | Universal |
349
+ | Beat 4 to next Beat 1 (across barline) | **Yes** | Universal |
350
+ | Beat 3 to next Beat 1 | **Yes** (most sources) | Strong consensus |
351
+ | Beats within the same bar (1-2, 2-3, 3-4) | **Yes** | Most sources |
352
+ | Beat 3 to Beat 3 across bars | Debated | Some sources |
353
+ | Beat 2 to Beat 2 across bars | Generally no | Most sources |
354
+
355
+ **Rothfarb (UCSB) rule:** "No parallel perfect consonances between the third quarter of one bar and the first quarter of the next." This is the most commonly cited cross-barline parallel check beyond the simple beat-4-to-beat-1 check.
356
+
357
+ **OMT (Gotham) rule:** If a downbeat contains a perfect fifth, neither beat 3 nor beat 4 of the previous bar can also be a fifth. If a downbeat contains an octave, beats 2, 3, and 4 of the previous bar should not be octaves.
358
+
359
+ **Practical synthesis:** The safest approach checks for parallel perfect consonances between any two notes where the second is on a beat of equal or greater metric weight (i.e., no parallel P5-P5 or P8-P8 from any beat to a subsequent equal-or-stronger beat). At minimum:
360
+ 1. Consecutive downbeats (bar-to-bar)
361
+ 2. Beat 4 to next beat 1 (across barline)
362
+ 3. Beat 3 to next beat 1 (across barline, if beat 3 is treated as metrically significant)
363
+ 4. Between consecutive notes within or across bars where the interval is the same perfect consonance
364
+
365
+ **Minimum separation rule (Swindale, some others):** Parallel perfect consonances require at least three notes of separation -- i.e., if a P5 occurs on one note, the next P5 must not occur until at least three notes later.
366
+
367
+ #### 3.8.3 Consecutive Downbeat Perfect Consonances
368
+
369
+ Following the same rule as in second species: no two consecutive downbeats should form the same perfect consonance (P5-P5 or P8-P8). Three consecutive downbeats with the same perfect consonance is universally forbidden.
370
+
371
+ ### 3.9 Direct (Hidden) Fifths and Octaves
372
+
373
+ | Context | Treatment |
374
+ |---|---|
375
+ | Beat 4 to next Beat 1 (across barline) | Treated as in first species: **approach perfect consonances by contrary motion** (universal) |
376
+ | Within the bar | More lenient; stepwise approach in the upper voice generally suffices |
377
+ | Downbeat to downbeat | **Permitted** by most modern sources ("the effect is weakened by intervening notes") |
378
+
379
+ **OMT (Shaffer):** Direct/hidden fifths and octaves between successive downbeats are generally allowed in third species.
380
+
381
+ ### 3.10 Unison Treatment
382
+
383
+ | Position | Treatment |
384
+ |---|---|
385
+ | Opening note | Permitted (unison or octave) |
386
+ | Final note | Permitted (unison or octave) |
387
+ | Interior downbeats (beat 1) | **Forbidden** (universal) |
388
+ | Interior weak beats (2, 3, 4) | Permitted when necessary for good voice-leading (OMT, S&S) |
389
+
390
+ **Rothfarb:** "The unison may occur anywhere in the bar except on the first quarter."
391
+
392
+ **Approach/departure:** When a unison occurs on a weak beat, step out of it (do not leap to or from a unison).
393
+
394
+ ### 3.11 Voice Crossing and Overlap
395
+
396
+ | Source | Voice Crossing |
397
+ |---|---|
398
+ | **Fux** | Occasionally permits |
399
+ | **Schenker** | Strictly forbidden |
400
+ | **S&S** | Strictly forbidden |
401
+ | **Modern pedagogy** | Generally forbidden; rarely tolerated |
402
+
403
+ **Voice overlap** (approaching beyond the other voice's previous pitch without actually crossing) is universally discouraged.
404
+
405
+ ### 3.12 Approach to Perfect Consonances
406
+
407
+ **Universal.** Perfect consonances on the downbeat must be approached by contrary motion from the preceding note (beat 4 of the previous bar).
408
+
409
+ **Rothfarb:** Perfect consonances on beat 1 may be approached "only by contrary motion."
410
+
411
+ This is a stricter formulation than second species: because there are four notes per bar, the beat-4-to-beat-1 motion into a perfect consonance must be contrary.
412
+
413
+ ### 3.13 Contrary Motion Preference
414
+
415
+ **Universal.** Contrary motion is preferred throughout, as in all species. This preference is particularly important at barlines (beat 4 to beat 1), where first-species rules apply to the voice-leading.
416
+
417
+ ---
418
+
419
+ ## 4. Special Figures in Detail
420
+
421
+ ### 4.1 Nota Cambiata
422
+
423
+ The nota cambiata is perhaps the most discussed ornamental figure in the counterpoint literature. Its treatment varies significantly across sources.
424
+
425
+ **Fux's original:** Presented as a natural ornamental pattern in the dialogue between Aloysius and Josephus. The descending form (step down, leap down a 3rd, step up, step up) is the primary example.
426
+
427
+ **Jeppesen's contribution:** Demonstrated that the figure is abundantly present in Palestrina's actual music, validating Fux's inclusion of it. Jeppesen provided statistical evidence of its frequency and catalogued its various forms.
428
+
429
+ **Schenker's treatment:** Analyzed the cambiata as a voice-leading phenomenon -- the leap from dissonance is "understood" as passing through an implied consonance. This connects the figure to Schenker's broader theory of structural levels.
430
+
431
+ **Modern pedagogy:** Most contemporary textbooks present both ascending and descending forms as standard figures, though some restrict the figure to the descending form (Kennan, for example).
432
+
433
+ **Key constraint:** The cambiata always spans exactly two bars (five notes: beat 1 through the next beat 1). The second note is the dissonant note, and the leap occurs from beat 2 to beat 3.
434
+
435
+ ### 4.2 Double Neighbor (Changing Tones)
436
+
437
+ The double neighbor is a within-bar figure (four notes) where the counterpoint ornaments a single consonant pitch by moving to both its upper and lower neighbors before returning.
438
+
439
+ **Distinction from cambiata:** The double neighbor returns to its starting pitch on beat 4, whereas the cambiata progresses to a new pitch. The double neighbor is essentially a prolongation of a single tone; the cambiata is a progression between two tones.
440
+
441
+ **Motion constraint (OMT):** The direction of motion from beat 3 to beat 4 should be the same as from beat 4 to the following downbeat. This ensures smooth continuation out of the figure. The barline motion should be stepwise.
442
+
443
+ ### 4.3 Summary of Dissonance Figures
444
+
445
+ | Figure | Beats | Dissonant beat(s) | Approach to dissonance | Departure from dissonance | Leap involved? |
446
+ |---|---|---|---|---|---|
447
+ | **Passing tone** | Any weak beat | 2, 3, or 4 | Step | Step (same direction) | No |
448
+ | **Neighbor tone** | Any weak beat | 2, 3, or 4 | Step | Step (opposite direction, back) | No |
449
+ | **Nota cambiata** | 1-2-3-4-1 | Beat 2 | Step | Leap of 3rd (same direction) | Yes (3rd from dissonance) |
450
+ | **Double neighbor** | 1-2-3-4 | Beats 2 and 3 | Step | Step (between 2-3: leap of 3rd) | Yes (3rd between neighbors) |
451
+ | **Escape tone** | Weak beat | 2 or 4 | Step | Leap (opposite direction) | Yes (from dissonance) |
452
+
453
+ ---
454
+
455
+ ## 5. Points of Agreement Across All Sources
456
+
457
+ 1. **Beat 1 consonant.** The downbeat of every bar must be consonant with the cantus firmus.
458
+ 2. **Four quarter notes per bar** (except the first and last bars).
459
+ 3. **Final bar is a whole note** on the tonic, forming a unison or octave.
460
+ 4. **Passing tones** are the most basic dissonance, approached and left by step in the same direction.
461
+ 5. **Neighbor tones** are permitted (step away, step back).
462
+ 6. **Nota cambiata** is permitted as a five-note figure with a leap of a third from a dissonance.
463
+ 7. **No repeated notes** within or across the barline.
464
+ 8. **Stepwise motion predominates** even more than in second species.
465
+ 9. **Parallel perfect consonances** on consecutive downbeats are forbidden.
466
+ 10. **Perfect consonances on beat 1** must be approached by contrary motion from beat 4.
467
+ 11. **Clausula vera** cadence: stepwise contrary motion into a perfect consonance.
468
+ 12. **Unisons forbidden on interior downbeats.**
469
+
470
+ ## 6. Key Points of Disagreement
471
+
472
+ | Issue | Strict view | Permissive view |
473
+ |---|---|---|
474
+ | Beat 3 dissonance | Consonance required (Schenker, some Gauldin) | Dissonance allowed as PT/NT (Fux, OMT, S&S) |
475
+ | Escape tone | Not a valid figure (Fux, Jeppesen, Schubert) | Permitted on weak beats (S&S, OMT Shaffer, Kennan) |
476
+ | Double neighbor | Disputed as independent figure | Standard figure (OMT, S&S, Gauldin) |
477
+ | Ascending cambiata | Descending form only (Kennan) | Both directions (OMT, Jeppesen, Fux) |
478
+ | Voice crossing | Occasionally permitted (Fux) | Strictly forbidden (Schenker, S&S) |
479
+ | First bar beginning | Must begin with rest (Cherubini, Schenker) | Either option (OMT, Gauldin) |
480
+ | Parallel checking scope | Between any consecutive attacks (strictest) | Only at barlines and downbeats (most lenient) |
481
+
482
+ ---
483
+
484
+ ## 7. Mapping to head_music Architecture
485
+
486
+ The existing `head_music` style system groups guidelines into melody guides and harmony guides. Third species follows the same pattern. Below maps each guideline area to whether it is a **melody** concern (single-voice) or **harmony** concern (two-voice interaction), and notes where existing guidelines can be reused vs. where new guidelines are needed.
487
+
488
+ ### 7.1 Melody Guidelines (ThirdSpeciesMelody)
489
+
490
+ | Guideline | Status | Notes |
491
+ |---|---|---|
492
+ | **AlwaysMove** | **Reuse** | No repeated notes; already checks for consecutive unisons |
493
+ | **ConsonantClimax** | **Reuse** | Still applies; secondary climaxes may need consideration |
494
+ | **Diatonic** | **Reuse** | Stay within key/mode |
495
+ | **EndOnTonic** | **Reuse** | Final note is tonic |
496
+ | **FrequentDirectionChanges** | **Reuse** | May need threshold adjustment for the greater note count |
497
+ | **LimitOctaveLeaps** | **Reuse** | |
498
+ | **MostlyConjunct** | **Reuse** (adjust threshold) | Even more stepwise than second species; threshold should be higher (~75-85%) |
499
+ | **PrepareOctaveLeaps** | **Reuse** | |
500
+ | **SingableIntervals** | **Reuse** | All leaps must be melodic consonances |
501
+ | **SingableRange** | **Reuse** | Generally within a tenth |
502
+ | **StartOnPerfectConsonance** | **Reuse** | First sounding note forms P1/P5/P8 with CF |
503
+ | **StepOutOfUnison** | **Reuse** | Step away from unisons |
504
+ | **StepUpToFinalNote** | **Reuse** | Leading tone or supertonic approach |
505
+ | **FourToOne** | **New** | Four quarter notes per whole note in CF; first bar allows rest + 3 quarters; final bar is whole note |
506
+
507
+ #### Guidelines Removed from Second Species
508
+
509
+ | Second-species guideline | Disposition for third species |
510
+ |---|---|
511
+ | **TwoToOne** | Replaced by **FourToOne** |
512
+
513
+ #### Potentially New Melody Guidelines
514
+
515
+ | Guideline | Priority | Description |
516
+ |---|---|---|
517
+ | **FourToOne** | Required | Enforces the 4:1 rhythmic structure: 4 quarter notes per bar (or rest + 3 in bar 1), whole note in final bar |
518
+ | **PreferLeapsWithinBar** | Soft | Prefer leaps within the bar rather than across the barline |
519
+ | **AvoidLongScalarRuns** | Soft | Avoid more than ~5-6 notes in the same direction without a change |
520
+ | **RecoverLargeLeaps** | Reuse existing | Already exists; step in opposite direction after large leaps |
521
+
522
+ ### 7.2 Harmony Guidelines (ThirdSpeciesHarmony)
523
+
524
+ | Guideline | Status | Notes |
525
+ |---|---|---|
526
+ | **ApproachPerfectionContrarily** | **Reuse** | Approach perfect consonances by contrary motion; applies to beat-4-to-beat-1 motion |
527
+ | **AvoidCrossingVoices** | **Reuse** | |
528
+ | **AvoidOverlappingVoices** | **Reuse** | |
529
+ | **ConsonantDownbeats** | **Reuse** | Every beat 1 must be consonant |
530
+ | **NoParallelPerfectOnDownbeats** | **Reuse** | No P5-P5 or P8-P8 on consecutive downbeats |
531
+ | **NoParallelPerfectAcrossBarline** | **Reuse** (extend) | Currently checks weak beat to next downbeat; for third species, should check beat 3 and beat 4 to next beat 1 |
532
+ | **NoStrongBeatUnisons** | **Reuse** | No unisons on interior downbeats |
533
+ | **PreferContraryMotion** | **Reuse** | |
534
+ | **PreferImperfect** | **Reuse** | Prefer imperfect consonances on downbeats |
535
+
536
+ #### New Harmony Guidelines
537
+
538
+ | Guideline | Priority | Description |
539
+ |---|---|---|
540
+ | **ThirdSpeciesDissonanceTreatment** | **Required** | Replaces `WeakBeatDissonanceTreatment` from second species. Must validate: (1) passing tones (step in, step out, same direction), (2) neighbor tones (step away, step back), (3) nota cambiata (five-note figure with leap of 3rd from beat 2 dissonance), (4) double neighbor (both neighbors ornament same pitch). Optionally: (5) escape tone (step in, leap out opposite direction). |
541
+ | **NoParallelPerfectOnConsecutiveNotes** | **New** (or extend existing) | Check for parallel P5/P8 between any consecutive notes in the counterpoint voice against the CF, not just at barlines. This is more comprehensive than the existing barline-only check. |
542
+
543
+ #### Guidelines Carried From Second Species (Modified)
544
+
545
+ | Second-species guideline | Modification for third species |
546
+ |---|---|
547
+ | **WeakBeatDissonanceTreatment** | Replaced by **ThirdSpeciesDissonanceTreatment** (expanded to handle NT, cambiata, double neighbor, optionally escape tone) |
548
+ | **NoParallelPerfectAcrossBarline** | May need to be extended to check beats 3 and 4 to next beat 1, not just the last weak beat |
549
+
550
+ ### 7.3 Proposed RULESET
551
+
552
+ #### ThirdSpeciesMelody RULESET
553
+
554
+ ```ruby
555
+ RULESET = [
556
+ HeadMusic::Style::Guidelines::AlwaysMove,
557
+ HeadMusic::Style::Guidelines::ConsonantClimax,
558
+ HeadMusic::Style::Guidelines::Diatonic,
559
+ HeadMusic::Style::Guidelines::EndOnTonic,
560
+ HeadMusic::Style::Guidelines::FourToOne, # NEW
561
+ HeadMusic::Style::Guidelines::FrequentDirectionChanges,
562
+ HeadMusic::Style::Guidelines::LimitOctaveLeaps,
563
+ HeadMusic::Style::Guidelines::MostlyConjunct,
564
+ HeadMusic::Style::Guidelines::PrepareOctaveLeaps,
565
+ HeadMusic::Style::Guidelines::SingableIntervals,
566
+ HeadMusic::Style::Guidelines::SingableRange,
567
+ HeadMusic::Style::Guidelines::StartOnPerfectConsonance,
568
+ HeadMusic::Style::Guidelines::StepOutOfUnison,
569
+ HeadMusic::Style::Guidelines::StepUpToFinalNote,
570
+ ].freeze
571
+ ```
572
+
573
+ #### ThirdSpeciesHarmony RULESET
574
+
575
+ ```ruby
576
+ RULESET = [
577
+ HeadMusic::Style::Guidelines::ApproachPerfectionContrarily,
578
+ HeadMusic::Style::Guidelines::AvoidCrossingVoices,
579
+ HeadMusic::Style::Guidelines::AvoidOverlappingVoices,
580
+ HeadMusic::Style::Guidelines::ConsonantDownbeats,
581
+ HeadMusic::Style::Guidelines::NoParallelPerfectAcrossBarline,
582
+ HeadMusic::Style::Guidelines::NoParallelPerfectOnDownbeats,
583
+ HeadMusic::Style::Guidelines::NoStrongBeatUnisons,
584
+ HeadMusic::Style::Guidelines::PreferContraryMotion,
585
+ HeadMusic::Style::Guidelines::PreferImperfect,
586
+ HeadMusic::Style::Guidelines::ThirdSpeciesDissonanceTreatment, # NEW
587
+ ].freeze
588
+ ```
589
+
590
+ ### 7.4 New Guideline Specifications
591
+
592
+ #### FourToOne
593
+
594
+ **Purpose:** Enforce the 4:1 rhythmic structure of third-species counterpoint.
595
+
596
+ **Logic:**
597
+ ```
598
+ for each bar aligned with a CF note:
599
+ if first bar:
600
+ accept 4 quarter notes OR (quarter rest + 3 quarter notes)
601
+ elsif last bar (aligned with last CF note):
602
+ accept 1 whole note
603
+ else:
604
+ accept exactly 4 quarter notes
605
+ end
606
+ ```
607
+
608
+ **Implementation notes:** Model after `TwoToOne`. Use `HeadMusic::Rudiment::RhythmicValue.get(:quarter)` and `:whole`. Check `notes_in_bar` and `rests_in_bar` for each bar. The CF bar alignment can be determined from `cantus_firmus.notes`.
609
+
610
+ #### ThirdSpeciesDissonanceTreatment
611
+
612
+ **Purpose:** Validate that all dissonant notes on weak beats follow one of the permitted dissonance figures.
613
+
614
+ **Logic:**
615
+ ```
616
+ for each note on beat 2, 3, or 4 that is dissonant with the CF:
617
+ if passing_tone?(note): OK
618
+ - approached by step, left by step, same direction
619
+ elsif neighbor_tone?(note): OK
620
+ - approached by step, left by step, opposite direction (back to original pitch or to another consonance)
621
+ elsif part_of_nota_cambiata?(note): OK
622
+ - five-note figure: beat 2 dissonance, approached by step, left by leap of 3rd (same direction),
623
+ followed by two steps in opposite direction; notes 1, 3, 5 consonant
624
+ elsif part_of_double_neighbor?(note): OK
625
+ - four-note figure: beats 1 and 4 same pitch, beats 2 and 3 are upper and lower neighbors
626
+ else:
627
+ MARK as violation
628
+ end
629
+ ```
630
+
631
+ **Implementation notes:** This is the most complex guideline. It should:
632
+ 1. First identify all dissonant non-downbeat notes
633
+ 2. For each, check the simplest patterns first (PT, NT)
634
+ 3. For remaining unresolved dissonances, check if they participate in a cambiata or double neighbor figure
635
+ 4. Mark any dissonance that does not fit a recognized pattern
636
+
637
+ **Escape tone option:** The escape tone could be included as an optional check (step in, leap out in opposite direction) or excluded for a strict Fuxian implementation. Consider making this configurable or implementing as a separate soft guideline.
638
+
639
+ ### 7.5 Hard vs. Soft Classification (after Schubert)
640
+
641
+ **Hard rules** (fitness near 0 for violations):
642
+ - Consonant downbeats
643
+ - All weak-beat dissonances must fit a recognized pattern (PT, NT, cambiata, double neighbor)
644
+ - No parallel perfect consonances on consecutive downbeats
645
+ - No parallel perfect consonances across barline (beat 4 to beat 1)
646
+ - No repeated notes (AlwaysMove)
647
+ - Diatonic
648
+ - Singable intervals
649
+ - Four-to-one rhythmic structure (FourToOne)
650
+
651
+ **Soft rules** (penalty but not zero fitness):
652
+ - Prefer contrary motion
653
+ - Prefer imperfect consonances
654
+ - Mostly conjunct (higher threshold than second species)
655
+ - Prefer leaps within the bar
656
+ - Frequent direction changes
657
+ - Avoid interior unisons on strong beats
658
+ - Consonant climax
659
+ - Singable range
660
+
661
+ ### 7.6 Implementation Priority
662
+
663
+ 1. **FourToOne** -- straightforward adaptation of TwoToOne; required to validate basic rhythmic structure
664
+ 2. **ThirdSpeciesDissonanceTreatment** -- the core new guideline; complex but essential; handles PT, NT, cambiata, double neighbor
665
+ 3. **Verify existing guidelines** -- run second-species guidelines against third-species examples to confirm they generalize correctly (AlwaysMove, ConsonantDownbeats, NoParallelPerfectOnDownbeats, etc.)
666
+ 4. **Adjust thresholds** -- MostlyConjunct may need a higher minimum conjunct portion for third species
667
+ 5. **Optional: NoParallelPerfectOnConsecutiveNotes** -- more comprehensive parallel checking between all beat positions (beyond just downbeats and barlines)
668
+
669
+ ---
670
+
671
+ ## 8. Sources
672
+
673
+ ### Primary Textbooks
674
+
675
+ - Fux, J.J. *Gradus ad Parnassum* (1725). Trans. Alfred Mann, *The Study of Counterpoint* (W.W. Norton, 1965).
676
+ - Albrechtsberger, J.G. *Grundliche Anweisung zur Composition* (1790).
677
+ - Cherubini, L. *A Treatise on Counterpoint and Fugue* (1835).
678
+ - Bellermann, H. *Der Contrapunkt* (1862; 4th ed. 1901).
679
+ - Schenker, H. *Kontrapunkt* (1910/1922). Trans. Rothgeb & Thym, *Counterpoint* (Musicalia Press, 2001).
680
+ - Jeppesen, K. *Counterpoint: The Polyphonic Vocal Style of the Sixteenth Century* (1931; Dover, 1992).
681
+ - Salzer, F. & Schachter, C. *Counterpoint in Composition* (Columbia UP, 1969).
682
+ - Kennan, K. *Counterpoint*, 4th ed. (Prentice Hall, 1999).
683
+ - Gauldin, R. *A Practical Approach to 16th-Century Counterpoint* (Waveland Press).
684
+ - Gauldin, R. *A Practical Approach to 18th-Century Counterpoint* (Waveland Press).
685
+ - Aldwell, E. & Schachter, C. *Harmony and Voice Leading*, 4th ed. (Cengage, 2011).
686
+ - Schubert, P. *Modal Counterpoint: Renaissance Style*, 2nd ed. (Oxford UP, 2008).
687
+ - Laitz, S. *The Complete Musician*, 4th ed. (Oxford UP, 2016).
688
+ - Kostka, S., Payne, D. & Almen, B. *Tonal Harmony*, 8th ed. (McGraw-Hill, 2018).
689
+ - Clendinning, J.P. & Marvin, E.W. *The Musician's Guide to Theory and Analysis*, 4th ed. (W.W. Norton, 2021).
690
+ - Benjamin, T., Horvit, M. & Nelson, R. *Counterpoint in the Style of J.S. Bach* (Schirmer).
691
+ - Swindale, O. *Polyphonic Composition* (Oxford UP, 1962).
692
+
693
+ ### Online Pedagogy
694
+
695
+ - [Open Music Theory 2e -- Third-Species Counterpoint (Gotham et al.)](https://human.libretexts.org/Bookshelves/Music/Music_Theory/Open_Music_Theory_2e_(Gotham_et_al.)/02:_Counterpoint_and_Galant_Schemas/2.04:_Third-Species_Counterpoint)
696
+ - [Open Music Theory -- Third-Species Counterpoint (Shaffer/Hughes)](https://viva.pressbooks.pub/openmusictheory/chapter/third-species-counterpoint/)
697
+ - [Kris Shaffer -- Composing a Third-Species Counterpoint](https://openmusictheory.github.io/thirdSpecies.html)
698
+ - [Puget Sound Music Theory -- Third Species](https://musictheory.pugetsound.edu/mt21c/ThirdSpecies.html)
699
+ - [Rothfarb (UCSB) -- The Third Species of Counterpoint](https://rothfarb.faculty.music.ucsb.edu/courses/103/Third_Species(2v).html)
700
+ - [Ars Nova -- Third Species Counterpoint](https://www.ars-nova.com/cpmanual/thirdspecies.htm)
701
+ - [Ars Nova -- Dissonance Handling](https://www.ars-nova.com/cpmanual/dissonancerules.htm)
702
+ - [Ars Nova -- Escape Tones](https://www.ars-nova.com/cpmanual/escape.htm)
703
+ - [Any Old Music -- How to Write Third Species Counterpoint](https://anyoldmusic.com/how-to-write-third-species-counterpoint-a-comprehensive-guide/)
704
+ - [Iowa State -- Third Species Counterpoint Tutorial](https://iastate.pressbooks.pub/comprehensivemusicianship/chapter/9-4-third-species-counterpoint-tutorial/)
705
+ - [Irene Girton -- Species Counterpoint: 3rd Species](https://irenegirton.com/irene-montefiore-girton/species-counterpoint-online/species-counterpoint-3rd-species/)
706
+ - [Global Music Theory -- 3rd Species Counterpoint](https://globalmusictheory.com/3rd-species-counterpoint-rules-and-steps/)
707
+ - [ntoll.org -- Species Counterpoint](https://ntoll.org/article/species-counterpoint/)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: head_music
3
3
  version: !ruby/object:Gem::Version
4
- version: 11.7.0
4
+ version: 11.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Head
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-02-13 00:00:00.000000000 Z
11
+ date: 2026-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -279,6 +279,7 @@ files:
279
279
  - lib/head_music/style/guidelines/direction_changes.rb
280
280
  - lib/head_music/style/guidelines/end_on_perfect_consonance.rb
281
281
  - lib/head_music/style/guidelines/end_on_tonic.rb
282
+ - lib/head_music/style/guidelines/four_to_one.rb
282
283
  - lib/head_music/style/guidelines/frequent_direction_changes.rb
283
284
  - lib/head_music/style/guidelines/limit_octave_leaps.rb
284
285
  - lib/head_music/style/guidelines/moderate_direction_changes.rb
@@ -303,6 +304,7 @@ files:
303
304
  - lib/head_music/style/guidelines/step_out_of_unison.rb
304
305
  - lib/head_music/style/guidelines/step_to_final_note.rb
305
306
  - lib/head_music/style/guidelines/step_up_to_final_note.rb
307
+ - lib/head_music/style/guidelines/third_species_dissonance_treatment.rb
306
308
  - lib/head_music/style/guidelines/two_to_one.rb
307
309
  - lib/head_music/style/guidelines/up_to_fourteen_notes.rb
308
310
  - lib/head_music/style/guidelines/weak_beat_dissonance_treatment.rb
@@ -312,6 +314,8 @@ files:
312
314
  - lib/head_music/style/guides/modern_cantus_firmus.rb
313
315
  - lib/head_music/style/guides/second_species_harmony.rb
314
316
  - lib/head_music/style/guides/second_species_melody.rb
317
+ - lib/head_music/style/guides/third_species_harmony.rb
318
+ - lib/head_music/style/guides/third_species_melody.rb
315
319
  - lib/head_music/style/mark.rb
316
320
  - lib/head_music/style/medieval_tradition.rb
317
321
  - lib/head_music/style/modern_tradition.rb
@@ -330,6 +334,7 @@ files:
330
334
  - lib/head_music/utilities/hash_key.rb
331
335
  - lib/head_music/version.rb
332
336
  - references/second-species-counterpoint.md
337
+ - references/third-species-counterpoint.md
333
338
  - user_stories/backlog/notation-style.md
334
339
  - user_stories/backlog/organizing-content.md
335
340
  - user_stories/done/consonance-dissonance-classification.md