Unleash the Twister! Our third reverb algorithm for the Muze plugin!

New features / changes

Twister is an amplitude-delay modulation effect for mixing sound reflections into washy reverb tails

Create whoosh sounds, chorus/buzz/swarm, and wind effects

Rate, depth, wind controls are automatable

Enabled pan knob for Lime when spatialization is disabled

Added icons for Lime early reflection patterns

Extended reverb algorithm descriptions in manual

Added 10+ more presets

Release notes:
v. 1.1.2a
-Fixed FLStudio automation clip-GUI parameter change deadlock (No longer need to disable “Notify about parameter change” setting)

The next iteration of the Muze plugin is live! Screen shot and workflow video below:

New features / changes

Added new echo-blender reverb algorithm (second of nine) and selector for changing modes (see GUI + manual for details)

Sound-sources are now draggable in XY plane in sound-stage

Right-click on sound-source toggles mute button

Enable wrap-around mouse wheel scrolling on source and orientation knobs

Forum link added to top right

Lower left displays registered user name only

Added 10 new presets

Those who have already purchased can update their full version via their Fastspring link (if you were a beta-tester, contact us). The demo links have also been updated.

Release notes:
v. 1.1.1
-Fixed crash on certain mac DAWs when switching between reverb modes
-Added version numbering to upper-right corner

Muze is multi-purpose VST/AU reverb plugin that combines a 3D audio mixer with a high quality binaural near & far field model. The mixer component enables tight control over the early spatial impression of the acoustic field while psychoacoustic models add essential directional cues to help localize sound; our reverb designs integrate with the binaural cues, giving appropriate contrast for the early spatial impression to sit in.

Muze supports up to 8 input channels with an additional ninth summation channel that doubles as a delay unit. Channels are associated with point sound-sources in an interactive graphical display and have separate processing paths that come together in a shared reverb component. Create whisper effects, wide impressions, impossible spaces. Up-mix mono sources into stereo/binaural. Virtualize 5.1+ to headphones by placing virtual speakers on the sound-stage. Switch to the panning mode for speaker setups.

Features:

Multiple reverb algorithms (Velvet, Lime, Twister, Indigo) model characteristics of specular/diffuse, discrete, modulated, and shimmered reflections.

8 channel virtualization, each with automatable azimuth, elevation, and distance controls

Adjustable listener controls for scaling interaural time delay and aligning yaw/pitch orientations

Spin knob enables automatic head-rotation, unleashing new possibilities for different modulation effects

Unique spatial-reverb designs integrate with the HRTF model, producing an immersive reverberant field.

Reverb characteristics such as room size, sound depth, high frequency dampening/reverb times are automatable

Delay unit integrates with the reverb, creating DUB-type effects

Rendering modes togglable between binaural/panning processing

All sampling rates supported for HRTFs

Graphical display for visualizing sound-sources & listener position and orientations

Updates are free

80+ presets to get you started

Samples:

Vocals by the talented Stephanie Kay (Stars Collide): Dry first, followed by alternating rotations along yaw and pitch axes for no-verb, no-verb near-field, small room, hall, diffuse hall, and cave

Jazz instrumental by Maurizio Pagnutti (All The Gin Is Gone’ & ‘Bess): Dancing around instruments!

Loopy spatial effects!

Workflow / Automation / Mono-Source Demo:

Demo & Specifications:

Windows 7+: VST2 Win32 + x64, SSE2 enabled processor

Mac OSX 10.7+: VST2/AU, SSE2 enabled processor

Download Link (Demo restriction is brief silence every 30 sec)

Here’s a quick video about the controls in the Riviera plugin (turn on closed-captions for descriptions). The dry clip is a collection of transients typically used to stress-test reverb effects. Below is a cross-post of the readme contained within the plugin with some further elaborations.

Controls:
-Fine-grain adjustments of knob are possible with the mouse wheel + holding down either shift or ctr on keyboard.
-Double-click a parameter will reset it to default.

Voom (N-Orthotope) panel: Generalization of room into arbitrary dimensions.
5 faders, each with three knobs determine the characteristics of each dimension of the voom.

Size: The length of the dimension in meters. The sound-source is effectively placed at the center of this dimension. Enlarging this tends to increase RT60 and sense of “spaciousness” due to greater separation of early reflections.

Depth: Where you (the listener) is positioned in whole (integer) meters relative to the center of the room. 0 percent is coincident to the sound-source so there’s maximal delay between the direct sound and early reflections. 50 percent is coincident to the “wall” or boundary so the direct and early reflections are less distinguishable from reverb. Note that the IR is computed for depths that would map to whole meters so for a 6 meter dimension, there are only 4 positions the listener can be in (0, 1, 2, 3 meters from center).

Reflection: The dB loss incured per reflection between sound-source and boundary. Setting this to low values (e.g. 0.1 dB loss) will largely increase RT60 which got truncated to 5 seconds for performance reasons.

V1-V5 buttons: Enable/disable individual dimensions; enabling any combination of the N buttons generates an N-D room, disabling all dimensions will cause bypass. e.g. enabling (V1, V3, V5) generates a 3D room as does (V2, V3, V4). Note that in higher dimensional vooms, the reverb build-up creates a swell if you aren’t coincident to the sound-source so there’s hardly any distinction between direct, early, and late reflections. This motivates some time manipulation controls so that we may listen in these spaces.

Time panel: Manipulates geometry, distances between direct/early/late reflections, and more.

Stretch: A form of super-sampling of the underlying space which has the effect of spacing all the reflections out. This is geometrically equivalent to scaling your the voom and depth by a constant which will allow us to achieve long reverb tails.
1: no change
>1: Oversample geometry for longer IR
Note that freq. decay is applied after the fact so the reported RT60 will not scale proportionately.

Reverse: Mirrors the first % of the IR to create a pre-verb / pre-fading effect. 0% default gives no pre-verb where the first non-zero tap is the direct onset of the sound-source. 100% completely reverses the IR.

Linearity: A form of biasing the sampling in the geometry to either towards the earlier reflections as opposed to the later ones. In physical terms, this is modeling variable acceleration of the speed-of-sound without annoying Doppler effects. If late is oversampled (sound-velocty accelerates over time), the result is a long IR with distinct (well-separated) early reflections (more like echos). If early is oversampled (sound-velocity decelerates overtime), the result is a short IR with a very fast attack with a diminished reverb tail as all the earlier reflections have been compressed towards the direct sound-source.

Attenuation: This modifies the generalization of the inverse square law in higher-dimensions for sound-source energy loss. Low g causes less attenuation over distances (slow roll-off) which will emphasize the late-tail / reverb over the direct+early reflections without IR length. Large g causes more attenuation (fast roll-off) which will emphasize direct-early over reverb.
Delay: The direct sound-source normally has a non-zero time-of-arrival depending on the listener depth but for practical usage (mixing), a separate control was created for delaying the entire IR. By default, physical delay between source-listener is truncated to 0. Use this in conjunction with T0 (see below) and the mix knob to do pre-fading.

T0: Direct truncation of the early part of the IR. Use it to remove the direct sound-source onset, start the IR anywhere within the reverb tail, or decrease pre-fading time and even gate the reverb tail with the reverse knob.

FFT: Controls the internal max-power block-size parameter without effecting latency (default latency is twice the latency set within the DAW due to some DAWs using variable block-sizes). Decreasing this will lower peak real-time processing at the cost of increase average real-time CPU usage. Increasing this will raise peak real-time processing but with decreased the average real-time CPU usage.

Frequency panel: All mediums (air, water, dry wall, glass) have frequency dependent absorption characteristics that will color the IR over time (see spectrogram). Two knobs are provided that parametrically fits a smooth function between 0 to pi radians in unnormalized frequency domain.

High/low decay or dampening: Increasing these will more quickly attenuate respective high and low frequencies from sampling_rate/2 Hz to 0 Hz over time; all freq. between have decay bounded between these two settings. Setting them equal to each other has the effect of applying frequency-independent dB loss (i.e. gain control).

Low cut Hz/Quality: Filter out low frequencies from 0 to f0 Hz with strength Q. Note that large Q will delay the signal a little (due to linear-phase) so watch the latency or use the T0 control to cut out the initial pre-ring.

Misc panel:
Your standard pan, stereo and mix (wet/dry) controls. These all have frame-buffer length latency and will not incur a recomputation of the IR.

Pan: Applies dB loss to either left or right channels.

Stereo: Applies low ms delay to either left or right channels.

Mix: Basic fader between original and processed signals.

Fast mode: Enable this so that non-voom parameter updates are faster at the expense of more memory usage.

IR normalization: If enabled, will normalize impulse response if sum of squared exceeds 1. Otherwise, beware of speakers if you start adjusting attenuation and reflection settings too aggressively.

Recall from the introductory post, the taxi-cab distance metric on the integer lattice map relates the max-order of image-sources to the lattice volume or the total number of image-sources contained within a radius “ball”. This quantity is useful for determining the total costs of processing individual image-sources in cases where can be known or estimated beforehand (e.g. selected according to an estimate of a room’s RT60 using Sabine’s Equation).

In dimensional space, the norm is given by where the lattice volume is defined by the number of integer lattice coordinates . The visual equal-distance curve resembles a diamond in and the growth rate of the lattice volume seems obvious if we introduce a lattice-shell term given by the number of integer coordinates that satisfies (see the animation below). Such ease is not the case for dimensions .

We start with a counting argument that relates the lattice shell and lattice volumes across dimensions via a recurrence relation:

The lattice shell relation follows from observation that all lattice coordinates on the boundary can be formed by augmenting with and with . The lattice volume relation follows from the definition of a lattice shell which through substitution can be re-written as self-referential difference equation between successive dimensions. The counting solution is practical for small and but can be improved by the following ansatz.

Ansatz: Suppose that the lattice volume can be expressed as a polynomial equation given by . Substitution into the difference equation gives

where are unknown polynomial coefficients of the powers of radius . Using the binomial theorem, the powers of rearranged as to form a generalized square matrix-system given by

where upper triangular matrices contain the binomial coefficients and is the vector of unknown polynomial coefficients to be solved for in terms of the polynomial coefficients in the preceding dimension. Carrying the recursion out from the base case , the higher-dimensional lattice volumes are given by

where by inspection, the highest order coefficients decrease towards as increases. This is expected as the majority of the volume moves towards the origin as grows. For some context, we can compare the lattice volumes bounded under larger p-norms such as or Euclidean (see post on Gauss circle problem, volume appx. hypersphere) and the norm given by (lattice volume trivially ). By inspection, the lattice volume gap between and grows wider as the leading polynomial terms of decay to (see plot below).

This concludes our four-part foray into image-source models within high-dimensional integer lattice maps. If any new or interesting results come up or any errors found, I will update accordingly.

Notes: Animations generated in GeoGebra, equations and figures were from my draft paper.

Recall in the previous post our derivation of the Gauss circle recurrence relation generalized to arbitrary dimensions, scaling, offset, and weights:

where the cost of computing for for max-distance requires flops. In practice, the summation should be transposed so that is incremented within the inner loop as to take advantage of vectorization/SIMD memory access patterns.

A second approach for those familiar with DSP utilizes the fact that the summation term in the recurrence relation passes as a form of sparse convolution due to the quadratic-striding memory access patterns of . To make the convolution operation explicit, we can vectorize into a sparse signal and re-express the summation as follows:

where is an indicator variable. Note that in consideration of building , a larger boundary scaling term increases the signal sparsity. i.e. from a computational perspective, there are regions in the parameter space of where either direct sparse-convolution or the direct evaluation of the recurrence relation will be faster than an implementation dependent Fast Fourier Transform (FFT) based convolution despite the latter’s lower asymptotic cost of flops.

With the distance bound and Gauss circle problem out of the way, we will continue our investigation of lattice volume bounds in terms of the or taxi-cab distance in the next post.