basic

class Mix

Bases: PseudoUGen

A down-to-mono signal mixer.

>>> with supriya.synthdefs.SynthDefBuilder() as builder:
...     oscillators = [supriya.ugens.DC.ar(source=1) for _ in range(5)]
...     mix = supriya.ugens.Mix.new(oscillators)
... 
>>> synthdef = builder.build(name="mix1", optimize=False)
>>> supriya.graph(synthdef)  
>>> print(synthdef)
synthdef:
    name: mix1
    ugens:
    -   DC.ar/0:
            source: 1.0
    -   DC.ar/1:
            source: 1.0
    -   DC.ar/2:
            source: 1.0
    -   DC.ar/3:
            source: 1.0
    -   Sum4.ar:
            input_one: DC.ar/0[0]
            input_two: DC.ar/1[0]
            input_three: DC.ar/2[0]
            input_four: DC.ar/3[0]
    -   DC.ar/4:
            source: 1.0
    -   BinaryOpUGen(ADDITION).ar:
            left: Sum4.ar[0]
            right: DC.ar/4[0]
>>> with supriya.synthdefs.SynthDefBuilder() as builder:
...     oscillators = [supriya.ugens.DC.ar(source=1) for _ in range(15)]
...     mix = supriya.ugens.Mix.new(oscillators)
... 
>>> synthdef = builder.build("mix2")
>>> supriya.graph(synthdef)  
>>> print(synthdef)
synthdef:
    name: mix2
    ugens:
    -   DC.ar/0:
            source: 1.0
    -   DC.ar/1:
            source: 1.0
    -   DC.ar/2:
            source: 1.0
    -   DC.ar/3:
            source: 1.0
    -   Sum4.ar/0:
            input_one: DC.ar/0[0]
            input_two: DC.ar/1[0]
            input_three: DC.ar/2[0]
            input_four: DC.ar/3[0]
    -   DC.ar/4:
            source: 1.0
    -   DC.ar/5:
            source: 1.0
    -   DC.ar/6:
            source: 1.0
    -   DC.ar/7:
            source: 1.0
    -   Sum4.ar/1:
            input_one: DC.ar/4[0]
            input_two: DC.ar/5[0]
            input_three: DC.ar/6[0]
            input_four: DC.ar/7[0]
    -   DC.ar/8:
            source: 1.0
    -   DC.ar/9:
            source: 1.0
    -   DC.ar/10:
            source: 1.0
    -   DC.ar/11:
            source: 1.0
    -   Sum4.ar/2:
            input_one: DC.ar/8[0]
            input_two: DC.ar/9[0]
            input_three: DC.ar/10[0]
            input_four: DC.ar/11[0]
    -   DC.ar/12:
            source: 1.0
    -   DC.ar/13:
            source: 1.0
    -   DC.ar/14:
            source: 1.0
    -   Sum3.ar:
            input_one: DC.ar/12[0]
            input_two: DC.ar/13[0]
            input_three: DC.ar/14[0]
    -   Sum4.ar/3:
            input_one: Sum4.ar/0[0]
            input_two: Sum4.ar/1[0]
            input_three: Sum4.ar/2[0]
            input_four: Sum3.ar[0]
classmethod multichannel(sources, channel_count)

Segment by channel count and mix down in parallel.

Combine panner outputs, first with first, second with second, etc.

>>> source = supriya.ugens.SinOsc.ar(frequency=[440, 660, 880])
>>> panner = supriya.ugens.PanAz.ar(
...     channel_count=4,
...     source=source,
...     position=supriya.ugens.LFNoise2.kr(),
... )
>>> mix = supriya.ugens.Mix.multichannel(panner, channel_count=4)
>>> out = supriya.ugens.Out.ar(bus=0, source=mix)
>>> supriya.graph(out)  
>>> print(out)
synthdef:
    name: 0eeea16179e4d9b4441b878fd108af92
    ugens:
    -   SinOsc.ar/0:
            frequency: 440.0
            phase: 0.0
    -   LFNoise2.kr:
            frequency: 500.0
    -   PanAz.ar/0:
            source: SinOsc.ar/0[0]
            position: LFNoise2.kr[0]
            amplitude: 1.0
            width: 2.0
            orientation: 0.5
    -   SinOsc.ar/1:
            frequency: 660.0
            phase: 0.0
    -   PanAz.ar/1:
            source: SinOsc.ar/1[0]
            position: LFNoise2.kr[0]
            amplitude: 1.0
            width: 2.0
            orientation: 0.5
    -   SinOsc.ar/2:
            frequency: 880.0
            phase: 0.0
    -   PanAz.ar/2:
            source: SinOsc.ar/2[0]
            position: LFNoise2.kr[0]
            amplitude: 1.0
            width: 2.0
            orientation: 0.5
    -   Sum3.ar/0:
            input_one: PanAz.ar/0[0]
            input_two: PanAz.ar/1[0]
            input_three: PanAz.ar/2[0]
    -   Sum3.ar/1:
            input_one: PanAz.ar/0[1]
            input_two: PanAz.ar/1[1]
            input_three: PanAz.ar/2[1]
    -   Sum3.ar/2:
            input_one: PanAz.ar/0[2]
            input_two: PanAz.ar/1[2]
            input_three: PanAz.ar/2[2]
    -   Sum3.ar/3:
            input_one: PanAz.ar/0[3]
            input_two: PanAz.ar/1[3]
            input_three: PanAz.ar/2[3]
    -   Out.ar:
            bus: 0.0
            source[0]: Sum3.ar/0[0]
            source[1]: Sum3.ar/1[0]
            source[2]: Sum3.ar/2[0]
            source[3]: Sum3.ar/3[0]

Compare with a non-multichannel mixdown:

>>> mix = supriya.ugens.Mix.new(panner)
>>> out = supriya.ugens.Out.ar(bus=0, source=mix)
>>> supriya.graph(out)  
>>> print(out)
synthdef:
    name: 6f8d08d5a9a3d1aa845dd7b06301293d
    ugens:
    -   SinOsc.ar/0:
            frequency: 440.0
            phase: 0.0
    -   LFNoise2.kr:
            frequency: 500.0
    -   PanAz.ar/0:
            source: SinOsc.ar/0[0]
            position: LFNoise2.kr[0]
            amplitude: 1.0
            width: 2.0
            orientation: 0.5
    -   Sum4.ar/0:
            input_one: PanAz.ar/0[0]
            input_two: PanAz.ar/0[1]
            input_three: PanAz.ar/0[2]
            input_four: PanAz.ar/0[3]
    -   SinOsc.ar/1:
            frequency: 660.0
            phase: 0.0
    -   PanAz.ar/1:
            source: SinOsc.ar/1[0]
            position: LFNoise2.kr[0]
            amplitude: 1.0
            width: 2.0
            orientation: 0.5
    -   Sum4.ar/1:
            input_one: PanAz.ar/1[0]
            input_two: PanAz.ar/1[1]
            input_three: PanAz.ar/1[2]
            input_four: PanAz.ar/1[3]
    -   SinOsc.ar/2:
            frequency: 880.0
            phase: 0.0
    -   PanAz.ar/2:
            source: SinOsc.ar/2[0]
            position: LFNoise2.kr[0]
            amplitude: 1.0
            width: 2.0
            orientation: 0.5
    -   Sum4.ar/2:
            input_one: PanAz.ar/2[0]
            input_two: PanAz.ar/2[1]
            input_three: PanAz.ar/2[2]
            input_four: PanAz.ar/2[3]
    -   Sum3.ar:
            input_one: Sum4.ar/0[0]
            input_two: Sum4.ar/1[0]
            input_three: Sum4.ar/2[0]
    -   Out.ar:
            bus: 0.0
            source[0]: Sum3.ar[0]
classmethod new(sources)
class MulAdd(addend=0.0, multiplier=1.0, calculation_rate=None, source=None)

Bases: UGen

An Optimized multiplication / addition ugen.

>>> source = supriya.ugens.SinOsc.ar()
>>> mul_add = supriya.ugens.MulAdd.new(
...     addend=0.5,
...     multiplier=-1.5,
...     source=source,
... )
>>> mul_add
MulAdd.ar()
classmethod new(source=None, multiplier=1.0, addend=0.0)

Constructs a multiplication / addition ugen.

>>> addend = 0.5
>>> multiplier = 1.5
>>> source = supriya.ugens.SinOsc.ar(frequency=[440, 442])
>>> mul_add = supriya.ugens.MulAdd.new(
...     addend=addend,
...     multiplier=multiplier,
...     source=source,
... )
>>> mul_add
UGenArray({2})

Returns ugen graph.

property addend : SupportsFloat | UGenMethodMixin
property multiplier : SupportsFloat | UGenMethodMixin
property source : SupportsFloat | UGenMethodMixin
class Sum3(input_one=None, input_two=None, input_three=None)

Bases: UGen

A three-input summing unit generator.

>>> input_one = supriya.ugens.SinOsc.ar()
>>> input_two = supriya.ugens.SinOsc.ar(phase=0.1)
>>> input_three = supriya.ugens.SinOsc.ar(phase=0.2)
>>> supriya.ugens.Sum3.new(
...     input_one=input_one,
...     input_two=input_two,
...     input_three=input_three,
... )
Sum3.ar()
classmethod new(input_one: SupportsFloat | UGenMethodMixin | None = None, input_two: SupportsFloat | UGenMethodMixin | None = None, input_three: SupportsFloat | UGenMethodMixin | None = None) Sum3
property input_one : SupportsFloat | UGenMethodMixin
property input_three : SupportsFloat | UGenMethodMixin
property input_two : SupportsFloat | UGenMethodMixin
class Sum4(input_one=None, input_two=None, input_three=None, input_four=None)

Bases: UGen

A four-input summing unit generator.

>>> input_one = supriya.ugens.SinOsc.ar()
>>> input_two = supriya.ugens.SinOsc.ar(phase=0.1)
>>> input_three = supriya.ugens.SinOsc.ar(phase=0.2)
>>> input_four = supriya.ugens.SinOsc.ar(phase=0.3)
>>> supriya.ugens.Sum4.new(
...     input_one=input_one,
...     input_two=input_two,
...     input_three=input_three,
...     input_four=input_four,
... )
Sum4.ar()
classmethod new(input_one: SupportsFloat | UGenMethodMixin | None = None, input_two: SupportsFloat | UGenMethodMixin | None = None, input_three: SupportsFloat | UGenMethodMixin | None = None, input_four: SupportsFloat | UGenMethodMixin | None = None) Sum4
property input_four : SupportsFloat | UGenMethodMixin
property input_one : SupportsFloat | UGenMethodMixin
property input_three : SupportsFloat | UGenMethodMixin
property input_two : SupportsFloat | UGenMethodMixin