clarity.data.HOA_tools_cec2 module¶
Tools to support higher order ambisonic processing.
- class clarity.data.HOA_tools_cec2.HOARotator(order, resolution)[source]¶
Bases:
object
Provides methods for rotating ambisonics.
- rotate(signal: ndarray, rotation_vector: ndarray) ndarray [source]¶
Apply rotation to HOA signals using precomputed rotation matrices.
- Parameters:
signal (array-like) – ambisonic signals
rotation_vector (array-like) – rotation vector (in radians)
- Returns:
transformed ambisonic signals
- Return type:
array-like
- clarity.data.HOA_tools_cec2.P(i: int, a: int, b: int, order: int, rotation_matrices: numba.typed.List) numba.typed.List ¶
P function for rotation matrix calculation.
- Parameters:
i (int) – index
a (int) – ‘a’ value
b (int) – ‘b’ value
order (int) – order
r (list(matrix)) – rotation matrices
- Returns:
P value
- Return type:
float
- clarity.data.HOA_tools_cec2.U(degree: int, n: int, order: int, rotation_matrices: numba.typed.List) numba.typed.List ¶
U coefficient initialiser for rotation matrix calculation.
- Parameters:
rotation_degree (int) – Upper parameters of spherical harmonic component Y and n the lower.
n (int) – index
order (int) – order
rotation_matrices (list(matrix)) – rotation matrices
- Returns:
U value
- Return type:
float
- clarity.data.HOA_tools_cec2.V(degree: int, n: int, order: int, rotation_matrices: numba.typed.List) numba.typed.List ¶
V coefficient initialiser for rotation matrix calculation.
- Parameters:
degree (int) – valid inputs are int(|m|) <= order.
n (int) – index
order (int) – order
rotation_matrices (list(matrix)) – rotation matrices
- Returns:
V value
- Return type:
float
- clarity.data.HOA_tools_cec2.W(degree: int, n: int, order: int, rotation_matrices: numba.typed.List) numba.typed.List ¶
W coefficient initialiser for rotation matrix calculation.
- Parameters:
degree (int) – degree
n (int) – index
order (int) – order
rotation_matrices (list(matrix)) – rotation matrices
- Returns:
W value
- Return type:
float
- clarity.data.HOA_tools_cec2.ambisonic_convolve(signal: ndarray, hoa_impulse_responses: ndarray, order: int) ndarray [source]¶
Convolve HOA Impulse Responses with signals.
- Parameters:
signal (ndarray[samples]) – the signal to convole
hoa_impulse_response (ndarray[samples, channels]) – the HOA impulse responses
order (int, optional) – ambisonic order.
- Returns:
the convolved signal
- Return type:
np.ndarray[samples, channels]
- clarity.data.HOA_tools_cec2.binaural_mixdown(ambisonic_signals: ndarray, hrir: dict[str, Any], hrir_metadata: dict[str, Any]) ndarray [source]¶
Perform binaural mixdown of ambisonic signals.
- Parameters:
ambisonic_signals (array-like) – inputs
hrir_filename (string) – name of HRIR file
hrir_metadata (dict) – data for channel selection and ambisonic decoding
- Returns:
stereo audio
- Return type:
array
- clarity.data.HOA_tools_cec2.centred_element(reference: ndarray, row: int, col: int)¶
Get value from centered element indexing.
- Parameters:
reference (matrix) – reference input matrix
row (int) – row index
col (int) – column index
- Returns:
matrix element
- Return type:
Any
- clarity.data.HOA_tools_cec2.compute_UVW_coefficients(degree, n, order)¶
Compute U, V and W coefficients for rotation matrix calculation.
- Parameters:
m (index) – degree
n (index) – index
el (index) – order
- Returns:
u, v, w
- Return type:
tuple
- clarity.data.HOA_tools_cec2.compute_band_rotation(order: int, rotation_matrices: numba.typed.List, output)¶
Compute submatrix for rotation matrix.
- Parameters:
order (int) – order of submatrix
rotationmatrices (list(matrix)) – previous and current submatrices
output (matrix) – output destination
- Returns:
rotation submatrix
- Return type:
matrix
- clarity.data.HOA_tools_cec2.compute_rms(input_signal: ndarray, axis: int = 0) ndarray [source]¶
Compute rms values along a given axis. :param input_signal: Input signal :type input_signal: np.ndarray :param axis: Axis along which to compute the Root Mean Square. 0 (default) or 1. :type axis: int
- Returns:
Root Mean Square for the given axis.
- Return type:
float
- clarity.data.HOA_tools_cec2.compute_rotation_matrix(n: int, foa_rotmat: ndarray) ndarray ¶
Generate a rotation matrix to rotate HOA soundfield.
Based on [1]_ and [2]. Operates on HOA of a given order rotates by azimuth theta and elevation phi.
- Parameters:
order (int) – order of ambisonic soundfield
foa_rotmat (arraylike) – rotation matrix to expand
- Returns:
HOA rotation matrix
- Return type:
np.ndarray
References: .. [1] Ivanic J, Ruedenberg K (1996) Rotation Matrices for Real Spherical Harmonics.
Direct Determination J. Phys. Chem. 1996, 100(15):6342–6347. Available at <https://pubs.acs.org/doi/10.1021/jp953350u> and <https://doi.org/10.1021/JP9833350>
- clarity.data.HOA_tools_cec2.compute_rotation_vector(start_angle: float, end_angle: float, signal_length: int, start_idx: int, end_idx: int) ndarray [source]¶
Compute the rotation vector.
- Parameters:
start_angle (float)
end_angle (float)
signal_length (int)
start_idx (int)
end_idx (int)
- Returns:
_description_
- Return type:
np.array
- clarity.data.HOA_tools_cec2.convert_a_to_b_format(front_left_up: ndarray, front_right_down: ndarray, back_left_down: ndarray, back_right_up: ndarray)[source]¶
Converts 1st order A format audio into 1st order B format. For more information on ambisonic formats see Gerzon, Michael A. “Ambisonics. Part two: Studio techniques.” (1975).
- Parameters:
front_left_up (np.ndarray) – Front-left-up audio
front_right_down (np.ndarray) – Front-right-down audio
back_left_down (np.ndarray) – Back-left-down audio
back_right_up (np.ndarray) – Back-right-up audio
- Raises:
TypeError – input must be numpy array
ValueError – all inputs must have same dimensions
- Returns:
4xN array containing B-format audio. indexed w,x,y,z
- Return type:
nd.array
- clarity.data.HOA_tools_cec2.dB_to_gain(x: int | float) float [source]¶
Convert dB to gain.
- Parameters:
x (float)
- Returns
float:
- clarity.data.HOA_tools_cec2.dot(A, B)¶
Wraps np.dot for numba #@njit.
- Parameters:
A (Array)
B (Array)
- Returns:
output
- Return type:
Array
- clarity.data.HOA_tools_cec2.equalise_rms_levels(inputs: list[ndarray]) list[ndarray] [source]¶
Equalise RMS levels.
- Parameters:
inputs (array) – signals
- Returns:
normalised signals
- Return type:
array
- clarity.data.HOA_tools_cec2.rotation_control_vector(array_length: int, start_index: int, end_index: int, smoothness: int = 1) ndarray [source]¶
Generate mapped rotation control vector for values of theta.
- Parameters:
array_length (int) – Length of array
start_index (int) – Start position
end_index (int)
smoothness (int, optional)
- Returns:
mapped rotation control vector
- Return type:
array
- clarity.data.HOA_tools_cec2.smoothstep(x: ndarray, x_min: float = 0.0, x_max: float = 1.0, N: int = 1) ndarray [source]¶
Apply the smoothstep function.
- Parameters:
x (np.ndarray) – input
x_min (float, optional) – clamp minimum. Defaults to 0.
x_max (float, optional) – clamp maximum. Defaults to 1.
N (int, optional) – smoothing factor. Defaults to 1.
- Returns:
smoothstep values
- Return type:
np.ndarray