de.sciss.synth.ugen

Convolution2

object Convolution2 extends Serializable

A frequency-domain convolution UGen using a fixed kernel which can be updated by a trigger signal. The delay caused by the convolution when the kernel is a dirac impulse is equal to frameSize - controlBlockSize , so for a frameSize of 2048 and a control-block size of 64, this is 1984 sample frames.

Examples
// three example kernels
// creates a buffer with `n` set values
def mkBuf(n: Int, amp: => Double): Buffer = {
  val v = Vector.tabulate[FillValue](n) { i =>
    (i.linlin(0, n, 0, 2048).toInt, amp)
  }
  val b = Buffer(s)
  b.alloc(2048, completion = b.zeroMsg(b.setMsg(v: _*)))
  b
}

val b = mkBuf(3, 1)
val c = mkBuf(50, math.random)
val d = mkBuf(20, 1)

val x = play {
  val z   = Impulse.ar(1)
  val buf = "kernel".kr(b.id)
  val tr  = "trig"  .tr
  Convolution2.ar(z, buf, tr, 2048) * 0.5
}

// set buffer and trigger kernel actualization
x.set("kernel" -> b.id, "trig" -> 1)
x.set("kernel" -> c.id, "trig" -> 1)
x.set("kernel" -> d.id, "trig" -> 1)

x.free(); b.free(); c.free(); d.free()
See also

Convolution

Convolution2L

PartConv

Linear Supertypes
Serializable, Serializable, AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Convolution2
  2. Serializable
  3. Serializable
  4. AnyRef
  5. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  5. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  6. def ar(in: GE, kernel: GE, trig: GE = 1, frameSize: GE): Convolution2

    in

    the realtime input to be convolved

    kernel

    buffer identifier for the fixed kernel, which may be modulated in combination with the trigger. Even a trigger input of zero is used, upon UGen initialization the kernel must point to a valid buffer, otherwise the UGen aborts.

    trig

    updates the kernel on a change from non-positive to positive (<= 0 to >0)

    frameSize

    size of the kernel. this must be a power of two. the FFT calculated internally by the UGen has a size of twice this value. The maximum allowed frameSize is 16384. (init-time only)

  7. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  8. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  9. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  10. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  11. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  12. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  13. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  14. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  15. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  16. final def notify(): Unit

    Definition Classes
    AnyRef
  17. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  18. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  19. def toString(): String

    Definition Classes
    AnyRef → Any
  20. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  21. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  22. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from Serializable

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped