ambisonic 0.4.1

Compose and play 3D audio.
Documentation
//! Render *B-format* audio streams to streams suitable for playback on audio equipment.

use std::collections::VecDeque;
use std::fs::File;
use std::io::{BufReader, Read};
use std::time::Duration;

use rodio::Source;

use crate::bformat::{Bformat, Bweights};

/// Stereo Playback configuration
///
/// Playback over two physical speakers in front of the listener. For best results both speakers
/// should be placed symmetrically to the left and the right at the same distance.
///
/// The default setting assumes an arrangement of +/- 45ยบ.
pub struct StereoConfig {
    left_mic: Bweights,
    right_mic: Bweights,
}

impl StereoConfig {
    /// Set direction of the left speaker
    pub fn set_left_direction(&mut self, dir: [f32; 3]) {
        self.left_mic = Bweights::virtual_microphone(dir, 0.5)
    }

    /// Set direction of the right speaker
    pub fn set_right_direction(&mut self, dir: [f32; 3]) {
        self.right_mic = Bweights::virtual_microphone(dir, 0.5)
    }
}

impl Default for StereoConfig {
    fn default() -> Self {
        StereoConfig {
            left_mic: Bweights::virtual_microphone([-1.0, 1.0, 0.0], 0.5),
            right_mic: Bweights::virtual_microphone([1.0, 1.0, 0.0], 0.5),
        }
    }
}

/// Render a *B-format* stream to a stereo representation.
///
/// Suitable for playback over two speakers arranged in front of the user.
pub struct BstreamStereoRenderer<I> {
    input: I,
    buffered_sample: Option<f32>,
    left_mic: Bweights,
    right_mic: Bweights,
}

impl<I> BstreamStereoRenderer<I> {
    /// Construct a new stereo renderer with default settings
    pub fn new(input: I, config: StereoConfig) -> Self {
        BstreamStereoRenderer {
            input,
            buffered_sample: None,
            left_mic: config.left_mic,
            right_mic: config.right_mic,
        }
    }
}

impl<I> Source for BstreamStereoRenderer<I>
where
    I: Source<Item = Bformat>,
{
    #[inline(always)]
    fn current_frame_len(&self) -> Option<usize> {
        self.input.current_frame_len()
    }

    #[inline(always)]
    fn channels(&self) -> u16 {
        2 // well, it's stereo...
    }

    #[inline(always)]
    fn sample_rate(&self) -> u32 {
        self.input.sample_rate()
    }

    #[inline(always)]
    fn total_duration(&self) -> Option<Duration> {
        self.input.total_duration()
    }
}

impl<I> Iterator for BstreamStereoRenderer<I>
where
    I: Source<Item = Bformat>,
{
    type Item = f32;

    fn next(&mut self) -> Option<Self::Item> {
        match self.buffered_sample.take() {
            Some(s) => Some(s),
            None => {
                let sample = self.input.next()?;

                let left = self.left_mic.dot(sample);
                let right = self.right_mic.dot(sample);

                // emit left channel now, and right channel next time
                self.buffered_sample = Some(right);
                Some(left)
            }
        }
    }
}

/// Head-Related-Transfer-Function configuration
///
/// Intended to be used for playback over headphones. HRTFs describe delay and level differences
/// between both ears, depending on the direction of the sound.
///
/// The default setting uses a set of real but arbitrary HRIRs, that may not be suitable for
/// all listeners.
pub struct HrtfConfig {
    sample_rate: u32,
    virtual_speakers: Vec<VirtualSpeaker>,
}

impl HrtfConfig {
    pub fn from_file(filename: &str) -> Self {
        // todo: proper error handling
        let file = File::open(filename).unwrap();
        let mut bufr = BufReader::new(file);
        let mut data = String::new();
        bufr.read_to_string(&mut data).unwrap();

        let mut lines = data.split('\n');
        let fs: f32 = lines.next().unwrap().parse().unwrap();
        assert_eq!(lines.next(), Some(""));

        let mut virtual_speakers = Vec::new();

        loop {
            let bweights: Bweights = match lines.next() {
                None | Some("") => break,
                Some(l) => l.split(", ").map(|s| s.parse().unwrap()).collect(),
            };

            let left_hrir: Vec<f32> = match lines.next() {
                None | Some("") => panic!("expected hrir"),
                Some(l) => l.split(", ").map(|s| s.parse().unwrap()).collect(),
            };

            let right_hrir: Vec<f32> = match lines.next() {
                None | Some("") => panic!("expected hrir"),
                Some(l) => l.split(", ").map(|s| s.parse().unwrap()).collect(),
            };

            assert_eq!(lines.next(), Some(""));

            virtual_speakers.push(VirtualSpeaker {
                bweights,
                left_hrir,
                right_hrir,
            });
        }

        assert!(lines.next().is_none());

        HrtfConfig {
            sample_rate: fs as u32,
            virtual_speakers,
        }
    }
}

/// Render a *B-format* stream for headphones using head related transfer functions.
pub struct BstreamHrtfRenderer<I> {
    input: I,
    buffered_output: Option<f32>,
    convolution_buffers: Vec<VecDeque<f32>>,
    virtual_speakers: Vec<VirtualSpeaker>,
}

impl<I> BstreamHrtfRenderer<I>
where
    I: Source<Item = Bformat>,
{
    /// Construct a new HRTF renderer with default settings
    pub fn new(input: I, config: HrtfConfig) -> Self {
        assert_eq!(config.sample_rate, input.sample_rate());

        let convolution_buffers = config
            .virtual_speakers
            .iter()
            .map(|speaker| {
                let n = speaker.left_hrir.len().max(speaker.right_hrir.len());
                VecDeque::from(vec![0.0; n])
            })
            .collect();

        BstreamHrtfRenderer {
            input,
            buffered_output: None,
            convolution_buffers,
            virtual_speakers: config.virtual_speakers,
        }
    }
}

impl<I> Source for BstreamHrtfRenderer<I>
where
    I: Source<Item = Bformat>,
{
    #[inline(always)]
    fn current_frame_len(&self) -> Option<usize> {
        self.input.current_frame_len()
    }

    #[inline(always)]
    fn channels(&self) -> u16 {
        2 // well, it's stereo...
    }

    #[inline(always)]
    fn sample_rate(&self) -> u32 {
        self.input.sample_rate()
    }

    #[inline(always)]
    fn total_duration(&self) -> Option<Duration> {
        self.input.total_duration()
    }
}

impl<I> Iterator for BstreamHrtfRenderer<I>
where
    I: Source<Item = Bformat>,
{
    type Item = f32;

    fn next(&mut self) -> Option<Self::Item> {
        match self.buffered_output.take() {
            Some(s) => Some(s),
            None => {
                let sample = self.input.next()?;

                let (mut left, mut right) = (0.0, 0.0);

                for (speaker, buffer) in self
                    .virtual_speakers
                    .iter()
                    .zip(self.convolution_buffers.iter_mut())
                {
                    let signal = speaker.bweights.dot(sample);
                    buffer.pop_back();
                    buffer.push_front(signal);

                    left += buffer
                        .iter()
                        .zip(&speaker.left_hrir)
                        .map(|(s, h)| s * h)
                        .sum::<f32>();

                    right += buffer
                        .iter()
                        .zip(&speaker.right_hrir)
                        .map(|(s, h)| s * h)
                        .sum::<f32>();
                }

                // emit left channel now, and right channel next time
                self.buffered_output = Some(right);
                Some(left)
            }
        }
    }
}

struct VirtualSpeaker {
    bweights: Bweights,
    left_hrir: Vec<f32>,
    right_hrir: Vec<f32>,
}

#[allow(clippy::excessive_precision)]
#[allow(clippy::unreadable_literal)]
impl Default for HrtfConfig {
    fn default() -> Self {
        HrtfConfig {
            sample_rate: 48000,
            virtual_speakers: vec![
                VirtualSpeaker {
                    bweights: Bweights::new(
                        0.7071067811865475,
                        -0.816496580927726,
                        0.4714045207910317,
                        -0.3333333333333333,
                    ),
                    left_hrir: vec![
                        6.249694706639275e-05,
                        -0.00028243952328921296,
                        0.00039321097574429587,
                        0.00023837495973566547,
                        -0.0014637806452810764,
                        0.0025595282204449177,
                        -0.0018447857291903347,
                        -0.0006779695104341954,
                        0.004498468188103288,
                        -0.005442464607767761,
                        0.003759668907150626,
                        0.0018640623602550477,
                        -0.006082437466830015,
                        0.007756511913612485,
                        -0.003998097963631153,
                        -0.0021380867110565305,
                        0.008306290255859494,
                        -0.009208190022036433,
                        0.004648972535505891,
                        0.0036788525176234543,
                        -0.01069918624125421,
                        0.011754243168979883,
                        -0.005348835256882012,
                        -0.006127204978838563,
                        0.01575250760652125,
                        -0.015574992867186666,
                        0.005190895753912628,
                        0.012431800132617354,
                        -0.024314825423061848,
                        0.021705138497054577,
                        -0.0008787026308709756,
                        -0.028504931833595037,
                        0.04286067094653845,
                        -0.027962650638073683,
                        -0.028608553111553192,
                        0.08247961290180683,
                        -0.0754381762817502,
                        -0.04592651501297951,
                        0.34144293516874313,
                        0.37954293191432953,
                        0.20059462636709213,
                        0.13062418438494205,
                        -0.12131291441619396,
                        -0.2912873215973377,
                        -0.13734559528529644,
                        -0.16622664406895638,
                        -0.34683477133512497,
                        -0.11651527136564255,
                        0.29630551114678383,
                        0.31389355659484863,
                        0.10556899942457676,
                        0.010491994908079505,
                        -0.08526593446731567,
                        -0.1666230894625187,
                        -0.09255216456949711,
                        -0.02493776148185134,
                        -0.06238626316189766,
                        -0.07918930612504482,
                        -0.04680347163230181,
                        -0.03289035055786371,
                        -0.016290670027956367,
                        0.059497542679309845,
                        0.09085910394787788,
                        -0.0033185965730808675,
                        -0.06864672992378473,
                        -0.03842157777398825,
                        -0.02236495492979884,
                        -0.036113797686994076,
                        -0.027344368863850832,
                        0.005672716652043164,
                        0.009797628736123443,
                        -0.00959300494287163,
                        0.01942918635904789,
                        0.03471678588539362,
                        -0.008699684985913336,
                        -0.011614387622103095,
                        0.00012201226127217524,
                        -0.027856722008436918,
                        -0.022657185327261686,
                        0.007768319337628782,
                        0.0032951869070529938,
                        -0.012769994791597128,
                        -0.006417034310288727,
                        0.006715834024362266,
                        0.007260838174261153,
                        0.01944523537531495,
                        0.031128812115639448,
                        0.010596893262118101,
                        -0.0014670316886622459,
                        -0.0048954482190310955,
                        -0.0237991102039814,
                        -0.02312120283022523,
                        -0.01996532315388322,
                        -0.03204412525519729,
                        -0.025383979082107544,
                        -0.008575051906518638,
                        0.008682043990120292,
                        0.018517260905355215,
                        0.006145743536762893,
                        0.0014424450637307018,
                        0.00692145258653909,
                        0.0007937258487800136,
                        -0.004630479670595378,
                        -0.005305505474098027,
                        -0.004413420392666012,
                        -0.0028745652525685728,
                        -0.000573285433347337,
                        0.0016807687643449754,
                        -0.005815992481075227,
                        -0.0025802908930927515,
                        0.012141265906393528,
                        0.005421288660727441,
                        0.0013678490358870476,
                        0.009112955303862691,
                        0.0040744003490544856,
                        0.00702875608112663,
                        0.012124794302508235,
                        0.0028214772464707494,
                        0.0015385470760520548,
                        0.002506087184883654,
                        -0.0008853519102558494,
                        -0.0012675259495154023,
                        -0.004783707845490426,
                        -0.0028250509058125317,
                        0.0037158126360736787,
                        0.005279784090816975,
                        0.006231000879779458,
                        0.0051083555445075035,
                        0.007632565102539957,
                        0.01048899837769568,
                        0.0036740972427651286,
                        0.001983111578738317,
                        0.0035381512134335935,
                        -0.000574306286580395,
                        -0.00025279156034230255,
                        -0.00010961520274577197,
                        -0.0036387465661391616,
                        -0.005428191507235169,
                        -0.006147056119516492,
                        -0.00927771208807826,
                        -0.01860566553659737,
                        -0.01763490028679371,
                        -0.003227702691219747,
                        0.0023253697145264596,
                        0.007290048524737358,
                        0.013826603535562754,
                        0.011595143005251884,
                        0.015828644391149282,
                        0.01609584200195968,
                        0.0016346463235095143,
                        -0.007241895073093474,
                        -0.01138537423685193,
                        -0.01037969021126628,
                        0.0011331626592436805,
                        0.008892763289622962,
                        0.008529684855602682,
                        0.004342010070104152,
                        0.005106285680085421,
                        0.010983191896229982,
                        0.009235655888915062,
                        0.009059850708581507,
                        0.008976171957328916,
                        0.000733575361664407,
                        0.002697095915209502,
                        0.004676739044953138,
                        -0.0029117308440618217,
                        -0.0007357707363553345,
                        0.000952893533394672,
                        0.0011695423745550215,
                        0.010196842486038804,
                        0.00852988741826266,
                        -0.0001782797698979266,
                        -0.0019086155225522816,
                        -0.005011738394387066,
                        -0.009173234575428069,
                        -0.0106781383510679,
                        -0.007800499442964792,
                        -0.002403025864623487,
                        0.001391688419971615,
                        0.007369904196821153,
                        0.007325524929910898,
                        0.0006268388824537396,
                        0.0006270359153859317,
                        0.0006073368058423512,
                        0.00029126365916454233,
                        0.003846815670840442,
                        0.0025295838713645935,
                        0.0008593829261371866,
                        -0.0011694073327817023,
                        -0.004735290713142604,
                        -0.0022460984473582357,
                        -0.002000743697863072,
                        -0.0013906770618632436,
                        0.004937582416459918,
                        0.0062575447373092175,
                        0.00903693726286292,
                        0.013184006093069911,
                        0.011330225970596075,
                        0.011064284481108189,
                        0.007377627771347761,
                        0.003141598717775196,
                        0.005115159437991679,
                        0.00288839713903144,
                        0.004457836039364338,
                        0.009146445663645864,
                        0.004348017100710422,
                        0.0034181925002485514,
                        0.005017484072595835,
                        0.0008086793241091073,
                        -0.00046795172238489613,
                        -0.0010066710819955915,
                        0.00020813791707041673,
                        0.0020555066294036806,
                        -0.00028366699552861974,
                        0.0023597529798280448,
                        0.000795554879005067,
                        -0.008020600653253496,
                        -0.006558361928910017,
                        -0.0061799760442227125,
                        -0.011644241167232394,
                        -0.008227570215240121,
                        -0.0023492817126680166,
                        0.0032510177697986364,
                        0.009940146701410413,
                        0.010209906613454223,
                        0.006349647301249206,
                        0.0023066771973390132,
                        0.00014037607797945384,
                        -0.0018855153757613152,
                        -0.006463265744969249,
                        -0.004409760003909469,
                        0.0020518433302640915,
                        0.003715761413332075,
                        0.005091885104775429,
                        0.005362458759918809,
                        0.004074789467267692,
                        0.00421386124799028,
                        0.0024150448734872043,
                        0.001287688355660066,
                        0.001167533264379017,
                        -1.478542458244192e-05,
                        0.0005885542122996412,
                        0.0006207956903381273,
                        0.00037084686482558027,
                        0.001622876588953659,
                        0.0013793885591439903,
                        0.0007684599404456094,
                        0.0006727885192958638,
                        0.00018602282580104657,
                        8.988539775600657e-05,
                        -1.880817762867082e-05,
                        -0.00010163993465539534,
                        1.8745540728559718e-05,
                        -1.2127803756811772e-05,
                        -8.994766744763183e-06,
                        3.0542912554665236e-06,
                    ],
                    right_hrir: vec![
                        -7.430274617803434e-08,
                        1.1837041711260099e-05,
                        2.7806806883745594e-05,
                        1.7789141111279605e-05,
                        7.019369149929844e-05,
                        4.433234607859049e-05,
                        4.8247729864669964e-05,
                        0.00017556818420416676,
                        0.00011443739822425414,
                        8.748877007747069e-05,
                        2.398554215687909e-05,
                        8.81516200479382e-06,
                        0.00019158680515829474,
                        0.00023150856577558443,
                        0.00033961463486775756,
                        0.00021816011212649755,
                        -5.9880726439587306e-05,
                        3.6231592730473494e-05,
                        -3.2372486202802975e-05,
                        4.466863174457103e-05,
                        0.0003129999458906241,
                        0.0001980259366973769,
                        0.0002640761886141263,
                        0.00022030639229342341,
                        0.00013081615179544315,
                        0.00024147659132722765,
                        -0.00011378861017874442,
                        -2.1573011963482713e-05,
                        0.0001596360198163893,
                        -2.7104642867925577e-05,
                        0.0004646642992156558,
                        0.0003377717439434491,
                        0.0001928548408614006,
                        0.0004198677561362274,
                        -0.00033451658964622766,
                        0.00017006213965942152,
                        0.0001375170086248545,
                        -0.0006700678932247683,
                        0.0016156323545146734,
                        0.0017146150639746338,
                        0.00018766069842968136,
                        0.0010383360495325178,
                        -0.0008132927905535325,
                        -0.0010293642117176205,
                        0.0005134844104759395,
                        -0.0014031420869287103,
                        -0.0001611851985217072,
                        -8.703448656888213e-05,
                        -0.00025424364139325917,
                        0.003698954824358225,
                        -0.0011867145076394081,
                        -0.0012200324272271246,
                        0.003565862134564668,
                        -0.0059060618514195085,
                        0.0016185017011594027,
                        0.0068399758310988545,
                        -0.014855533372610807,
                        0.014004349941387773,
                        0.05863261874765158,
                        0.03937677480280399,
                        0.036324840039014816,
                        0.0463759945705533,
                        0.01143505098298192,
                        0.0032596310484223068,
                        0.007010766421444714,
                        -0.01736373407766223,
                        -0.00920102873351425,
                        -0.005979694542475045,
                        -0.02895493060350418,
                        -0.0128682772628963,
                        -0.00012679883184318896,
                        -0.008265192154794931,
                        0.010135478805750608,
                        0.014804477104917169,
                        -0.0015207059914246202,
                        -0.0023443903774023056,
                        -0.007926352554932237,
                        -0.013404757482931018,
                        -0.005525948945432901,
                        -0.0036046578316017985,
                        -0.0050194020150229335,
                        -0.008011156460270286,
                        -0.014105775626376271,
                        -0.013409695820882916,
                        -0.011032249312847853,
                        -0.007381795439869165,
                        -0.0005086315286462195,
                        0.0021535190171562135,
                        0.0017999154806602746,
                        -0.005219165468588471,
                        -0.013754398096352816,
                        -0.008534631924703717,
                        -0.00229333367315121,
                        -0.002709147520363331,
                        0.0008611468365415931,
                        0.000615372700849548,
                        -0.0052778125973418355,
                        -0.007260394631884992,
                        -0.010091251460835338,
                        -0.013752584345638752,
                        -0.012552784755825996,
                        -0.010199000826105475,
                        -0.00878144579473883,
                        -0.006994022405706346,
                        -0.004267204785719514,
                        -0.0009532646799925715,
                        0.0007109336729627103,
                        0.0005880153912585229,
                        -0.0013743899762630463,
                        -0.004340381419751793,
                        -0.005149883800186217,
                        -0.006286018178798258,
                        -0.00779984169639647,
                        -0.00451864063506946,
                        -0.0010312621452612802,
                        -0.0007047363033052534,
                        0.0005129132478032261,
                        -0.0007348020153585821,
                        -0.0036647971137426794,
                        -0.0019499106565490365,
                        -0.0006101031249272637,
                        -0.0014678205479867756,
                        -0.00017620806829654612,
                        -0.0008285394142149016,
                        -0.0032210946665145457,
                        -0.0015857953985687345,
                        0.001961265516001731,
                        0.004463792720343918,
                        0.006398887489922345,
                        0.006752574699930847,
                        0.003742000844795257,
                        -0.0003468018985586241,
                        -0.0009635552123654634,
                        -0.0015161276678554714,
                        -0.005255865398794413,
                        -0.0071313855005428195,
                        -0.007838738965801895,
                        -0.008589525823481381,
                        -0.005183807807043195,
                        -0.0010729440691648051,
                        0.0018278611241839826,
                        0.005961521528661251,
                        0.006752827321179211,
                        0.003495782148092985,
                        0.0012219848576933146,
                        0.0015007484762463719,
                        0.0013753093662671745,
                        -0.003992719284724444,
                        -0.008650572272017598,
                        -0.007775836274959147,
                        -0.010342682944610715,
                        -0.010716045508161187,
                        -0.0018408500181976706,
                        0.00038224745367188007,
                        -0.0027608496020548046,
                        0.0023857004998717457,
                        0.005189026705920696,
                        0.0016209263412747532,
                        0.0021833344362676144,
                        0.002832771569956094,
                        9.508249604550656e-05,
                        -0.00047864828957244754,
                        0.000206435433938168,
                        0.00036970119253965095,
                        0.0005882854384253733,
                        -0.0002065124863293022,
                        -0.0007716364052612334,
                        -0.0007408687815768644,
                        -0.001353623520117253,
                        -0.00013877995115763042,
                        0.0031332045909948647,
                        0.0046643882524222136,
                        0.004633018688764423,
                        0.00555948237888515,
                        0.007235232624225318,
                        0.007464002701453865,
                        0.0052502373000606894,
                        0.003215426695533097,
                        0.0025200264644809067,
                        0.001215625088661909,
                        0.0008073481876635924,
                        0.0024427357129752636,
                        0.003150530392304063,
                        0.002682756748981774,
                        0.0028062736964784563,
                        0.003302594122942537,
                        0.0036008606548421085,
                        0.0036204661591909826,
                        0.0040247736615128815,
                        0.004071285366080701,
                        0.0022365362383425236,
                        0.0012069480726495385,
                        0.002365447871852666,
                        0.001750577357597649,
                        0.000389081978937611,
                        0.0021996382565703243,
                        0.002590870135463774,
                        -0.00012188041182525922,
                        0.0013633556955028325,
                        0.004091382143087685,
                        0.0007738138810964301,
                        -0.0023682448954787105,
                        -0.0020002662495244294,
                        -0.0024377810768783092,
                        -0.0017275444406550378,
                        0.0005160105502000079,
                        0.0014785752864554524,
                        0.001458525366615504,
                        0.0009179780317936093,
                        0.001876622554846108,
                        0.002034110075328499,
                        -0.0014337169704958797,
                        -0.0017423529061488807,
                        -3.793538553509279e-05,
                        -0.0012784055434167385,
                        0.001290770887862891,
                        0.00581553322263062,
                        0.006456398405134678,
                        0.007593865739181638,
                        0.0076399149838835,
                        0.0048319585039280355,
                        0.0029108612216077745,
                        0.0004465049278223887,
                        -0.001864349760580808,
                        -0.0027001334819942713,
                        -0.003885716141667217,
                        -0.003539768513292074,
                        -0.0013919148477725685,
                        0.0010734963871072978,
                        0.0031622510869055986,
                        0.0037370406789705157,
                        0.00449674524134025,
                        0.0042752965237013996,
                        0.002145593607565388,
                        0.0015995313879102468,
                        0.00046508586819982156,
                        -0.0010994675540132448,
                        -0.0002555615355959162,
                        -0.00034920103644253686,
                        0.00018782917322823778,
                        0.002268736861879006,
                        0.0020288737141527236,
                        0.0020643495372496545,
                        0.002804987016133964,
                        0.0017188326455652714,
                        0.0008251126564573497,
                        0.00039863763959147036,
                        -0.00023764179786667228,
                        -0.00035221608413849026,
                        -0.00020372021026560105,
                        4.474953584576724e-05,
                        0.00019254270227975212,
                        0.00012836489077017177,
                        9.029105967783835e-05,
                        3.3309468108200235e-05,
                        -1.0638805036933263e-06,
                    ],
                },
                VirtualSpeaker {
                    bweights: Bweights::new(
                        0.7071067811865475,
                        0.816496580927726,
                        0.4714045207910317,
                        -0.3333333333333333,
                    ),
                    left_hrir: vec![
                        4.88212606342131e-06,
                        1.3327436363397283e-05,
                        7.997744546628383e-06,
                        -1.2683767636190169e-05,
                        -1.6893814063223545e-05,
                        -5.1981919568788726e-05,
                        -8.713887837075163e-05,
                        -1.8534450418883353e-05,
                        -1.1113567097709165e-05,
                        4.8982656153384596e-05,
                        0.00026392017389298417,
                        0.0003181998181389645,
                        0.0003356216984684579,
                        0.00035676399420481175,
                        0.0002749317354755476,
                        0.00024255339667433873,
                        0.00011186997653567232,
                        -1.5991536201909184e-05,
                        -4.6801687858533114e-05,
                        -0.0002138770832971204,
                        -0.00017042344552464783,
                        -1.5157953612288111e-05,
                        -6.867293905088445e-05,
                        0.00011524858564371243,
                        0.0002402230711595621,
                        0.0001338859601673903,
                        0.00030915132811060175,
                        0.00037645280826836824,
                        0.0002677591510291677,
                        0.00022164562324178405,
                        5.09627989231376e-05,
                        2.860803306248272e-05,
                        -7.047448889352381e-05,
                        -0.0002604072324174922,
                        -0.00011810538126155734,
                        -0.00014332978935271967,
                        -5.562782007473288e-05,
                        0.00012641305147553794,
                        -6.264418175305764e-06,
                        0.000589943811064586,
                        0.0009048316860571504,
                        0.00038882884837221354,
                        0.0005616044290945865,
                        6.495528850791743e-05,
                        -0.0004123782127862796,
                        0.00019079419871559367,
                        -0.0005938442700426094,
                        -0.00047160068788798526,
                        0.00046031156671233475,
                        -0.0004930646537104622,
                        0.0006788840255467221,
                        0.0008226516365539283,
                        -0.0009835005039349198,
                        0.0015563440683763474,
                        -0.00029806436941726133,
                        -0.0019440017058514059,
                        0.005011885077692568,
                        -0.002617577265482396,
                        -0.0047825806541368365,
                        0.032635407987982035,
                        0.05263352766633034,
                        0.032484622206538916,
                        0.03195778699591756,
                        0.03562275553122163,
                        0.010284124873578548,
                        -0.003402877482585609,
                        0.00045171072997618467,
                        -0.0027854161453433335,
                        -0.007694459054619074,
                        -0.01617541303858161,
                        -0.01742280670441687,
                        0.0021309865405783057,
                        0.010114352917298675,
                        -0.0021232565632089972,
                        -0.0021949762594886124,
                        0.004881483037024736,
                        -0.0012499229342211038,
                        -0.010427572997286916,
                        -0.013053041184321046,
                        -0.014247758081182837,
                        -0.013786347117275,
                        -0.008739310433156788,
                        -0.005483978311531246,
                        -0.004698482807725668,
                        0.002147007908206433,
                        0.006726436549797654,
                        -0.0006379398109856993,
                        -0.004794772539753467,
                        7.016358267719625e-05,
                        -0.0032908329740166664,
                        -0.017090410692617297,
                        -0.024142954498529434,
                        -0.01780591788701713,
                        -0.00800405628979206,
                        -0.0009409544873051345,
                        0.004676895041484386,
                        0.0046557135647162795,
                        -6.421038960979786e-05,
                        -0.0009270982991438359,
                        -0.0028483918868005276,
                        -0.010959318606182933,
                        -0.015721176750957966,
                        -0.014470535097643733,
                        -0.012626503594219685,
                        -0.010645377915352583,
                        -0.008243810734711587,
                        -0.004511364677455276,
                        0.00027487481929711066,
                        0.002605214831419289,
                        0.002766838006209582,
                        0.0009170400153379887,
                        -0.003819945559371263,
                        -0.006823094445280731,
                        -0.006996472366154194,
                        -0.00796775973867625,
                        -0.008179080323316157,
                        -0.006339934770949185,
                        -0.004372575203888118,
                        -0.0027354934718459845,
                        -0.0016794931434560567,
                        0.0002793584644678049,
                        0.0039026219747029245,
                        0.00537336862180382,
                        0.004412277776282281,
                        0.003592235443647951,
                        0.0014174397801980376,
                        -0.0015163689386099577,
                        -0.0027410045731812716,
                        -0.0040370464557781816,
                        -0.006302004330791533,
                        -0.007434799335896969,
                        -0.006787246675230563,
                        -0.0049323937855660915,
                        -0.0011201528832316399,
                        0.004677849938161671,
                        0.008259380119852722,
                        0.008094704244285822,
                        0.007637975504621863,
                        0.004988989676348865,
                        -9.179396442959842e-06,
                        -0.0016769676585681736,
                        -0.0036822419497184455,
                        -0.007870799163356423,
                        -0.007224565488286316,
                        -0.005916262743994594,
                        -0.006273854523897171,
                        -0.0008503306162310764,
                        0.003656598273664713,
                        0.0015825040463823825,
                        0.0012546857760753483,
                        0.0013518867490347475,
                        -0.00107847765320912,
                        -0.0006394629599526525,
                        -2.821407861119951e-05,
                        -0.002138352137990296,
                        -0.0025924350484274328,
                        -0.0019365997286513448,
                        -0.002234968269476667,
                        -0.0019006950606126338,
                        -0.0005136209074407816,
                        0.001079428184311837,
                        0.0020082575792912394,
                        0.0019135962065774947,
                        0.0008259680180344731,
                        -0.00032577219826634973,
                        0.0002686410880414769,
                        0.0005364705430110916,
                        -0.001344160409644246,
                        -0.0011683143384288996,
                        0.0014173125964589417,
                        0.0022470341355074197,
                        0.0025013473350554705,
                        0.0032574590295553207,
                        0.002425875572953373,
                        0.0016328426136169583,
                        0.002240780886495486,
                        0.0018547670333646238,
                        0.0007868731336202472,
                        0.0013046932872384787,
                        0.0026794281438924372,
                        0.003725533897522837,
                        0.00447266356786713,
                        0.004736734845209867,
                        0.004996536299586296,
                        0.0051169650396332145,
                        0.003993767313659191,
                        0.00296466430881992,
                        0.00323199579725042,
                        0.003039033617824316,
                        0.002185025659855455,
                        0.002109288761857897,
                        0.002229342790087685,
                        0.001760208688210696,
                        0.0012653229350689799,
                        0.0007926919352030382,
                        -1.3321509868546855e-05,
                        -0.00030289213100331835,
                        0.0002799878166115377,
                        0.00040141316276276484,
                        0.00028682132324320264,
                        0.0008928584429668263,
                        0.00110000888525974,
                        0.0008861961396178231,
                        0.001123773618019186,
                        0.001145380228990689,
                        0.0012144715583417565,
                        0.0015817253733985126,
                        0.0013684089935850352,
                        0.00101699166407343,
                        0.000797123575466685,
                        0.0003089042365900241,
                        -4.3264344640192576e-05,
                        -0.00021224726879154332,
                        -0.0001475689987273654,
                        0.0002519778900023084,
                        0.000645803811494261,
                        0.001337014400633052,
                        0.0022436077415477484,
                        0.0029499316588044167,
                        0.0037491769762709737,
                        0.004362295148894191,
                        0.00444486242486164,
                        0.004187464655842632,
                        0.003725991991814226,
                        0.003168876573909074,
                        0.002016432408709079,
                        0.0005312914800015278,
                        -0.00018838047253666446,
                        -0.0004819103196496144,
                        -0.0004894843368674628,
                        -7.490060852433089e-05,
                        2.5284593903052155e-05,
                        0.0003260909943492152,
                        0.0008695109136169776,
                        0.0005918831811868586,
                        0.00021059007849544287,
                        0.00013232066521595698,
                        -0.00018082975657307543,
                        -0.00043606236431514844,
                        -0.0005287028761813417,
                        -0.0004422263737069443,
                        -0.0002549507189542055,
                        -0.00022671511032967828,
                        -5.0582184485392645e-05,
                        0.0003005042890436016,
                        0.0006262331589823589,
                        0.0008962382707977667,
                        0.0008756404713494703,
                        0.0006440986908273771,
                        0.0004443036232260056,
                        0.00026440986403031275,
                        0.00010835359717020765,
                        1.1892751672348822e-05,
                        -1.3353469512367155e-05,
                        -3.5050703672823147e-06,
                        4.2953377743515375e-07,
                    ],
                    right_hrir: vec![
                        6.0388802012312226e-05,
                        -0.00016104753740364686,
                        -1.2015073025395395e-06,
                        0.0006974997813813388,
                        -0.001440281339455396,
                        0.0013774687249679118,
                        0.0002266208321088925,
                        -0.0024881880381144583,
                        0.0039908732287585735,
                        -0.0026051636086776853,
                        -0.0005919394243392162,
                        0.004494344466365874,
                        -0.005170257645659149,
                        0.003282709512859583,
                        0.0015929262735880911,
                        -0.0051484553841874,
                        0.0063634710386395454,
                        -0.0029229471692815423,
                        -0.002406316780252382,
                        0.006962530314922333,
                        -0.007183789275586605,
                        0.002583065361250192,
                        0.004684188752435148,
                        -0.009057705756276846,
                        0.00851678429171443,
                        -0.0002987235529872123,
                        -0.007990453159436584,
                        0.013368402142077684,
                        -0.007814542041160166,
                        -0.004390274407342076,
                        0.016931891441345215,
                        -0.017936518415808678,
                        0.0011285571963526309,
                        0.021658623591065407,
                        -0.035715901758521795,
                        0.010265382006764412,
                        0.050705475732684135,
                        -0.07769471500068903,
                        -0.002450010215397924,
                        0.32014284282922745,
                        0.3675757348537445,
                        0.17924098297953606,
                        0.06276061292737722,
                        -0.11177791282534599,
                        -0.2258940041065216,
                        -0.1330767758190632,
                        -0.17142347991466522,
                        -0.23926572874188423,
                        -0.040701464749872684,
                        0.12996249832212925,
                        0.17350446432828903,
                        0.17771797254681587,
                        0.004350072413217276,
                        -0.14494359493255615,
                        -0.09769289754331112,
                        -0.047880359925329685,
                        -0.009466857300139964,
                        -0.0005509203765541315,
                        -0.07458946667611599,
                        -0.0844816118478775,
                        -0.040153320878744125,
                        -0.015571094118058681,
                        0.029664470348507166,
                        0.047440496273338795,
                        0.01857117749750614,
                        -0.016211954643949866,
                        -0.03618371672928333,
                        -0.025632393080741167,
                        -0.027270102873444557,
                        -0.028027547523379326,
                        -0.007809643866494298,
                        -0.0206342083401978,
                        -0.015330701135098934,
                        0.025112195871770382,
                        0.02637578174471855,
                        0.01200978527776897,
                        -0.007415172294713557,
                        -0.02759003546088934,
                        -0.014648648211732507,
                        -0.007632636115886271,
                        -0.004860551853198558,
                        0.00587892543990165,
                        -0.0034967678948305547,
                        -0.0038210643106140196,
                        0.00018477574485586956,
                        2.29525380746054e-05,
                        0.013697479153051972,
                        0.005192877724766731,
                        0.0020165946625638753,
                        0.016913070576265454,
                        -1.4505553735943977e-05,
                        0.0019746788893826306,
                        0.014324072981253266,
                        -0.01713008969090879,
                        -0.024686965625733137,
                        -0.01205745036713779,
                        -0.017083632992580533,
                        -0.003992084821220487,
                        -0.001631650811759755,
                        -0.017354427836835384,
                        -0.008735035080462694,
                        0.005393711617216468,
                        0.01242619357071817,
                        0.013033191207796335,
                        0.0016689152107574046,
                        -0.007156152278184891,
                        -0.01072753919288516,
                        -0.006563756032846868,
                        -0.00025308561816927977,
                        -0.002094181691063568,
                        0.0033241690834984183,
                        0.006206281250342727,
                        -0.0005658719237544574,
                        0.003051833191420883,
                        0.0032347909291274846,
                        -0.0008500811236444861,
                        0.005822128732688725,
                        0.004441721539478749,
                        -0.0009177927859127522,
                        0.004873136931564659,
                        0.006741980905644596,
                        0.0022347002231981605,
                        0.0007568136788904667,
                        -0.00030540599254891276,
                        -0.0015685465768910944,
                        0.0036455606459639966,
                        0.010427111992612481,
                        0.0069700193125754595,
                        0.003038742288481444,
                        0.0046134949661791325,
                        0.0009234482422471046,
                        -0.002343581145396456,
                        -0.0016547780251130462,
                        -0.001686438627075404,
                        0.0012509281805250794,
                        0.0026409668498672545,
                        0.0024389554164372385,
                        0.005118533736094832,
                        0.005227242363616824,
                        0.004356306162662804,
                        0.000508723605889827,
                        -0.008706831722520292,
                        -0.012471955269575119,
                        -0.009015165269374847,
                        -0.0011319012992316857,
                        0.006849308265373111,
                        0.008451947360299528,
                        0.00997120514512062,
                        0.011566424509510398,
                        0.009792814962565899,
                        0.006809139740653336,
                        -0.002395894844084978,
                        -0.009547146619297564,
                        -0.0069458718644455075,
                        -0.004164222918916494,
                        -0.001051397921401076,
                        -0.0025299758999608457,
                        -0.010101433144882321,
                        -0.007055857568047941,
                        0.002382701204624027,
                        0.00912636169232428,
                        0.013823534827679396,
                        0.009991743136197329,
                        0.006326686125248671,
                        0.007912642904557288,
                        0.003954381390940398,
                        0.00013962810044176877,
                        0.00023533655621577054,
                        0.0005820943988510408,
                        0.004941381048411131,
                        0.008389498689211905,
                        0.006175246671773493,
                        0.002524018636904657,
                        -0.00015088665350049268,
                        -0.0014845629630144686,
                        -0.0026445885305292904,
                        -0.0023031156160868704,
                        -0.0005545754538616166,
                        0.00133623878355138,
                        0.005804037791676819,
                        0.006735709612257779,
                        0.002460400282870978,
                        0.001292375527555123,
                        0.0003550533438101411,
                        0.0002942467290267814,
                        0.005256165168248117,
                        0.008002687827683985,
                        0.007539379294030368,
                        0.005673773121088743,
                        0.0009429540659766644,
                        -0.003604732046369463,
                        -0.00630794616881758,
                        -0.005695655709132552,
                        -0.004019894695375115,
                        -0.0027250387938693166,
                        0.002627416979521513,
                        0.0055232178419828415,
                        0.005164228496141732,
                        0.00930031412281096,
                        0.010157240321859717,
                        0.007787237409502268,
                        0.00820184824988246,
                        0.005960613489151001,
                        0.0038976978976279497,
                        0.003832779184449464,
                        0.003949328092858195,
                        0.005512075149454176,
                        0.002492292842362076,
                        -0.000531420846527908,
                        0.0007660062692593783,
                        -0.0017340587510261685,
                        -0.001686623290879652,
                        0.0020559343101922423,
                        0.0020602563745342195,
                        0.0035956691135652363,
                        0.003701615205500275,
                        0.00019422985133132897,
                        -0.002100272395182401,
                        -0.005406003328971565,
                        -0.0059116369811818,
                        -0.004984181723557413,
                        -0.004588585288729519,
                        0.0021456039394252002,
                        0.00569098861888051,
                        0.0043445557821542025,
                        0.0058915268164128065,
                        0.001696469116723165,
                        -0.0018262020603287965,
                        0.0005219165177550167,
                        -0.001590299216331914,
                        -0.0008773127046879381,
                        0.001428638497600332,
                        -0.0007324183388845995,
                        0.0018407212337478995,
                        0.0029530320898629725,
                        0.0010463841317687184,
                        0.0029232021188363433,
                        0.0016727857291698456,
                        0.0006080678940634243,
                        0.001715871476335451,
                        -4.9727982514014e-05,
                        -7.959223694342654e-05,
                        9.100264833250549e-05,
                        -0.0007891788118286058,
                        0.00030301287551992573,
                        0.00037403417081804946,
                        0.00024564478735555895,
                        0.0007850679685361683,
                        0.00034169101127190515,
                        0.0002569049865996931,
                        0.00024342984033864923,
                        -8.135214102367172e-06,
                        5.087994850327959e-05,
                        2.0839365788560826e-05,
                        -5.126954647494131e-06,
                        4.190779634427599e-06,
                    ],
                },
                VirtualSpeaker {
                    bweights: Bweights::new(
                        0.7071067811865475,
                        0.0,
                        -0.9428090415820634,
                        -0.3333333333333333,
                    ),
                    left_hrir: vec![
                        9.52822404087783e-06,
                        -3.5951090922026196e-05,
                        0.00010234392902930267,
                        3.597948079914204e-05,
                        -0.00010943757843051571,
                        0.00043971860577585176,
                        -0.0002872883851523511,
                        0.00015387609892059118,
                        0.0005898686868022196,
                        -0.0006601939821848646,
                        0.000847721821628511,
                        0.00011919804819626734,
                        -0.0005332484215614386,
                        0.0011117889516754076,
                        -0.0006626371032325551,
                        0.00016644384231767617,
                        0.000945063802646473,
                        -0.0009391793719260022,
                        0.001118711443268694,
                        0.00021283274691086262,
                        -0.0007705613097641617,
                        0.0015156430890783668,
                        -0.0007970425940584391,
                        0.00012608443284989335,
                        0.0012940938177052885,
                        -0.0014553876826539636,
                        0.0012569726095534861,
                        0.00020453526303754188,
                        -0.0012859748676419258,
                        0.002140922879334539,
                        -0.0013282208237797022,
                        -0.00012508799045463093,
                        0.002096103271469474,
                        -0.0026003466336987913,
                        0.0019346871704328805,
                        0.000815570674603805,
                        -0.0030456020613200963,
                        0.003847298212349415,
                        -0.002147908235201612,
                        -0.002252049744129181,
                        0.005014518974348903,
                        -0.0061098107835277915,
                        0.0013744908210355788,
                        0.0071157829370349646,
                        -0.009951872052624822,
                        0.00797219923697412,
                        0.008041249820962548,
                        -0.028256967198103666,
                        0.0231960229575634,
                        0.13080048374831676,
                        0.16412679105997086,
                        0.11109716258943081,
                        0.03674140200018883,
                        0.02220591763034463,
                        0.019238796085119247,
                        -0.08088949136435986,
                        -0.16542557626962662,
                        -0.09834178723394871,
                        0.005870317691005766,
                        0.007893320871517062,
                        -0.04545657895505428,
                        -0.04080573562532663,
                        0.020981617271900177,
                        0.04993267357349396,
                        0.02230315702036023,
                        -0.01721418695524335,
                        -0.0399296497926116,
                        -0.04159102216362953,
                        -0.030782734975218773,
                        -0.02110813045874238,
                        -0.017622322775423527,
                        -0.005916040390729904,
                        0.013353823451325297,
                        0.007449713884852827,
                        -0.007366109639406204,
                        0.004569100856315345,
                        0.00661877915263176,
                        -0.01578878378495574,
                        -0.022049567196518183,
                        -0.01428640098311007,
                        -0.010681297862902284,
                        -0.005506366724148393,
                        0.002920285623986274,
                        0.010023200884461403,
                        0.0084893056191504,
                        0.0027889825287275016,
                        0.0030150386737659574,
                        0.0012561350013129413,
                        -0.003819851262960583,
                        -0.00408923311624676,
                        -0.003453851386439055,
                        -0.004631526826415211,
                        -0.0037263857666403055,
                        0.0011180011642863974,
                        0.004601435211952776,
                        0.0030677669565193355,
                        0.0032662192825227976,
                        0.0024384757853113115,
                        -0.004424555227160454,
                        -0.007851385744288564,
                        -0.00743413285817951,
                        -0.008082080166786909,
                        -0.007105532567948103,
                        -0.0055292254546657205,
                        -0.002334634482394904,
                        0.001956721971509978,
                        0.0022519043704960495,
                        0.0010267207107972354,
                        -0.0005730186603614129,
                        -0.0022475286095868796,
                        -0.0007305927283596247,
                        -0.0008077150414464995,
                        -0.00429822102887556,
                        -0.005730004631914198,
                        -0.004460422496777028,
                        -0.001990164309972897,
                        -0.0008988355693873018,
                        -0.0030752079328522086,
                        -0.004883681540377438,
                        -0.0033661292400211096,
                        -0.0009867531480267644,
                        -0.0015440251445397735,
                        -0.0031196841155178845,
                        -0.002076226082863286,
                        -0.00026727675503934734,
                        0.0009680219955043867,
                        0.0009681056690169498,
                        -0.0003891911910613999,
                        0.0006318857776932418,
                        0.0026635851827450097,
                        0.002754520101007074,
                        0.0027006096206605434,
                        0.002037474769167602,
                        0.0022805557819083333,
                        0.005228950758464634,
                        0.007190914475359023,
                        0.005999362911097705,
                        0.0009951118408935145,
                        -0.0031349295750260353,
                        0.0009930894884746522,
                        0.00679549528285861,
                        0.005037806113250554,
                        -0.001045328172040172,
                        -0.004942495143041015,
                        -0.004945992259308696,
                        -0.005698939203284681,
                        -0.0074592308374121785,
                        -0.003175578312948346,
                        0.0037133102887310088,
                        0.003643058880697936,
                        -0.0030927301850169897,
                        -0.010190277826040983,
                        -0.013184217968955636,
                        -0.011643330799415708,
                        -0.005769290146417916,
                        0.0008910895849112421,
                        0.0017292003030888736,
                        0.001315484696533531,
                        0.005088591715320945,
                        0.006091717514209449,
                        0.003183239314239472,
                        0.0022326350153889507,
                        0.0032888224814087152,
                        0.003962028713431209,
                        0.0025611702585592866,
                        0.000751976840547286,
                        0.0011153722152812406,
                        0.002374587638769299,
                        0.0039996899431571364,
                        0.00500153168104589,
                        0.004513902531471103,
                        0.004810942627955228,
                        0.005259563331492245,
                        0.005455418140627444,
                        0.006340111722238362,
                        0.004458473122213036,
                        0.000648668356006965,
                        0.0003813388684648089,
                        0.0022314745001494884,
                        0.0024445686722174287,
                        0.0024172657867893577,
                        0.0039031266351230443,
                        0.0048586929915472865,
                        0.0013483359361998737,
                        -0.007553744944743812,
                        -0.012908366043120623,
                        -0.007394013227894902,
                        -0.002527006436139345,
                        -0.00299187027849257,
                        0.0040030223317444324,
                        0.010991283925250173,
                        0.005438647931441665,
                        -0.000958522578002885,
                        -0.0017224143084604293,
                        -0.0001362802959192777,
                        0.00212884959182702,
                        0.0013030479021836072,
                        0.003121646004728973,
                        0.006183032528497279,
                        0.00013850469258613884,
                        -0.0027116065029986203,
                        0.0035768296220339835,
                        0.00461754942080006,
                        0.002331276918994263,
                        0.0029172320500947535,
                        0.0032883297535590827,
                        0.0037381038418971,
                        0.003985307412222028,
                        0.004237479297444224,
                        0.004684377345256507,
                        0.005437181098386645,
                        0.008575746905989945,
                        0.008513826178386807,
                        0.003957996086683124,
                        0.0018549617379903793,
                        0.0007466327951988205,
                        0.00010300261237716768,
                        0.00010257343092234805,
                        -0.001962795067811385,
                        -0.001395819999743253,
                        -0.0005797971607535146,
                        -0.0036364168045111,
                        -0.003649572317954153,
                        -0.0021777680376544595,
                        -0.0006756417860742658,
                        0.0033111433731392026,
                        0.001399391476297751,
                        -0.003410153731238097,
                        -0.0018828557222150266,
                        -0.0013218361709732562,
                        -0.003889813378918916,
                        -0.0035072036553174257,
                        -0.0006018146086717024,
                        0.0026723614428192377,
                        0.003529568202793598,
                        0.002293830766575411,
                        0.002166104532079771,
                        0.002437909279251471,
                        0.0024713578750379384,
                        0.0019061221973970532,
                        0.00048150610382435843,
                        -0.0001776230965333525,
                        -7.415444542857585e-05,
                        0.00026298395823687315,
                        0.0006031878729118034,
                        0.0007220348925329745,
                        0.0010495277092559263,
                        0.000937527947826311,
                        0.0004367112705949694,
                        0.00036307028494775295,
                        0.0002585888796602376,
                        8.504477591486648e-05,
                        8.283464012492914e-05,
                        5.550915375351906e-05,
                        2.3210061499412404e-05,
                        7.3890271323762136e-06,
                    ],
                    right_hrir: vec![
                        1.847928274401056e-05,
                        -1.1761288760681055e-05,
                        -7.122177521523554e-05,
                        0.0003193273732904345,
                        -0.0003459094659774564,
                        0.00023680287995375693,
                        0.0005150257129571401,
                        -0.0008673933189129457,
                        0.0011778466432588175,
                        -0.00022311436623567715,
                        -0.0005993644299451262,
                        0.0017050404858309776,
                        -0.0013074920570943505,
                        0.0005927702659391798,
                        0.0010262940486427397,
                        -0.0016357794811483473,
                        0.0017660320736467838,
                        -0.0003978497989010066,
                        -0.0008587220509070903,
                        0.002182546886615455,
                        -0.0017505187133792788,
                        0.0007929479033919051,
                        0.0012573863205034286,
                        -0.0022832931426819414,
                        0.002487059391569346,
                        -0.0006385230517480522,
                        -0.0012277503265067935,
                        0.0031848184880800545,
                        -0.002686545776668936,
                        0.001151111428043805,
                        0.0020213035168126225,
                        -0.003555421717464924,
                        0.003970071265939623,
                        -0.0010046092211268842,
                        -0.002346122928429395,
                        0.0053535361075773835,
                        -0.005096463137306273,
                        0.0012646388495340943,
                        0.003753068158403039,
                        -0.008234312990680337,
                        0.007125159609131515,
                        -0.001477139740018174,
                        -0.008083556313067675,
                        0.0141730101313442,
                        -0.010649497853592038,
                        -0.001637704117456451,
                        0.023431689478456974,
                        -0.030791040044277906,
                        0.006510987295769155,
                        0.0948167871683836,
                        0.08402463980019093,
                        0.11686742305755615,
                        0.11976245790719986,
                        0.022590546868741512,
                        0.020170777570456266,
                        -0.0048214750131592155,
                        -0.11331218294799328,
                        -0.09145615622401237,
                        -0.035313612315803766,
                        -0.042110555805265903,
                        -0.018947060452774167,
                        -0.021055520046502352,
                        -0.038113079499453306,
                        -0.0012060744484188035,
                        0.02429830376058817,
                        0.01871738932095468,
                        0.0023950470495037735,
                        -0.019472433486953378,
                        -0.02404071856290102,
                        -0.024236927274614573,
                        -0.02748823957517743,
                        -0.024755774065852165,
                        -0.015303421532735229,
                        -0.0006936475256225094,
                        -0.002460875257384032,
                        -0.0025789288338273764,
                        0.012694649631157517,
                        0.0036959978751838207,
                        -0.00934092910028994,
                        -0.007772613898850977,
                        -0.01776870689354837,
                        -0.01410461962223053,
                        0.0014435940829571337,
                        -0.0003378354085725732,
                        -0.0009658761700848117,
                        -0.0008709228859515861,
                        -0.001411114790244028,
                        0.007905530510470271,
                        0.00839670014102012,
                        0.002892597985919565,
                        0.0007423460192512721,
                        -0.005253431154415011,
                        -0.004316079430282116,
                        0.0014815593021921813,
                        0.0014822550292592496,
                        0.0014746528177056462,
                        8.403359061048832e-05,
                        -0.0030783464899286628,
                        -0.004208135651424527,
                        -0.005284326616674662,
                        -0.006064153276383877,
                        -0.006079392624087632,
                        -0.005110790370963514,
                        -0.004514443571679294,
                        -0.0032727315556257963,
                        0.0008650222298456356,
                        0.001138440493377857,
                        -0.0005333597437129356,
                        7.068746526783798e-05,
                        -0.002943405997939408,
                        -0.0031187458080239594,
                        -0.0002889821189455688,
                        -0.0035972773912362754,
                        -0.004821679613087326,
                        -0.00360298523446545,
                        -0.004874569713138044,
                        -0.0028093141736462712,
                        -0.0020554296497721225,
                        -0.0041470633004792035,
                        -0.0030836297082714736,
                        -0.0024592719273641706,
                        -0.002823029353749007,
                        -0.0020268674416001886,
                        -0.001044086311594583,
                        0.00011566262401174754,
                        0.0009037133713718504,
                        0.0021114302217029035,
                        0.0018978930893354118,
                        0.0011892944894498214,
                        0.0036853936035186052,
                        0.003321332042105496,
                        0.0006811068305978552,
                        0.0005894284913665615,
                        -0.001502906234236434,
                        -0.0013245039735920727,
                        0.002091095957439393,
                        0.001412518904544413,
                        0.0017676175048109144,
                        0.0030330862500704825,
                        0.0013390362437348813,
                        0.0017072913760785013,
                        0.0011752673162845895,
                        -0.0008183650061255321,
                        0.00044546563003677875,
                        0.0009400917770108208,
                        0.0007697864930378273,
                        0.0017422516248188913,
                        0.001046381366904825,
                        0.0005973738734610379,
                        0.0004552602331386879,
                        -0.001969788718270138,
                        -0.0047072480083443224,
                        -0.0058124406496062875,
                        -0.006046152557246387,
                        -0.005672696861438453,
                        -0.0033460973645560443,
                        -0.0003507384826662019,
                        0.0022101978538557887,
                        0.005742645589634776,
                        0.006770963664166629,
                        0.004926259280182421,
                        0.004431842244230211,
                        0.00325359491398558,
                        0.0026493973564356565,
                        0.003893851535394788,
                        0.0016930697893258184,
                        -0.0010230918269371614,
                        -0.0005360439536161721,
                        0.00025271558115491644,
                        0.0020362828217912465,
                        0.004747580969706178,
                        0.005817481433041394,
                        0.0045804481487721205,
                        0.0033987537608481944,
                        0.003966533404309303,
                        0.002204979828093201,
                        2.325739842490293e-05,
                        0.0009769581811269745,
                        -0.0001795786556613166,
                        -0.000426034202973824,
                        0.0020601168216671795,
                        0.0008519056427758187,
                        0.0006784575089113787,
                        0.0013824508641846478,
                        -0.002083399594994262,
                        -0.0033025280572474003,
                        -0.00341949489666149,
                        -0.004625055589713156,
                        -0.00240737441345118,
                        -0.0009754339407663792,
                        -0.0011471999459899962,
                        -9.678277820057701e-05,
                        0.00039438582462025806,
                        0.0018492431263439357,
                        0.0032274919794872403,
                        0.0036602988257072866,
                        0.004463896038942039,
                        0.0033737244666554034,
                        0.0028734482475556433,
                        0.002985023020301014,
                        0.0014823221135884523,
                        0.002415330964140594,
                        0.0025594994076527655,
                        0.0008958166290540248,
                        0.0024339320953004062,
                        0.0030326814157888293,
                        0.0036874780198559165,
                        0.0064903858583420515,
                        0.006166266975924373,
                        0.005706908414140344,
                        0.005838741781190038,
                        0.004456782771740109,
                        0.005054177017882466,
                        0.004560524539556354,
                        0.002512627688702196,
                        0.0016372343816328794,
                        -0.000576068450754974,
                        -0.0012008650810457766,
                        -0.0004056094621773809,
                        -0.0010793367255246267,
                        -0.00021373116396716796,
                        -0.0001605846409802325,
                        -0.0005949861224507913,
                        0.0007902504148660228,
                        -0.00031379102438222617,
                        -0.0013712274085264653,
                        -0.001679800043348223,
                        -0.0036921227001585066,
                        -0.002733207948040217,
                        -0.0018287365674041212,
                        -0.002557513362262398,
                        -0.0003455411206232384,
                        0.00031356128602055833,
                        0.0005147541742189787,
                        0.0028143340023234487,
                        0.002289249241584912,
                        0.002347606496186927,
                        0.003281437966506928,
                        0.0015379242540802807,
                        0.0009650943684391677,
                        0.0008880082168616354,
                        0.00023683469407842495,
                        0.0008017160871531814,
                        0.0007481567445211112,
                        0.00047477988118771464,
                        0.0006787631718907505,
                        0.0004948460264131427,
                        0.0005516238525160588,
                        0.0005206991045270115,
                        0.0002753238004515879,
                        0.00024064363969955593,
                        0.00014483392988040578,
                        7.640448529855348e-05,
                        5.65753225600929e-05,
                        1.8022960830421653e-05,
                        5.200407144911878e-06,
                    ],
                },
                VirtualSpeaker {
                    bweights: Bweights::new(0.7071067811865475, 0.0, 0.0, 1.0),
                    left_hrir: vec![
                        2.3244703015734558e-05,
                        -1.0085714450269734e-05,
                        -7.84253188612638e-05,
                        0.00041981500544352457,
                        -0.0003780681436182931,
                        0.00026306522158847656,
                        0.0006372047391778324,
                        -0.0010581123569863848,
                        0.0013869191752746701,
                        -0.00022885400184691207,
                        -0.0008151487600116525,
                        0.0020774486620211974,
                        -0.0015820538101252168,
                        0.000597896150793531,
                        0.001413015925209038,
                        -0.002003863191930577,
                        0.002200397357228212,
                        -0.00018298545910511166,
                        -0.0012722918472718447,
                        0.0027601237525232136,
                        -0.0019993660680484027,
                        0.0006830282563896617,
                        0.0019414749476709403,
                        -0.002969260240206495,
                        0.002811492158798501,
                        -0.00026063724362757057,
                        -0.0020650527585530654,
                        0.0041811382106971,
                        -0.0029432648443616927,
                        0.0005359765600587707,
                        0.0033481710124760866,
                        -0.004923341621179134,
                        0.004186026781098917,
                        0.00032347365049645305,
                        -0.004525781114352867,
                        0.007363556360360235,
                        -0.004629095055861399,
                        -0.0010937848128378391,
                        0.008357681217603385,
                        -0.01035225868690759,
                        0.005748807161580771,
                        0.006485585035989061,
                        -0.015695373876951635,
                        0.01576945825945586,
                        0.0006139019387774169,
                        -0.025990987196564674,
                        0.032428596168756485,
                        0.03684784402139485,
                        0.06005900911986828,
                        0.20131725817918777,
                        0.20608201622962952,
                        0.030289481510408223,
                        -0.1173320272937417,
                        -0.16810728702694178,
                        -0.10679216124117374,
                        -0.009354793874081224,
                        0.010409380483906716,
                        -0.005141112487763166,
                        -0.009021426667459309,
                        -0.009995303553296253,
                        0.002648508525453508,
                        0.02233332023024559,
                        0.026383911026641726,
                        0.00022621647076448426,
                        -0.027451193891465664,
                        -0.026680664159357548,
                        -0.02046415349468589,
                        -0.005946290912106633,
                        0.01247829815838486,
                        -0.0011145448661409318,
                        -0.016257567331194878,
                        -0.007779948937240988,
                        -0.0007289892892003991,
                        0.0023559074907097965,
                        0.001536677165177025,
                        -0.004044080997118726,
                        -0.010375813290011138,
                        -0.01498754892963916,
                        -0.005454247584566474,
                        0.004019672323920531,
                        0.002808743520290591,
                        0.005598424177151173,
                        -0.0002907367888838053,
                        -0.012096789432689548,
                        -0.010428391396999359,
                        -0.006985567160882056,
                        -0.0038388374377973378,
                        -0.0017622912309889216,
                        -0.00668227206915617,
                        -0.006413708324544132,
                        -0.004969490255462006,
                        -0.006883497553644702,
                        -0.005740195920225233,
                        -0.008452226757071912,
                        -0.011830102012027055,
                        -0.011350207787472755,
                        -0.009933858527801931,
                        -0.005914563989790622,
                        -0.006224235839908943,
                        -0.00759086397010833,
                        -0.004871084092883393,
                        -0.007006651721894741,
                        -0.007102094095898792,
                        -0.003469019866315648,
                        -0.0033608459489187226,
                        -0.0003992523124907166,
                        0.000294502515316708,
                        -0.002879625608329661,
                        -0.0023975884687388316,
                        -0.0035095674684271216,
                        -0.002951680071419105,
                        -0.0013994333494338207,
                        -0.005233562987996265,
                        -0.003696164640132338,
                        0.0012267674810573226,
                        0.0013846351248503197,
                        0.0006730466952831193,
                        -0.002776678666123189,
                        -0.004979634104529396,
                        -0.0036644231295213103,
                        -0.004498430207604542,
                        -0.00282359411357902,
                        -0.0012898213026346639,
                        -0.0037886392965447158,
                        -0.0031628640135750175,
                        -0.001516712327429559,
                        -6.219045644684229e-05,
                        0.0022574488684767857,
                        0.0008355049922670332,
                        -0.0012016728214803152,
                        -0.0024513142852811143,
                        -0.0035605288576334715,
                        -0.0016314129607053474,
                        -0.0009143119314103387,
                        -0.0012874770982307382,
                        -9.373927241540514e-05,
                        -0.0010961961379507557,
                        -0.0015842085122130811,
                        -0.0004992813182980171,
                        -0.0013502118693509146,
                        -0.0018978560547111556,
                        -0.0019982912635896355,
                        -0.0018699400243349373,
                        2.3982502170838416e-05,
                        0.0014391186596185435,
                        0.0018601208284962922,
                        0.0022337783593684435,
                        0.0022755983081879094,
                        0.002306776514160447,
                        0.002319047416676767,
                        0.001099306064133998,
                        -0.002408571235719137,
                        -0.0032219062268268317,
                        0.002148959247278981,
                        0.006197458424139768,
                        0.004946053231833503,
                        0.001196932680613827,
                        -0.0027376540674595162,
                        -0.00226673444331027,
                        0.001864894620666746,
                        0.004340575396781787,
                        0.004770272062160075,
                        0.0035732222022488713,
                        0.0018682831796468236,
                        0.0017872413445729762,
                        0.0034822085217456333,
                        0.004782858013641089,
                        0.002083320759993512,
                        -0.0022945688397157937,
                        -0.004793718981090933,
                        -0.005372711893869564,
                        -0.0010385160749137867,
                        0.00461415431345813,
                        0.0058194188750348985,
                        0.005703775532310829,
                        0.003563647624105215,
                        0.0002939694695669459,
                        0.0001296465052291751,
                        2.527260221540928e-05,
                        0.0001559488009661436,
                        -0.0004729469947051257,
                        -0.0025031986933754524,
                        0.0013439268514048308,
                        0.004827523662243038,
                        0.0017953087808564305,
                        0.0006582125433851616,
                        1.3070784916635603e-05,
                        -0.001255315037269611,
                        0.0008298446118715219,
                        0.0024100069276755676,
                        0.00414920476032421,
                        0.0053767391364090145,
                        0.0037406731280498207,
                        0.003931145329261199,
                        0.003204968525096774,
                        0.0004923662709188648,
                        -0.0002366836247347237,
                        -0.002571453369455412,
                        -0.004484422388486564,
                        -0.0030435522057814524,
                        -0.0011466691830719355,
                        0.0017446890706196427,
                        0.0030491157667711377,
                        0.002941539423773065,
                        0.004026677488582209,
                        0.002918993486673571,
                        0.0022923956566955894,
                        0.0023862517628003843,
                        -0.00035435048175713746,
                        -0.001007782957458403,
                        -0.0009177258561976487,
                        -0.001655446358199697,
                        0.0002665833198989276,
                        0.0006335839862003922,
                        0.001288983685299172,
                        0.004446314123924822,
                        0.005547073160414584,
                        0.008649030060041696,
                        0.011973192158620805,
                        0.010753714595921338,
                        0.010612800542730838,
                        0.009977127192541957,
                        0.006917161808814853,
                        0.00399815704440698,
                        -0.0008043470734264702,
                        -0.004091789378435351,
                        -0.0048914361104834825,
                        -0.005233528281678446,
                        -0.0015723675460321829,
                        0.001105457304220181,
                        0.00022113490558695048,
                        0.0018075318075716496,
                        0.003317453811177984,
                        0.0034949671680806205,
                        0.0034896483703050762,
                        0.0013203821436036378,
                        0.00042098359699593857,
                        0.0007933322649478214,
                        0.00025670264221844263,
                        0.0007328984224841406,
                        0.000992048517218791,
                        0.0009286182466894388,
                        0.0011969720435445197,
                        0.0006997611671977211,
                        0.0006443883830797859,
                        0.0007287200060090981,
                        0.0003666646671263152,
                        0.00043833741983689833,
                        0.0003575958817236824,
                        0.00019839495507767424,
                        0.00026614843591232784,
                        0.00018442407963448204,
                        0.00011437613920861622,
                        7.623114925081609e-05,
                        2.6349053428020852e-05,
                        6.83444881133255e-06,
                    ],
                    right_hrir: vec![
                        2.2147208385003836e-05,
                        1.447572458346258e-05,
                        -0.00015835135855013505,
                        0.0004871073269896442,
                        -0.00038384781873901375,
                        7.300399374798872e-05,
                        0.0010235519948764704,
                        -0.0013681435211765347,
                        0.0013590858679890516,
                        0.00025215893401764333,
                        -0.00153660548676271,
                        0.0024744712573010474,
                        -0.0014882353934808634,
                        -7.017515599727631e-06,
                        0.0021099513105582446,
                        -0.0025352201373607386,
                        0.002013755602092715,
                        0.0003820639176410623,
                        -0.0021142208424862474,
                        0.0033414778590667993,
                        -0.0019380775484023616,
                        -0.00011942618584726006,
                        0.003006642800755799,
                        -0.0035681828012457117,
                        0.002661373364389874,
                        0.0007420626934617758,
                        -0.003295744536444545,
                        0.004872040808550082,
                        -0.0025799553259275854,
                        -0.0005458950181491673,
                        0.005014315829612315,
                        -0.005557271033467259,
                        0.003777915917453356,
                        0.0020225523667249945,
                        -0.006427053158404306,
                        0.008091311647149269,
                        -0.003711012832354754,
                        -0.0034747691825032234,
                        0.010628914751578122,
                        -0.011059105581807671,
                        0.0034117099130526185,
                        0.009206741524394602,
                        -0.01890106126666069,
                        0.015506627096328884,
                        0.005226024659350514,
                        -0.030219177715480328,
                        0.03654747939435765,
                        0.04472183529287577,
                        0.04409040091559291,
                        0.1738589582964778,
                        0.19393815658986568,
                        0.06233740481548011,
                        -0.04920071067317622,
                        -0.1459207944571972,
                        -0.1628962904214859,
                        -0.07127392571419477,
                        0.0053732621017843485,
                        0.033859306713566184,
                        0.01956316118594259,
                        -0.013691208732780069,
                        -0.016427989467047155,
                        -0.004248795739840716,
                        0.012484046164900064,
                        0.018837025563698262,
                        -0.0011567590991035104,
                        -0.015015635290183127,
                        -0.02087326138280332,
                        -0.016318372800014913,
                        0.0007253786316141486,
                        -0.004550022567855194,
                        -0.013803848996758461,
                        -0.011147206532768905,
                        -0.01126371556892991,
                        0.0018200375052401796,
                        0.010460104676894844,
                        0.0010117382043972611,
                        -0.0062381342286244035,
                        -0.01599826675374061,
                        -0.015313567710109055,
                        -0.0025484587240498513,
                        0.0005742862049373798,
                        0.0052789016626775265,
                        0.0034141636751883198,
                        -0.008125794993247837,
                        -0.005070792540209368,
                        -0.0005522452556760982,
                        -0.000709397136233747,
                        0.0009143633360508829,
                        -0.004778285947395489,
                        -0.008409629808738828,
                        -0.008670624811202288,
                        -0.008937633538153023,
                        -0.0036034138065588195,
                        -0.0022680132315144874,
                        -0.0018403016292722896,
                        -0.0015182929655566113,
                        -0.00811536272522062,
                        -0.007272086513694376,
                        -0.004007950483355671,
                        -0.006590382836293429,
                        -0.005983202718198299,
                        -0.008778413466643542,
                        -0.010556030320003629,
                        -0.007290639478014782,
                        -0.00782910967245698,
                        -0.004090398288099095,
                        -0.001731463271426037,
                        -0.00571678567212075,
                        -0.0041189386683981866,
                        -0.004206457961117849,
                        -0.0035920399386668578,
                        0.0015750723105156794,
                        -0.0011889215238625184,
                        -0.0018794834613800049,
                        0.001654939551372081,
                        -4.4410404314021434e-05,
                        0.0012755408533848822,
                        0.0010869732591345382,
                        -0.0037397356936708093,
                        -0.0057393708266317844,
                        -0.007744714093860239,
                        -0.006104947533458471,
                        -0.0021417960670078173,
                        -0.0016126143600558862,
                        -4.3596191972028464e-05,
                        -0.0011924359205295332,
                        -0.0027075097750639543,
                        9.868308552540839e-05,
                        -0.0006995043077040464,
                        -0.0014491314823317225,
                        -0.0012399678598740138,
                        -0.004145483981119469,
                        -0.002760494317044504,
                        -0.0003677286804304458,
                        4.720426659332588e-05,
                        0.0021413020658656023,
                        0.000971533536358038,
                        -0.0008758142575970851,
                        -0.0008960185004980303,
                        -0.001660001207710593,
                        -0.0006985065920162015,
                        -0.0015379103206214495,
                        -0.0026001877995440736,
                        -0.0003203136657248251,
                        -0.0007081237345119007,
                        -0.00012809483450837433,
                        0.0027436039454187267,
                        0.0020599684648914263,
                        0.001712329758447595,
                        0.0023978522222023457,
                        0.001759701808623504,
                        -0.0006881382432766259,
                        -0.003051022213185206,
                        0.0011551734496606514,
                        0.004691236244980246,
                        0.0028085884696338326,
                        0.0034336047247052193,
                        0.0005597930430667475,
                        -0.00352482202288229,
                        0.000808908989711199,
                        0.0037816553958691657,
                        0.004887528339168057,
                        0.006780912517569959,
                        0.0027059775311499834,
                        1.912735569931101e-05,
                        0.0009920012917064014,
                        0.0010762680176412687,
                        0.003462449967628345,
                        0.0020542431775538716,
                        -0.0032987719896482304,
                        -0.0035690546792466193,
                        -0.0018598614724396612,
                        0.00029038819775450975,
                        0.0033623310446273535,
                        0.0037484729546122253,
                        0.0033761560916900635,
                        0.002940850799859618,
                        0.002190947998315096,
                        0.0022910614825377706,
                        0.0007920924690552056,
                        -0.0013343254977371544,
                        -0.001965774717973545,
                        -0.0020087972370674834,
                        -0.0005364265416574199,
                        0.0018108120275428519,
                        0.002584583899079007,
                        0.0017601503350306302,
                        0.0011027788787032478,
                        0.0011985697710770182,
                        0.0014953382196836174,
                        0.0033475189411547035,
                        0.00524257673532702,
                        0.005043105047661811,
                        0.005291126435622573,
                        0.003921058378182352,
                        -9.075374691747129e-06,
                        -0.00193472074897727,
                        -0.0034798237174982205,
                        -0.004491385334404185,
                        -0.0030025234445929527,
                        -0.002230921745649539,
                        -0.0004501139028434409,
                        0.0022185539273777977,
                        0.0028654226116486825,
                        0.004156941722612828,
                        0.0038718814903404564,
                        0.0016237043746514246,
                        0.00139701172884088,
                        -0.0001656117819948122,
                        -0.0017594693053979427,
                        -0.00038847821997478604,
                        -0.000514009443577379,
                        -0.0007591701614728663,
                        0.0017271831165999174,
                        0.004455037706065923,
                        0.005976407555863261,
                        0.006879216525703669,
                        0.00835674291010946,
                        0.00773671199567616,
                        0.0058402252034284174,
                        0.007528620772063732,
                        0.0072576216189190745,
                        0.004041946231154725,
                        0.003017668495886028,
                        -0.0010918253246927634,
                        -0.004628217557183234,
                        -0.0013545636466005817,
                        0.0004903685839963146,
                        0.0012702988169621676,
                        0.0031778197444509715,
                        0.0008079174585873261,
                        -0.0008180184886441566,
                        0.0009294746723753633,
                        0.001585304144100519,
                        0.0023978925673873164,
                        0.0024753017351031303,
                        0.001059193346009124,
                        0.000530408724443987,
                        0.00048156387492781505,
                        0.0009395172673976049,
                        0.001302522432524711,
                        0.0008545124001102522,
                        0.0006322807712422218,
                        0.0003466168709564954,
                        0.0002453940032864921,
                        0.0005419092303782236,
                        0.00046364672016352415,
                        0.00035779259633272886,
                        0.00029192835427238606,
                        0.00017567463146406226,
                        0.00021105359337525442,
                        0.00018271617591381073,
                        0.00011810288924607448,
                        7.494639248761814e-05,
                        2.4374845679631107e-05,
                        5.238073015334521e-06,
                    ],
                },
            ],
        }
    }
}