# hoa.lib

Faust library for high order ambisonic. Its official prefix is `ho`.

#### References

- https://github.com/grame-cncm/faustlibraries/blob/master/hoa.lib

## Encoding/decoding Functions

### `(ho.)encoder`

Ambisonic encoder. Encodes a signal in the circular harmonics domain depending on an order of decomposition and an angle.

#### Usage

    encoder(n, x, a) : _

Where:

- `n`: the order
- `x`: the signal
- `a`: the angle

### `(ho.)decoder`

Decodes an ambisonics sound field for a circular array of loudspeakers.

#### Usage

    _ : decoder(n, p) : _

Where:

- `n`: the order
- `p`: the number of speakers

#### Note

Number of loudspeakers must be greater or equal to 2n+1. It's preferable to use 2n+2 loudspeakers.

### `(ho.)decoderStereo`

Decodes an ambisonic sound field for stereophonic configuration. An "home made" ambisonic decoder for stereophonic restitution (30° - 330°) : Sound field lose energy around 180°. You should use `inPhase` optimization with ponctual sources.

#### Usage

    _ : decoderStereo(n) : _

Where:

- `n`: the order

## Optimization Functions

Functions to weight the circular harmonics signals depending to the ambisonics optimization. It can be `basic` for no optimization, `maxRe` or `inPhase`.

### `(ho.)optimBasic`

The basic optimization has no effect and should be used for a perfect circle of loudspeakers with one listener at the perfect center loudspeakers array.

#### Usage

    _ : optimBasic(n) : _

Where:

- `n`: the order

### `(ho.)optimMaxRe`

The maxRe optimization optimizes energy vector. It should be used for an auditory confined in the center of the loudspeakers array.

#### Usage

    _ : optimMaxRe(n) : _

Where:

- `n`: the order

### `(ho.)optimInPhase`

The inPhase Optimization optimizes energy vector and put all loudspeakers signals in phase. It should be used for an auditory.

#### Usage

    _ : optimInPhase(n) : _

Where:

- `n`: the order

### `(ho.)wider`

Can be used to wide the diffusion of a localized sound. The order depending signals are weighted and appear in a logarithmic way to have linear changes.

#### Usage

    _ : wider(n,w) : _

Where:

- `n`: the order
- `w`: the width value between 0 - 1

### `(ho.)map`

It simulates the distance of the source by applying a gain on the signal and a wider processing on the soundfield.

#### Usage

    map(n, x, r, a)

Where:

- `n`: the order
- `x`: the signal
- `r`: the radius
- `a`: the angle in radian

### `(ho.)rotate`

Rotates the sound field.

#### Usage

    _ : rotate(n, a) : _

Where:

- `n`: the order
- `a`: the angle in radian

## 3D Functions

### `(ho.)encoder3D`

Ambisonic encoder. Encodes a signal in the circular harmonics domain depending on an order of decomposition, an angle and an elevation.

#### Usage

    encoder3D(n, x, a, e) : _

Where:

- `n`: the order
- `x`: the signal
- `a`: the angle
- `e`: the elevation

### `(ho.)optimBasic3D`

The basic optimization has no effect and should be used for a perfect sphere of loudspeakers with one listener at the perfect center loudspeakers array.

#### Usage

    _ : optimBasic3D(n) : _

Where:

- `n`: the order

### `(ho.)optimMaxRe3D`

The maxRe optimization optimize energy vector. It should be used for an auditory confined in the center of the loudspeakers array.

#### Usage

    _ : optimMaxRe3D(n) : _

Where:

- `n`: the order

### `(ho.)optimInPhase3D`

The inPhase Optimization optimizes energy vector and put all loudspeakers signals in phase. It should be used for an auditory.

#### Usage

    _ : optimInPhase3D(n) : _

Where:

- `n`: the order

#### Search

From here you can search these documents. Enter your search terms below.

#### Keyboard Shortcuts

Keys | Action
--- | ---
`?` | Open this help
`n` | Next page
`p` | Previous page
`s` | Search