rsc3/doc-schelp/HelpSource/Reference/NodeEvent.schelp

76 lines
2.1 KiB
Text

title:: NodeEvent
categories:: Streams-Patterns-Events
related:: Classes/Event
summary:: synth- and group- like interface of Event
description::
The methods link::Classes/Event#-synth:: and link::Classes/Event#-group:: set the parent event of the receiver to specialized events that duplicate the functionality of link::Classes/Synth:: and link::Classes/Group:: objects. These objects follow the naming conventions of patterns (i.e., groups and addActions are integer ID's) and have the same stop/play/pause/resume interface as the EventStreamPlayers created by Pattern-play. So, they can be used interchangeably with patterns in control schemes and GUI's.
The following example creates a group with nodeID = 2 and plays a synth within it.
code::
g = (id: 2).group;
g.play;
a = (group: 2).synth;
a.play;
g.release;
g.stop;
::
subsection::Interface
method:: play
starts synth or group, returns this.delta
method:: stop
if ev[\hasGate] == true set gate to 0, otherwise frees the node
method:: pause
disables the node
method:: resume
reenables the node
method:: set ( key, value)
sets control identified by key to value
method:: split
returns an array of events, one for each synth or group specified by the receiver
method:: map (key, busID)
maps control to control bus
method:: before (nodeID)
moves to immediately before nodeID
method:: after (nodeID)
moves to immediately after nodeID
method:: headOf (nodeID)
moves to immediately to head of nodeID
method:: tailOf (nodeID)
moves to immediately to tail of nodeID
subsection:: Multi-channel expansion
With the exception of ~server, ~latency, and ~instrument any key in the event can have an array as a
value and the standard rules of multi-channel expansion will be followed.
Examples::
code::
// Here is a simple example of its use:
// define a multiple Group event
g = (id: [2,3,4,5,6], group: 0, addAction: 1).group;
g.play; // play it
// make a Synth event
b = ( freq: [500,510], group: [2,3]).synth;
b.play;
b.set(\freq,[1000,1006]);
g.release;
b.play;
h = g.split; // split into individual group events
c = b.split; // and synth events
c[0].set(\freq,700);
c[1].set(\freq,400);
h[0].stop;
h[1].stop;
g.stop;
::