A UGen to measure a signal's peak amplitude. Technically, this UGen works like
RunningMax after the absolute value of the input signal is taken.
The UGen keeps an internal state that reflects the maximum absolute input value
observed. When a trigger occurs at the reset input, it first copies the current
maximum value to its output and then (quasi-simultaneously) resets its internal
state to the current absolute input value. This way, the peak value seen from
the outside at trigger time is the correct peak value up to that moment. See the
'illustrate timing' example to understand this timing.
Examples
// illustrate timing
play {
val i = Impulse.ar(0)
// first impulse after 100msval t1 = DelayN.ar(i * 1.0 , 0.100, 0.100)
// one sample laterval t2 = Delay1.ar(t1) * 0.5// another sample laterval t3 = Delay1.ar(t2)
val p = Peak.ar(t1 + t2, t2)
// at t1, peak has already seen t1
p.poll(t1, "t1")
// at t2, peak still reports 1.0, while internally resetting
p.poll(t2, "t2")
// at t3, we observe 0.5, therefore peak did reset at t2
p.poll(t3, "t3")
()
}
A UGen to measure a signal's peak amplitude. Technically, this UGen works like
RunningMax
after the absolute value of the input signal is taken.The UGen keeps an internal state that reflects the maximum absolute input value observed. When a trigger occurs at the reset input, it first copies the current maximum value to its output and then (quasi-simultaneously) resets its internal state to the current absolute input value. This way, the peak value seen from the outside at trigger time is the correct peak value up to that moment. See the 'illustrate timing' example to understand this timing.
Examples
Amplitude
PeakFollower
RunningSum
RunningMax
RunningMin