head_music 0.19.0 → 0.19.1
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 +4 -4
- data/LICENSE.txt +1 -1
- data/lib/head_music/chord.rb +29 -3
- data/lib/head_music/functional_interval.rb +175 -94
- data/lib/head_music/octave.rb +8 -0
- data/lib/head_music/style/analysis.rb +7 -7
- data/lib/head_music/style/{annotations → guidelines}/always_move.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/approach_perfection_contrarily.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/at_least_eight_notes.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/avoid_crossing_voices.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/avoid_overlapping_voices.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/consonant_climax.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/consonant_downbeats.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/diatonic.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/direction_changes.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/end_on_perfect_consonance.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/end_on_tonic.rb +3 -3
- data/lib/head_music/style/guidelines/frequent_direction_changes.rb +13 -0
- data/lib/head_music/style/{annotations → guidelines}/limit_octave_leaps.rb +3 -3
- data/lib/head_music/style/guidelines/moderate_direction_changes.rb +13 -0
- data/lib/head_music/style/{annotations → guidelines}/mostly_conjunct.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/no_rests.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/no_unisons_in_middle.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/notes_same_length.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/one_to_one.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/prefer_contrary_motion.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/prefer_imperfect.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/prepare_octave_leaps.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/recover_large_leaps.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/singable_intervals.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/singable_range.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/single_large_leaps.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/start_on_perfect_consonance.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/start_on_tonic.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/step_down_to_final_note.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/step_out_of_unison.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/step_to_final_note.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/step_up_to_final_note.rb +3 -3
- data/lib/head_music/style/{annotations → guidelines}/up_to_fourteen_notes.rb +3 -3
- data/lib/head_music/style/guides/first_species_harmony.rb +22 -0
- data/lib/head_music/style/guides/first_species_melody.rb +28 -0
- data/lib/head_music/style/guides/fux_cantus_firmus.rb +30 -0
- data/lib/head_music/style/guides/modern_cantus_firmus.rb +31 -0
- data/lib/head_music/style/mark.rb +1 -1
- data/lib/head_music/version.rb +1 -1
- data/lib/head_music.rb +39 -39
- metadata +39 -39
- data/lib/head_music/style/annotations/frequent_direction_changes.rb +0 -13
- data/lib/head_music/style/annotations/moderate_direction_changes.rb +0 -13
- data/lib/head_music/style/rulesets/first_species_harmony.rb +0 -22
- data/lib/head_music/style/rulesets/first_species_melody.rb +0 -28
- data/lib/head_music/style/rulesets/fux_cantus_firmus.rb +0 -30
- data/lib/head_music/style/rulesets/modern_cantus_firmus.rb +0 -31
@@ -1,22 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Module for rulesets
|
4
|
-
module HeadMusic::Style::Rulesets; end
|
5
|
-
|
6
|
-
# Rules for first species harmony
|
7
|
-
class HeadMusic::Style::Rulesets::FirstSpeciesHarmony
|
8
|
-
RULESET = [
|
9
|
-
HeadMusic::Style::Annotations::ApproachPerfectionContrarily,
|
10
|
-
HeadMusic::Style::Annotations::AvoidCrossingVoices,
|
11
|
-
HeadMusic::Style::Annotations::AvoidOverlappingVoices,
|
12
|
-
HeadMusic::Style::Annotations::ConsonantDownbeats,
|
13
|
-
HeadMusic::Style::Annotations::NoUnisonsInMiddle,
|
14
|
-
HeadMusic::Style::Annotations::OneToOne,
|
15
|
-
HeadMusic::Style::Annotations::PreferContraryMotion,
|
16
|
-
HeadMusic::Style::Annotations::PreferImperfect,
|
17
|
-
].freeze
|
18
|
-
|
19
|
-
def self.analyze(voice)
|
20
|
-
RULESET.map { |rule| rule.new(voice) }
|
21
|
-
end
|
22
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Module for rulesets
|
4
|
-
module HeadMusic::Style::Rulesets; end
|
5
|
-
|
6
|
-
# Rules for first species melodies
|
7
|
-
class HeadMusic::Style::Rulesets::FirstSpeciesMelody
|
8
|
-
RULESET = [
|
9
|
-
HeadMusic::Style::Annotations::ConsonantClimax,
|
10
|
-
HeadMusic::Style::Annotations::Diatonic,
|
11
|
-
HeadMusic::Style::Annotations::EndOnTonic,
|
12
|
-
HeadMusic::Style::Annotations::FrequentDirectionChanges,
|
13
|
-
HeadMusic::Style::Annotations::LimitOctaveLeaps,
|
14
|
-
HeadMusic::Style::Annotations::MostlyConjunct,
|
15
|
-
HeadMusic::Style::Annotations::NoRests,
|
16
|
-
HeadMusic::Style::Annotations::NotesSameLength,
|
17
|
-
HeadMusic::Style::Annotations::PrepareOctaveLeaps,
|
18
|
-
HeadMusic::Style::Annotations::SingableIntervals,
|
19
|
-
HeadMusic::Style::Annotations::SingableRange,
|
20
|
-
HeadMusic::Style::Annotations::StartOnPerfectConsonance,
|
21
|
-
HeadMusic::Style::Annotations::StepOutOfUnison,
|
22
|
-
HeadMusic::Style::Annotations::StepUpToFinalNote,
|
23
|
-
].freeze
|
24
|
-
|
25
|
-
def self.analyze(voice)
|
26
|
-
RULESET.map { |rule| rule.new(voice) }
|
27
|
-
end
|
28
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Module for rulesets
|
4
|
-
module HeadMusic::Style::Rulesets; end
|
5
|
-
|
6
|
-
# Rules for the cantus firmus according to Fux.
|
7
|
-
class HeadMusic::Style::Rulesets::FuxCantusFirmus
|
8
|
-
RULESET = [
|
9
|
-
HeadMusic::Style::Annotations::AlwaysMove,
|
10
|
-
HeadMusic::Style::Annotations::AtLeastEightNotes,
|
11
|
-
HeadMusic::Style::Annotations::ConsonantClimax,
|
12
|
-
HeadMusic::Style::Annotations::Diatonic,
|
13
|
-
HeadMusic::Style::Annotations::EndOnTonic,
|
14
|
-
HeadMusic::Style::Annotations::FrequentDirectionChanges,
|
15
|
-
HeadMusic::Style::Annotations::LimitOctaveLeaps,
|
16
|
-
HeadMusic::Style::Annotations::MostlyConjunct,
|
17
|
-
HeadMusic::Style::Annotations::NoRests,
|
18
|
-
HeadMusic::Style::Annotations::NotesSameLength,
|
19
|
-
HeadMusic::Style::Annotations::RecoverLargeLeaps,
|
20
|
-
HeadMusic::Style::Annotations::SingableIntervals,
|
21
|
-
HeadMusic::Style::Annotations::SingableRange,
|
22
|
-
HeadMusic::Style::Annotations::StartOnTonic,
|
23
|
-
HeadMusic::Style::Annotations::StepDownToFinalNote,
|
24
|
-
HeadMusic::Style::Annotations::UpToFourteenNotes,
|
25
|
-
].freeze
|
26
|
-
|
27
|
-
def self.analyze(voice)
|
28
|
-
RULESET.map { |rule| rule.new(voice) }
|
29
|
-
end
|
30
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Module for rulesets
|
4
|
-
module HeadMusic::Style::Rulesets; end
|
5
|
-
|
6
|
-
# Modern rules for the cantus firmus
|
7
|
-
class HeadMusic::Style::Rulesets::ModernCantusFirmus
|
8
|
-
RULESET = [
|
9
|
-
HeadMusic::Style::Annotations::AlwaysMove,
|
10
|
-
HeadMusic::Style::Annotations::AtLeastEightNotes,
|
11
|
-
HeadMusic::Style::Annotations::ConsonantClimax,
|
12
|
-
HeadMusic::Style::Annotations::Diatonic,
|
13
|
-
HeadMusic::Style::Annotations::EndOnTonic,
|
14
|
-
HeadMusic::Style::Annotations::LimitOctaveLeaps,
|
15
|
-
HeadMusic::Style::Annotations::ModerateDirectionChanges,
|
16
|
-
HeadMusic::Style::Annotations::MostlyConjunct,
|
17
|
-
HeadMusic::Style::Annotations::NoRests,
|
18
|
-
HeadMusic::Style::Annotations::NotesSameLength,
|
19
|
-
HeadMusic::Style::Annotations::PrepareOctaveLeaps,
|
20
|
-
HeadMusic::Style::Annotations::SingableIntervals,
|
21
|
-
HeadMusic::Style::Annotations::SingableRange,
|
22
|
-
HeadMusic::Style::Annotations::SingleLargeLeaps,
|
23
|
-
HeadMusic::Style::Annotations::StartOnTonic,
|
24
|
-
HeadMusic::Style::Annotations::StepToFinalNote,
|
25
|
-
HeadMusic::Style::Annotations::UpToFourteenNotes,
|
26
|
-
].freeze
|
27
|
-
|
28
|
-
def self.analyze(voice)
|
29
|
-
RULESET.map { |rule| rule.new(voice) }
|
30
|
-
end
|
31
|
-
end
|