Class: HeadMusic::Content::Placement

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/head_music/content/placement.rb

Overview

A placement is a note or rest at a position within a voice in a composition

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(voice, position, rhythmic_value, pitch = nil) ⇒ Placement

Returns a new instance of Placement.



13
14
15
# File 'lib/head_music/content/placement.rb', line 13

def initialize(voice, position, rhythmic_value, pitch = nil)
  ensure_attributes(voice, position, rhythmic_value, pitch)
end

Instance Attribute Details

#pitchObject (readonly)

Returns the value of attribute pitch.



8
9
10
# File 'lib/head_music/content/placement.rb', line 8

def pitch
  @pitch
end

#positionObject (readonly)

Returns the value of attribute position.



8
9
10
# File 'lib/head_music/content/placement.rb', line 8

def position
  @position
end

#rhythmic_valueObject (readonly)

Returns the value of attribute rhythmic_value.



8
9
10
# File 'lib/head_music/content/placement.rb', line 8

def rhythmic_value
  @rhythmic_value
end

#voiceObject (readonly)

Returns the value of attribute voice.



8
9
10
# File 'lib/head_music/content/placement.rb', line 8

def voice
  @voice
end

Instance Method Details

#<=>(other) ⇒ Object



29
30
31
# File 'lib/head_music/content/placement.rb', line 29

def <=>(other)
  position <=> other.position
end

#during?(other_placement) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/head_music/content/placement.rb', line 33

def during?(other_placement)
  starts_during?(other_placement) || ends_during?(other_placement) || wraps?(other_placement)
end

#next_positionObject



25
26
27
# File 'lib/head_music/content/placement.rb', line 25

def next_position
  @next_position ||= position + rhythmic_value
end

#note?Boolean

Returns:

  • (Boolean)


17
18
19
# File 'lib/head_music/content/placement.rb', line 17

def note?
  pitch
end

#rest?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/head_music/content/placement.rb', line 21

def rest?
  !note?
end

#to_sObject



37
38
39
# File 'lib/head_music/content/placement.rb', line 37

def to_s
  "#{rhythmic_value} #{pitch || "rest"} at #{position}"
end