Commit 9e85af13 authored by Michael Kohnen's avatar Michael Kohnen

Merged develop

parents 98086a3d b876d14f
......@@ -3,6 +3,7 @@ conf/VACore.experimental.ini
conf/*.ini
*.log
*.daff
*.dat
*.sofa
*.wav
HTML
......
......@@ -48,8 +48,8 @@ vista_use_package( ITABase REQUIRED FIND_DEPENDENCIES )
vista_use_package( ITADSP REQUIRED FIND_DEPENDENCIES )
vista_use_package( ITADataSources REQUIRED FIND_DEPENDENCIES )
vista_use_package( ITAConvolution REQUIRED FIND_DEPENDENCIES )
vista_use_package( ITACTC REQUIRED FIND_DEPENDENCIES )
vista_use_package( ITASampler REQUIRED FIND_DEPENDENCIES )
vista_use_package( ITACTC REQUIRED FIND_DEPENDENCIES )
vista_use_package( OpenDAFF REQUIRED )
vista_use_package( SPLINE REQUIRED )
vista_use_package( Eigen REQUIRED )
......@@ -62,10 +62,10 @@ if( ITA_VA_CORE_LIBS_FFT_USES_FFTW3 )
endif( )
if( NOT DEFINED ITA_VACORE_VERSION_MAJOR )
set( ITA_VACORE_VERSION_MAJOR "v2018" CACHE STRING "VACore version major (usually 'v' and year)" )
set( ITA_VACORE_VERSION_MAJOR "v2019" CACHE STRING "VACore version major (usually 'v' and year)" )
endif( )
if( NOT DEFINED ITA_VACORE_VERSION_MINOR )
set( ITA_VACORE_VERSION_MINOR "b" CACHE STRING "VACore version minor (usually a,b,c ...)" )
set( ITA_VACORE_VERSION_MINOR "a" CACHE STRING "VACore version minor (usually a,b,c ...)" )
endif( )
# Settings
......@@ -157,6 +157,10 @@ endif( )
if( NOT DEFINED ITA_VACORE_WITH_RENDERER_BINAURAL_OUTDOOR_NOISE )
set( ITA_VACORE_WITH_RENDERER_BINAURAL_OUTDOOR_NOISE OFF CACHE BOOL "Build VACore with rendering module: outdoor noise" )
endif( )
if( NOT DEFINED ITA_VACORE_WITH_RENDERER_BINAURAL_CLUSTERING )
set( ITA_VACORE_WITH_RENDERER_BINAURAL_CLUSTERING ON CACHE BOOL "Build VACore with rendering module: clustering renderer" )
endif( )
if( NOT DEFINED ITA_VACORE_WITH_RENDERER_PROTOTYPE_FREE_FIELD )
set( ITA_VACORE_WITH_RENDERER_PROTOTYPE_FREE_FIELD ON CACHE BOOL "Build VACore with rendering module: prototype free-field" )
......@@ -171,6 +175,9 @@ endif( )
if( NOT DEFINED ITA_VACORE_WITH_RENDERER_PROTOTYPE_GENERIC_PATH )
set( ITA_VACORE_WITH_RENDERER_PROTOTYPE_GENERIC_PATH ON CACHE BOOL "Build VACore with rendering module: prototype generic path" )
endif( )
if( NOT DEFINED ITA_VACORE_WITH_RENDERER_PROTOTYPE_IMAGE_SOURCE )
set( ITA_VACORE_WITH_RENDERER_PROTOTYPE_IMAGE_SOURCE ON CACHE BOOL "Build VACore with rendering module: prototype image source" )
endif( )
if( NOT DEFINED ITA_VACORE_WITH_RENDERER_VBAP_FREE_FIELD )
set( ITA_VACORE_WITH_RENDERER_VBAP_FREE_FIELD ON CACHE BOOL "Build VACore with rendering module: vector-base amplitude panning free-field" )
......@@ -273,6 +280,7 @@ if( ITA_VACORE_WITH_RENDERER_BINAURAL_FREE_FIELD )
add_definitions( "-DVACORE_WITH_RENDERER_BINAURAL_FREE_FIELD" )
endif( )
if( ITA_VACORE_WITH_RENDERER_BINAURAL_ARTIFICIAL_REVERB )
vista_use_package( DspFilters REQUIRED FIND_DEPENDENCIES )
add_definitions( "-DVACORE_WITH_RENDERER_BINAURAL_ARTIFICIAL_REVERB" )
endif( )
if( ITA_VACORE_WITH_RENDERER_BINAURAL_ROOM_ACOUSTICS )
......@@ -287,7 +295,7 @@ if( ITA_VACORE_WITH_RENDERER_BINAURAL_AIR_TRAFFIC_NOISE )
add_definitions( "-DVACORE_WITH_RENDERER_BINAURAL_AIR_TRAFFIC_NOISE" )
endif( )
if( ITA_VACORE_WITH_RENDERER_BINAURAL_OUTDOOR_NOISE )
add_definitions( -DVACORE_WITH_RENDERER_BINAURAL_OUTDOOR_NOISE )
add_definitions( "-DVACORE_WITH_RENDERER_BINAURAL_OUTDOOR_NOISE" )
endif( )
if( ITA_VACORE_WITH_RENDERER_PROTOTYPE_FREE_FIELD )
add_definitions( "-DVACORE_WITH_RENDERER_PROTOTYPE_FREE_FIELD" )
......@@ -301,9 +309,15 @@ endif( )
if( ITA_VACORE_WITH_RENDERER_PROTOTYPE_GENERIC_PATH )
add_definitions( "-DVACORE_WITH_RENDERER_PROTOTYPE_GENERIC_PATH" )
endif( )
if( ITA_VACORE_WITH_RENDERER_PROTOTYPE_IMAGE_SOURCE )
add_definitions( "-DVACORE_WITH_RENDERER_PROTOTYPE_IMAGE_SOURCE" )
endif( )
if( ITA_VACORE_WITH_RENDERER_VBAP_FREE_FIELD )
add_definitions( "-DVACORE_WITH_RENDERER_VBAP_FREE_FIELD" )
endif( )
if( ITA_VACORE_WITH_RENDERER_BINAURAL_CLUSTERING )
add_definitions( "-DVACORE_WITH_RENDERER_BINAURAL_CLUSTERING" )
endif( )
# Reproduction definitions
if( ITA_VACORE_WITH_REPRODUCTION_TALKTHROUGH )
......@@ -346,10 +360,11 @@ endif( )
# Files
vista_add_files_to_sources( ProjectSources "conf" NON_RECURSIVE SOURCE_GROUP "conf" "ini" )
vista_add_files_to_sources( ProjectSources "conf" NON_RECURSIVE SOURCE_GROUP "conf" "proto" )
vista_add_files_to_sources( ProjectSources "data" SOURCE_GROUP_MIRROR_DIR "data" "wav" "daff" "mat" "ac" "skp" )
add_library( VACore ${ProjectSources} "conf/VACore.ini.proto" )
add_library( VACore ${ProjectSources} )
target_link_libraries( VACore ${VISTA_USE_PACKAGE_LIBRARIES} ) # contains all libraries from vista_use_package() calls
set( BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_TEMP} )
......@@ -377,6 +392,7 @@ if( ITA_VACORE_DEPLOY_WITH_COMMON_DATA )
install( FILES "data/Singer.v17.ms.daff" DESTINATION "data" )
install( FILES "data/Trumpet1.v17.ms.daff" DESTINATION "data" )
install( FILES "data/WelcomeToVA.wav" DESTINATION "data" )
install( FILES "data/ambeo_rir_ita_doorway.wav" DESTINATION "data" )
endif( )
if( ITA_VACORE_DEPLOY_WITH_COMMON_CONFIGS )
......@@ -387,6 +403,9 @@ if( ITA_VACORE_DEPLOY_WITH_COMMON_SCRIPTS )
# nothing yet
endif( )
if( ITA_VA_INSTALL_WITH_DLLS )
vista_install_all_dlls( bin )
endif( )
# tests
if( ITA_VA_WITH_TESTS OR ITA_VACORE_WITH_TESTS )
......
#define _USE_MATH_DEFINES
#include <VA.h>
#include <VACoreFactory.h>
#include <stdlib.h>
#include <iostream>
#include <vector>
#include <math.h>
#include <VistaBase/VistaTimeUtils.h>
#include <ITAStopWatch.h>
#include <stdlib.h>
using namespace std;
CVAStruct GetCoreConfig()
{
CVAStruct oConfig;
CVAStruct oSectionDebug;
oSectionDebug["loglevel"] = 0;
oConfig["debug"] = oSectionDebug;
CVAStruct oSectionDriver;
oSectionDriver["driver"] = "Virtual";
oSectionDriver["buffersize"] = 64;
oSectionDriver["outputchannels"] = 2;
oConfig["audio driver"] = oSectionDriver;
CVAStruct oDevice1;
oDevice1["type"] = "Trigger";
oDevice1["channels"] = "1,2";
oConfig["OutputDevice:MyHP"] = oDevice1;
CVAStruct oOutput1;
oOutput1["devices"] = "MyHP";
oConfig["Output:MyDesktopHP"] = oOutput1;
CVAStruct oReproduction1;
oReproduction1["class"] = "Talkthrough";
oReproduction1["outputs"] = "MyDesktopHP";
oConfig["Reproduction:Talkthrough"] = oReproduction1;
CVAStruct oRenderer1;
oRenderer1["class"] = "BinauralRealTime";
oRenderer1["Reproductions"] = "MyTalkthroughHeadphones";
oConfig["Renderer:BRT_CoreTest"] = oRenderer1;
return oConfig;
}
CVAStruct time;
CVAStruct trigger;
int main( int, char** )
{
IVAInterface* pCore = NULL;
try
{
CVAStruct oConfig;
pCore = VACore::CreateCoreInstance(GetCoreConfig());
pCore->Initialize();
CVAStruct oSectionDebug;
oSectionDebug[ "loglevel" ] = 1;
oConfig[ "debug" ] = oSectionDebug;
int iterations = 10;
int _parallelSources = 1000;
CVAStruct oSectionDriver;
oSectionDriver[ "driver" ] = "Portaudio";
oConfig[ "audio driver" ] = oSectionDriver;
double clock = 0;
double timestep = 64 / 44100.;
CVAStruct oDevice1;
oDevice1[ "type" ] = "HP";
oDevice1[ "channels" ] = "1,2";
oConfig[ "OutputDevice:MyHP" ] = oDevice1;
//auto d = pCore->CreateDire
CVAStruct oOutput1;
oOutput1[ "devices" ] = "MyHP";
oConfig[ "Output:MyDesktopHP" ] = oOutput1;
int receiverID = pCore->CreateSoundReceiver("ITAListener");
int directivityID = pCore->CreateDirectivityFromFile("C:/dev/VA/VACore/data/ITA_Artificial_Head_5x5_44kHz_128.v17.ir.daff", "HRTF");
pCore->SetSoundReceiverDirectivity(receiverID, directivityID);
pCore->LockUpdate();
CVAStruct oReproduction;
oReproduction[ "class" ] = "Talkthrough";
oReproduction[ "outputs" ] = "MyDesktopHP";
oConfig[ "Reproduction:MyTalkthroughHeadphones" ] = oReproduction;
std::vector< int > viSourceIDs(_parallelSources);
CVAStruct oRenderer;
oRenderer[ "class" ] = "PrototypeDummy";
oRenderer[ "outputs" ] = "MyTalkthroughHeadphones";
oRenderer[ "outputgroup" ] = "MyDesktopHP";
oConfig[ "Renderer:BenchmarkDummyRenderer" ] = oRenderer;
for (int k = 0; k < _parallelSources; k++)
{
pCore = VACore::CreateCoreInstance( oConfig );
pCore->Initialize();
viSourceIDs[k] = pCore->CreateSoundSource("BenchmarkSoundSource");
}
pCore->UnlockUpdate();
int iIterations = 100;
int iMaxNumParallelSources = 200;
for( int i = 1; i < iMaxNumParallelSources; i++ )
for (int j = 0; j < iterations; j++)
{
ITAStopWatch swIterations;
for( int j = 0; j < iIterations; j++ )
pCore->LockUpdate();
for (int k = 0; k < (_parallelSources); k++)
{
swIterations.start();
std::vector< int > viSourceIDs( i );
for( int k = 0; k < i; k++ )
viSourceIDs[ k ] = pCore->CreateSoundSource( "BenchmarkSoundSource" );
for( int k = 0; k < i; k++ )
pCore->DeleteSoundSource( viSourceIDs[ k ] );
swIterations.stop();
float azimuth = ((rand() % 3600) / 1800.0) * M_PI;
float elevation = ((rand() % 1800) / 1800.0) * M_PI;
float x = sin(elevation) * cos(azimuth) * 5;
float y = cos(elevation) * 5;
float z = sin(azimuth) * sin(elevation) * 5;
pCore->SetSoundSourcePosition(viSourceIDs[k], VAVec3(x, y, z));
}
cout << "Statistics for " << i << " parallel source: " << swIterations.ToString() << endl;
pCore->UnlockUpdate();
_sleep(100);
}
string audio = pCore->CreateSignalSourceBufferFromFile("X:/Sciebo/2018 MA Lucas Msch Auralization/input_files/Schluesselbund.wav");
pCore->SetSignalSourceBufferPlaybackAction(audio, 2);
pCore->SetSignalSourceBufferLooping(audio, true);
for (int k = 0; k < _parallelSources; k++)
{
pCore->SetSoundSourceSignalSource(viSourceIDs[k], audio);
}
_sleep(2000);
for (int j = 0; j < iterations; j++)
{
clock += timestep;
time["time"] = clock;
pCore->CallModule("manualclock", time);
trigger["trigger"] = true;
pCore->CallModule("virtualaudiodevice", trigger);
}
delete pCore;
}
......
......@@ -48,6 +48,7 @@ voices_dir = data/Voices
# List further config files to be appended to this configuration (also looking at paths)
#VRLabSetup = VASetup.VRLab.ini
VASetupHOAIdeal = VASetup.HOAIdeal.ini
[Macros]
......@@ -147,7 +148,7 @@ Reproductions = MyTalkthroughHeadphones
OutputDetectorEnabled = false
RecordOutputEnabled = false
RecordOutputFileName = renderer_out.wav
RecordOutputBaseFolder = recordings/$(ProjectName)/renderer/MyBinauralFreeField
RecordOutputBaseFolder = recordings/$(ProjectName)/renderer/binaural/freefield
HRIRFilterLength = 256
MotionModelNumHistoryKeys = 10000
MotionModelWindowSize = 0.1
......@@ -157,19 +158,31 @@ MotionModelLogEstimatedOutputSources = false
MotionModelLogInputListener = false
MotionModelLogEstimatedOutputListener = false
SwitchingAlgorithm = linear
FilterBankType = iir_burg_order10
[Renderer:MyAmbientMixer]
class = AmbientMixer
Description = Low-cost renderer to make sound audible without spatializations
Enabled = false
OutputGroup = MyDesktopHP
Reproductions = MyTalkthroughHeadphones
Reproductions = MyAmbisonicsBinauralMixdown
# OutputGroup = MyDesktopHP
NumChannels = 9
SignalSourceMixingEnabled = true
SamplerEnabled = false
[Renderer:HOARender]
Class = AmbisonicsFreeField
Enabled = false
Reproductions = MyAmbisonics, MyAmbisonicsBinauralMixdown
TruncationOrder = 2
ReproductionCenterPos = 0,1.34,0
SwitchingAlgorithm = cubicspline
[Renderer:MyBinauralArtificialReverb]
Class = BinauralArtificialReverb
Enabled = false
Reproductions = MyTalkthroughHeadphones
ReverberationTime = 0.71
ReverberationTime = 1, 0.71, 0.3
RoomVolume = 200
RoomSurfaceArea = 88
MaxReverbFilterLengthSamples = 88200
......@@ -198,18 +211,52 @@ UpdateRateER = 4.2
UpdateRateDD = 0.08
DirectSoundPowerCorrectionFactor = 0.05
[Renderer:MyBinauralClustering]
Enabled = false
Class = BinauralClustering
Reproductions = MyTalkthroughHeadphones
OutputDetectorEnabled = false
RecordOutputEnabled = false
RecordOutputFileName = renderer_out.wav
RecordOutputBaseFolder = recordings/$(ProjectName)/renderer/binaural/clustering
HRIRFilterLength = 256
MotionModelNumHistoryKeys = 10000
MotionModelWindowSize = 0.4
MotionModelWindowDelay = 0.2
MotionModelLogInputSources = false
MotionModelLogEstimatedOutputSources = false
MotionModelLogInputListener = false
MotionModelLogEstimatedOutputListener = false
SwitchingAlgorithm = linear
NumClusters = 12
AngularDistanceThreshold = 0.33
[Renderer:MyBinauralOutdoorNoise]
Enabled = false
Class = BinauralOutdoorNoise
Reproductions = MyTalkthroughHeadphones
OutputDetectorEnabled = false
RecordOutputEnabled = false
RecordOutputFileName = renderer_out.wav
RecordOutputBaseFolder = recordings/$(ProjectName)/renderer/binaural/outdoornoise
HRIRFilterLength = 256
SwitchingAlgorithm = linear
NumClusters = 6
AngularDistanceThreshold = 0.0
[Renderer:MyPrototypeFreeField]
Class = PrototypeFreeField
Enabled = false
Reproductions = MyTalkthroughHeadphones
MotionModelNumHistoryKeys = 10000
MotionModelWindowSize = 0.2
MotionModelWindowSize = 0.1
MotionModelWindowDelay = 0.1
MotionModelLogInputSources = false
MotionModelLogEstimatedOutputSources = false
DumpListeners = false
DumpListenersGain = 1.0
SwitchingAlgorithm = linear
FilterBankType = IIR
[Renderer:MyHearingAidRenderer]
Class = PrototypeHearingAid
......@@ -226,6 +273,7 @@ HRIRFilterLength = 256
DumpListeners = false
# Gain for listener dumping [Factor]
DumpListenersGain = 10
FilterBankType = IIR
[Renderer:MyGenericRenderer]
Class = PrototypeGenericPath
......@@ -236,20 +284,47 @@ IRFilterLengthSamples = 88200
OutputMonitoring = true
RecordOutputEnabled = false
RecordOutputFileName = renderer_out.wav
RecordOutputBaseFolder = recordings/$(ProjectName)/renderer/MyGenericRenderer
RecordOutputBaseFolder = recordings/$(ProjectName)/renderer/prototype/generic
[Renderer:MyImageSourceRenderer]
Class = PrototypeImageSource
Enabled = false
Reproductions = MyTalkthroughHeadphones
NumChannels = 2
RoomLength = 5
RoomWidth = 5
RoomHeight = 5
MaxOrder = 2
Betax1 = 0.1
Betax2 = 0.1
Betay1 = 0.1
Betay2 = 0.1
Betaz1 = 0.1
Betaz2 = 0.1
DirectSound = true
HRIRFilterLength = 256
IRFilterLengthSamples = 88200
OutputMonitoring = true
RecordOutputEnabled = false
RecordOutputFileName = renderer_out.wav
RecordOutputBaseFolder = recordings/$(ProjectName)/renderer/prototype/imagemodel
[Renderer:MyAirTrafficNoiseRenderer]
Class = BinauralAirTrafficNoise
Enabled = false
Reproductions = MyTalkthroughHeadphones
RecordOutputEnabled = false
RecordOutputFileName = renderer_out.wav
RecordOutputBaseFolder = recordings/$(ProjectName)/renderer/binaural/airtrafficnoise
FilterBankType = IIR
[Renderer:MyVBAPFreefield]
Class = VBAPFreeField
Enabled = false
Output = VRLab_Horizontal_LS
Reproductions = MixdownHeadphones
FilterBankType = IIR
ReproductionCenterPos = 0,0,0
[Renderer:MyDummyRenderer]
class = PrototypeDummy
......@@ -324,9 +399,23 @@ Optimization = OPTIMIZATION_NONE
Class = HOA
Enabled = false
Name = Higher-Order Ambisonics
Enabled = false
Algorithm = HOA
Outputs = VRLab_Horizontal_LS
ReproductionCenterPos = 0,0,0
[Reproduction:MyAmbisonicsBinauralMixdown]
Class = AmbisonicsBinauralMixdown
Enabled = false
Name = Higher-Order Ambisonics dynamic binaural downmix renderer
HRIRFilterLength = 256
VirtualOutput = HOAIdeal
Outputs = MyDesktopHP
TruncationOrder = 2
ReproductionCenterPos = 0,0,0
HRIR = $(DefaultHRIR)
#HRIR= HRIR/MyDaffv17HRTF.daff
TrackedListenerID = 1
TrackingDelaySeconds = 0
[Reproduction:MyMixdownHeadphones]
Class = BinauralMixdown
......@@ -335,7 +424,7 @@ Name = Binaural mixdown of virtual loudspeaker setup using HRIR techniques
Outputs = MyDesktopHP
VirtualOutput = MyDesktopLS
TrackedListenerID = 1
HRIRFilterLength = 128
HRIRFilterLength = 256
[Reproduction:HearingAidTalkthrough]
Class = Talkthrough
......
......@@ -34,19 +34,25 @@ Samplerate = 44100
Buffersize = 64
OutputChannels = 2
[Renderer:MyBinauralRealTime]
Class = BinauralRealTime
Enabled = true
Reproductions = MyTalkthroughHeadphones
RecordOutputEnabled = true
RecordOutputFilePath = BinauralRealTime_rendering.wav
[Renderer:MyBinauralFreeField]
Class = BinauralFreeField
Enabled = true
Reproductions = MyHeadphones
Reproductions = MyTalkthroughHeadphones
RecordOutputEnabled = true
RecordOutputFileName = renderer_out.wav
RecordOutputBaseFolder = recordings/$(ProjectName)/renderer/MyBinauralFreeField
[Reproduction:MyHeadphones]
Class = Headphones
[Reproduction:MyTalkthroughHeadphones]
Class = Talkthrough
Enabled = true
HpIRInvFile = HD650_all_inv.wav
HpIRInvCalibrationGainDecibel = 0.1
Name = Generic talkthrough to output group
Outputs = MyDesktopHP
RecordInputEnabled = false
RecordInputFileName = reproduction_in.wav
......
......@@ -6,7 +6,6 @@
[Output:HOAIdeal]
Description = Equiangular placed loudspeaker
Enabled = true
Devices = LS1, LS2, LS3, LS4, LS5, LS6, LS7, LS8, LS9, LS10, LS11, LS12, LS13, LS14, LS15, LS16, LS17, LS18, LS19, LS20, LS21, LS22, LS23, LS24, LS25
[OutputDevice:LS1]
......
......@@ -20,17 +20,17 @@ Devices = LS_FL, LS_FR, LS_RR, LS_RL
[Output:VRLAB_LS_STEREO]
Description = ITA VRLab simple stereo setup
Enabled = false
Enabled = true
Devices = LS_FL, LS_FR
[Output:VRLAB_LS_CEILING]
Description = ITA VRLab ceiling loudspeaker ring setup
Enabled = false
Enabled = true
Devices = LS_TF, LS_TR, LS_TB, LS_TL
[Output:VRLAB_LS_FLOOR]
Description = ITA VRLab floor loudspeaker ring setup
Enabled = false
Enabled = true
Devices = LS_BF, LS_BR, LS_BB, LS_BL
[Output:VRLAB_LS_SUBWOOFER]
......@@ -55,7 +55,7 @@ Devices = HP2
[Output:VRLAB_HP_WIRELESS]
Description = ITA VRLab wireless user space headphones
Enabled = false
Enabled = true
Devices = WHP
# Output devices: audio hardware devices for playback
......@@ -64,7 +64,7 @@ Devices = WHP
Type = LS
Description = Neumann O300D broadband loudspeaker, front-left
Channels = 1
Position = -1.6232, 1.2700, -1.6054
Position = -1.6232, 1.3400, -1.6054
OrientationYPR = -135, 0, 0
DataFileName = Neumann_O300D_Directivity_DFT.daff
......@@ -72,7 +72,7 @@ DataFileName = Neumann_O300D_Directivity_DFT.daff
Type = LS
Description = Neumann O300D broadband loudspeaker, front-right
Channels = 2
Position = 1.6562, 1.2700, -1.5858
Position = 1.6562, 1.3400, -1.5858
OrientationYPR = 135, 0, 0
DataFileName = Neumann_O300D_Directivity_DFT.daff
......@@ -80,7 +80,7 @@ DataFileName = Neumann_O300D_Directivity_DFT.daff
Type = LS
Description = Neumann O300D broadband loudspeaker, rear-right
Channels = 3
Position = 1.6225, 1.2700, 1.5918
Position = 1.6225, 1.3400, 1.5918
OrientationYPR = 45, 0, 0
DataFileName = Neumann_O300D_Directivity_DFT.daff
......@@ -88,7 +88,7 @@ DataFileName = Neumann_O300D_Directivity_DFT.daff
Type = LS
Description = Neumann O300D broadband loudspeaker, rear-left
Channels = 4
Position = -1.6232, 1.2700, 1.5983
Position = -1.6232, 1.3400, 1.5983
OrientationYPR = -45, 0, 0
DataFileName = Neumann_O300D_Directivity_DFT.daff
......
......@@ -12,5 +12,6 @@ The following files are licensed under Creative Commons BY-NC-SA 4.0 by the Inst
- Singer.v17.ms.daff
- Trumpet1.v17.ms.daff
- HD650_all_inv.wav
- ambeo_rir_ita_doorway.wav
For more information, higher resolutions for academic purposes and commercial use, please contact us.
......@@ -4,7 +4,7 @@
* VVV VVV A Virtual Acoustics (VA) | http://www.virtualacoustics.org
* VVV VVV AAA Licensed under the Apache License, Version 2.0