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

102 lines
2.4 KiB
Text
Raw Normal View History

2022-08-24 13:53:18 +00:00
#lang scribble/manual
@(require (for-label racket))
@title{NodeEvent}
@section{categories}
Streams-Patterns-Events
@section{related}
Classes/Event
synth- and group- like interface of Event
@section{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.
@racketblock[
g = (id: 2).group;
g.play;
a = (group: 2).synth;
a.play;
g.release;
g.stop;
::
]
@section{subsection}
Interface
@section{method}
play
starts synth or group, returns this.delta
@section{method}
stop
if ev[\hasGate] == true set gate to 0, otherwise frees the node
@section{method}
pause
disables the node
@section{method}
resume
reenables the node
@section{method}
set ( key, value)
sets control identified by key to value
@section{method}
split
returns an array of events, one for each synth or group specified by the receiver
@section{method}
map (key, busID)
maps control to control bus
@section{method}
before (nodeID)
moves to immediately before nodeID
@section{method}
after (nodeID)
moves to immediately after nodeID
@section{method}
headOf (nodeID)
moves to immediately to head of nodeID
@section{method}
tailOf (nodeID)
moves to immediately to tail of nodeID
@section{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.
@section{Examples}
@racketblock[
// 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;
::
]