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
- Alphabetic
- By Inheritance
- Convolution2L
- Serializable
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
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
frameSizeis 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[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
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()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )