Module: Scruby::Audio::Ugens
- Defined in:
- lib/scruby/audio/ugens/ugen.rb,
lib/scruby/audio/ugens/ugens.rb,
lib/scruby/audio/ugens/in_out.rb,
lib/scruby/audio/ugens/env_gen.rb,
lib/scruby/audio/ugens/multi_out_ugens.rb,
lib/scruby/audio/ugens/operation_ugens.rb,
lib/scruby/audio/ugens/ugen_operations.rb
Defined Under Namespace
Modules: OperationUgens, UgenOperations Classes: Control, EnvGen, In, MultiOutUgen, Out, OutputProxy, Ugen
Class Method Summary collapse
Class Method Details
.define_ugen(name, rates) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/scruby/audio/ugens/ugens.rb', line 7 def self.define_ugen(name, rates) rate_name = {:audio => :ar, :control => :kr, :scalar => :ir, :demand => :new} rates.delete_if{ |key, value| key == :demand } #I don't know what to do with these methods = rates.collect{ |r| ":#{rate_name[r.first]}" }.join(', ') klass = "class #{name} < Ugen\nclass << self\n" + rates.collect do |r| new_args = ( [r.first] + r.last.collect{|a|a.first} ).join(', ') args = (r.last + [[:mul,1],[:add,0]]).collect{ |a| a.compact.join(' = ')}.join(', ') " def #{rate_name[r.first]}(#{args})\n" + " new(:#{new_args}).muladd(mul, add)" + "\n end" end.join("\n") + "\nnamed_args_for #{methods}\nend\nend\n" self.class_eval klass end |