Package

de.sciss.synth

ugen

Permalink

package ugen

Visibility
  1. Public
  2. All

Type Members

  1. final case class ArrayMax(rate: Rate, in: GE) extends MultiOut with Product with Serializable

    Permalink

    A UGen that finds the largest value across the channels of its input signal, providing both the value and the index.

    A UGen that finds the largest value across the channels of its input signal, providing both the value and the index.

    This is a third-party UGen (MCLDUGens).

    in

    multi-channel signal to analyze

    See also

    BufMax

    ArrayMin

  2. final case class ArrayMin(rate: Rate, in: GE) extends MultiOut with Product with Serializable

    Permalink

    A UGen that finds the smallest value across the channels of its input signal, providing both the value and the index.

    A UGen that finds the smallest value across the channels of its input signal, providing both the value and the index.

    This is a third-party UGen (MCLDUGens).

    in

    multi-channel signal to analyze

    See also

    BufMin

    ArrayMax

  3. final case class BufMax(rate: Rate, buf: GE, gate: GE = 1) extends MultiOut with IsIndividual with Product with Serializable

    Permalink

    A UGen that finds the largest value in a buffer, providing both the value and the index.

    A UGen that finds the largest value in a buffer, providing both the value and the index.

    This is a third-party UGen (MCLDUGens).

    buf

    identifier of the buffer containing the values to analyze. It treats multi-channel buffers as monophonic, and indices will refer to the de-interleaved frames and channels.

    gate

    when closed (zero), holds the last output value.

    See also

    ArrayMax

    BufMin

  4. final case class BufMin(rate: Rate, buf: GE, gate: GE = 1) extends MultiOut with IsIndividual with Product with Serializable

    Permalink

    A UGen that finds the smallest value in a buffer, providing both the value and the index.

    A UGen that finds the smallest value in a buffer, providing both the value and the index.

    This is a third-party UGen (MCLDUGens).

    buf

    identifier of the buffer containing the values to analyze. It treats multi-channel buffers as monophonic, and indices will refer to the de-interleaved frames and channels.

    gate

    when closed (zero), holds the last output value.

    See also

    ArrayMin

    BufMax

  5. final case class CircleRamp(rate: MaybeRate, in: GE, dur: GE = 0.1f, lo: GE = 180, hi: GE = 180) extends SingleOut with Product with Serializable

    Permalink

    This is a UGen like Ramp , but it always takes the shortest way around a defined circle, wrapping values where appropriate.

    This is a UGen like Ramp , but it always takes the shortest way around a defined circle, wrapping values where appropriate. This can be useful when smoothing panning signals for speaker rings, for instance in Vector Base Amplitude Panning.

    This is a third-party UGen (VBAPUGens).

    in

    The signal to be smoothed.

    dur

    Ramp duration in seconds

    lo

    The lower wrap value

    hi

    The upper wrap value

    See also

    Lag

    Ramp

    VBAP

  6. final case class ComplexRes(rate: Rate, in: GE, freq: GE = 440.0f, decay: GE = 0.2f) extends SingleOut with Product with Serializable

    Permalink

    A resonating filter UGen which can be modulated in its resonating frequency at audio rate.

    A resonating filter UGen which can be modulated in its resonating frequency at audio rate.

    Implements the filter structure found in Julian Parker and Till Bovermann (2013): Dynamic FM synthesis using a network of complex resonator filters

    This is a third-party UGen (DEINDUGens).

    in

    input signal to be filtered

    freq

    resonating frequency in Hz, can be modulated at audio rate

    decay

    decay time in seconds

    See also

    Ringz

    RLPF

    RHPF

    Formlet

    Resonz

  7. final case class DFM1(rate: Rate, in: GE, freq: GE = 440, res: GE = 0.1f, gain: GE = 1.0f, mode: GE = 0, noise: GE = 3.0E-4f) extends SingleOut with Product with Serializable

    Permalink

    A digital filter UGen which aims at accurately modeling an analog filter.

    A digital filter UGen which aims at accurately modeling an analog filter. It provides low-pass and high-pass modes, and the filter can be overdriven and will self-oscillate at high resonances.

    This is a third-party UGen (TJUGens).

    in

    Input signal to filter.

    freq

    Cutoff frequency in Hertz.

    res

    Resonance of the filter. Resonance is minimal at 0.0 and high at 1.0 , above which the filter starts overdrive and sound saturated (e.g. 1.2 ).

    gain

    Linear gain applied to the input signal.

    mode

    The filter can be used in low-pass ( 0 ) or high-pass ( 1 ) mode.

    noise

    Amount (amplitude) of noise added to the model.

  8. final case class DNoiseRing(change: GE = 0.5f, chance: GE = 0.5f, shift: GE = 1, numBits: GE = 8, init: GE = 0) extends SingleOut with DemandRated with IsIndividual with Product with Serializable

    Permalink

    Demand rate UGen implementing a Wiard noise ring.

    Demand rate UGen implementing a Wiard noise ring.

    "In latter model synthesizers, digital noise sources began to appear in place of analog ones. Traditionally, a pseudo-random shift register set up for optimal length. By optimal length, it is meant that every state of all available bits will appear at some time, but the order is unknown. Essentially a counter that counts in an unknown order. This represents the maximum state of information "entropy" available for that number of bits. But music has close self-similarity over short periods of time. That is, it repeats itself with changes appearing slowly. This shift register generator is designed to give control of the rate of appearance of new information. It has a tight set of controls over how random it actually is and how fast change occurs." (source: http://mamonu.weebly.com/wiard-noisering.html)

    This is a third-party UGen (DEINDUGens).

    change

    probability of changing to a new value

    chance

    probability of the new value becoming HIGH

    init

    initial internal state

    See also

    Demand

    Duty

  9. final case class DiodeRingMod(rate: Rate, car: GE, mod: GE) extends SingleOut with Product with Serializable

    Permalink

    Ring modulation UGen based on a physical model of a diode.

    Ring modulation UGen based on a physical model of a diode.

    This is a third-party UGen (DEINDUGens).

    car

    carrier signal

    mod

    modulator signal

    See also

    BinaryOpUGen

  10. final case class Greyhole(rate: Rate, inL: GE, inR: GE, delayTime: GE = 2.0f, damp: GE = 0.0f, size: GE = 1.0f, diff: GE = 0.707f, feedback: GE = 0.9f, modDepth: GE = 0.1f, modFreq: GE = 2.0f) extends MultiOut with Product with Serializable

    Permalink

    A complex echo-like effect UGen, inspired by the classic Eventide effect of a similar name.

    A complex echo-like effect UGen, inspired by the classic Eventide effect of a similar name. The effect consists of a diffuser (like a mini-reverb) connected in a feedback system with a long modulated delay-line. Excels at producing spacey washes of sound.

    Note: You may need to increase the server's real-time memory

    This is a third-party UGen (DEINDUGens).

    inL

    left input signal

    inR

    right input signal

    delayTime

    approximate delay time in seconds. (0.1..60)

    damp

    damping of high-frequencies as the delay decays. 0 is no damping, 1 is very strong damping (0..1)

    size

    scales the size of delay-lines, producing the impression of a larger or smaller space. Values below 1 can sound quite metallic. (0.5..5)

    diff

    shape of echo patterns produced by the diffuser. At very low values, the diffuser acts like a delay-line whose length is controlled by the size parameter. Medium values produce a slow build-up of echoes, giving the sound a reversed-like quality. Values of 0.707 or greater than produce smooth exponentially decaying echoes. (0..1)

    feedback

    amount of feedback through the system. Sets the number of repeating echoes. A setting of 1.0 produces infinite sustain. (0..1)

    modDepth

    depth of delay-line modulation. Use in combination with modFreq to produce chorus and pitch-variations in the echoes. (0..1)

    modFreq

    frequency of delay-line modulation. Use in combination with modDepth to produce chorus and pitch-variations in the echoes. (0..10)

    See also

    JPverb

  11. final case class InsideOut(rate: MaybeRate, in: GE) extends SingleOut with Product with Serializable

    Permalink

    A UGen that produces distortion by subtracting the input signal's magnitude from 1.

    A UGen that produces distortion by subtracting the input signal's magnitude from 1.

    If the input is positive, it outputs (+1 - input). If the input is negative, it outputs (-1 - input).

    This is a third-party UGen (MCLDUGens).

    in

    input signal to be distorted

  12. final case class JPverb(rate: Rate, inL: GE, inR: GE, revTime: GE = 1.0f, damp: GE = 0.0f, size: GE = 1.0f, earlyDiff: GE = 0.707f, modDepth: GE = 0.1f, modFreq: GE = 2.0f, low: GE = 1.0f, mid: GE = 1.0f, high: GE = 1.0f, lowCut: GE = 500.0f, highCut: GE = 2000.0f) extends MultiOut with Product with Serializable

    Permalink

    An algorithmic reverb UGen, inspired by the lush chorused sound of certain vintage Lexicon and Alesis reverberation units.

    An algorithmic reverb UGen, inspired by the lush chorused sound of certain vintage Lexicon and Alesis reverberation units. Designed to sound great with synthetic sound sources, rather than sound like a realistic space.

    Note: You may need to increase the server's real-time memory

    This is a third-party UGen (DEINDUGens).

    inL

    left input signal to be reverberated

    inR

    right input signal to be reverberated

    revTime

    approximate reverberation time in seconds (T60 - the time for the reverberation to decay 60 dB). Does not effect early reflections. (0.1..60)

    damp

    damping of high-frequencies as the reverberation decays. 0 is no damping, 1 is very strong damping (0..1)

    size

    scales the size of delay-lines, producing the impression of a larger or smaller space. Values below 1 can sound quite metallic. (0.5..5)

    earlyDiff

    shape of early reflections. Values of > 0.707 produce smooth exponential decay. Lower values produce a slower build-up of echoes. (0..1)

    modDepth

    depth of delay-line modulation in sample frames. Use in combination with modFreq to set amount of chorusing within the structure. (0..50)

    modFreq

    frequency of delay-line modulation. Use in combination with modDepth to set amount of chorusing within the structure. (0..10)

    low

    multiplier for the reverberation time within the low band. (0..1)

    mid

    multiplier for the reverberation time within the mid band. (0..1)

    high

    multiplier for the reverberation time within the high band. (0..1)

    lowCut

    frequency in Hz at which the crossover between the low and mid bands of the reverberation occurs. (100..6000)

    highCut

    frequency in Hz at which the crossover between the mid and high bands of the reverberation occurs. (1000..10000)

    See also

    Greyhole

    GVerb

    FreeVerb2

  13. final case class ListTrig(rate: Rate, buf: GE, size: GE, reset: GE = 0, delay: GE = 0) extends SingleOut with IsIndividual with Product with Serializable

    Permalink

    A UGen that produces a scheduled sequences of trigger impulses.

    A UGen that produces a scheduled sequences of trigger impulses. Trigger times are provided as a list (buffer) of absolute offsets from time zero. A trigger is output as a single control period of value 1 , after which output returns to zero.

    This is a third-party UGen (MCLDUGens).

    buf

    identifier of the buffer containing the offsets for the triggers in seconds. The offsets are taken against the start time of the synth or the last time a reset was received. They are not accumulative, and the behavior is undefined if the values are not sorted in ascending order. The buffer should be monophonic.

    size

    the number of values to use from the buffer. Typically, this should be BufFrames.kr(buf) .

    reset

    resets the timer and begins reading the time offsets again at the start of the buffer.

    delay

    this value is added to each of the buffer values. For example, to delay the list of values all by half a second, use a delay of 0.5 . This parameter is only updated at initialization or reset.

    Note

    The argument order is different from its sclang counterpart.

    See also

    Timer

    Dbufrd

    DemandEnvGen

    Logger

    ListTrig2

  14. final case class ListTrig2(rate: Rate, buf: GE, size: GE, reset: GE = 0) extends SingleOut with IsIndividual with Product with Serializable

    Permalink

    A UGen that produces a scheduled sequences of trigger impulses.

    A UGen that produces a scheduled sequences of trigger impulses. Trigger times are provided as a list (buffer) of relative durations between consecutive events. A trigger is output as a single control period of value 1 , after which output returns to zero.

    This is a third-party UGen (MCLDUGens).

    buf

    identifier of the buffer containing the durations for the triggers in seconds. A value represents a relative offsets with respect to its predecessor. The first value indicates the time between the start of the synth or last reset received and the first trigger. The buffer should be monophonic.

    size

    the number of values to use from the buffer. Typically, this should be BufFrames.kr(buf) .

    reset

    resets the timer and begins reading the time deltas again at the start of the buffer.

    Note

    The argument order is different from its sclang counterpart.

    See also

    ListTrig2

    Dbufrd

    DemandEnvGen

    Logger

    ListTrig

  15. final case class Logger(rate: Rate, buf: GE, in: GE, trig: GE, reset: GE = 0) extends SingleOut with HasSideEffect with IsIndividual with Product with Serializable

    Permalink

    A UGen to store values in a buffer upon receiving a trigger.

    A UGen to store values in a buffer upon receiving a trigger. When a trigger happens, the current input values are sampled and stored as the next consecutive frame of the buffer.

    Storage starts at the buffer beginning and increments the write position until the buffer is full. While the buffer is not yet full, the UGen outputs 1 , then it outputs 0 . The buffer position can be reset using the reset input.

    Note that the UGen zeroes the buffer upon first instantiation, to ensure that out-of-date data is not confused with new data.

    This is a third-party UGen (MCLDUGens).

    buf

    identifier of the buffer to write to. Its number of channels should match those of in .

    in

    (multi-channel) signal to write to the buffer. Its number of channels should match those of buf .

    trig

    a non-positive to positive transition causes the UGen to append the current input values to the buffer

    reset

    a non-positive to positive transition causes the write index into the buffer to be reset to zero. The contents of the buffer will also be filled with zeroes. If the buffer was full, the UGen output switches back to zero.

    Note

    The argument order is different from its sclang counterpart.

    See also

    ListTrig

  16. final case class MdaPiano(rate: Rate, freq: GE = 440, gate: GE = 1, velocity: GE = 100, decay: GE = 0.8f, release: GE = 0.8f, hardness: GE = 0.8f, velHard: GE = 0.8f, muffle: GE = 0.8f, velMuff: GE = 0.8f, velCurve: GE = 0.8f, stereo: GE = 0.2f, tune: GE = 0.5f, random: GE = 0.1f, stretch: GE = 0.1f, sustain: GE = 0) extends MultiOut with Product with Serializable

    Permalink

    A piano synthesiser UGen.

    A piano synthesiser UGen. It is not polyphonic, but it can be retriggered to play notes in sequence.

    The original VST plugin by Paul Kellett was ported to SuperCollider by Dan Stowell. Most likely the arguments are in the normalized range 0 to 1.

    This is a third-party UGen (MdaUGens).

    freq

    Frequency of the note in Hz.

    gate

    note-on occurs when gate goes from non-positive to positive; note-off occurs when it goes from positive to non-positive. Most of the other controls are only updated when a new note-on occurs.

    velocity

    velocity (range is 0 to 127)

    decay

    The time for notes to decay after the initial strike.

    release

    The time for notes to decay after the key is released.

    hardness

    adjusts sample key-ranges up or down to change the "size" and brightness of the piano.

    muffle

    gentle low pass filter.

    stereo

    Width of the stereo effect (which makes low notes sound towards the left, high notes towards the right). 0 to 1.

    tune

    Overall tuning.

    random

    Randomness in note tuning.

    stretch

    Stretches the tuning out (higher notes pushed higher).

    sustain

    if positive, act as if the piano's sustain pedal is pressed.

  17. final case class RMS(rate: Rate, in: GE, lpf: GE = 2.0f) extends SingleOut with Product with Serializable

    Permalink

    A UGen that calculates the root-mean-square of a first order low-pass filtered input signal.

    A UGen that calculates the root-mean-square of a first order low-pass filtered input signal. The formula is 'rms = sqrt(lpf1(x^2))'.

    This is a third-party UGen (DEINDUGens).

    in

    input signal to be analyzed

    lpf

    low-pass filter frequency in Hz

    See also

    Amplitude

  18. final case class Squiz(rate: Rate, in: GE, pitchRatio: GE = 2, zeroCrossings: GE = 1, maxDur: GE = 0.1f) extends SingleOut with Product with Serializable

    Permalink

    A UGen implementing a simplistic pitch-raising algorithm.

    A UGen implementing a simplistic pitch-raising algorithm. It is not meant to sound natural, and its sound is reminiscent of some weird mixture of filter, ring-modulator and pitch-shifter, depending on the input.

    The algorithm works by cutting the signal into fragments (delimited by upwards-going zero-crossings) and squeezing those fragments in the time domain (i.e. simply playing them back faster than they came in), leaving silences in between.

    This is a third-party UGen (MCLDUGens).

    in

    input signal to be distorted

    pitchRatio

    the ratio by which pitch will be raised, e.g. the default value of 2 will raise by one octave. Only upwards pitch-shifts are possible so a value below 1 has no effect.

    zeroCrossings

    how many positive-going zero-crossings are used to delimit a chunk.

    maxDur

    the maximum duration to remember each fragment, corresponding with an internally allocated memory. Raising it higher will use more real-time memory and probably will not sound very different (especially if zeroCrossings is low). (init-time only)

  19. final case class VBAP(rate: MaybeRate, numChannels: Int, in: GE, buf: GE, azimuth: GE = 0, elevation: GE = 1, spread: GE = 0) extends MultiOut with Product with Serializable

    Permalink

    A UGen for Vector Base Amplitude Panning (VBAP).

    A UGen for Vector Base Amplitude Panning (VBAP). This allows for equal power panning of a source over an arbitrary array of equidistant speakers. Normally this would be a ring, a dome, or partial dome.

    VBAP was created by Ville Pulkki. For more information on VBAP see http://www.acoustics.hut.fi/research/cat/vbap/ This version of VBAP for SC was ported from the ver. 0.99 PD code by Scott Wilson.

    This is a third-party UGen (VBAPUGens).

    numChannels

    the number of output channels

    in

    the signal to be panned

    buf

    id of a buffer containing data calculated by VBAPSetup . Its number of channels must correspond to numChannels

    azimuth

    +/- 180° from the median plane (i.e. straight ahead)

    elevation

    +/- 90° from the azimuth plane

    spread

    A value from 0-100. When 0, if the signal is panned exactly to a speaker location the signal is only on that speaker. At values higher than 0, the signal will always be on more than one speaker. This can smooth the panning effect by making localisation blur more constant.

    See also

    CircleRamp

  20. trait VBAPSetup extends AnyRef

    Permalink
  21. final case class WaveLoss(rate: MaybeRate, in: GE, drop: GE = 20, chunk: GE = 40, mode: GE = 1) extends SingleOut with IsIndividual with Product with Serializable

    Permalink

    A UGen which uses zero-crossings to divide an input signal into tiny segments.

    A UGen which uses zero-crossings to divide an input signal into tiny segments. It simply discards a fraction of the segments (replacing them with silence).

    The technique was described in a lecture by Trevor Wishart.

    This is a third-party UGen (MCLDUGens).

    in

    input signal to be distorted

    drop

    the number of wave segments to drop in each group of size chunk .

    chunk

    the number of wave segments that are grouped, so that drop elements from it are removed.

    mode

    1 for deterministic mode, in which always the first drop segments within a chunk are dropped, 2 for randomized mode, where drop segments at random indices within a chunk are dropped.

Value Members

  1. object ArrayMax extends Serializable

    Permalink

    A UGen that finds the largest value across the channels of its input signal, providing both the value and the index.

    A UGen that finds the largest value across the channels of its input signal, providing both the value and the index.

    Examples
    // randomly changing array of three numbers
    play {
      val tr  = Impulse.kr(1)
      val sig = Vector.fill(3)(TIRand.kr(0, 100, tr))
      sig.zipWithIndex.foreach { case (n, i) => n.poll(tr, s"sig[$i]") }
      val m   = ArrayMax.kr(sig)
      m.value.poll(tr, "max-value")
      m.index.poll(tr, "max-index")
      ()
    }

    This is a third-party UGen (MCLDUGens).

    See also

    BufMax

    ArrayMin

  2. object ArrayMin extends Serializable

    Permalink

    A UGen that finds the smallest value across the channels of its input signal, providing both the value and the index.

    A UGen that finds the smallest value across the channels of its input signal, providing both the value and the index.

    Examples
    // randomly changing array of three numbers
    play {
      val tr  = Impulse.kr(1)
      val sig = Vector.fill(3)(TIRand.kr(0, 100, tr))
      sig.zipWithIndex.foreach { case (n, i) => n.poll(tr, s"sig[$i]") }
      val m   = ArrayMin.kr(sig)
      m.value.poll(tr, "min-value")
      m.index.poll(tr, "min-index")
      ()
    }

    This is a third-party UGen (MCLDUGens).

    See also

    BufMin

    ArrayMax

  3. object BufMax extends Serializable

    Permalink

    A UGen that finds the largest value in a buffer, providing both the value and the index.

    A UGen that finds the largest value in a buffer, providing both the value and the index.

    Examples
    // simple test
    val b = Buffer(s)
    b.alloc(100)
    b.zero()
    b.set(33 -> 1.034)
    
    // verify that the 33rd value is detected...
    val x = play {
      val m  = BufMax.kr(b.id)
      val tr = "poll".tr(1)
      m.value.poll(tr, "max-value")
      m.index.poll(tr, "max-index")
      ()
    }
    
    // ...until we set a new maximum...
    b.set(74 -> 1.038); x.set("poll" -> 1)
    
    x.free(); b.free()

    This is a third-party UGen (MCLDUGens).

    See also

    ArrayMax

    BufMin

  4. object BufMin extends Serializable

    Permalink

    A UGen that finds the smallest value in a buffer, providing both the value and the index.

    A UGen that finds the smallest value in a buffer, providing both the value and the index.

    Examples
    // simple test
    val b = Buffer(s)
    b.alloc(100)
    b.zero()
    b.set(33 -> -1.034)
    
    // verify that the 33rd value is detected...
    val x = play {
      val m  = BufMin.kr(b.id)
      val tr = "poll".tr(1)
      m.value.poll(tr, "min-value")
      m.index.poll(tr, "min-index")
      ()
    }
    
    // ...until we set a new minimum...
    b.set(74 -> -1.038); x.set("poll" -> 1)
    
    x.free(); b.free()

    This is a third-party UGen (MCLDUGens).

    See also

    ArrayMin

    BufMax

  5. object CircleRamp extends Serializable

    Permalink

    This is a UGen like Ramp , but it always takes the shortest way around a defined circle, wrapping values where appropriate.

    This is a UGen like Ramp , but it always takes the shortest way around a defined circle, wrapping values where appropriate. This can be useful when smoothing panning signals for speaker rings, for instance in Vector Base Amplitude Panning.

    This is a third-party UGen (VBAPUGens).

    See also

    Lag

    Ramp

    VBAP

  6. object ComplexRes extends Serializable

    Permalink

    A resonating filter UGen which can be modulated in its resonating frequency at audio rate.

    A resonating filter UGen which can be modulated in its resonating frequency at audio rate.

    Implements the filter structure found in Julian Parker and Till Bovermann (2013): Dynamic FM synthesis using a network of complex resonator filters

    Examples
    // pulse excitation
    play { ComplexRes.ar(Pulse.ar(1, 0.01), 5000 * SinOsc.ar(Seq(50, 51)), 0.5) }

    This is a third-party UGen (DEINDUGens).

    See also

    Ringz

    RLPF

    RHPF

    Formlet

    Resonz

  7. object DFM1 extends Serializable

    Permalink

    A digital filter UGen which aims at accurately modeling an analog filter.

    A digital filter UGen which aims at accurately modeling an analog filter. It provides low-pass and high-pass modes, and the filter can be overdriven and will self-oscillate at high resonances.

    This is a third-party UGen (TJUGens).

  8. object DNoiseRing extends Serializable

    Permalink

    Demand rate UGen implementing a Wiard noise ring.

    Demand rate UGen implementing a Wiard noise ring.

    "In latter model synthesizers, digital noise sources began to appear in place of analog ones. Traditionally, a pseudo-random shift register set up for optimal length. By optimal length, it is meant that every state of all available bits will appear at some time, but the order is unknown. Essentially a counter that counts in an unknown order. This represents the maximum state of information "entropy" available for that number of bits. But music has close self-similarity over short periods of time. That is, it repeats itself with changes appearing slowly. This shift register generator is designed to give control of the rate of appearance of new information. It has a tight set of controls over how random it actually is and how fast change occurs." (source: http://mamonu.weebly.com/wiard-noisering.html)

    Examples
    // plain 32bit value scaled to 0..1
    play {
      val noise = DNoiseRing(change = MouseX.kr(0, 1), chance = 0.51, numBits = 32)
      Demand.ar(Impulse.ar(10000), noise) / 2.0.pow(33)
    }
    // sequencer
    play {
      val noise = DNoiseRing(change = MouseX.kr(0, 1), chance = MouseY.kr(0, 1), numBits = 32)
      val tr    = Impulse.ar(10)
      val freq  = (Demand.ar(tr, noise)).linlin(0, 2.0.pow(32), 40, 40+48).midicps
      freq.poll(tr, "freq")
      Pan2.ar(SinOsc.ar(freq) * 0.25)
    }

    This is a third-party UGen (DEINDUGens).

    See also

    Demand

    Duty

  9. object DiodeRingMod extends Serializable

    Permalink

    Ring modulation UGen based on a physical model of a diode.

    Ring modulation UGen based on a physical model of a diode.

    Examples
    // sprinkle
    play {
      val ring = DiodeRingMod.ar(
        SinOsc.ar((3700: GE) * Seq(1.0, 1.1, 1.2) * (SinOsc.ar(200) + 2)),
        SinOsc.ar(( 100: GE) * Seq(0.75, 1, 0.5)))
      SplayAz.ar(2, ring) * 0.2 * LFPulse.ar(10.3 * 0.5, 0, 0.04) * 0.5
    }
    // wobble
    play {
      val ring = DiodeRingMod.ar(
        SinOsc.ar((400: GE) * Seq(1.0, 1.1, 1.2) * (SinOsc.ar(200) + 2)),
        SinOsc.ar((100: GE) * Seq(0.75, 1, 0.5)))
      SplayAz.ar(2, ring) * 0.2 * LFPulse.ar(10.3 * 1/32, 0, 0.2) * 0.25
    }

    This is a third-party UGen (DEINDUGens).

    See also

    BinaryOpUGen

  10. object Greyhole extends Serializable

    Permalink

    A complex echo-like effect UGen, inspired by the classic Eventide effect of a similar name.

    A complex echo-like effect UGen, inspired by the classic Eventide effect of a similar name. The effect consists of a diffuser (like a mini-reverb) connected in a feedback system with a long modulated delay-line. Excels at producing spacey washes of sound.

    Note: You may need to increase the server's real-time memory

    Examples
    // discrete
    play {
      val src = LeakDC.ar(SplayAz.ar(2, Impulse.ar(Seq(1, 3, 5, 7, 9))))
      Greyhole.ar(
        inL = src\0, inR = src\1, delayTime = 0.1, damp = 0.1,
        feedback = 0.1, modDepth = 0.01, modFreq = 2)
    }
    // time modulation
    play {
      val src = LeakDC.ar(SplayAz.ar(2, Impulse.ar(Seq(1, 3, 5, 7, 9))))
      val time = LFTri.kr(0.01).linexp(-1, 1, 0.05, 0.2)
      Greyhole.ar(
        inL = src\0, inR = src\1, delayTime = time, damp = 0.4,
        feedback = 0.99, modDepth = 0.01, modFreq = 2)
    }

    This is a third-party UGen (DEINDUGens).

    See also

    JPverb

  11. object InsideOut extends Serializable

    Permalink

    A UGen that produces distortion by subtracting the input signal's magnitude from 1.

    A UGen that produces distortion by subtracting the input signal's magnitude from 1.

    If the input is positive, it outputs (+1 - input). If the input is negative, it outputs (-1 - input).

    Examples
    // sine plus noise
    play { InsideOut.ar(SinOsc.ar(220) + PinkNoise.ar(0.9)) * 0.1 }

    This is a third-party UGen (MCLDUGens).

  12. object JPverb extends Serializable

    Permalink

    An algorithmic reverb UGen, inspired by the lush chorused sound of certain vintage Lexicon and Alesis reverberation units.

    An algorithmic reverb UGen, inspired by the lush chorused sound of certain vintage Lexicon and Alesis reverberation units. Designed to sound great with synthetic sound sources, rather than sound like a realistic space.

    Note: You may need to increase the server's real-time memory

    Examples
    // defaults
    play {
      val src = SplayAz.ar(2, Impulse.ar(Seq(1, 3, 5, 7, 9)))
      JPverb.ar(inL = src\0, inR = src\1)
    }
    // dream-verb
    play {
      val src = SplayAz.ar(2, Impulse.ar(Seq(1, 3, 5, 7, 9)))
      0.4 * src + 0.8 * JPverb.ar(
        inL = src\0, inR = src\1, revTime = 60, size = 2.8, damp = 0.3, earlyDiff = 0.42,
        low = 0.84, mid = 0.71, high = 0.0,
        lowCut = 2450, highCut = 1024, modFreq = 0.1, modDepth = 4.6)
    }
    // tail modulation
    play {
      val src = SplayAz.ar(2, Impulse.ar(Seq(1, 3, 5, 7, 9)))
      val time = LFSaw.ar(0.02).linexp(-1, 1, 0.02, 60)
      JPverb.ar(
        inL = src\0, inR = src\1, revTime = time, size = 1.0, damp = 0.3, earlyDiff = 0.0,
        low = 1, mid = 0, high = 1,
        lowCut = 2450, highCut = 1024, modDepth = 0)
    }

    This is a third-party UGen (DEINDUGens).

    See also

    Greyhole

    GVerb

    FreeVerb2

  13. object ListTrig extends Serializable

    Permalink

    A UGen that produces a scheduled sequences of trigger impulses.

    A UGen that produces a scheduled sequences of trigger impulses. Trigger times are provided as a list (buffer) of absolute offsets from time zero. A trigger is output as a single control period of value 1 , after which output returns to zero.

    Examples
    // trigger grains
    val b = Buffer(s)
    b.alloc(10)
    b.setData(Vector(1, 2, 3, 5, 8, 13, 21, 34, 55, 89).map(_ * 0.1f)) // quasi Fibonacci
    
    val x = play {
      val reset = "reset".tr
      val tr  = ListTrig.kr(b.id, BufFrames.kr(b.id), reset)
      Timer.kr(tr).poll(tr, "timer")
      val env = EnvGen.ar(Env.perc(0.01, 0.1), gate = tr)
      SinOsc.ar(Seq(440, 460)) * env * 0.2
    }
    
    x.set("reset" -> 1)  // start anew
    x.free(); b.free()

    This is a third-party UGen (MCLDUGens).

    Note

    The argument order is different from its sclang counterpart.

    See also

    Timer

    Dbufrd

    DemandEnvGen

    Logger

    ListTrig2

  14. object ListTrig2 extends Serializable

    Permalink

    A UGen that produces a scheduled sequences of trigger impulses.

    A UGen that produces a scheduled sequences of trigger impulses. Trigger times are provided as a list (buffer) of relative durations between consecutive events. A trigger is output as a single control period of value 1 , after which output returns to zero.

    Examples
    // trigger grains
    val b = Buffer(s)
    b.alloc(11)
    b.setData(Vector(1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89).map(_ * 0.1f)) // Fibonacci
    
    val x = play {
      val reset = "reset".tr
      val tr  = ListTrig2.kr(b.id, BufFrames.kr(b.id), reset)
      Timer.kr(tr).poll(tr, "timer")
      val env = EnvGen.ar(Env.perc(0.01, 0.1), gate = tr)
      SinOsc.ar(Seq(440, 460)) * env * 0.2
    }
    
    x.set("reset" -> 1)  // start anew
    x.free(); b.free()

    This is a third-party UGen (MCLDUGens).

    Note

    The argument order is different from its sclang counterpart.

    See also

    ListTrig2

    Dbufrd

    DemandEnvGen

    Logger

    ListTrig

  15. object Logger extends Serializable

    Permalink

    A UGen to store values in a buffer upon receiving a trigger.

    A UGen to store values in a buffer upon receiving a trigger. When a trigger happens, the current input values are sampled and stored as the next consecutive frame of the buffer.

    Storage starts at the buffer beginning and increments the write position until the buffer is full. While the buffer is not yet full, the UGen outputs 1 , then it outputs 0 . The buffer position can be reset using the reset input.

    Note that the UGen zeroes the buffer upon first instantiation, to ensure that out-of-date data is not confused with new data.

    Examples
    // fill buffer and plot on client side
    val b = Buffer(s)
    b.alloc(100)
    
    val x = play {
      val z = LFCub.kr(10) * EnvGen.kr(Env.linen(1, 2, 1), doneAction = freeSelf)
      Logger.kr(b.id, z, Impulse.kr(49), reset = 0)
    }
    
    // after synth has completed:
    b.getData(num = 100).foreach(_.plot())
    
    x.free(); b.free()

    This is a third-party UGen (MCLDUGens).

    Note

    The argument order is different from its sclang counterpart.

    See also

    ListTrig

  16. object MdaPiano extends Serializable

    Permalink

    A piano synthesiser UGen.

    A piano synthesiser UGen. It is not polyphonic, but it can be retriggered to play notes in sequence.

    The original VST plugin by Paul Kellett was ported to SuperCollider by Dan Stowell. Most likely the arguments are in the normalized range 0 to 1.

    This is a third-party UGen (MdaUGens).

  17. object RMS extends Serializable

    Permalink

    A UGen that calculates the root-mean-square of a first order low-pass filtered input signal.

    A UGen that calculates the root-mean-square of a first order low-pass filtered input signal. The formula is 'rms = sqrt(lpf1(x^2))'.

    Examples
    // measure mouse-controlled sine
    play {
      // with MouseX at maximum, you'll see that the sine has -3 dB RMS
      val sig = SinOsc.ar(300) * MouseX.kr(0, 1) * LFPulse.ar(0.5)
      val rms = RMS.ar(sig, 10).ampdb.roundTo(0.1).poll(8, "RMS (dB)")
      sig
    }

    This is a third-party UGen (DEINDUGens).

    See also

    Amplitude

  18. object Squiz extends Serializable

    Permalink

    A UGen implementing a simplistic pitch-raising algorithm.

    A UGen implementing a simplistic pitch-raising algorithm. It is not meant to sound natural, and its sound is reminiscent of some weird mixture of filter, ring-modulator and pitch-shifter, depending on the input.

    The algorithm works by cutting the signal into fragments (delimited by upwards-going zero-crossings) and squeezing those fragments in the time domain (i.e. simply playing them back faster than they came in), leaving silences in between.

    Examples
    // trigger grains
    play { Squiz.ar(SinOsc.ar(440), MouseX.kr(1, 10, 1), zeroCrossings = MouseY.kr(1, 10)) * 0.1 }

    This is a third-party UGen (MCLDUGens).

  19. object VBAP extends Serializable

    Permalink

    A UGen for Vector Base Amplitude Panning (VBAP).

    A UGen for Vector Base Amplitude Panning (VBAP). This allows for equal power panning of a source over an arbitrary array of equidistant speakers. Normally this would be a ring, a dome, or partial dome.

    VBAP was created by Ville Pulkki. For more information on VBAP see http://www.acoustics.hut.fi/research/cat/vbap/ This version of VBAP for SC was ported from the ver. 0.99 PD code by Scott Wilson.

    Examples
    // two-dimensional
    val a = VBAPSetup(2, Seq(0, 45, 90, 135, 180, -135, -90, -45)) // 8 channel ring
    
    val b = Buffer.alloc(s, a.bufferData.size)
    b.setn(a.bufferData)
    
    val x = play {
      val azi = "azi".kr(0)
      val ele = "ele".kr(0)
      val spr = "spr".kr(0)
      VBAP.ar(8, PinkNoise.ar(0.2), b.id, azi, ele, spr)
    }
    
    // test them out
    x.set("azi" -> a.directions(1).azi)
    x.set("azi" -> a.directions(2).azi)
    x.set("azi" -> a.directions(3).azi)
    // ...
    x.set("azi" -> a.directions(7).azi)
    x.set("azi" -> a.directions(0).azi)
    
    // try the spread
    x.set("spr" ->  20)
    x.set("spr" -> 100) // all speakers
    
    x.free(); b.free();

    This is a third-party UGen (VBAPUGens).

    See also

    CircleRamp

  20. object VBAPSetup

    Permalink
  21. object WaveLoss extends Serializable

    Permalink

    A UGen which uses zero-crossings to divide an input signal into tiny segments.

    A UGen which uses zero-crossings to divide an input signal into tiny segments. It simply discards a fraction of the segments (replacing them with silence).

    The technique was described in a lecture by Trevor Wishart.

    Examples
    // sine plus noise
    play {
      val sig  = (SinOsc.ar + PinkNoise.ar) * 0.5
      val mode = MouseY.kr(1, 2).roundTo(1)
      WaveLoss.ar(sig, drop = MouseX.kr(0, 40), chunk = 40, mode = mode) * 0.1
    }

    This is a third-party UGen (MCLDUGens).

Ungrouped