class Musicality::Change::Gradual
Constants
- LINEAR
- SIGMOID
- TRANSITIONS
Attributes
duration[R]
start_value[R]
transition[R]
Public Class Methods
linear(end_value, duration, start_value: nil)
click to toggle source
# File lib/musicality/notation/model/change.rb, line 34 def self.linear end_value, duration, start_value: nil Gradual.new(end_value, duration, LINEAR, start_value: start_value) end
new(end_value, duration, transition, start_value: nil)
click to toggle source
Calls superclass method
Musicality::Change::new
# File lib/musicality/notation/model/change.rb, line 43 def initialize end_value, duration, transition, start_value: nil if duration <= 0 raise NonPositiveError, "duration (#{duration}) is <= 0" end unless TRANSITIONS.include?(transition) raise ArgumentError, "transition (#{transition}) is not supported" end @duration = duration @transition = transition @start_value = start_value super(end_value) end
sigmoid(end_value, duration, start_value: nil)
click to toggle source
# File lib/musicality/notation/model/change.rb, line 38 def self.sigmoid end_value, duration, start_value: nil Gradual.new(end_value, duration, SIGMOID, start_value: start_value) end
Public Instance Methods
==(other)
click to toggle source
Calls superclass method
Musicality::Change#==
# File lib/musicality/notation/model/change.rb, line 58 def ==(other) super(other) && @duration == other.duration && @transition == other.transition && @start_value == other.start_value end
absolute?()
click to toggle source
# File lib/musicality/notation/model/change.rb, line 71 def absolute?; !@start_value.nil?; end
clone() { |end_value| ... }
click to toggle source
# File lib/musicality/notation/model/change.rb, line 64 def clone ev = block_given? ? yield(@end_value) : @end_value sv = (block_given? && !@start_value.nil?) ? yield(@start_value) : @start_value Gradual.new(ev, @duration, @transition, start_value: sv) end
offsets(base_offset)
click to toggle source
# File lib/musicality/notation/conversion/change_conversion.rb, line 19 def offsets base_offset [ base_offset, base_offset + @duration ] end
relative?()
click to toggle source
# File lib/musicality/notation/model/change.rb, line 70 def relative?; @start_value.nil?; end
remap(base_offset, map)
click to toggle source
# File lib/musicality/notation/conversion/change_conversion.rb, line 23 def remap base_offset, map newdur = map[base_offset + @duration] - map[base_offset] Gradual.new(@end_value, newdur, @transition) end
to_transition(offset, value)
click to toggle source
# File lib/musicality/notation/conversion/change_conversion.rb, line 28 def to_transition offset, value p1 = [ offset, @start_value || value ] p2 = [ offset + @duration, @end_value ] func = case @transition when LINEAR then Function::Linear.new(p1, p2) when SIGMOID then Function::Sigmoid.new(p1, p2) end Transition.new(func, p1[0]..p2[0]) end
to_trimmed(preceding, remaining)
click to toggle source
# File lib/musicality/notation/model/change.rb, line 134 def to_trimmed(preceding, remaining) Trimmed.new(@end_value, @duration, @transition, start_value: @start_value, preceding: preceding, remaining: remaining) end
trim(ltrim, rtrim)
click to toggle source
# File lib/musicality/notation/model/change.rb, line 129 def trim(ltrim, rtrim) Trimmed.new(@end_value, @duration, @transition, start_value: @start_value, preceding: ltrim, remaining: (@duration - ltrim - rtrim)) end
trim_left(amount)
click to toggle source
# File lib/musicality/notation/model/change.rb, line 119 def trim_left(amount) Trimmed.new(@end_value, @duration, @transition, start_value: @start_value, preceding: amount, remaining: (@duration - amount)) end
trim_right(amount)
click to toggle source
# File lib/musicality/notation/model/change.rb, line 124 def trim_right(amount) Trimmed.new(@end_value, @duration, @transition, start_value: @start_value, preceding: 0, remaining: (@duration - amount)) end