VACore issueshttps://git.rwth-aachen.de/ita/VACore/-/issues2024-01-29T14:45:28+01:00https://git.rwth-aachen.de/ita/VACore/-/issues/38Use `std::unordered_map` for sound path renderers2024-01-29T14:45:28+01:00Pascal PalendaUse `std::unordered_map` for sound path renderers`std::unordered_map`, on average, has a performance benefit over the ordered `std::map` (linear vs logarithmic; 1 < log(N)). For a large number of paths, this could add up.`std::unordered_map`, on average, has a performance benefit over the ordered `std::map` (linear vs logarithmic; 1 < log(N)). For a large number of paths, this could add up.https://git.rwth-aachen.de/ita/VACore/-/issues/37Implement the full VA interface2023-11-22T16:16:12+01:00Pascal PalendaImplement the full VA interfaceSome interface methods of VA do only implement half of the functionality.
For example, `GetSoundSourceInfo` returns the `CVASoundSourceInfo` struct.
However, it does not populate all the data members.
With the changes in https://git.rw...Some interface methods of VA do only implement half of the functionality.
For example, `GetSoundSourceInfo` returns the `CVASoundSourceInfo` struct.
However, it does not populate all the data members.
With the changes in https://git.rwth-aachen.de/ita/VANet/-/issues/6 and https://git.rwth-aachen.de/ita/VABase/-/issues/1 this is a good opportunity to improve, adapt and fix the interface.https://git.rwth-aachen.de/ita/VACore/-/issues/36Check implementation of IIR FilterBankTypes2023-11-22T16:11:17+01:00Christian Georg DreierCheck implementation of IIR FilterBankTypesWhen using DAFF directivities with the FreeField renderer with "iir_biquads_order10" as FilterBankType in the according .ini file, the magnitude spectra are heavily averaged, resulting in wrong third-octave band spectra (~20 dB errors pe...When using DAFF directivities with the FreeField renderer with "iir_biquads_order10" as FilterBankType in the according .ini file, the magnitude spectra are heavily averaged, resulting in wrong third-octave band spectra (~20 dB errors per band can be reached). However, switching to "fir_spline_linear_phase" filters perfectly solves this "problem".https://git.rwth-aachen.de/ita/VACore/-/issues/34Possible issue when setting signal sources without removing them first2023-09-26T08:42:32+02:00Pascal PalendaPossible issue when setting signal sources without removing them firstNow it happened twice, that a binaural synthesis sounded wrong (shifted towards one side).
This behaviour was observed by @julia.seitz and @cosima.ermert .
From what we know at the moment, this could be caused by setting a new signal so...Now it happened twice, that a binaural synthesis sounded wrong (shifted towards one side).
This behaviour was observed by @julia.seitz and @cosima.ermert .
From what we know at the moment, this could be caused by setting a new signal source to a sound source without removing the prior signal source first.Philipp SchäferPascal PalendaPhilipp Schäferhttps://git.rwth-aachen.de/ita/VACore/-/issues/33Bug: Starting VACore without an audio device present leads to crash2023-08-23T13:33:43+02:00Philipp SchäferBug: Starting VACore without an audio device present leads to crashTested via VAServer (Windows) + Portaudio + Default deviceTested via VAServer (Windows) + Portaudio + Default devicePhilipp SchäferPascal PalendaPhilipp Schäferhttps://git.rwth-aachen.de/ita/VACore/-/issues/32Bug: Setting the RecordOutputFileName without extension leads to unknown exce...2023-08-15T11:11:54+02:00Philipp SchäferBug: Setting the RecordOutputFileName without extension leads to unknown exceptionLeaving out the extension when setting a record filename leads to an unknown exception.
This was experienced setting the output file for reproduction module from VAMatlab:
```matlab
reproduction_id = 'MyAmbisonicsBinauralMixdown';
param...Leaving out the extension when setting a record filename leads to an unknown exception.
This was experienced setting the output file for reproduction module from VAMatlab:
```matlab
reproduction_id = 'MyAmbisonicsBinauralMixdown';
parameter_struct.RecordOutputBaseFolder = fullfile( pwd, 'output');
parameter_struct.RecordOutputFileName = 'ambisonics_binaural_mixdown_out'; %instead of: 'ambisonics_binaural_mixdown_out.wav'
va.set_reproduction_module_parameters( reproduction_id, parameter_struct );
```
It is likely, that this issue also occurs if
- recording the input
- recording a rendering module
- simply using the wrong extension
Probably, the exception is thrown by the class trying to open the file.Philipp SchäferPascal PalendaPhilipp Schäferhttps://git.rwth-aachen.de/ita/VACore/-/issues/30Allow Rendering/Reproduction channel "mismatch"2023-03-22T08:22:45+01:00Philipp SchäferAllow Rendering/Reproduction channel "mismatch"Per default, number of rendering output and reproduction input channels **must** match.
Especially, for ambisonics signals, it would be good to have the option to allow a missmatch:
- less reproduction input channels => higher channels w...Per default, number of rendering output and reproduction input channels **must** match.
Especially, for ambisonics signals, it would be good to have the option to allow a missmatch:
- less reproduction input channels => higher channels will be omitted
- more input channels => channels have a zero signal
I am not 100% sure whether the second case is usefull. Thus, the respective option should either allow none, one or both of the "missmatches".Philipp SchäferPascal PalendaPhilipp Schäferhttps://git.rwth-aachen.de/ita/VACore/-/issues/29Better errorhandling for channel rendere/reproduction missmatch2023-03-22T08:20:31+01:00Philipp SchäferBetter errorhandling for channel rendere/reproduction missmatchCurrently, there is just an error from ITAPatchBay. It would be good to catch the respective exception and create an error with more meta info.
(e.g. which rendering / reproduction module)Currently, there is just an error from ITAPatchBay. It would be good to catch the respective exception and create an error with more meta info.
(e.g. which rendering / reproduction module)Philipp SchäferPascal PalendaPhilipp Schäferhttps://git.rwth-aachen.de/ita/VACore/-/issues/28Missing `DELAY_SAMPLES` causes no Audio output2023-02-28T10:57:19+01:00Pascal PalendaMissing `DELAY_SAMPLES` causes no Audio outputWhen the loaded DAFF HRTF does not set `DELAY_SAMPLES`, there is no audio output.
Only a warning is displayed.When the loaded DAFF HRTF does not set `DELAY_SAMPLES`, there is no audio output.
Only a warning is displayed.https://git.rwth-aachen.de/ita/VACore/-/issues/26Update VACore.ini2022-08-29T11:13:32+02:00Michael KohnenUpdate VACore.iniRoomacoustic renderer uses old config keys (maxnumsamples vs maxfilterlength) and numChannels is missingRoomacoustic renderer uses old config keys (maxnumsamples vs maxfilterlength) and numChannels is missinghttps://git.rwth-aachen.de/ita/VACore/-/issues/25Ambient Mixer2022-08-29T11:11:22+02:00Michael KohnenAmbient MixerAmbient mixer seems to prevent core finalization when audio device is set to virtual.Ambient mixer seems to prevent core finalization when audio device is set to virtual.https://git.rwth-aachen.de/ita/VACore/-/issues/24Implement sound source enable and mute2022-05-11T11:48:56+02:00Pascal PalendaImplement sound source enable and muteSource (and receiver) have the option to be muted and/or enabled.
As far as I can see, this is not implemented except in the core interface and the binarual Free Field renderer.
This would be a very useful feature and should be implemen...Source (and receiver) have the option to be muted and/or enabled.
As far as I can see, this is not implemented except in the core interface and the binarual Free Field renderer.
This would be a very useful feature and should be implemented fully.https://git.rwth-aachen.de/ita/VACore/-/issues/23BinauralMixdown: fix listener position or at least add the option?2022-04-29T08:52:46+02:00Philipp SchäferBinauralMixdown: fix listener position or at least add the option?Compared to AmbisonicsBinauralDownmix, the listener position is not fixed but taken from the real-world position.
PSC: I don't see the point for a downmix. Typically, I would assume to sit in front of a screen wearing HPs and just rotate...Compared to AmbisonicsBinauralDownmix, the listener position is not fixed but taken from the real-world position.
PSC: I don't see the point for a downmix. Typically, I would assume to sit in front of a screen wearing HPs and just rotate my head. Would there actually be a case were I wear HPs but walk around (e.g. in the VR lab)?https://git.rwth-aachen.de/ita/VACore/-/issues/22NCTC: remove unsed config parameters2022-04-28T11:51:10+02:00Philipp SchäferNCTC: remove unsed config parametersThere are many parameters which do not seem to be used in the VACore.ini. Maybe they should be fixed to their default values.
Also some parameters could be taken from Core config (e.g. homogeneous medium -> speed of sound).There are many parameters which do not seem to be used in the VACore.ini. Maybe they should be fixed to their default values.
Also some parameters could be taken from Core config (e.g. homogeneous medium -> speed of sound).https://git.rwth-aachen.de/ita/VACore/-/issues/21Remove VACore.ini dev paths during install2022-04-28T11:24:55+02:00Philipp SchäferRemove VACore.ini dev paths during installWhen generating VACore.ini from the proto file, some dev search paths are added.
Those should be automatically removed during the install process.When generating VACore.ini from the proto file, some dev search paths are added.
Those should be automatically removed during the install process.https://git.rwth-aachen.de/ita/VACore/-/issues/20Create class structure for BinauralMixdown and AmbisonicsBinauralMixdown2022-04-29T08:52:46+02:00Philipp SchäferCreate class structure for BinauralMixdown and AmbisonicsBinauralMixdownAmbisonicsBinauralMixdown is basically the same as BinauralMixdown but doing a decoding step before the mixdown.
Thus, AmbisonicsBinauralMixdown should be derived from BinauralMixdown or both should have the same base class.AmbisonicsBinauralMixdown is basically the same as BinauralMixdown but doing a decoding step before the mixdown.
Thus, AmbisonicsBinauralMixdown should be derived from BinauralMixdown or both should have the same base class.https://git.rwth-aachen.de/ita/VACore/-/issues/19Extract Ambisonics decoder2022-04-29T08:52:46+02:00Philipp SchäferExtract Ambisonics decoderMove the ambisonics decoding to a separate function so that it can be used by HOA and BinauralAmbisonicsMixdown.Move the ambisonics decoding to a separate function so that it can be used by HOA and BinauralAmbisonicsMixdown.https://git.rwth-aachen.de/ita/VACore/-/issues/18Test BinauralMixdown2022-04-29T08:52:46+02:00Philipp SchäferTest BinauralMixdownUsing VBAP together with this mixdown did not seem to workUsing VBAP together with this mixdown did not seem to workhttps://git.rwth-aachen.de/ita/VACore/-/issues/17LowFrequencyMixer revision2022-04-28T10:35:33+02:00Philipp SchäferLowFrequencyMixer revisionThe ALL option just for MixingChannels parameter just seems to use channel 1. So it is not actually mixing the channels.The ALL option just for MixingChannels parameter just seems to use channel 1. So it is not actually mixing the channels.https://git.rwth-aachen.de/ita/VACore/-/issues/16VAPoolObject Smart Pointer2022-04-19T10:57:10+02:00Pascal PalendaVAPoolObject Smart PointerAdapt the VAPoolObject(Factory) to use smart pointer for its API.
With this, it would be easier to use the objects form the pool since the references would not have to be incremented/decremented.
It might be possible to implement this v...Adapt the VAPoolObject(Factory) to use smart pointer for its API.
With this, it would be easier to use the objects form the pool since the references would not have to be incremented/decremented.
It might be possible to implement this via the custom destructors for std::shared_ptr, see [here](https://en.cppreference.com/w/cpp/memory/shared_ptr/shared_ptr) and for an example [here](https://www.cppstories.com/2016/04/custom-deleters-for-c-smart-pointers/).
Otherwise, a custom pool smart pointer might be necessary that automatically counts its references.
However, it might be necessary to implement a version with owning an non-owning pointers.