Class: Ruck::Generators::Delay

Inherits:
Object
  • Object
show all
Includes:
Source, Target, UGen
Defined in:
lib/ruck/ugen/general.rb

Instance Attribute Summary

Attributes included from UGen

#name

Instance Method Summary collapse

Methods included from Source

#<<, #>>, #last, #out, #out_channels

Methods included from Target

#add_source, #remove_source

Methods included from UGen

#to_s

Constructor Details

#initialize(attrs = {}) ⇒ Delay

Returns a new instance of Delay.



233
234
235
236
237
238
239
240
# File 'lib/ruck/ugen/general.rb', line 233

def initialize(attrs = {})
  require_attrs attrs, [:time]
  samples = attrs.delete(:time)
  parse_attrs attrs
  @ins = []
  @last = 0.0
  @queue = [0.0] * samples
end

Instance Method Details

#attr_namesObject



250
251
252
# File 'lib/ruck/ugen/general.rb', line 250

def attr_names
  [:time]
end

#next(now) ⇒ Object



242
243
244
245
246
247
248
# File 'lib/ruck/ugen/general.rb', line 242

def next(now)
  return @last if @now == now
  @now = now

  @queue << @ins.inject(0) { |samp, ugen| samp += ugen.next(now) } * gain
  @last = @queue.shift
end