Class: HeadMusic::Instruments::StringingCourse
- Inherits:
-
Object
- Object
- HeadMusic::Instruments::StringingCourse
- Includes:
- ValueEquality
- Defined in:
- lib/head_music/instruments/stringing_course.rb
Overview
A single course (string or set of strings) on a stringed instrument.
A “course” is a set of strings that are played together. On most guitars, each course has a single string. On a 12-string guitar or mandolin, courses have multiple strings tuned in unison or octaves.
Examples: - 6-string guitar: 6 courses, each with 1 string - 12-string guitar: 6 courses, each with 2 strings (octave or unison) - Mandolin: 4 courses, each with 2 strings in unison
Instance Attribute Summary collapse
-
#course_semitones ⇒ Object
readonly
Returns the value of attribute course_semitones.
-
#standard_pitch ⇒ Object
readonly
Returns the value of attribute standard_pitch.
Instance Method Summary collapse
-
#==(other) ⇒ Object
included
from ValueEquality
-
#additional_pitches ⇒ Object
private
-
#doubled? ⇒ Boolean
Whether this course has multiple strings.
-
#initialize(standard_pitch:, course_semitones: []) ⇒ StringingCourse
constructor
A new instance of StringingCourse.
-
#pitches ⇒ Array<HeadMusic::Rudiment::Pitch>
Returns all pitches in this course (primary + additional strings).
-
#string_count ⇒ Integer
Returns the number of physical strings in this course.
-
#to_s ⇒ Object
Constructor Details
#initialize(standard_pitch:, course_semitones: []) ⇒ StringingCourse
Returns a new instance of StringingCourse.
22 23 24 25 |
# File 'lib/head_music/instruments/stringing_course.rb', line 22 def initialize(standard_pitch:, course_semitones: []) @standard_pitch = HeadMusic::Rudiment::Pitch.get(standard_pitch) @course_semitones = Array(course_semitones) end |
Instance Attribute Details
#course_semitones ⇒ Object (readonly)
Returns the value of attribute course_semitones.
16 17 18 |
# File 'lib/head_music/instruments/stringing_course.rb', line 16 def course_semitones @course_semitones end |
#standard_pitch ⇒ Object (readonly)
Returns the value of attribute standard_pitch.
16 17 18 |
# File 'lib/head_music/instruments/stringing_course.rb', line 16 def standard_pitch @standard_pitch end |
Instance Method Details
#==(other) ⇒ Object Originally defined in module ValueEquality
#additional_pitches ⇒ Object (private)
51 52 53 54 55 |
# File 'lib/head_music/instruments/stringing_course.rb', line 51 def additional_pitches course_semitones.map do |semitones| HeadMusic::Rudiment::Pitch.from_number(standard_pitch.to_i + semitones) end end |
#doubled? ⇒ Boolean
Whether this course has multiple strings
41 42 43 |
# File 'lib/head_music/instruments/stringing_course.rb', line 41 def doubled? course_semitones.any? end |
#pitches ⇒ Array<HeadMusic::Rudiment::Pitch>
Returns all pitches in this course (primary + additional strings)
29 30 31 |
# File 'lib/head_music/instruments/stringing_course.rb', line 29 def pitches [standard_pitch] + additional_pitches end |
#string_count ⇒ Integer
Returns the number of physical strings in this course
35 36 37 |
# File 'lib/head_music/instruments/stringing_course.rb', line 35 def string_count 1 + course_semitones.length end |
#to_s ⇒ Object
45 46 47 |
# File 'lib/head_music/instruments/stringing_course.rb', line 45 def to_s standard_pitch.to_s end |