Packages

object Convolution2L extends Serializable

A frequency-domain convolution UGen using two linearly interpolated fixed kernels. When a trigger is received, a linear fade will be performed from the previously used kernel (internally stored by the UGen) towards the snapshot of the current kernel content upon receiving the trigger.

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.

Note: If a trigger is received before the previous fade is complete, the interpolation is broken and the kernel instead jumps straight to one of the two buffers.

Examples
// three example kernels
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(16)
  val buf   = "kernel".kr(b.id)
  val tr    = "trig"  .tr
  val dur   = 4.0          // fade-time in seconds
  val n     = 2048
  val block = SampleRate.ir / n
  val p     = dur * block  // ... in periods
  Convolution2L.ar(z, buf, tr, 2048, p) * 0.5
}

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

Convolution2

PartConv

Linear Supertypes
Serializable, Serializable, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Convolution2L
  2. Serializable
  3. Serializable
  4. AnyRef
  5. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. def ar(in: GE, kernel: GE, trig: GE = 1, frameSize: GE, fadePeriods: GE = 1): Convolution2L

    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

    begins a fade to update 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)

    fadePeriods

    fade duration expressed as number of convolved blocks. If the desired duration in seconds is dur , then the number of periods can be calculated as fadePeriods = dur * SampleRate.ir / frameSize . (init-time only)

  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )
  7. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  8. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  9. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  10. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  12. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  13. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  14. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  15. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  16. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  17. def toString(): String
    Definition Classes
    AnyRef → Any
  18. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  19. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  20. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )

Inherited from Serializable

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped