From 48242a9c29fb0c078c70e5824e6d83c40fbcce1b Mon Sep 17 00:00:00 2001 From: Macario Date: Sat, 25 Jul 2009 18:35:47 -0500 Subject: [PATCH] Ugen with multichannel inputs returns a DelegatorArray @SHDH mx --- lib/scruby.rb | 1 + lib/scruby/audio/ugens/ugen.rb | 3 +-- spec/audio/ugen_spec.rb | 6 ++++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/scruby.rb b/lib/scruby.rb index f2e627f..9d8467c 100644 --- a/lib/scruby.rb +++ b/lib/scruby.rb @@ -38,6 +38,7 @@ module Scruby require "scruby/core_ext/string" require "scruby/core_ext/symbol" require "scruby/core_ext/typed_array" +require "scruby/core_ext/delegator_array" require "scruby/audio/ugens/ugen" require "scruby/audio/ugens/ugen_operations" diff --git a/lib/scruby/audio/ugens/ugen.rb b/lib/scruby/audio/ugens/ugen.rb index 56cf2b7..c8f9de5 100644 --- a/lib/scruby/audio/ugens/ugen.rb +++ b/lib/scruby/audio/ugens/ugen.rb @@ -120,7 +120,7 @@ def new rate, *inputs return instantiate( rate, *inputs ) unless size > 1 #return an Ugen if no array was passed as an input inputs = inputs.map{ |input| input.instance_of?( Array ) ? input.wrap_to( size ) : Array.new( size, input ) }.transpose - inputs.map{ |new_inputs| new rate, *new_inputs } + DelegatorArray.new inputs.map{ |new_inputs| new rate, *new_inputs } end @@ -142,7 +142,6 @@ def params {} end - private def instantiate *args obj = allocate obj.__send__ :initialize, *args diff --git a/spec/audio/ugen_spec.rb b/spec/audio/ugen_spec.rb index 2a9e5a4..6d440b0 100644 --- a/spec/audio/ugen_spec.rb +++ b/spec/audio/ugen_spec.rb @@ -10,6 +10,8 @@ require "scruby/core_ext/string" require "scruby/core_ext/fixnum" require "scruby/core_ext/array" +require "scruby/core_ext/delegator_array" + include Scruby include Audio @@ -208,7 +210,7 @@ def as_ugen_input; 0; end end it "should return an array of Ugens if an array as one arg is passed on instantiation" do - Ugen.new( :audio, 1, [2, 3] ).should be_instance_of(Array) + Ugen.new( :audio, 1, [2, 3] ).should be_instance_of(DelegatorArray) end it do @@ -252,7 +254,7 @@ def as_ugen_input; 0; end ugens.should have(4).ugens end - it "should return an array of ugens with correct inputs" do + it "should return an delegator array of ugens with correct inputs" do ugens = Ugen.new( :audio, 100, [210, 220, 230, 240] ) ugens.zip( [@i_1, @i_2, @i_3, @i_4] ).each do |e| e.first.inputs.should eql( e.last )