Module: Ruck::MultiChannelTarget

Included in:
Generators::WavOut
Defined in:
lib/ruck/ugen/general.rb

Instance Method Summary collapse

Instance Method Details

#add_source(ugen) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/ruck/ugen/general.rb', line 59

def add_source(ugen)
  if ugen.is_a? Array
    ugen.each { |u| add_source u }
    return self
  end
  
  if ugen.out_channels.length == 1
    @in_channels.each { |chan| chan.add_source ugen.out(0) }
  else
    1.upto([ugen.out_channels.length, @in_channels.length].min) do |i|
      @in_channels[i-1].add_source ugen.out(i-1)
    end
  end
  
  self
end

#in(chan) ⇒ Object



96
97
98
# File 'lib/ruck/ugen/general.rb', line 96

def in(chan)
  @in_channels[chan]
end

#in_channelsObject



92
93
94
# File 'lib/ruck/ugen/general.rb', line 92

def in_channels
  @in_channels
end

#remove_source(ugen) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/ruck/ugen/general.rb', line 76

def remove_source(ugen)
  if ugen.is_a? Array
    ugen.each { |u| remove_source u }
    return
  end
  
  # remove all outputs of ugen from all inputs of self
  @in_channels.each do |in_chan|
    ugen.out_channels.each do |out_chan|
      in_chan.remove_source out_chan
    end
  end
  
  self
end