head_music 11.0.0 → 11.1.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: c3abf9e12840eb88aee1cb454116cbd092f224eb1961cfda5567444ad9e91d2f
4
- data.tar.gz: e7680154e971414788fc8bd1a87f53111bc82c9452f4df5a8ad47a74b1c5c16d
3
+ metadata.gz: 58dd1af5d1072fae544381bbfa88c7f0dd6e7e81a9287993d7b0b2182a6b9843
4
+ data.tar.gz: b756659da00094b43e63480154c9f9c86ad06da12d4aa77752539febedcc23e1
5
5
  SHA512:
6
- metadata.gz: 199c8cdba49e5d6e15e7047a8bb8ee28eaa5c8087c9f427916d087d4ce8986f04cf7dd354666247b389836256230d5c3535ff5fd79964443626e397c0cdb3288
7
- data.tar.gz: d793d6730a790b088fcc7906bc6cb02b865364852767534c15c1b76b40622ae6a12b23a2bde5f651687e9ce124941501ae8d1f17f9a63a7c8c473a2112914024
6
+ metadata.gz: ff5db88d28319654f40a7d2ac21ff53dbfb4a8a600986a61d965cbfea64ed1b3a4b7d78fc87cfc5aa2b61278e477064e0db923f8e7a408dab5d8081f8f477a21
7
+ data.tar.gz: c051f56b29a2b0ae61f24c163245bc0dfd24405baa0e556b19b709317c858fd27464409cad7e0f832a143c59ad85cf56be4fb9429b68516b41fea34278291284
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- head_music (11.0.0)
4
+ head_music (11.1.0)
5
5
  activesupport (>= 7.0, < 10)
6
6
  humanize (~> 2.0)
7
7
  i18n (~> 1.8)
@@ -0,0 +1,58 @@
1
+ module HeadMusic
2
+ module Content
3
+ # Sample cantus firmus examples from various pedagogical sources.
4
+ # These are traditional melodies used for teaching counterpoint.
5
+ module CantusFirmusExamples
6
+ FUX = [
7
+ { source: "Fux", key: "D dorian", pitches: %w[D F E D G F A G F E D] },
8
+ { source: "Fux", key: "E phrygian", pitches: %w[E C D C A3 A G E F E] },
9
+ { source: "Fux", key: "F lydian", pitches: %w[F G A F D E F C5 A F G F] },
10
+ { source: "Fux", key: "G mixolydian", pitches: %w[G3 C B3 G3 C E D G E C D B3 A3 G3] },
11
+ { source: "Fux", key: "A aeolian", pitches: %w[A3 C B3 D C E F E D C B3 A3] },
12
+ { source: "Fux", key: "C ionian", pitches: %w[C E F G E A G E F E D C] },
13
+ { source: "Fux", key: "C ionian", pitches: %w[C E F E G F E D C] }
14
+ ].freeze
15
+
16
+ CLENDINNING = [
17
+ { source: "Clendinning", name: "CF in F major", key: "F major", pitches: %w[F3 G3 A3 F3 D3 E3 F3 C4 A3 F3 G3 F3] },
18
+ { source: "Clendinning", name: "CF in D minor", key: "D minor", pitches: %w[D3 A3 G3 F3 E3 D3 F3 E3 D3] },
19
+ { source: "Clendinning", name: "CF in C major (treble)", key: "C major", pitches: %w[C D F E F G A G E D C] },
20
+ { source: "Clendinning", name: "CF in C major (bass)", key: "C major", pitches: %w[C3 E3 F3 G3 E3 A3 G3 E3 F3 E3 D3 C3] }
21
+ ].freeze
22
+
23
+ DAVIS_AND_LYBBERT = [
24
+ { source: "Davis & Lybbert", name: "CF 1 in C major", key: "C major", pitches: %w[C3 E3 D3 G3 A3 G3 E3 F3 D3 C3] },
25
+ { source: "Davis & Lybbert", name: "CF 2 in C major", key: "C major", pitches: %w[C3 D3 E3 G3 A3 F3 E3 D3 C3] },
26
+ { source: "Davis & Lybbert", name: "CF 3 in G major", key: "G major", pitches: %w[G3 F#3 G3 E3 D3 B2 C3 D3 B2 A2 G2] },
27
+ { source: "Davis & Lybbert", name: "CF 4 in G major", key: "G major", pitches: %w[G2 B2 C3 D3 E3 D3 B2 C3 A2 G2] },
28
+ { source: "Davis & Lybbert", name: "CF 5 in F major", key: "F major", pitches: %w[F3 D3 C3 F3 G3 A3 E3 D3 G3 F3] },
29
+ { source: "Davis & Lybbert", name: "CF 6 in A minor", key: "A minor", pitches: %w[A2 E3 C3 D3 B2 G2 A2 C3 B2 A2] },
30
+ { source: "Davis & Lybbert", name: "CF 7 in A minor", key: "A minor", pitches: %w[A2 B2 C3 D3 E3 F3 E3 C3 B2 A2] },
31
+ { source: "Davis & Lybbert", name: "CF 8 in E minor", key: "E minor", pitches: %w[E3 A3 B3 G3 C4 A3 B3 G3 F#3 E3] },
32
+ { source: "Davis & Lybbert", name: "CF 9 in E minor", key: "E minor", pitches: %w[E3 D3 C3 B2 G2 A2 B2 E3 G3 F#3 E3] },
33
+ { source: "Davis & Lybbert", name: "CF 10 in D minor", key: "D minor", pitches: %w[D3 F3 E3 G3 F3 D3 A3 G3 F3 E3 D3] }
34
+ ].freeze
35
+
36
+ SCHOENBERG = [
37
+ { source: "Schoenberg", key: "Eb major", pitches: %w[Eb D G3 Ab3 C Ab3 F3 Eb3] },
38
+ { source: "Schoenberg", key: "A major", pitches: %w[A3 C#4 B3 F#3 A3 F#3 G#3 A3] }
39
+ ].freeze
40
+
41
+ EXAMPLES = (FUX + CLENDINNING + DAVIS_AND_LYBBERT + SCHOENBERG).freeze
42
+
43
+ class << self
44
+ def all
45
+ EXAMPLES
46
+ end
47
+
48
+ def by_source(source)
49
+ EXAMPLES.select { |ex| ex[:source] == source }
50
+ end
51
+
52
+ def sources
53
+ EXAMPLES.map { |ex| ex[:source] }.uniq
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -1,3 +1,3 @@
1
1
  module HeadMusic
2
- VERSION = "11.0.0"
2
+ VERSION = "11.1.0"
3
3
  end
data/lib/head_music.rb CHANGED
@@ -110,6 +110,7 @@ require "head_music/instruments/score_order"
110
110
 
111
111
  # content
112
112
  require "head_music/content/bar"
113
+ require "head_music/content/cantus_firmus_examples"
113
114
  require "head_music/content/composition"
114
115
  require "head_music/content/note"
115
116
  require "head_music/content/placement"
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.0.0
4
+ version: 11.1.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-01-12 00:00:00.000000000 Z
11
+ date: 2026-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -181,6 +181,7 @@ files:
181
181
  - lib/head_music/analysis/pitch_collection.rb
182
182
  - lib/head_music/analysis/sonority.rb
183
183
  - lib/head_music/content/bar.rb
184
+ - lib/head_music/content/cantus_firmus_examples.rb
184
185
  - lib/head_music/content/composition.rb
185
186
  - lib/head_music/content/note.rb
186
187
  - lib/head_music/content/placement.rb
@@ -318,7 +319,6 @@ files:
318
319
  - lib/head_music/utilities/case.rb
319
320
  - lib/head_music/utilities/hash_key.rb
320
321
  - lib/head_music/version.rb
321
- - user_stories/active/string-pitches.md
322
322
  - user_stories/backlog/notation-style.md
323
323
  - user_stories/backlog/organizing-content.md
324
324
  - user_stories/done/consonance-dissonance-classification.md
@@ -339,6 +339,7 @@ files:
339
339
  - user_stories/done/percussion_set.md
340
340
  - user_stories/done/pitch-class-set-analysis.md
341
341
  - user_stories/done/sonority-identification.md
342
+ - user_stories/done/string-pitches.md
342
343
  - user_stories/done/superclass-for-note.md
343
344
  - user_stories/epics/notation-module.md
344
345
  - user_stories/visioning/agentic-daw.md
File without changes