Class: Musicality::SuperCollider::Node
- Inherits:
-
Object
- Object
- Musicality::SuperCollider::Node
- Defined in:
- lib/musicality/performance/supercollider/node.rb
Instance Attribute Summary collapse
-
#freed ⇒ Object
readonly
Returns the value of attribute freed.
-
#group ⇒ Object
readonly
Returns the value of attribute group.
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#running ⇒ Object
readonly
Returns the value of attribute running.
-
#server ⇒ Object
readonly
Returns the value of attribute server.
Class Method Summary collapse
Instance Method Summary collapse
- #after(node) ⇒ Object
-
#before(node) ⇒ Object
def mapan end.
- #bundle_queue(time) ⇒ Object
- #fill(idx_or_name, value, n) ⇒ Object
-
#free ⇒ Object
def wait_for_msg expected_response_addr @server.wait_for_msg(expected_response_addr) end.
-
#initialize(server, group) ⇒ Node
constructor
A new instance of Node.
- #send_msg(msg) ⇒ Object
- #set(args = {}) ⇒ Object
- #setn(args = {}) ⇒ Object
- #start ⇒ Object
- #stop ⇒ Object
-
#trace ⇒ Object
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.
Constructor Details
#initialize(server, group) ⇒ Node
Returns a new instance of Node.
16 17 18 19 20 21 22 23 |
# 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 |
Instance Attribute Details
#freed ⇒ Object (readonly)
Returns the value of attribute freed.
14 15 16 |
# File 'lib/musicality/performance/supercollider/node.rb', line 14 def freed @freed end |
#group ⇒ Object (readonly)
Returns the value of attribute group.
14 15 16 |
# File 'lib/musicality/performance/supercollider/node.rb', line 14 def group @group end |
#id ⇒ Object (readonly)
Returns the value of attribute id.
14 15 16 |
# File 'lib/musicality/performance/supercollider/node.rb', line 14 def id @id end |
#running ⇒ Object (readonly)
Returns the value of attribute running.
14 15 16 |
# File 'lib/musicality/performance/supercollider/node.rb', line 14 def running @running end |
#server ⇒ Object (readonly)
Returns the value of attribute server.
14 15 16 |
# File 'lib/musicality/performance/supercollider/node.rb', line 14 def server @server end |
Class Method Details
.next_id ⇒ Object
5 6 7 |
# File 'lib/musicality/performance/supercollider/node.rb', line 5 def self.next_id @@next_id += 1 end |
.reset_id_counter ⇒ Object
9 10 11 |
# File 'lib/musicality/performance/supercollider/node.rb', line 9 def self.reset_id_counter @@next_id = 999 end |
Instance Method Details
#after(node) ⇒ Object
88 89 90 91 |
# 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) ⇒ Object
def mapan end
83 84 85 86 |
# 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) ⇒ Object
33 34 35 |
# 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) ⇒ Object
67 68 69 |
# 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 ⇒ Object
def wait_for_msg expected_response_addr
@server.wait_for_msg(expected_response_addr)
end
45 46 47 48 |
# 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) ⇒ Object
25 26 27 28 29 30 31 |
# 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 = {}) ⇒ Object
58 59 60 |
# 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 = {}) ⇒ Object
62 63 64 65 |
# 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 ⇒ Object
50 51 52 |
# File 'lib/musicality/performance/supercollider/node.rb', line 50 def start run(true) end |
#stop ⇒ Object
54 55 56 |
# File 'lib/musicality/performance/supercollider/node.rb', line 54 def stop run(false) end |
#trace ⇒ Object
def query
= @server.
unless
@server.start_notification
end
send_msg(OSC::Message.new('/n_query', @id))
info = @server.await_notification '/n_info'
if
@server.stop_notification
end
info
end
106 107 108 |
# File 'lib/musicality/performance/supercollider/node.rb', line 106 def trace send_msg(Message.new( '/n_trace', @id)) end |