class Musicality::SuperCollider::Node
Attributes
freed[R]
group[R]
id[R]
running[R]
server[R]
Public Class Methods
new(server, group)
click to toggle source
# File lib/musicality/performance/supercollider/node.rb, line 16 def initialize server, group raise ArgumentError unless (server.is_a?(Server) || server.nil?) raise ArgumentError unless (group.is_a?(Group) || group.nil?) @server, @group = server, group @id = Node.next_id @freed, @running = false, true @queue = [] end
next_id()
click to toggle source
# File lib/musicality/performance/supercollider/node.rb, line 5 def self.next_id @@next_id += 1 end
reset_id_counter()
click to toggle source
# File lib/musicality/performance/supercollider/node.rb, line 9 def self.reset_id_counter @@next_id = 999 end
Public Instance Methods
after(node)
click to toggle source
# File lib/musicality/performance/supercollider/node.rb, line 88 def after node @group = node.group send_msg(Message.new( '/n_after', @id, node.id)) end
before(node)
click to toggle source
def mapan end
# File lib/musicality/performance/supercollider/node.rb, line 83 def before node @group = node.group send_msg(Message.new( '/n_before', @id, node.id)) end
bundle_queue(time)
click to toggle source
# File lib/musicality/performance/supercollider/node.rb, line 33 def bundle_queue time Bundle.new(time, *@queue.shift(@queue.size)) end
fill(idx_or_name, value, n)
click to toggle source
# File lib/musicality/performance/supercollider/node.rb, line 67 def fill idx_or_name, value, n send_msg(OSC:Message.new('/n_fill', @id, idx_or_name, n, value)) end
free()
click to toggle source
def wait_for_msg expected_response_addr
@server.wait_for_msg(expected_response_addr)
end
# File lib/musicality/performance/supercollider/node.rb, line 45 def free @group, @running, freed = nil, false, true send_msg(Message.new('/n_free', id)) end
send_msg(msg)
click to toggle source
# File lib/musicality/performance/supercollider/node.rb, line 25 def send_msg msg if @server.nil? @queue.push msg else @server.send_msg(msg) end end
set(args = {})
click to toggle source
# File lib/musicality/performance/supercollider/node.rb, line 58 def set args = {} send_msg(Message.new('/n_set', @id, *args.to_a.flatten)) end
setn(args = {})
click to toggle source
# File lib/musicality/performance/supercollider/node.rb, line 62 def setn args = {} ary = args.map {|idx_or_name, vals| [ idx_or_name, vals.size, vals ]}.flatten send_msg(Message.new('/n_setn', @id, *ary)) end
start()
click to toggle source
# File lib/musicality/performance/supercollider/node.rb, line 50 def start run(true) end
stop()
click to toggle source
# File lib/musicality/performance/supercollider/node.rb, line 54 def stop run(false) end
trace()
click to toggle source
def query
notifying = @server.notifying unless notifying @server.start_notification end send_msg(OSC::Message.new('/n_query', @id)) info = @server.await_notification '/n_info' if notifying @server.stop_notification end info
end
# File lib/musicality/performance/supercollider/node.rb, line 106 def trace send_msg(Message.new( '/n_trace', @id)) end
Private Instance Methods
run(flag)
click to toggle source
def order end
# File lib/musicality/performance/supercollider/node.rb, line 115 def run flag @running = flag send_msg(Message.new( '/n_run', @id, flag ? 1 : 0)) end