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