Class: Scruby::Env
Constant Summary collapse
- SHAPE_NAMES =
{ :step => 0, :lin => 1, :linear => 1, :exp => 2, :exponential => 2, :sin => 3, :sine => 3, :wel => 4, :welch => 4, :sqr => 6, :squared => 6, :cub => 7, :cubed => 7 }
Instance Attribute Summary collapse
-
#array ⇒ Object
Returns the value of attribute array.
-
#curves ⇒ Object
Returns the value of attribute curves.
-
#levels ⇒ Object
Returns the value of attribute levels.
-
#release_node ⇒ Object
Returns the value of attribute release_node.
-
#times ⇒ Object
Returns the value of attribute times.
Class Method Summary collapse
- .adsr(attackTime = 0.01, decayTime = 0.3, sustainLevel = 0.5, releaseTime = 1.0, peakLevel = 1.0, curve = -4.0,, bias = 0.0) ⇒ Object
- .asr(attackTime = 0.01, sustainLevel = 1.0, releaseTime = 1.0, curve = -4.0 )) ⇒ Object
- .cutoff(releaseTime = 0.1, level = 1.0, curve = :lin) ⇒ Object
- .dadsr(delayTime = 0.1, attackTime = 0.01, decayTime = 0.3, sustainLevel = 0.5, releaseTime = 1.0, peakLevel = 1.0, curve = -4.0,, bias = 0.0) ⇒ Object
- .linen(attackTime = 0.01, sustainTime = 1.0, releaseTime = 1.0, level = 1.0, curve = :lin) ⇒ Object
- .perc(attackTime = 0.01, releaseTime = 1.0, level = 1.0, curve = -4.0 )) ⇒ Object
- .sine(dur = 1.0, level = 1.0) ⇒ Object
-
.triangle(dur = 1.0, level = 1.0) ⇒ Object
fixed duration envelopes.
Instance Method Summary collapse
-
#collect_constants ⇒ Object
:nodoc:.
- #curve_values ⇒ Object
-
#initialize(levels, times, curves = :lin, release_node = nil, loop_node = nil) ⇒ Env
constructor
A new instance of Env.
- #loop_node ⇒ Object
- #shape_numbers ⇒ Object
- #to_array ⇒ Object
-
#valid_ugen_input? ⇒ Boolean
returns true.
Constructor Details
#initialize(levels, times, curves = :lin, release_node = nil, loop_node = nil) ⇒ Env
Returns a new instance of Env.
20 21 22 23 |
# File 'lib/scruby/audio/env.rb', line 20 def initialize( levels, times, curves = :lin, release_node = nil, loop_node = nil ) @levels, @times, @curves, @release_node, @loop_node = levels, times, curves.to_array, release_node, loop_node raise ArgumentError, "levels and times should be array" unless levels.instance_of?(Array) and times.instance_of?(Array) end |
Instance Attribute Details
#array ⇒ Object
Returns the value of attribute array.
3 4 5 |
# File 'lib/scruby/audio/env.rb', line 3 def array @array end |
#curves ⇒ Object
Returns the value of attribute curves.
3 4 5 |
# File 'lib/scruby/audio/env.rb', line 3 def curves @curves end |
#levels ⇒ Object
Returns the value of attribute levels.
3 4 5 |
# File 'lib/scruby/audio/env.rb', line 3 def levels @levels end |
#release_node ⇒ Object
Returns the value of attribute release_node.
3 4 5 |
# File 'lib/scruby/audio/env.rb', line 3 def release_node @release_node end |
#times ⇒ Object
Returns the value of attribute times.
3 4 5 |
# File 'lib/scruby/audio/env.rb', line 3 def times @times end |
Class Method Details
.adsr(attackTime = 0.01, decayTime = 0.3, sustainLevel = 0.5, releaseTime = 1.0, peakLevel = 1.0, curve = -4.0,, bias = 0.0) ⇒ Object
53 54 55 |
# File 'lib/scruby/audio/env.rb', line 53 def adsr( attackTime=0.01, decayTime=0.3, sustainLevel=0.5, releaseTime=1.0, peakLevel=1.0, curve = -4.0, bias = 0.0 ) new( [0, peakLevel, peakLevel * sustainLevel, 0].collect{ |e| e + bias }, [attackTime, decayTime, releaseTime], curve, 2 ) end |
.asr(attackTime = 0.01, sustainLevel = 1.0, releaseTime = 1.0, curve = -4.0 )) ⇒ Object
57 58 59 |
# File 'lib/scruby/audio/env.rb', line 57 def asr( attackTime=0.01, sustainLevel=1.0, releaseTime=1.0, curve = -4.0 ) new( [0, sustainLevel, 0], [attackTime, releaseTime], curve, 1 ) end |
.cutoff(releaseTime = 0.1, level = 1.0, curve = :lin) ⇒ Object
45 46 47 |
# File 'lib/scruby/audio/env.rb', line 45 def cutoff( releaseTime = 0.1, level = 1.0, curve = :lin ) new( [level, 0], [releaseTime], curve, 0 ) end |
.dadsr(delayTime = 0.1, attackTime = 0.01, decayTime = 0.3, sustainLevel = 0.5, releaseTime = 1.0, peakLevel = 1.0, curve = -4.0,, bias = 0.0) ⇒ Object
49 50 51 |
# File 'lib/scruby/audio/env.rb', line 49 def dadsr( delayTime=0.1, attackTime=0.01, decayTime=0.3, sustainLevel=0.5, releaseTime=1.0, peakLevel=1.0, curve = -4.0, bias = 0.0 ) new( [0, 0, peakLevel, peakLevel * sustainLevel, 0].collect{ |e| e + bias }, [delayTime, attackTime, decayTime, releaseTime], curve, 3 ) end |
.linen(attackTime = 0.01, sustainTime = 1.0, releaseTime = 1.0, level = 1.0, curve = :lin) ⇒ Object
41 42 43 |
# File 'lib/scruby/audio/env.rb', line 41 def linen( attackTime=0.01, sustainTime=1.0, releaseTime=1.0, level=1.0, curve = :lin ) new [0, level, level, 0], [attackTime, sustainTime, releaseTime], curve end |
.perc(attackTime = 0.01, releaseTime = 1.0, level = 1.0, curve = -4.0 )) ⇒ Object
37 38 39 |
# File 'lib/scruby/audio/env.rb', line 37 def perc( attackTime=0.01, releaseTime=1.0, level=1.0, curve = -4.0 ) new( [0, level, 0], [attackTime, releaseTime], curve ) end |
.sine(dur = 1.0, level = 1.0) ⇒ Object
32 33 34 35 |
# File 'lib/scruby/audio/env.rb', line 32 def sine(dur = 1.0, level = 1.0) dur = (dur * 0.5) new( [0, level, 0], [dur, dur], :sine) end |
.triangle(dur = 1.0, level = 1.0) ⇒ Object
fixed duration envelopes
27 28 29 30 |
# File 'lib/scruby/audio/env.rb', line 27 def triangle(dur = 1.0, level = 1.0) dur = (dur * 0.5) new( [0, level, 0], [dur, dur] ) end |
Instance Method Details
#collect_constants ⇒ Object
:nodoc:
93 94 |
# File 'lib/scruby/audio/env.rb', line 93 def collect_constants #:nodoc: end |
#curve_values ⇒ Object
75 76 77 78 79 |
# File 'lib/scruby/audio/env.rb', line 75 def curve_values curves.collect do |curve| curve.valid_ugen_input? ? curve : 0 end end |
#loop_node ⇒ Object
85 86 87 |
# File 'lib/scruby/audio/env.rb', line 85 def loop_node @loop_node ||= -99 end |
#shape_numbers ⇒ Object
69 70 71 72 73 |
# File 'lib/scruby/audio/env.rb', line 69 def shape_numbers curves.collect do |curve| curve.valid_ugen_input? ? 5 : SHAPE_NAMES[curve] end end |
#to_array ⇒ Object
64 65 66 67 |
# File 'lib/scruby/audio/env.rb', line 64 def to_array *contents = levels[0], times.size, release_node, loop_node contents + levels[1..-1].wrap_and_zip( times, shape_numbers, curve_values ).flatten end |
#valid_ugen_input? ⇒ Boolean
returns true
89 90 91 |
# File 'lib/scruby/audio/env.rb', line 89 def valid_ugen_input? #returns true true end |