Skip to content

AudioToolkit v2.0 M20221031

Latest
Compare
Choose a tag to compare
@dgonzalezt dgonzalezt released this 31 Oct 13:14
· 9 commits to master since this release

In this page, you can download some applications/implementations that can be of use to test the functionalities of the Toolkit and integrate them in different platforms (e.g. DAW programs, etc.), as well as the source code for the 3D Tune-In Toolkit, and some resources. Technical details about the 3D Tune-In Toolkit spatialiser are described in:

  • Cuevas-Rodríguez M, Picinali L, González-Toledo D, Garre C, de la Rubia-Cuestas E, Molina-Tanco L and Reyes-Lecuona A. (2019) 3D Tune-In Toolkit: An open-source library for real-time binaural spatialisation. PLOS ONE 14(3): e0211899. https://doi.org/10.1371/journal.pone.0211899

Binaural Test Application

A test application has been implemented to allow to test all the capabilities of the 3D Tune-In Toolkit library through a comprehensive GUI. It can be downloaded and installed for Windows, Mac and Linux. Any mono audio can be loaded in WAV format and binaurally spatialised with all the effects available in the library, including the hearing loss and hearing aid emulators.
Besides allowing to try the 3D Tune-In Toolkit without having to develop an application which deals with audio files and audio interfaces, the Test Application is also a powerful tool for integrating the Toolkit within existing systems (e.g. VR goggles, etc.), as it can be fully controlled remotely through OSC (Open Sound Control).
The latest version of the test application (v4.0.0) can be downloaded from the following links. Win and Mac versions include the 3D tune-In Toolkit v2.0, compilation M2022101:

3D Tune-In Toolkit Test app v4.1.0 for Windows
3D Tune-In Toolkit Test app v4.1.0 for Mac

Linux versions include the 3D tune-In Toolkit v1.4, compilation M20191205:
3D Tune-In Toolkit Test app v3.10 for Linux (Debian)
3D Tune-In Toolkit Test app v3.8 for Linux (Red Hat)

Here you can download the manual for V4.0 of the Test App: 3DTuneIn Toolkit Binaural Test App User Manual v4.0.pdf

Here you can download the list of OSC commands you can use to remotely control the Test App: 3DTI_OSC_Commands.pdf

And here you can download a PureData patch with examples on how to use the OSC commands: osc-tester.zip

ATTENTION WINDOWS INSTALLER – the 3D Tune-In Toolkit Test App for Windows looks first for ASIO drivers, and only if no one is found, it looks for Direct Sound drivers (i.e. the integrated interface on your machine). Therefore if you have installed on your Windows machine an ASIO audio interface, the 3D Tune-In Test App will not be able to use any Direct Sound audio interface. You will therefore need to either remove every ASIO driver from your machine (and in this case the Test App will be able to see the on-board audio interface), or to just use the ASIO interface directly.

Find here a video demonstrating the binaural spatialisation functionalities of the Test App
Find here a video demonstrating the hearing loss and hearing aid simulator functionalities of the Test App

VST Plugins

VST interfaces integrating various functionalities of the 3D Tune-in Toolkit are now available, including anechoic binaural spatialisation, binaural reverb, hearing loss and hearing aid simulations.

Five plugins are available:

1-Full binaural spatialisation (for spatialising one sound source including anechoic and reverberation renderings within the same interface)
2/3-Separate anechoic spatialisation and binaural reverberation (two separate plugins, which allow to spatialise multiple sources using one single multichannel bus reverberator, therefore making the processing more efficient - please see the MaxMSP and Reaper examples on how to configure your host/DAW)
4-Hearing loss simulator
5-Hearing aid simulator

IMPORTANT - the Mac version is only 64-bits, therefore will not run on 32-bits software.

The 3D Tune-In Toolkit VST plugins are available for both MacOS and Windows in the form of installers; a zip files containing examples of use in MaxMSP and Reaper is also available below - please refer to these for information about the exposed parameters (i.e. those parameters that you can control/automate externally):

3D Tune-In Toolkit VST Plugins v1.1.4 for MAC
3D Tune-In Toolkit VST Plugins v1.1.4for Windows
3D Tune-In Toolkit VST Plugins examples, including MaxMSP and Reaper sessions

Common resources

A set of sample audios, HRTF and BRIR files prepared to be used with the 3D Tune-In Toolkit, as well as some scenarios built for the Test Application can be downloaded here:

3D Tune-In Resources

Unity wrapper

Here you can find the link to the repository of our Unity Wrapper:
3D Tune-In Toolkit Unity Wrapper

Changelog v2.0 M20221028

Binaural

Added

  • CSingleSourceDSP: The new CWaveguide class has been incorporated, adding a new simulator for: propagation delay between source and listener and doppler effect in case of source or listener movement.
  • New public methods in CSingleSourceDSP:
    • void EnablePropagationDelay();
    • void DisablePropagationDelay();
    • bool IsPropagationDelayEnabled();
    • float GetCurrentEarAzimuth(Common::T_ear ear) const;
    • float GetEffectiveEarAzimuth(Common::T_ear ear) const;
    • float GetCurrentEarElevation(Common::T_ear ear) const;
    • float GetEffectiveEarElevation(Common::T_ear ear) const;
    • const Common::CTransform & GetCurrentSourceTransform() const;
    • const Common::CTransform & GetEffectiveSourceTransform() const;
  • feat: Makes a waveguide reset when a SingleSourceDSP buffers are reseted.
    • void CWaveguide::Reset()
      Changed
  • Convolutional reverb can now skip a number of initial frames for future hybrid reverb (ISM+Convolution)
    • old: void CEnvironment::ProcessVirtualAmbisonicReverbAdimensional(CMonoBuffer & outBufferLeft, CMonoBuffer & outBufferRight);
    •  void CEnvironment::ProcessVirtualAmbisonicReverbBidimensional(CMonoBuffer<float> & outBufferLeft, CMonoBuffer<float> & outBufferRight);     
      
    •  void CEnvironment::ProcessVirtualAmbisonicReverbThreedimensional(CMonoBuffer<float> & outBufferLeft, CMonoBuffer<float> & outBufferRight);	 
      
    •  void CEnvironment::ProcessVirtualAmbisonicReverb(CMonoBuffer<float> & outBufferLeft, CMonoBuffer<float> & outBufferRight);    
      
    •  void CEnvironment::ProcessVirtualAmbisonicReverb(CStereoBuffer<float> & outBuffer)      
      
    • new: void CEnvironment::ProcessVirtualAmbisonicReverbAdimensional(CMonoBuffer & outBufferLeft, CMonoBuffer & outBufferRight, int numberOfSilencedFrames)
    •  void CEnvironment::ProcessVirtualAmbisonicReverbBidimensional(CMonoBuffer<float> & outBufferLeft, CMonoBuffer<float> & outBufferRight, int numberOfSilencedFrames)
      
    •  void CEnvironment::ProcessVirtualAmbisonicReverbThreedimensional(CMonoBuffer<float> & outBufferLeft, CMonoBuffer<float> & outBufferRight, int numberOfSilencedFrames)
      
    •  void CEnvironment::ProcessVirtualAmbisonicReverb(CMonoBuffer<float> & outBufferLeft, CMonoBuffer<float> & outBufferRight, int numberOfSilencedFrames)
      
    •  void CEnvironment::ProcessVirtualAmbisonicReverb(CStereoBuffer<float> & outBuffer, int numberOfSilencedFrames)
      
  • Now smoothing in attenuation by distance can be disabled or enabled (enabled by default)
    Removed
  • Public methods removed from CSingleSourceDSP:
    • void ProcessAnechoic(const CMonoBuffer & inBuffer, CMonoBuffer &outLeftBuffer, CMonoBuffer &outRightBuffer);
    • void ProcessAnechoic(const CMonoBuffer & inBuffer, CStereoBuffer & outBuffer);
    • float GetEarAzimuth( Common::T_ear ear ) const;
    • const Common::CTransform & GetSourceTransform() const;

ISM

Added

  • New classes added to simulate Image Source Method.
    • class ISM //interface to access all the features of the ISM simulator
      • CISM(Binaural::CCore* _ownerCore);
      • void SetupShoeBoxRoom(float length, float width, float height);
      • void setupArbitraryRoom(RoomGeometry roomGeometry);
      • void setAbsortion(std::vector _absortionPerWall);
      • void setAbsortion(std::vector<std::vector> _absortionPerBandPerWall);
      • Room getRoom();
      • void enableWall(int wallIndex);
      • void disableWall(int wallIndex);
      • void setReflectionOrder(int reflectionOrder);
      • int getReflectionOrder();
      • void setMaxDistanceImageSources(float maxDistanceSourcesToListener);
      • float getMaxDistanceImageSources();
      • int calculateNumOfSilencedFrames (float maxDistanceSourcesToListener);
      • void setSourceLocation(Common::CVector3 location);
      • Common::CVector3 getSourceLocation();
      • std::vectorCommon::CVector3 getImageSourceLocations();
      • std::vectorISM::ImageSourceData getImageSourceData();
      • void proccess(CMonoBuffer inBuffer, std::vector<CMonoBuffer> &imageBuffers, Common::CVector3 listenerLocation);
    • class Room
      • void setupShoeBox(float length, float width, float height);
      • void setupRoomGeometry(RoomGeometry roomGeometry);
      • void insertWall(Wall newWall);
      • void enableWall(int wallIndex);
      • void disableWall(int wallIndex);
      • void setWallAbsortion(int wallIndex, float absortion);
      • void setWallAbsortion(int wallIndex, std::vector absortionPerBand);
      • std::vector getWalls();
      • std::vector getImageRooms();
      • bool checkPointInsideRoom(Common::CVector3 point, float &distanceNearestWall);
      • Common::CVector3 getCenter();
    • class SourceImages
      • SourceImages(ISM::CISM* _ownerISM);
      • void setLocation(Common::CVector3 _location);
      • Common::CVector3 getLocation();
      • std::vector<weak_ptr > getImages();
      • void getImageLocations(std::vectorCommon::CVector3 &imageSourceList);
      • void getImageData(std::vector &imageSourceDataList);
      • Wall getReflectionWall();
      • void createImages(Room _room, int reflectionOrder);
      • void updateImages ();
      • void processAbsortion(CMonoBuffer inBuffer, std::vector<CMonoBuffer> &imageBuffers, Common::CVector3 listenerLocation);
    • class Wall
      • Wall();
      • int insertCorner(float x, float y, float z);
      • int insertCorner(Common::CVector3 _corner);
      • std::vectorCommon::CVector3 getCorners();
      • void setAbsortion(float _absortion);
      • void setAbsortion(std::vector _absortionPerBand);
      • std::vector getAbsortionB();
      • Common::CVector3 getNormal();
      • Common::CVector3 getCenter();
      • float getDistanceFromPoint(Common::CVector3 point);
      • float getMinimumDistanceFromWall(ISM::Wall wall);
      • Common::CVector3 getImagePoint(Common::CVector3 point);
      • Wall getImageWall(Wall _wall);
      • Common::CVector3 getPointProjection(float x, float y, float z);
      • Common::CVector3 getPointProjection(Common::CVector3 point);
      • Common::CVector3 getIntersectionPointWithLine(Common::CVector3 point1, Common::CVector3 point2);
      • int checkPointInsideWall(Common::CVector3 point, float &distanceNearestEdge, float &sharpness);
      • float calculateDistanceNearestEdge(Common::CVector3 point);
      • float distancePointToLine(Common::CVector3 point, Common::CVector3 pointLine1, Common::CVector3 pointLine2);
      • void enable() { active = true; }
      • void disable() { active = false; }
      • bool isActive() { return active; }

Common

Fixed

  • Bug fixed in the computation of cross product in CVector3 CVector3::CrossProduct(CVector3 _rightHand).
    Added
  • New class in CWaveguide. It provides a waveguide simulation, to simulate the distance and doppler effect betwenn a source and the listener
    Changed
  • Convolution can now skip a number of initial frames for future hybrid reverb (ISM+Convolution)
    • old: void CUPCEnvironment::ProcessUPConvolution_withoutIFFT(const CMonoBuffer& inBuffer_Time, const TImpulseResponse_Partitioned & IR, CMonoBuffer& outBuffer)
    • new: void CUPCEnvironment::ProcessUPConvolution_withoutIFFT(const CMonoBuffer& inBuffer_Time, const TImpulseResponse_Partitioned & IR, CMonoBuffer& outBuffer, int numberOfSilencedFrames)

Full Changelog: M20210507...M20221031