βambi

contribute

regions

Where on the sphere something happens: a set of weights and an orientation, owned by one plugin.

A region says where on the sphere something happens: which part of the field an echo hears, where a room comes back, where a source slows down.

what a region is

A set of weights on the spherical harmonics, plus an orientation. The weights describe a gain by direction, from 1 where sound passes to 0 where it does not, with a fade between. The orientation is yaw, pitch and roll, the same rotation a trajectory’s placement uses.

Applied to a field, a region is a gain matrix on the ambisonic channels. Inside is that matrix, and outside is exactly the rest. Which side a use lets through, and how much, belong to the use and not to the region: a region says where, its use says what.

the kinds

kind its settings
everywhere none: the whole sphere
spot size
band band elevation, thickness
sectors a count, fill
dots a count (the corners of a regular solid), dot size
clouds coverage, contrast, detail, evolve, and a seed
custom the weights themselves, and a gain per order

Every kind with an edge has a softness: how wide the edge fades, in degrees. Clouds and custom have none. Every kind sits the way it is naturally used at zero orientation: a spot faces front, a band is the horizon, four dots are the corners of a tetrahedron.

linear, and honest about it

A region is exactly its weights, with nothing clipped after them. Clipping would itself create new harmonics. The cost of being linear is ringing: at a sharp edge the gain overshoots a little above 1 and below 0. Softness and a higher order reduce it. The finest edge an order can draw is roughly 180° / (N + 1), 45° at third order.

In the encoder a region is evaluated directly at the source’s direction, with no projection, so there it is exact: no ringing, no order ceiling, and always between 0 and 1.

where a region acts

plugin regions
encoder one, as a modulation source: its value at the source’s direction
echo one: the send, which part of the field the taps hear
reverb two: the send, what enters the room, and the return, where the room comes back

A send is a region on the way in; a return is one on the way out. There is no routing between several sends and returns: once signals sum inside an engine, a send can no longer be traced to a return, and a routing matrix would promise what it cannot do.

a region is a plugin’s own

Each region is a fixed slot with host parameters, the same keys, names and ranges in every plugin. It is automated by the host and moved by the matrix. No instance’s audio depends on another instance’s region.

The same region in two plugins is made by copying, not by sharing: a copied automation lane, or copy and paste through the clipboard. A paste brings the region’s definition and the rows from LFOs set to restart that drive it; it leaves the side and the amount, which are the use’s. Nothing follows afterwards. Other instances’ regions are drawn in the scene, dotted and grey, and nothing drawn reaches the audio.

what moves

Every continuous setting of a region is a host parameter and a matrix target: the three angles, their three rates, and each kind’s settings. The kind itself, the counts, the clouds’ seed and custom weights are chosen once. Host automation follows the piece (“at bar 64 the send narrows”); the matrix follows the content (a region that opens with level).

A region’s turn follows the same rates continue switch as everything else that turns: held while stopped and restarted on play, unless the switch says otherwise.