basic¶
- class Mix¶
Bases:
PseudoUGen
A down-to-mono signal mixer.
>>> from supriya.ugens import DC, Mix, SynthDefBuilder
>>> with SynthDefBuilder() as builder: ... oscillators = [DC.ar(source=1) for _ in range(5)] ... mix = 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 SynthDefBuilder() as builder: ... oscillators = [DC.ar(source=1) for _ in range(15)] ... mix = 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: ... 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: ... 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]
-
class MulAdd(*, calculation_rate: CalculationRate | SupportsInt | str | None, source: SupportsFloat | UGenScalar, multiplier: SupportsFloat | UGenScalar =
1.0
, addend: SupportsFloat | UGenScalar =0.0
, **kwargs)¶ 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: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], multiplier: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] =
1.0
, addend: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] =0.0
) UGenOperable ¶
- property addend : UGenScalar¶
- property multiplier : UGenScalar¶
- property source : UGenScalar¶
-
classmethod new(*, source: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], multiplier: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]] =
- class Sum3(*, calculation_rate: CalculationRate | SupportsInt | str | None, input_one: SupportsFloat | UGenScalar, input_two: SupportsFloat | UGenScalar, input_three: SupportsFloat | UGenScalar, **kwargs)¶
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 | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], input_two: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], input_three: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]]) UGenOperable ¶
- property input_one : UGenScalar¶
- property input_three : UGenScalar¶
- property input_two : UGenScalar¶
- class Sum4(*, calculation_rate: CalculationRate | SupportsInt | str | None, input_one: SupportsFloat | UGenScalar, input_two: SupportsFloat | UGenScalar, input_three: SupportsFloat | UGenScalar, input_four: SupportsFloat | UGenScalar, **kwargs)¶
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 | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], input_two: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], input_three: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]], input_four: SupportsFloat | UGenOperable | UGenSerializable | Sequence[SupportsFloat | UGenOperable | UGenSerializable | Sequence[UGenRecursiveInput]]) UGenOperable ¶
- property input_four : UGenScalar¶
- property input_one : UGenScalar¶
- property input_three : UGenScalar¶
- property input_two : UGenScalar¶