Class: Sunniesnow::Charter::TimeDependent::PiecewiseData
- Inherits:
-
Object
- Object
- Sunniesnow::Charter::TimeDependent::PiecewiseData
- Includes:
- Metronomic
- Defined in:
- lib/sscharter/charter/event.rb
Direct Known Subclasses
Instance Attribute Summary collapse
Attributes included from Metronomic
#beat, #bpm_changes, #duration_beats, #offset
Instance Method Summary collapse
- #data_point(beat, value) ⇒ DataPoint
-
#dup ⇒ PiecewiseData
TODO: use
initialize_copy. -
#initialize(beat, bpm_changes) ⇒ PiecewiseData
constructor
A new instance of PiecewiseData.
- #interpolable? ⇒ Boolean
- #to_sunniesnow ⇒ Hash
Methods included from Metronomic
#<=>, #beat_state, #end_time, #time, #time_at_relative_beat
Constructor Details
#initialize(beat, bpm_changes) ⇒ PiecewiseData
Returns a new instance of PiecewiseData.
127 128 129 130 131 |
# File 'lib/sscharter/charter/event.rb', line 127 def initialize beat, bpm_changes @offset = 0.0 @beat = beat @bpm_changes = bpm_changes end |
Instance Attribute Details
#data_points ⇒ Array<DataPoint>
123 124 125 |
# File 'lib/sscharter/charter/event.rb', line 123 def data_points @data_points end |
Instance Method Details
#data_point(beat, value) ⇒ DataPoint
136 137 138 |
# File 'lib/sscharter/charter/event.rb', line 136 def data_point beat, value DataPoint.new(beat, @bpm_changes, value).tap { (@data_points ||= []).push _1 } end |
#dup ⇒ PiecewiseData
TODO: use initialize_copy.
147 148 149 |
# File 'lib/sscharter/charter/event.rb', line 147 def dup super.tap { _1.data_points = @data_points&.map &:dup } end |
#interpolable? ⇒ Boolean
141 142 143 |
# File 'lib/sscharter/charter/event.rb', line 141 def interpolable? raise NotImplementedError end |
#to_sunniesnow ⇒ Hash
152 153 154 155 156 157 158 |
# File 'lib/sscharter/charter/event.rb', line 152 def to_sunniesnow return {} unless @data_points data_points = @data_points.map &:to_sunniesnow data_points.sort_by! { _1[:time] } data_points.each { _1[:time] += @offset } {dataPoints: data_points} end |