Class: Sunniesnow::Charter::TimeDependent::PiecewiseData

Inherits:
Object
  • Object
show all
Includes:
Metronomic
Defined in:
lib/sscharter/charter/event.rb

Instance Attribute Summary collapse

Attributes included from Metronomic

#beat, #bpm_changes, #duration_beats, #offset

Instance Method Summary collapse

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.

Parameters:



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_pointsArray<DataPoint>

Returns:



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

Parameters:

  • beat (Rational)
  • value (Float, String)

Returns:



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

#dupPiecewiseData

TODO: use initialize_copy.

Returns:



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

Returns:

  • (Boolean)

Raises:

  • (NotImplementedError)


141
142
143
# File 'lib/sscharter/charter/event.rb', line 141

def interpolable?
	raise NotImplementedError
end

#to_sunniesnowHash

Returns:

  • (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