class Negasonic::Instrument
Attributes
all[RW]
input_node[R]
name[R]
Public Class Methods
add(name)
click to toggle source
# File lib/negasonic/instrument.rb, line 17 def add(name) new(name).tap do |instrument| @all << instrument end end
find(name)
click to toggle source
# File lib/negasonic/instrument.rb, line 11 def find(name) @all.find do |instrument| instrument.name == name end end
new(name)
click to toggle source
# File lib/negasonic/instrument.rb, line 26 def initialize(name) @name = name @nodes = [] @effects_set = EffectsSet.new end
Public Instance Methods
connect_nodes(new_synth)
click to toggle source
# File lib/negasonic/instrument.rb, line 37 def connect_nodes(new_synth) new_nodes = [new_synth, @effects_set.nodes].flatten if @nodes != new_nodes @input_node = new_synth @input_node.chain(*@effects_set.nodes) old_nodes = @nodes @nodes = new_nodes Tone::Transport.schedule_after(1) do |time| old_nodes.each(&:dispose) end end end
effects(&block)
click to toggle source
# File lib/negasonic/instrument.rb, line 32 def effects(&block) @effects_set.reload @effects_set.instance_eval(&block) end