Muze Plugin Updated to v. 1.1.3

Updated the Muze plugin to version 1.1.3, adding a fourth reverb algorithm called Indigo to the selection.

indigo

New Features:

  • Indigo: A shimmer & frequency-echo reverb effect for adding both harmonically rich transpositions and inharmonic distortions into your mix.
  • Pitch-Shift and slider knobs control one-octave transposition range and carrier frequency per step.
  • Echo knob controls the diffusion rate of reflections between steps.
  • Minor performance improvements in Reverb-Twister.
  • Minor icon change to Reverb-Lime patterns.
  • Added 10+ more presets

Muze Plugin Updated to v. 1.1.2

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

twister

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)

Muze Plugin Updated to v. 1.1.1

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

lime.png

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: Binaural Reverb/ 3D Panner-Mixer Plugin

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.

lime lime
twister twister

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)
  • Alternative Link

Purchase:

  • Visit our storefront for pricing info on all our products. To directly order, click below!
    fs_button01

Riviera: Basic controls tutorial

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.

Geometric Audio 4: Taxi-Cab Distance Bounds on Integer Lattice Maps

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 k radius L_1 “ball”. This quantity is useful for determining the total costs of processing individual image-sources in cases where k can be known or estimated beforehand (e.g. k selected according to an estimate of a room’s RT60 using Sabine’s Equation).

In D dimensional space, the L_1 norm is given by ||\nu||_1 = \sum_{d=1}^D |\nu_d| where the lattice volume is defined by the number of integer lattice coordinates ||\nu||_1 \leq k. The visual equal-distance curve resembles a diamond in D=2 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 ||\nu||_1 = k (see the animation below). Such ease is not the case for dimensions D>2.

l1_growth.gif
Lattice shell adds to growth of the lattice volume with respect to image-source order k

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

L1_C_S.png

The lattice shell relation C(k,D) follows from observation that all lattice coordinates on the boundary can be formed by augmenting   ||\hat{\nu} ||_1 \leq k, \hat{\nu} \in Z^{D-1} with \tilde{\nu}_D =  k-||\hat{\nu}||_1 and  ||\tilde{\nu} ||_1 \leq k-1, \tilde{\nu} \in Z^{D-1} with \tilde{\nu}_D =  -(k-||\tilde{\nu}||_1). The lattice volume relation S(k,D) 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 k and D  but can be improved by the following ansatz.

Ansatz: Suppose that the lattice volume can be expressed as a polynomial equation given by S(k, D) = 1 + \sum_{d=1}^D P_{d,D} k^d. Substitution into the difference equation gives
L1_polynomial.png

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

L1_matrix_eq.png

where upper triangular matrices B, \bar{B} contain the binomial coefficients and P_D is the vector of unknown polynomial coefficients to be solved for in terms of the polynomial coefficients  P_{D-1} in the preceding dimension.  Carrying the recursion out from the base case S(k, D=1) = 1+2k, the higher-dimensional lattice volumes are given by

L1_table.png

where by inspection, the highest order coefficients decrease towards 0 as D increases. This is expected as the majority of the volume moves towards the origin as D grows. For some context, we can compare the lattice volumes bounded under larger p-norms such as L_2 or Euclidean (see post on Gauss circle problem, volume appx. hypersphere) and the L_{\infty} norm given by ||\nu||_{\infty} = \max \{ |\nu_1|, \hdots, |\nu_D|\} (lattice volume trivially (2k+1)^D). By inspection, the lattice volume gap between L_1 and L_2 grows wider as the leading polynomial terms of L_1 decay to 0 (see plot below).

l_dist_compare.png

 

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.

Geometric Audio 3: Gauss Circle Problem for Integer Sized Room Models (part 2)

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

s_weighting
lh_bound.png

where the cost of computing for q: 0 \leq q \leq  K^2 for max-distance K requires O(D K^3) flops. In practice, the summation should be transposed so that q 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 \hat{S}(q-(\Delta_D + \ell_D i), D-1)). To make the convolution operation explicit, we can vectorize w_D^{|i|} into a sparse signal f(m,D) and re-express the summation as follows:

S_conv.png

where Z is an indicator variable. Note that in consideration of building f(m,D), a larger boundary scaling term \ell_D increases the signal sparsity. i.e. from a computational perspective, there are regions in the parameter space of (\ell_D, K) 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 O(D K^2 \log(K)) flops.

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