Class: Musicality::NoteArray

Inherits:
Object
  • Object
show all
Includes:
Sequenceable
Defined in:
lib/musicality/composition/sequencing/note_array.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(notes) ⇒ NoteArray

Returns a new instance of NoteArray.

Raises:

  • (ArgumentError)


7
8
9
10
11
12
13
14
15
# File 'lib/musicality/composition/sequencing/note_array.rb', line 7

def initialize notes
  raise ArgumentError if notes.empty?

  @notes = notes.clone.freeze
  @notes_idx = 0
  @notes_count = notes.size

  @duration = @notes.inject(0) {|sum, note| sum + note.duration}
end

Instance Attribute Details

#durationObject (readonly)

Returns the value of attribute duration.



6
7
8
# File 'lib/musicality/composition/sequencing/note_array.rb', line 6

def duration
  @duration
end

#notesObject (readonly)

Returns the value of attribute notes.



6
7
8
# File 'lib/musicality/composition/sequencing/note_array.rb', line 6

def notes
  @notes
end

Instance Method Details

#next_noteObject



17
18
19
20
21
22
23
24
25
26
# File 'lib/musicality/composition/sequencing/note_array.rb', line 17

def next_note
  note = @notes[@notes_idx]

  @notes_idx += 1
  if @notes_idx >= @notes_count
    @notes_idx = 0
  end

  return note
end

#resetObject



28
29
30
# File 'lib/musicality/composition/sequencing/note_array.rb', line 28

def reset
  @notes_idx = 0
end