Convolution2

object Convolution2 extends ProductReader[Convolution2]

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
Companion
class
trait Product
trait Mirror
trait ProductReader[Convolution2]
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, kernel: GE, trig: GE, frameSize: GE): Convolution2
Value Params
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)''

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)

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