object Convolution2L extends ProductReader[Convolution2L] with 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
- Alphabetic
- By Inheritance
- Convolution2L
- Serializable
- ProductReader
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- 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 if the trigger input is initially zero, 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 asfadePeriods = dur * SampleRate.ir / frameSize
. (init-time only)
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def read(in: RefMapIn, key: String, arity: Int): Convolution2L
- Definition Classes
- Convolution2L → ProductReader
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated