rsc3/doc-schelp/HelpSource/Classes/PmonoArtic.scrbl

55 lines
1.8 KiB
Text
Raw Permalink Normal View History

2022-08-24 13:53:18 +00:00
#lang scribble/manual
@(require (for-label racket))
@title{PmonoArtic}
partly monophonic event stream@section{related}
Classes/Pbind, Classes/Pmono
@section{categories}
Streams-Patterns-Events>Patterns>Event
@section{description}
Like link::Classes/Pmono::, PmonoArtic plays one synth at a time (where successive events change the parameters of the existing synth node). PmonoArtic, however, allows events to re-articulate and supports staccato in the middle of a monophonic phrase.
If an event specifies a 'sustain' value shorter than the event delta, it means the synth should not sustain all the way through to the next event. In that case, the node will be released according to 'sustain' and the next event will start a new synth.
If sustain >= delta, the synth will play through and its parameters will change (just like link::Classes/Pmono::).
Since sustain is calculated as
@racketblock[~dur * ~legato::, this means ]
@racketblock[~legato < 1.0:: causes re-articulation while ]
@racketblock[~legato >= 1.0:: causes a slur.
]
@section{Examples}
@racketblock[
// This SynthDef has a harder attack than the default, illustrating rearticulation more clearly.
(
SynthDef(\sawpulse, { |out, freq = 440, gate = 0.5, plfofreq = 6, mw = 0, ffreq = 2000, rq = 0.3, freqlag = 0.05, amp = 1|
var sig, plfo, fcurve;
plfo = SinOsc.kr(plfofreq, mul:mw, add:1);
freq = Lag.kr(freq, freqlag) * plfo;
fcurve = EnvGen.kr(Env.adsr(0, 0.3, 0.1, 20), gate);
fcurve = (fcurve - 1).madd(0.7, 1) * ffreq;
sig = Mix.ar([Pulse.ar(freq, 0.9), Saw.ar(freq*1.007)]);
sig = RLPF.ar(sig, fcurve, rq)
* EnvGen.kr(Env.adsr(0.04, 0.2, 0.6, 0.1), gate, doneAction: Done.freeSelf)
* amp;
Out.ar(out, sig ! 2)
}).add;
)
p = PmonoArtic(\sawpulse, \dur, 0.2, \freq, Pwhite(1,8) * 100, \legato, Pwrand(#[0.5, 1.0], #[0.1, 0.9], inf) ).play;
p.stop;
::
]