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

70 lines
1.5 KiB
Text
Raw Normal View History

2022-08-24 13:53:18 +00:00
#lang scribble/manual
@(require (for-label racket))
@title{softVol_}
set a nodeproxy's vol conditionally@section{categories}
Libraries>JITLib>GUI
@section{related}
Reference/softSet, Reference/softPut
@section{description}
Extension method to link::Classes/NodeProxy:: to set vol conditionally.
@section{method}
softVol
setter.
@section{argument}
val
the volume value to set to
@section{argument}
within
the normalized range within which the set is accepted
@section{argument}
pause
a flag whether to pause the nodeproxy when volume is 0.
waits for 0.2 seconds for volume to go down first.
@section{argument}
lastVal
the previous value that the controller has set - can be
@section{argument}
spec
a link::Classes/ControlSpec:: can be passed in. if nil,
@racketblock[\amp.asSpec:: is used.
]
@section{Examples}
@racketblock[
Ndef(\test, { |freq=200| Splay.ar(SinOsc.ar(freq * Array.rand(12, 0.95, 1.05))) });
Ndef(\test).play(vol: 0.1);
// example of softSet, softSet which knows lastVal,
// softVol_ and softVol_ which knows lastVol:
(
w = Window("softVol", Rect(500, 200, 400, 240)).front;
w.view.addFlowLayout;
NdefGui(Ndef(\test), 2, w);
// same for volume - not too safe
EZSlider(w, 340@30, \softVol, \amp, { |sl|
Ndef(\test).softVol_(sl.value, 0.05)
});
// safer
EZSlider(w, 340@30, \knowLastV, \amp, Routine { |sl|
var newVal, lastVal;
loop {
newVal = sl.value;
Ndef(\test).softVol_(sl.value, 0.05, lastVal: lastVal);
lastVal = newVal;
\dummy.yield;
}
});
)
::
]