80 lines
1.2 KiB
Racket
80 lines
1.2 KiB
Racket
#lang scribble/manual
|
|
@(require (for-label racket))
|
|
|
|
@title{RunningSum}
|
|
Running sum over n frames@section{categories}
|
|
UGens>Analysis, UGens>Maths
|
|
|
|
@section{description}
|
|
|
|
A running sum over a user specified number of samples, useful for running RMS power windowing.
|
|
|
|
@section{classmethods}
|
|
|
|
@section{method}
|
|
ar, kr
|
|
@section{argument}
|
|
in
|
|
Input signal
|
|
@section{argument}
|
|
numsamp
|
|
How many samples to take the running sum over (initialisation time only, not modulatable. default: 40)
|
|
|
|
@section{examples}
|
|
|
|
|
|
|
|
@racketblock[
|
|
// distorts of course - would need scaling
|
|
{ RunningSum.ar(SoundIn.ar) }.play
|
|
|
|
// Running Average over x samples
|
|
(
|
|
{
|
|
var x = 100;
|
|
RunningSum.ar(LFSaw.ar, x) * (x.reciprocal)
|
|
}.play
|
|
)
|
|
::
|
|
|
|
]
|
|
|
|
@racketblock[
|
|
// RMS Power
|
|
(
|
|
{
|
|
var input, numsamp;
|
|
|
|
input = LFSaw.ar;
|
|
numsamp = 30;
|
|
|
|
(RunningSum.ar(input.squared, numsamp) / numsamp).sqrt
|
|
}.play
|
|
)
|
|
::
|
|
|
|
]
|
|
|
|
@racketblock[
|
|
// shortcut in class
|
|
{ RunningSum.rms(SoundIn.ar) }.play
|
|
::
|
|
|
|
]
|
|
|
|
@racketblock[
|
|
// play around
|
|
(
|
|
{
|
|
var input, numsamp, power;
|
|
numsamp = 500;
|
|
input = SoundIn.ar;
|
|
power = MouseX.kr(0.1, 4);
|
|
|
|
(RunningSum.ar(input ** power, numsamp)/numsamp) ** (power.reciprocal)
|
|
}.play
|
|
)
|
|
::
|
|
]
|
|
|
|
|