sof/tools/tune/tdfb/example_line_0mm36mm146mm18...

58 lines
1.6 KiB
Matlab

function example_line_0mm36mm146mm182mm()
% Creates beamformer for device with device with microphones
% at 0, 36, 146, 182mm locations
% SPDX-License-Identifier: BSD-3-Clause
%
% Copyright (c) 2022, Intel Corporation. All rights reserved.
%
% Author: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
line_xyz(16e3, 40, -90:15:90);
line_xyz(48e3, 80, -90:15:90);
end
function line_xyz(fs, fir_length, az)
tplg_fn = sprintf('coef_line4_0mm36mm146mm182mm_%dkhz.m4', fs/1e3);
sofctl_fn = sprintf('coef_line4_0mm36mm146mm182mm_%dkhz.txt', fs/1e3);
% Get defaults
close all;
bf = bf_defaults();
bf.fs = fs;
bf.beta = 5;
% Setup array
bf.array = 'xyz';
bf.mic_y = [182 146 36 0]*1e-3;
bf.mic_x = [0 0 0 0];
bf.mic_z = [0 0 0 0];
% Despite xyz array this is line, so use the -90 .. +90 degree enum scale for
% angles. Array equals 'line' get this setting automatically.
bf.angle_enum_mult = 15;
bf.angle_enum_offs = -90;
% Design beamformer
bf.fir_length = fir_length;
bf.steer_az = az;
bf.steer_el = 0 * az;
bf.input_channel_select = [0 1 2 3]; % Input four channels
bf.output_channel_mix = [3 3 3 3]; % Mix filters to channel 2^0 and 2^1
bf.output_channel_mix_beam_off = [1 0 0 2]; % Filter 1 to channel 2^0, filter 4 to channel 2^1
bf.output_stream_mix = [0 0 0 0]; % Mix filters to stream 0
bf.num_output_channels = 2; % Stereo
%bf.sofctl_fn = fullfile(bf.sofctl_path, sofctl_fn);
%bf.tplg_fn = fullfile(bf.tplg_path, tplg_fn);
bf = bf_filenames_helper(bf, 'line4_0mm36mm146mm182mm');
bf = bf_design(bf);
% Export files for topology and sof-ctl
bf_export(bf);
end