Fold

object Fold extends ProductReader[Fold]

A UGen that constrains a signal to a given range, by "folding" values outside the range. This is similar to the fold2 binary operator but permits both a lower range value lo and an upper range value hi .

Folding can be understood as "reflecting" around the boundaries. For example, if the upper margin is 3, then if an input value exceeds 3, the excess is negatively reflected; 3.1 becomes 2.9, 3.2 becomes 2.8, etc. until the lower margin is reached again where another reflection occurs. Likewise, if the lower margin is 1, then if an input value falls below 1, the undershoot is reflected; 0.9 becomes 1.1, 0.8 becomes 1.2, etc. until the upper margin is reached again where another reflection occurs.

===Examples===

// fold sawtooth wave to modulate timbre
play {
 val hi = SinOsc.ar(0.1).linExp(-1, 1, 0.01, 1.0)
 Fold.ar(Saw.ar(300), 0, hi) * 0.2 / hi
}
See also
Companion
class
trait Product
trait Mirror
trait ProductReader[Fold]
class Object
trait Matchable
class Any

Type members

Inherited types

type MirroredElemLabels <: Tuple

The names of the product elements

The names of the product elements

Inherited from
Mirror
type MirroredLabel <: String

The name of the type

The name of the type

Inherited from
Mirror

Value members

Concrete methods

def ar(in: GE, lo: GE, hi: GE): Fold
Value Params
hi

upper margin of folding

in

input signal to constrain

lo

lower margin of folding

def ir(in: GE, lo: GE, hi: GE): Fold
Value Params
hi

upper margin of folding

in

input signal to constrain

lo

lower margin of folding

def kr(in: GE, lo: GE, hi: GE): Fold
Value Params
hi

upper margin of folding

in

input signal to constrain

lo

lower margin of folding

def read(in: RefMapIn, key: String, arity: Int): Fold