Packages

object Convolution2 extends ProductReader[Convolution2] with 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

PartConv

Convolution2L

Convolution

Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Convolution2
  2. Serializable
  3. ProductReader
  4. AnyRef
  5. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Value Members

  1. 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)

  2. def read(in: RefMapIn, key: String, arity: Int): Convolution2
    Definition Classes
    Convolution2ProductReader