pv

class FFT(*, calculation_rate: ~supriya.enums.CalculationRate | ~typing.SupportsInt | str | None, buffer_id: ~typing.SupportsFloat | ~supriya.ugens.core.UGenScalar = <supriya.typing.Default object>, source: ~typing.SupportsFloat | ~supriya.ugens.core.UGenScalar, hop: ~typing.SupportsFloat | ~supriya.ugens.core.UGenScalar = 0.5, window_type: ~typing.SupportsFloat | ~supriya.ugens.core.UGenScalar = 0, active: ~typing.SupportsFloat | ~supriya.ugens.core.UGenScalar = 1, window_size: ~typing.SupportsFloat | ~supriya.ugens.core.UGenScalar = 0, **kwargs)

Bases: PV_ChainUGen

A fast Fourier transform.

>>> buffer_id = supriya.ugens.LocalBuf.ir(frame_count=2048)
>>> source = supriya.ugens.In.ar(bus=0)
>>> fft = supriya.ugens.FFT.kr(
...     active=1,
...     buffer_id=buffer_id,
...     hop=0.5,
...     source=source,
...     window_size=0,
...     window_type=0,
... )
>>> fft
<FFT.kr()[0]>
classmethod kr(*, buffer_id: ~typing.SupportsFloat | ~supriya.ugens.core.UGenOperable | ~supriya.ugens.core.UGenSerializable | ~typing.Sequence[~typing.SupportsFloat | ~supriya.ugens.core.UGenOperable | ~supriya.ugens.core.UGenSerializable | ~typing.Sequence[UGenRecursiveInput]] = <supriya.typing.Default object>, source: ~typing.SupportsFloat | ~supriya.ugens.core.UGenOperable | ~supriya.ugens.core.UGenSerializable | ~typing.Sequence[~typing.SupportsFloat | ~supriya.ugens.core.UGenOperable | ~supriya.ugens.core.UGenSerializable | ~typing.Sequence[UGenRecursiveInput]], hop: ~typing.SupportsFloat | ~supriya.ugens.core.UGenOperable | ~supriya.ugens.core.UGenSerializable | ~typing.Sequence[~typing.SupportsFloat | ~supriya.ugens.core.UGenOperable | ~supriya.ugens.core.UGenSerializable | ~typing.Sequence[UGenRecursiveInput]] = 0.5, window_type: ~typing.SupportsFloat | ~supriya.ugens.core.UGenOperable | ~supriya.ugens.core.UGenSerializable | ~typing.Sequence[~typing.SupportsFloat | ~supriya.ugens.core.UGenOperable | ~supriya.ugens.core.UGenSerializable | ~typing.Sequence[UGenRecursiveInput]] = 0, active: ~typing.SupportsFloat | ~supriya.ugens.core.UGenOperable | ~supriya.ugens.core.UGenSerializable | ~typing.Sequence[~typing.SupportsFloat | ~supriya.ugens.core.UGenOperable | ~supriya.ugens.core.UGenSerializable | ~typing.Sequence[UGenRecursiveInput]] = 1, window_size: ~typing.SupportsFloat | ~supriya.ugens.core.UGenOperable | ~supriya.ugens.core.UGenSerializable | ~typing.Sequence[~typing.SupportsFloat | ~supriya.ugens.core.UGenOperable | ~supriya.ugens.core.UGenSerializable | ~typing.Sequence[UGenRecursiveInput]] = 0) UGenOperable
property active : UGenScalar
property buffer_id : UGenScalar
property fft_size : UGenOperable

Gets FFT size as UGen input.

Returns ugen input.

property hop : UGenScalar
property source : UGenScalar
property window_size : UGenScalar
property window_type : UGenScalar
class IFFT(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, window_type: SupportsFloat | UGenScalar = 0, window_size: SupportsFloat | UGenScalar = 0, **kwargs)

Bases: UGen

An inverse fast Fourier transform.

>>> pv_chain = supriya.ugens.LocalBuf.ir(frame_count=2048)
>>> ifft = supriya.ugens.IFFT.ar(
...     pv_chain=pv_chain,
...     window_size=0,
...     window_type=0,
... )
>>> ifft
<IFFT.ar()[0]>
classmethod ar(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], window_type: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0, window_size: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0) UGenOperable
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], window_type: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0, window_size: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0) UGenOperable
property pv_chain : UGenScalar
property window_size : UGenScalar
property window_type : UGenScalar
class PV_Add(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain_a: SupportsFloat | UGenScalar, pv_chain_b: SupportsFloat | UGenScalar, **kwargs)

Bases: PV_ChainUGen

Complex addition.

>>> pv_chain_a = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_chain_b = supriya.ugens.FFT.kr(
...     source=supriya.ugens.LFSaw.ar(),
... )
>>> pv_add = supriya.ugens.PV_Add.kr(
...     pv_chain_a=pv_chain_a,
...     pv_chain_b=pv_chain_b,
... )
>>> pv_add
<PV_Add.kr()[0]>
classmethod kr(*, pv_chain_a: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], pv_chain_b: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]]) UGenOperable
property pv_chain_a : UGenScalar
property pv_chain_b : UGenScalar
class PV_BinScramble(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, wipe: SupportsFloat | UGenScalar = 0, width: SupportsFloat | UGenScalar = 0.2, trigger: SupportsFloat | UGenScalar = 0, **kwargs)

Bases: PV_ChainUGen

Scrambles bins.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_bin_scramble = supriya.ugens.PV_BinScramble.kr(
...     pv_chain=pv_chain,
...     trigger=0,
...     width=0.2,
...     wipe=0,
... )
>>> pv_bin_scramble
<PV_BinScramble.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], wipe: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0, width: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0.2, trigger: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0) UGenOperable
property pv_chain : UGenScalar
property trigger : UGenScalar
property width : UGenScalar
property wipe : UGenScalar
class PV_BinShift(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, stretch: SupportsFloat | UGenScalar = 1.0, shift: SupportsFloat | UGenScalar = 0.0, interpolate: SupportsFloat | UGenScalar = 0, **kwargs)

Bases: PV_ChainUGen

Shifts and stretches bin positions.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_bin_shift = supriya.ugens.PV_BinShift.kr(
...     pv_chain=pv_chain,
...     interpolate=0,
...     shift=0,
...     stretch=1,
... )
>>> pv_bin_shift
<PV_BinShift.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], stretch: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 1.0, shift: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0.0, interpolate: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0) UGenOperable
property interpolate : UGenScalar
property pv_chain : UGenScalar
property shift : UGenScalar
property stretch : UGenScalar
class PV_BinWipe(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain_a: SupportsFloat | UGenScalar, pv_chain_b: SupportsFloat | UGenScalar, wipe: SupportsFloat | UGenScalar = 0, **kwargs)

Bases: PV_ChainUGen

Copies low bins from one input and the high bins of the other.

>>> pv_chain_a = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_chain_b = supriya.ugens.FFT.kr(
...     source=supriya.ugens.LFSaw.ar(),
... )
>>> pv_bin_wipe = supriya.ugens.PV_BinWipe.kr(
...     pv_chain_a=pv_chain_a,
...     pv_chain_b=pv_chain_b,
...     wipe=0,
... )
>>> pv_bin_wipe
<PV_BinWipe.kr()[0]>
classmethod kr(*, pv_chain_a: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], pv_chain_b: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], wipe: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0) UGenOperable
property pv_chain_a : UGenScalar
property pv_chain_b : UGenScalar
property wipe : UGenScalar
class PV_BrickWall(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, wipe: SupportsFloat | UGenScalar = 0, **kwargs)

Bases: PV_ChainUGen

Zeros bins.

  • If wipe == 0 then there is no effect.

  • If wipe > 0 then it acts like a high pass filter, clearing bins from the bottom up.

  • If wipe < 0 then it acts like a low pass filter, clearing bins from the top down.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_brick_wall = supriya.ugens.PV_BrickWall.kr(
...     pv_chain=pv_chain,
...     wipe=0,
... )
>>> pv_brick_wall
<PV_BrickWall.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], wipe: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0) UGenOperable
property pv_chain : UGenScalar
property wipe : UGenScalar
class PV_ChainUGen(*, calculation_rate: CalculationRate | SupportsInt | str | None, **kwargs)

Bases: UGen

Abstract base class for all phase-vocoder-chain unit generators.

property fft_size : UGenOperable

Gets FFT size as UGen input.

Returns ugen input.

class PV_ConformalMap(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, areal: SupportsFloat | UGenScalar = 0, aimag: SupportsFloat | UGenScalar = 0, **kwargs)

Bases: PV_ChainUGen

Complex plane attack.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_conformal_map = supriya.ugens.PV_ConformalMap.kr(
...     aimag=0,
...     areal=0,
...     pv_chain=pv_chain,
... )
>>> pv_conformal_map
<PV_ConformalMap.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], areal: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0, aimag: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0) UGenOperable
property aimag : UGenScalar
property areal : UGenScalar
property pv_chain : UGenScalar
class PV_Conj(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, **kwargs)

Bases: PV_ChainUGen

Complex conjugate.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_conj = supriya.ugens.PV_Conj.kr(
...     pv_chain=pv_chain,
... )
>>> pv_conj
<PV_Conj.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]]) UGenOperable
property pv_chain : UGenScalar
class PV_Copy(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain_a: SupportsFloat | UGenScalar, pv_chain_b: SupportsFloat | UGenScalar, **kwargs)

Bases: PV_ChainUGen

Copies an FFT buffer.

>>> pv_chain_a = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_chain_b = supriya.ugens.FFT.kr(
...     source=supriya.ugens.LFSaw.ar(),
... )
>>> pv_copy = supriya.ugens.PV_Copy.kr(
...     pv_chain_a=pv_chain_a,
...     pv_chain_b=pv_chain_b,
... )
>>> pv_copy
<PV_Copy.kr()[0]>
classmethod kr(*, pv_chain_a: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], pv_chain_b: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]]) UGenOperable
property pv_chain_a : UGenScalar
property pv_chain_b : UGenScalar
class PV_CopyPhase(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain_a: SupportsFloat | UGenScalar, pv_chain_b: SupportsFloat | UGenScalar, **kwargs)

Bases: PV_ChainUGen

Copies magnitudes and phases.

>>> pv_chain_a = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_chain_b = supriya.ugens.FFT.kr(
...     source=supriya.ugens.LFSaw.ar(),
... )
>>> pv_copy_phase = supriya.ugens.PV_CopyPhase.kr(
...     pv_chain_a=pv_chain_a,
...     pv_chain_b=pv_chain_b,
... )
>>> pv_copy_phase
<PV_CopyPhase.kr()[0]>
classmethod kr(*, pv_chain_a: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], pv_chain_b: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]]) UGenOperable
property pv_chain_a : UGenScalar
property pv_chain_b : UGenScalar
class PV_Diffuser(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, trigger: SupportsFloat | UGenScalar = 0, **kwargs)

Bases: PV_ChainUGen

Shifts phases randomly.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_diffuser = supriya.ugens.PV_Diffuser.kr(
...     pv_chain=pv_chain,
...     trigger=0,
... )
>>> pv_diffuser
<PV_Diffuser.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], trigger: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0) UGenOperable
property pv_chain : UGenScalar
property trigger : UGenScalar
class PV_Div(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain_a: SupportsFloat | UGenScalar, pv_chain_b: SupportsFloat | UGenScalar, **kwargs)

Bases: PV_ChainUGen

Complex division.

>>> pv_chain_a = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_chain_b = supriya.ugens.FFT.kr(
...     source=supriya.ugens.LFSaw.ar(),
... )
>>> pv_div = supriya.ugens.PV_Div.kr(
...     pv_chain_a=pv_chain_a,
...     pv_chain_b=pv_chain_b,
... )
>>> pv_div
<PV_Div.kr()[0]>
classmethod kr(*, pv_chain_a: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], pv_chain_b: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]]) UGenOperable
property pv_chain_a : UGenScalar
property pv_chain_b : UGenScalar
class PV_HainsworthFoote(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, proph: SupportsFloat | UGenScalar = 0, propf: SupportsFloat | UGenScalar = 0, threshold: SupportsFloat | UGenScalar = 1, waittime: SupportsFloat | UGenScalar = 0.04, **kwargs)

Bases: PV_ChainUGen

A FFT onset detector.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_hainsworth_foote = supriya.ugens.PV_HainsworthFoote.kr(
...     pv_chain=pv_chain,
...     propf=0,
...     proph=0,
...     threshold=1,
...     waittime=0.04,
... )
>>> pv_hainsworth_foote
<PV_HainsworthFoote.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], proph: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0, propf: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0, threshold: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 1, waittime: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0.04) UGenOperable
property propf : UGenScalar
property proph : UGenScalar
property pv_chain : UGenScalar
property threshold : UGenScalar
property waittime : UGenScalar
class PV_JensenAndersen(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, propsc: SupportsFloat | UGenScalar = 0.25, prophfe: SupportsFloat | UGenScalar = 0.25, prophfc: SupportsFloat | UGenScalar = 0.25, propsf: SupportsFloat | UGenScalar = 0.25, threshold: SupportsFloat | UGenScalar = 1, waittime: SupportsFloat | UGenScalar = 0.04, **kwargs)

Bases: PV_ChainUGen

A FFT feature detector for onset detection.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_jensen_andersen = supriya.ugens.PV_JensenAndersen.kr(
...     pv_chain=pv_chain,
...     prophfc=0.25,
...     prophfe=0.25,
...     propsc=0.25,
...     propsf=0.25,
...     threshold=1,
...     waittime=0.04,
... )
>>> pv_jensen_andersen
<PV_JensenAndersen.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], propsc: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0.25, prophfe: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0.25, prophfc: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0.25, propsf: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0.25, threshold: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 1, waittime: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0.04) UGenOperable
property prophfc : UGenScalar
property prophfe : UGenScalar
property propsc : UGenScalar
property propsf : UGenScalar
property pv_chain : UGenScalar
property threshold : UGenScalar
property waittime : UGenScalar
class PV_LocalMax(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, threshold: SupportsFloat | UGenScalar = 0, **kwargs)

Bases: PV_ChainUGen

Passes bins which are local maxima.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_local_max = supriya.ugens.PV_LocalMax.kr(
...     pv_chain=pv_chain,
...     threshold=0,
... )
>>> pv_local_max
<PV_LocalMax.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], threshold: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0) UGenOperable
property pv_chain : UGenScalar
property threshold : UGenScalar
class PV_MagAbove(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, threshold: SupportsFloat | UGenScalar = 0, **kwargs)

Bases: PV_ChainUGen

Passes magnitudes above threshold.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_mag_above = supriya.ugens.PV_MagAbove.kr(
...     pv_chain=pv_chain,
...     threshold=0,
... )
>>> pv_mag_above
<PV_MagAbove.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], threshold: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0) UGenOperable
property pv_chain : UGenScalar
property threshold : UGenScalar
class PV_MagBelow(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, threshold: SupportsFloat | UGenScalar = 0, **kwargs)

Bases: PV_ChainUGen

Passes magnitudes below threshold.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_mag_below = supriya.ugens.PV_MagBelow.kr(
...     pv_chain=pv_chain,
...     threshold=0,
... )
>>> pv_mag_below
<PV_MagBelow.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], threshold: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0) UGenOperable
property pv_chain : UGenScalar
property threshold : UGenScalar
class PV_MagClip(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, threshold: SupportsFloat | UGenScalar = 0, **kwargs)

Bases: PV_ChainUGen

Clips magnitudes.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_mag_clip = supriya.ugens.PV_MagClip.kr(
...     pv_chain=pv_chain,
...     threshold=0,
... )
>>> pv_mag_clip
<PV_MagClip.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], threshold: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0) UGenOperable
property pv_chain : UGenScalar
property threshold : UGenScalar
class PV_MagDiv(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain_a: SupportsFloat | UGenScalar, pv_chain_b: SupportsFloat | UGenScalar, zeroed: SupportsFloat | UGenScalar = 0.0001, **kwargs)

Bases: PV_ChainUGen

Divides magnitudes.

>>> pv_chain_a = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_chain_b = supriya.ugens.FFT.kr(
...     source=supriya.ugens.LFSaw.ar(),
... )
>>> pv_mag_div = supriya.ugens.PV_MagDiv.kr(
...     pv_chain_a=pv_chain_a,
...     pv_chain_b=pv_chain_b,
...     zeroed=0.0001,
... )
>>> pv_mag_div
<PV_MagDiv.kr()[0]>
classmethod kr(*, pv_chain_a: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], pv_chain_b: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], zeroed: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0.0001) UGenOperable
property pv_chain_a : UGenScalar
property pv_chain_b : UGenScalar
property zeroed : UGenScalar
class PV_MagFreeze(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, freeze: SupportsFloat | UGenScalar = 0, **kwargs)

Bases: PV_ChainUGen

Freezes magnitudes.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_mag_freeze = supriya.ugens.PV_MagFreeze.kr(
...     pv_chain=pv_chain,
...     freeze=0,
... )
>>> pv_mag_freeze
<PV_MagFreeze.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], freeze: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0) UGenOperable
property freeze : UGenScalar
property pv_chain : UGenScalar
class PV_MagMul(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain_a: SupportsFloat | UGenScalar, pv_chain_b: SupportsFloat | UGenScalar, **kwargs)

Bases: PV_ChainUGen

Multiplies FFT magnitudes.

>>> pv_chain_a = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_chain_b = supriya.ugens.FFT.kr(
...     source=supriya.ugens.LFSaw.ar(),
... )
>>> pv_mag_mul = supriya.ugens.PV_MagMul.kr(
...     pv_chain_a=pv_chain_a,
...     pv_chain_b=pv_chain_b,
... )
>>> pv_mag_mul
<PV_MagMul.kr()[0]>
classmethod kr(*, pv_chain_a: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], pv_chain_b: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]]) UGenOperable
property pv_chain_a : UGenScalar
property pv_chain_b : UGenScalar
class PV_MagNoise(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, **kwargs)

Bases: PV_ChainUGen

Multiplies magnitudes by noise.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_mag_noise = supriya.ugens.PV_MagNoise.kr(
...     pv_chain=pv_chain,
... )
>>> pv_mag_noise
<PV_MagNoise.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]]) UGenOperable
property pv_chain : UGenScalar
class PV_MagShift(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, stretch: SupportsFloat | UGenScalar = 1.0, shift: SupportsFloat | UGenScalar = 0.0, **kwargs)

Bases: PV_ChainUGen

Shifts and stretches magnitude bin position.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_mag_shift = supriya.ugens.PV_MagShift.kr(
...     pv_chain=pv_chain,
...     shift=0,
...     stretch=1,
... )
>>> pv_mag_shift
<PV_MagShift.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], stretch: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 1.0, shift: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0.0) UGenOperable
property pv_chain : UGenScalar
property shift : UGenScalar
property stretch : UGenScalar
class PV_MagSmear(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, bins: SupportsFloat | UGenScalar = 0, **kwargs)

Bases: PV_ChainUGen

Averages magnitudes across bins.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_mag_smear = supriya.ugens.PV_MagSmear.kr(
...     bins=0,
...     pv_chain=pv_chain,
... )
>>> pv_mag_smear
<PV_MagSmear.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], bins: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0) UGenOperable
property bins : UGenScalar
property pv_chain : UGenScalar
class PV_MagSquared(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, **kwargs)

Bases: PV_ChainUGen

Squares magnitudes.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_mag_squared = supriya.ugens.PV_MagSquared.kr(
...     pv_chain=pv_chain,
... )
>>> pv_mag_squared
<PV_MagSquared.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]]) UGenOperable
property pv_chain : UGenScalar
class PV_Max(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain_a: SupportsFloat | UGenScalar, pv_chain_b: SupportsFloat | UGenScalar, **kwargs)

Bases: PV_ChainUGen

Maximum magnitude.

>>> pv_chain_a = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_chain_b = supriya.ugens.FFT.kr(
...     source=supriya.ugens.LFSaw.ar(),
... )
>>> pv_max = supriya.ugens.PV_Max.kr(
...     pv_chain_a=pv_chain_a,
...     pv_chain_b=pv_chain_b,
... )
>>> pv_max
<PV_Max.kr()[0]>
classmethod kr(*, pv_chain_a: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], pv_chain_b: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]]) UGenOperable
property pv_chain_a : UGenScalar
property pv_chain_b : UGenScalar
class PV_Min(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain_a: SupportsFloat | UGenScalar, pv_chain_b: SupportsFloat | UGenScalar, **kwargs)

Bases: PV_ChainUGen

Minimum magnitude.

>>> pv_chain_a = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_chain_b = supriya.ugens.FFT.kr(
...     source=supriya.ugens.LFSaw.ar(),
... )
>>> pv_min = supriya.ugens.PV_Min.kr(
...     pv_chain_a=pv_chain_a,
...     pv_chain_b=pv_chain_b,
... )
>>> pv_min
<PV_Min.kr()[0]>
classmethod kr(*, pv_chain_a: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], pv_chain_b: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]]) UGenOperable
property pv_chain_a : UGenScalar
property pv_chain_b : UGenScalar
class PV_Mul(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain_a: SupportsFloat | UGenScalar, pv_chain_b: SupportsFloat | UGenScalar, **kwargs)

Bases: PV_ChainUGen

Complex multiplication.

>>> pv_chain_a = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_chain_b = supriya.ugens.FFT.kr(
...     source=supriya.ugens.LFSaw.ar(),
... )
>>> pv_mul = supriya.ugens.PV_Mul.kr(
...     pv_chain_a=pv_chain_a,
...     pv_chain_b=pv_chain_b,
... )
>>> pv_mul
<PV_Mul.kr()[0]>
classmethod kr(*, pv_chain_a: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], pv_chain_b: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]]) UGenOperable
property pv_chain_a : UGenScalar
property pv_chain_b : UGenScalar
class PV_PhaseShift(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, shift: SupportsFloat | UGenScalar, integrate: SupportsFloat | UGenScalar = 0, **kwargs)

Bases: PV_ChainUGen

Shifts phase.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> shift = supriya.ugens.LFNoise2.kr(frequency=1).scale(-1, 1, -180, 180)
>>> pv_phase_shift = supriya.ugens.PV_PhaseShift.kr(
...     pv_chain=pv_chain,
...     integrate=0,
...     shift=shift,
... )
>>> pv_phase_shift
<PV_PhaseShift.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], shift: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], integrate: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0) UGenOperable
property integrate : UGenScalar
property pv_chain : UGenScalar
property shift : UGenScalar
class PV_PhaseShift270(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, **kwargs)

Bases: PV_ChainUGen

Shifts phase by 270 degrees.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_phase_shift_270 = supriya.ugens.PV_PhaseShift270.kr(
...     pv_chain=pv_chain,
... )
>>> pv_phase_shift_270
<PV_PhaseShift270.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]]) UGenOperable
property pv_chain : UGenScalar
class PV_PhaseShift90(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, **kwargs)

Bases: PV_ChainUGen

Shifts phase by 90 degrees.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_phase_shift_90 = supriya.ugens.PV_PhaseShift90.kr(
...     pv_chain=pv_chain,
... )
>>> pv_phase_shift_90
<PV_PhaseShift90.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]]) UGenOperable
property pv_chain : UGenScalar
class PV_RandComb(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, wipe: SupportsFloat | UGenScalar = 0, trigger: SupportsFloat | UGenScalar = 0, **kwargs)

Bases: PV_ChainUGen

Passes random bins.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_rand_comb = supriya.ugens.PV_RandComb.kr(
...     pv_chain=pv_chain,
...     trigger=0,
...     wipe=0,
... )
>>> pv_rand_comb
<PV_RandComb.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], wipe: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0, trigger: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0) UGenOperable
property pv_chain : UGenScalar
property trigger : UGenScalar
property wipe : UGenScalar
class PV_RandWipe(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain_a: SupportsFloat | UGenScalar, pv_chain_b: SupportsFloat | UGenScalar, wipe: SupportsFloat | UGenScalar = 0, trigger: SupportsFloat | UGenScalar = 0, **kwargs)

Bases: PV_ChainUGen

Crossfades in random bin order.

>>> pv_chain_a = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_chain_b = supriya.ugens.FFT.kr(
...     source=supriya.ugens.LFSaw.ar(),
... )
>>> pv_rand_wipe = supriya.ugens.PV_RandWipe.kr(
...     pv_chain_a=pv_chain_a,
...     pv_chain_b=pv_chain_b,
...     trigger=0,
...     wipe=0,
... )
>>> pv_rand_wipe
<PV_RandWipe.kr()[0]>
classmethod kr(*, pv_chain_a: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], pv_chain_b: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], wipe: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0, trigger: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0) UGenOperable
property pv_chain_a : UGenScalar
property pv_chain_b : UGenScalar
property trigger : UGenScalar
property wipe : UGenScalar
class PV_RectComb(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain: SupportsFloat | UGenScalar, num_teeth: SupportsFloat | UGenScalar = 0, phase: SupportsFloat | UGenScalar = 0, width: SupportsFloat | UGenScalar = 0.5, **kwargs)

Bases: PV_ChainUGen

Makes gaps in the spectrum.

>>> pv_chain = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_rect_comb = supriya.ugens.PV_RectComb.kr(
...     pv_chain=pv_chain,
...     num_teeth=0,
...     phase=0,
...     width=0.5,
... )
>>> pv_rect_comb
<PV_RectComb.kr()[0]>
classmethod kr(*, pv_chain: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], num_teeth: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0, phase: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0, width: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0.5) UGenOperable
property num_teeth : UGenScalar
property phase : UGenScalar
property pv_chain : UGenScalar
property width : UGenScalar
class PV_RectComb2(*, calculation_rate: CalculationRate | SupportsInt | str | None, pv_chain_a: SupportsFloat | UGenScalar, pv_chain_b: SupportsFloat | UGenScalar, num_teeth: SupportsFloat | UGenScalar = 0, phase: SupportsFloat | UGenScalar = 0, width: SupportsFloat | UGenScalar = 0.5, **kwargs)

Bases: PV_ChainUGen

Makes gaps in the spectrum.

>>> pv_chain_a = supriya.ugens.FFT.kr(
...     source=supriya.ugens.WhiteNoise.ar(),
... )
>>> pv_chain_b = supriya.ugens.FFT.kr(
...     source=supriya.ugens.LFSaw.ar(),
... )
>>> pv_rect_comb_2 = supriya.ugens.PV_RectComb2.kr(
...     pv_chain_a=pv_chain_a,
...     pv_chain_b=pv_chain_b,
...     num_teeth=0,
...     phase=0,
...     width=0.5,
... )
>>> pv_rect_comb_2
<PV_RectComb2.kr()[0]>
classmethod kr(*, pv_chain_a: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], pv_chain_b: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], num_teeth: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0, phase: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0, width: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 0.5) UGenOperable
property num_teeth : UGenScalar
property phase : UGenScalar
property pv_chain_a : UGenScalar
property pv_chain_b : UGenScalar
property width : UGenScalar
class RunningSum(*, calculation_rate: CalculationRate | SupportsInt | str | None, source: SupportsFloat | UGenScalar, sample_count: SupportsFloat | UGenScalar = 40, **kwargs)

Bases: UGen

Tracks running sum over n frames.

>>> source = supriya.ugens.In.ar(bus=0)
>>> running_sum = supriya.ugens.RunningSum.ar(
...     sample_count=40,
...     source=source,
... )
>>> running_sum
<RunningSum.ar()[0]>
classmethod ar(*, source: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], sample_count: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 40) UGenOperable
classmethod kr(*, source: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], sample_count: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] = 40) UGenOperable
property sample_count : UGenScalar
property source : UGenScalar