Commit 9544d878 authored by Dipl.-Ing. Jonas Stienen's avatar Dipl.-Ing. Jonas Stienen
Browse files

Merge branch 'big_2017_api_change' into develop

parents 1a394b3e b0e14e6f
conf/VACore.ini
conf/VACore.experimental.ini
conf/*.ini
*.log
*.wav
HTML
*.bat
*.mat
......
......@@ -55,7 +55,7 @@ if( NOT DEFINED ITA_VACORE_VERSION_MAJOR )
set( ITA_VACORE_VERSION_MAJOR "v2017" CACHE STRING "VACore version major (usually 'v' and year)" )
endif( )
if( NOT DEFINED ITA_VACORE_VERSION_MINOR )
set( ITA_VACORE_VERSION_MINOR "c" CACHE STRING "VACore version minor (usually a,b,c ...)" )
set( ITA_VACORE_VERSION_MINOR "d" CACHE STRING "VACore version minor (usually a,b,c ...)" )
endif( )
# Settings
......@@ -78,11 +78,11 @@ if( NOT DEFINED ITA_VACORE_EVENTS_ENABLED )
set( ITA_VACORE_EVENTS_ENABLED ON CACHE BOOL "VACore event handling" )
endif( )
if( NOT DEFINED ITA_VACORE_MAX_NUM_SOURCES )
set( ITA_VACORE_MAX_NUM_SOURCES 0 CACHE INT "VACore maximum number of sound sources ( 0 = unlimited )" )
if( NOT DEFINED ITA_VACORE_MAX_NUM_SOUND_SOURCES )
set( ITA_VACORE_MAX_NUM_SOUND_SOURCES 0 CACHE INT "VACore maximum number of sound sources ( 0 = unlimited )" )
endif( )
if( NOT DEFINED ITA_VACORE_MAX_NUM_LISTENERS )
set( ITA_VACORE_MAX_NUM_LISTENERS 0 CACHE INT "VACore maximum number of listeners ( 0 = unlimited )" )
if( NOT DEFINED ITA_VACORE_MAX_NUM_SOUND_RECEIVERS )
set( ITA_VACORE_MAX_NUM_SOUND_RECEIVERS 0 CACHE INT "VACore maximum number of sound receivers ( 0 = unlimited )" )
endif( )
if( NOT DEFINED ITA_VACORE_WITH_TTS_SIGNAL_SOURCE )
set( ITA_VACORE_WITH_TTS_SIGNAL_SOURCE ${TTSReleay} CACHE BOOL "VACore with text-to-speech signal source support" )
......@@ -144,9 +144,12 @@ endif( )
if( NOT DEFINED ITA_VACORE_WITH_RENDERER_BINAURAL_AIR_TRAFFIC_NOISE )
set( ITA_VACORE_WITH_RENDERER_BINAURAL_AIR_TRAFFIC_NOISE ON CACHE BOOL "Build VACore with rendering module: air traffic noise (VATSS)" )
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_MONAURAL_FREE_FIELD )
set( ITA_VACORE_WITH_RENDERER_MONAURAL_FREE_FIELD ON CACHE BOOL "Build VACore with rendering module: monaural free-field" )
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" )
endif( )
if( NOT DEFINED ITA_VACORE_WITH_RENDERER_PROTOTYPE_DUMMY )
......@@ -198,12 +201,12 @@ include_directories( "include" )
if( ITA_CORE_LIBS_BUILD_STATIC )
add_definitions( -DITA_BASE_STATIC -DITA_DATA_SOURCES_STATIC -DITA_DIFFRACTION_STATIC -DITA_GEO_STATIC -DITA_CONVOLUTION_STATIC -DITA_FFT_STATIC -DITA_CTC_STATIC -DITA_SAMPLER_STATIC )
endif( ITA_CORE_LIBS_BUILD_STATIC )
add_definitions( -DITA_BASE_STATIC -DITA_DATA_SOURCES_STATIC -DITA_DIFFRACTION_STATIC -DITA_GEO_STATIC -DITA_CONVOLUTION_STATIC -DITA_FFT_STATIC -DITA_CTC_STATIC -DITA_DSP_STATIC -DITA_SAMPLER_STATIC )
endif( )
if( ITA_VISTA_BUILD_STATIC )
add_definitions( -DVISTABASE_STATIC -DVISTAMATH_STATIC -DVISTAASPECTS_STATIC -DVISTATOOLS_STATIC -DVISTAINTERPROCCOMM_STATIC )
endif( ITA_VISTA_BUILD_STATIC )
endif( )
add_definitions( -DIEEE754_64FLOAT=1 )
if( NOT ITA_VA_BUILD_STATIC )
......@@ -215,7 +218,7 @@ else( NOT ITA_VA_BUILD_STATIC )
set( BUILD_SHARED_LIBS OFF )
message( "Ignoring activated BUILD_SHARED_LIBS temporary because static VA requested" )
endif( BUILD_SHARED_LIBS )
endif( NOT ITA_VA_BUILD_STATIC )
endif( )
if( NOT WIN32 )
add_definitions( -std=gnu++11 )
......@@ -225,19 +228,19 @@ add_definitions( "-DVACORE_DEFAULT_LOG_LEVEL=${ITA_VACORE_DEFAULT_DEBUG_LEVEL}"
add_definitions( "-DVACORE_VERSION_MAJOR=\"${ITA_VACORE_VERSION_MAJOR}\"" )
add_definitions( "-DVACORE_VERSION_MINOR=\"${ITA_VACORE_VERSION_MINOR}\"" )
if( ${ITA_VACORE_MODULE_INTERFACE_ENABLED} )
add_definitions( "-DVACORE_MODULE_INTERFACE_ENABLED=1" )
if( ITA_VACORE_MODULE_INTERFACE_ENABLED )
add_definitions( "-DVACORE_MODULE_INTERFACE_ENABLED" )
endif( )
if( ${ITA_VACORE_NO_MODULE_INTERFACE_THROW_EXCEPTION} )
add_definitions( "-DVACORE_NO_MODULE_INTERFACE_THROW_EXCEPTION=1" )
if( ITA_VACORE_NO_MODULE_INTERFACE_THROW_EXCEPTION )
add_definitions( "-DVACORE_NO_MODULE_INTERFACE_THROW_EXCEPTION" )
endif( )
if( ${ITA_VACORE_EVENTS_ENABLED} )
add_definitions( "-DVACORE_EVENTS_ENABLED=1" )
if( ITA_VACORE_EVENTS_ENABLED )
add_definitions( "-DVACORE_EVENTS_ENABLED" )
endif( )
add_definitions( "-DVACORE_DEFAULT_CONFIGFILE=\"${ITA_VACORE_DEFAULT_CONFIG_FILE_NAME}\"" )
add_definitions( "-DVACORE_MAX_NUM_SOURCES=${ITA_VACORE_MAX_NUM_SOURCES}" )
add_definitions( "-DVACORE_MAX_NUM_LISTENERS=${ITA_VACORE_MAX_NUM_LISTENERS}" )
add_definitions( "-DVACORE_MAX_NUM_SOUND_SOURCES=${ITA_VACORE_MAX_NUM_SOUND_SOURCES}" )
add_definitions( "-DVACORE_MAX_NUM_SOUND_RECEIVERS=${ITA_VACORE_MAX_NUM_SOUND_RECEIVERS}" )
if( ITA_VACORE_WITH_AUDIO_BACKEND_ASIO )
add_definitions( -DVACORE_WITH_AUDIO_BACKEND_ASIO )
......@@ -250,66 +253,69 @@ if( ITA_VACORE_WITH_AUDIO_BACKEND_DUMMY )
endif( )
# Rendering definitions
if( ${ITA_VACORE_WITH_RENDERER_AMBIENT_MIXER} )
add_definitions( "-DVACORE_WITH_RENDERER_AMBIENT_MIXER=1" )
if( ITA_VACORE_WITH_RENDERER_AMBIENT_MIXER )
add_definitions( "-DVACORE_WITH_RENDERER_AMBIENT_MIXER" )
endif( )
if( ${ITA_VACORE_WITH_RENDERER_AMBISONICS_FREE_FIELD} )
add_definitions( "-DVACORE_WITH_RENDERER_AMBISONICS_FREE_FIELD=1" )
if( ITA_VACORE_WITH_RENDERER_AMBISONICS_FREE_FIELD )
add_definitions( "-DVACORE_WITH_RENDERER_AMBISONICS_FREE_FIELD" )
endif( )
if( ${ITA_VACORE_WITH_RENDERER_BINAURAL_FREE_FIELD} )
add_definitions( "-DVACORE_WITH_RENDERER_BINAURAL_FREE_FIELD=1" )
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} )
add_definitions( "-DVACORE_WITH_RENDERER_BINAURAL_ARTIFICIAL_REVERB=1" )
if( ITA_VACORE_WITH_RENDERER_BINAURAL_ARTIFICIAL_REVERB )
add_definitions( "-DVACORE_WITH_RENDERER_BINAURAL_ARTIFICIAL_REVERB" )
endif( )
if( ${ITA_VACORE_WITH_RENDERER_BINAURAL_ROOM_ACOUSTICS} )
if( ITA_VACORE_WITH_RENDERER_BINAURAL_ROOM_ACOUSTICS )
if( RAVENNET_FOUND )
vista_use_package( RavenNet REQUIRED FIND_DEPENDENCIES )
add_definitions( "-DVACORE_WITH_RENDERER_BINAURAL_ROOM_ACOUSTICS=1" )
else( RAVENNET_FOUND )
add_definitions( "-DVACORE_WITH_RENDERER_BINAURAL_ROOM_ACOUSTICS" )
else( )
message( "Could not find RavenNet, which is required by binaural room acoustics audio renderer" )
endif( RAVENNET_FOUND )
endif( )
endif( )
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_AIR_TRAFFIC_NOISE} )
add_definitions( "-DVACORE_WITH_RENDERER_BINAURAL_AIR_TRAFFIC_NOISE=1" )
if( ITA_VACORE_WITH_RENDERER_BINAURAL_OUTDOOR_NOISE )
add_definitions( -DVACORE_WITH_RENDERER_BINAURAL_OUTDOOR_NOISE )
endif( )
if( ${ITA_VACORE_WITH_RENDERER_MONAURAL_FREE_FIELD} )
add_definitions( "-DVACORE_WITH_RENDERER_MONAURAL_FREE_FIELD=1" )
if( ITA_VACORE_WITH_RENDERER_PROTOTYPE_FREE_FIELD )
add_definitions( "-DVACORE_WITH_RENDERER_PROTOTYPE_FREE_FIELD" )
endif( )
if( ${ITA_VACORE_WITH_RENDERER_PROTOTYPE_DUMMY} )
add_definitions( "-DVACORE_WITH_RENDERER_PROTOTYPE_DUMMY=1" )
if( ITA_VACORE_WITH_RENDERER_PROTOTYPE_DUMMY )
add_definitions( "-DVACORE_WITH_RENDERER_PROTOTYPE_DUMMY" )
endif( )
if( ${ITA_VACORE_WITH_RENDERER_PROTOTYPE_HEARING_AID} )
add_definitions( "-DVACORE_WITH_RENDERER_PROTOTYPE_HEARING_AID=1" )
if( ITA_VACORE_WITH_RENDERER_PROTOTYPE_HEARING_AID )
add_definitions( "-DVACORE_WITH_RENDERER_PROTOTYPE_HEARING_AID" )
endif( )
if( ${ITA_VACORE_WITH_RENDERER_PROTOTYPE_GENERIC_PATH} )
add_definitions( "-DVACORE_WITH_RENDERER_PROTOTYPE_GENERIC_PATH=1" )
if( ITA_VACORE_WITH_RENDERER_PROTOTYPE_GENERIC_PATH )
add_definitions( "-DVACORE_WITH_RENDERER_PROTOTYPE_GENERIC_PATH" )
endif( )
if( ${ITA_VACORE_WITH_RENDERER_VBAP_FREE_FIELD} )
add_definitions( "-DVACORE_WITH_RENDERER_VBAP_FREE_FIELD=1" )
if( ITA_VACORE_WITH_RENDERER_VBAP_FREE_FIELD )
add_definitions( "-DVACORE_WITH_RENDERER_VBAP_FREE_FIELD" )
endif( )
# Reproduction definitions
if( ${ITA_VACORE_WITH_REPRODUCTION_TALKTHROUGH} )
add_definitions( "-DVACORE_WITH_REPRODUCTION_TALKTHROUGH=1" )
if( ITA_VACORE_WITH_REPRODUCTION_TALKTHROUGH )
add_definitions( "-DVACORE_WITH_REPRODUCTION_TALKTHROUGH" )
endif( )
if( ${ITA_VACORE_WITH_REPRODUCTION_HEADPHONES} )
add_definitions( "-DVACORE_WITH_REPRODUCTION_HEADPHONES=1" )
if( ITA_VACORE_WITH_REPRODUCTION_HEADPHONES )
add_definitions( "-DVACORE_WITH_REPRODUCTION_HEADPHONES" )
endif( )
if( ${ITA_VACORE_WITH_REPRODUCTION_AMBISONICS} )
add_definitions( "-DVACORE_WITH_REPRODUCTION_AMBISONICS=1" )
if( ITA_VACORE_WITH_REPRODUCTION_AMBISONICS )
add_definitions( "-DVACORE_WITH_REPRODUCTION_AMBISONICS" )
endif( )
if( ${ITA_VACORE_WITH_REPRODUCTION_BINAURAL_NCTC} )
add_definitions( "-DVACORE_WITH_REPRODUCTION_BINAURAL_NCTC=1" )
if( ITA_VACORE_WITH_REPRODUCTION_BINAURAL_NCTC )
add_definitions( "-DVACORE_WITH_REPRODUCTION_BINAURAL_NCTC" )
endif( )
if( ${ITA_VACORE_WITH_REPRODUCTION_BINAURAL_MIXDOWN} )
add_definitions( "-DVACORE_WITH_REPRODUCTION_BINAURAL_MIXDOWN=1" )
if( ITA_VACORE_WITH_REPRODUCTION_BINAURAL_MIXDOWN )
add_definitions( "-DVACORE_WITH_REPRODUCTION_BINAURAL_MIXDOWN" )
endif( )
if( ${ITA_VACORE_WITH_REPRODUCTION_AMBISONICS_BINAURAL_MIXDOWN} )
add_definitions( "-DVACORE_WITH_REPRODUCTION_AMBISONICS_BINAURAL_MIXDOWN=1" )
if( ITA_VACORE_WITH_REPRODUCTION_AMBISONICS_BINAURAL_MIXDOWN )
add_definitions( "-DVACORE_WITH_REPRODUCTION_AMBISONICS_BINAURAL_MIXDOWN" )
endif( )
if( ${ITA_VACORE_WITH_REPRODUCTION_MIXER_LOW_FREQUENCY} )
add_definitions( "-DVACORE_WITH_REPRODUCTION_MIXER_LOW_FREQUENCY=1" )
if( ITA_VACORE_WITH_REPRODUCTION_MIXER_LOW_FREQUENCY )
add_definitions( "-DVACORE_WITH_REPRODUCTION_MIXER_LOW_FREQUENCY" )
endif( )
string( TIMESTAMP VACORE_CMAKE_DATE "%Y-%m-%d" )
......@@ -333,7 +339,7 @@ vista_add_files_to_sources( ProjectSources "conf" NON_RECURSIVE SOURCE_GROUP "co
vista_add_files_to_sources( ProjectSources "data" SOURCE_GROUP_MIRROR_DIR "data" "wav" "daff" "mat" "ac" "skp" )
add_library( VACore ${ProjectSources} )
add_library( VACore ${ProjectSources} "conf/VACore.ini.proto" )
target_link_libraries( VACore ${VISTA_USE_PACKAGE_LIBRARIES} ) # contains all libraries from vista_use_package() calls
set( BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_TEMP} )
......
......@@ -34,3 +34,24 @@ VACore is an in-house development of ITA and not for use to anyone else. Help is
### Quick build guide
It is recommended to clone and follow the build guide of the parent project [VA](https://git.rwth-aachen.de/ita/VA), which includes this project as a submodule.
### Deployment & publication
Please do NOT deploy and publish a VA core version with TTS (text-to-speech) activated, as it would also include the CereVoice SDK. This is not in compliance with the license agreement (requires account with academic e-mail address). For your research project, use it strictly interenally.
*The developers of VA will not be hold responsible for license violations.*
### Additional safety warning
High sound pressure levels can do severe harm to the human auditory system. Please double check if the system you are using is absolutely safe, because VA will not take any responsibility in case of an accident, as stated in the license agreement. This is only a precaution list as a suggestion for typical situations, but may not be applicable in others.
To counteract an hazardous environment, make yourself familiar with all components included. We suggest that you double check the following conditions:
1. Know the maximum sound power that your emitters (loudspeakers, headphones, amplifiers) are capable of.
2. Know the minimum distance to the ear canal entries of your subject or user. Estimate the maximum possible sound pressure and assure that the range is not harmful to humans.
3. Never trust the audio device input stream (coming from VA or any other software). If an uninitialized buffer is physically played back, it is likely that signals at maximum capacity are emitted.
4. Start at low volumes for initial tests. Be suspicious if a gain or volume control is operating at maximum or over the usual working range (i.e. over 0dB or over a factor of 1.0).
5. Put a personal emergency plan into action: which gain control or muted button will you use in case of an emergency? Also, consider to install an emergency off switch.
6. Use limiters and configure them appropriately.
#include <VACore.h>
#include <VACoreEvent.h>
#include <VA.h>
#include <VACoreFactory.h>
#include <VACoreVersion.h>
#include <VAException.h>
#include <iostream>
#include <vector>
......@@ -14,7 +11,7 @@ using namespace std;
int main( int, char** )
{
IVACore* pCore = NULL;
IVAInterface* pCore = NULL;
try
{
CVAStruct oConfig;
......
......@@ -55,12 +55,10 @@ voices_dir = data/Voices
# Macros can be defined and will be replaced with given value by the core. Usage: "$(MyMacroName)/file.abc" -> "MyValue/file.abc"
# Macros are substituted forwardly by key name order (use with care), otherwise stay untouched: A = B; C = $(A) -> $(C) is B
DefaultHRIR = HRIR/ITA-Kunstkopf_HRIR_AP11_Pressure_Equalized_3x3_256.v17.ir.daff
HumanDir = Directivity/Singer.v17.ms.daff
Trumpet = Directivity/Trumpet1.v17.ms.daff
# Legacy support, please use $(DefaultHRIR) macro
VADefaultHRIRDataset = $(DefaultHRIR)
DemoSound = WelcomeToVA.wav
DefaultHRIR = ITA-Kunstkopf_5x5_256_44kHz.v17.ir.daff
HumanDir = Singer.v17.ms.daff
Trumpet = Trumpet1.v17.ms.daff
# Define some other macros (examples)
ProjectName = MyVirtualAcousticsProject
......@@ -79,6 +77,8 @@ OutputRecordFilePath = $(ProjectName)_out.wav
# Set log level: 0 = quiet; 1 = errors; 2 = warnings (default); 3 = info; 4 = verbose; 5 = trace;
LogLevel = @ITA_VACORE_DEFAULT_DEBUG_LEVEL@
# Controls the core update rate for pushed events (like level meters)
TriggerUpdateMilliseconds = 100
[Audio driver]
......@@ -104,22 +104,31 @@ Samplerate = 44100
# Note: Adjust this to your latency requirements
Buffersize = AUTO
# --= Audio renderers =--
# Syntax [Renderer:<ID>] <ID> can be freely chosen, but must be unique
#
# Fields:
#
# Enabled = (true|false) Create the renderer or skip it (default: true)
# Class = <TYPE> Renderer type/class to create [MANDATORY]
# Outputs = <LIST> Modules the renderer sends its output samples to (hardware output or reproduction module) [MANDATORY]
#
[Calibration]
# The amplitude calibration mode either sets the internal conversion from
# sound pressure to an electrical or digital amplitude signal (audio stream)
# to 94dB (default) or to 124dB. The rendering modules will use this calibration
# mode to calculate from physical values to an amplitude that can be forwarded
# to the reproduction modules. If a reproduction module operates in calibrated
# mode, the resulting physical sound pressure at receiver location can be maintained.
DefaultAmplitudeCalibrationMode = 94dB
[HomogeneousMedium]
DefaultSoundSpeed = 344.0 # m/s
DefaultStaticPressure = 101125.0 # [Pa]
DefaultTemperature = 20.0 # [Degree centigrade]
DefaultRelativeHumidity = 20.0 # [Percent]
DefaultShiftSpeed = 0.0, 0.0, 0.0 # 3D vector in m/s
[Renderer:MyBinauralFreeField]
Enabled = true
Class = BinauralFreeField
Outputs = MyTalkthroughHeadphones
Reproductions = MyTalkthroughHeadphones
OutputDetectorEnabled = false
RecordOutputEnabled = false
RecordOutputFilePath = $(ProjectName)_Renderer_MyBinauralFreeField_Output.wav
......@@ -138,12 +147,12 @@ class = AmbientMixer
Description = Low-cost renderer to make sound audible without spatializations
Enabled = false
OutputGroup = MyDesktopHP
Outputs = MyTalkthroughHeadphones
Reproductions = MyTalkthroughHeadphones
[Renderer:MyBinauralArtificialReverb]
Class = BinauralArtificialReverb
Enabled = false
Outputs = MyTalkthroughHeadphones
Reproductions = MyTalkthroughHeadphones
ReverberationTime = 0.71
RoomVolume = 200
RoomSurfaceArea = 88
......@@ -154,12 +163,11 @@ SoundPowerCorrectionFactor = 0.05
TimeSlotResolution = 0.005
MaxReflectionDensity = 12000.0
ScatteringCoefficient = 0.1
SpeedOfSound = 344.0
[Renderer:MyBinauralRoomAcoustics]
Class = BinauralRoomAcoustics
Enabled = false
Outputs = MyTalkthroughHeadphones
Reproductions = MyTalkthroughHeadphones
# Setup options: Local, Remote, Hybrid
Setup = Local
ServerIP = PC-SEACEN
......@@ -177,7 +185,7 @@ DirectSoundPowerCorrectionFactor = 0.05
[Renderer:MyMonauralFreeField]
Class = MonauralFreeField
Enabled = false
Outputs = MyTalkthroughHeadphones
Reproductions = MyTalkthroughHeadphones
MotionModelNumHistoryKeys = 10000
MotionModelWindowSize = 0.2
MotionModelWindowDelay = 0.1
......@@ -185,14 +193,13 @@ MotionModelLogInputSources = false
MotionModelLogEstimatedOutputSources = false
DumpListeners = false
DumpListenersGain = 1.0
SpeedOfSound = 344.0
SwitchingAlgorithm = linear
[Renderer:MyHearingAidRenderer]
Class = PrototypeHearingAid
Enabled = false
Outputs = HearingAidTalkthrough
#Outputs = MyTalkthroughHeadphones
Reproductions = HearingAidTalkthrough
#Reproductions = MyTalkthroughHeadphones
UpdateRateDS = 120.0
UpdateRateIS = 20.0
UpdateRateRT = 1.0
......@@ -207,7 +214,7 @@ DumpListenersGain = 10
[Renderer:MyGenericRenderer]
Class = PrototypeGenericPath
Enabled = false
Outputs = MyTalkthroughHeadphones
Reproductions = MyTalkthroughHeadphones
NumChannels = 2
IRFilterLengthSamples = 88200
IRFilterDelaySamples = 0
......@@ -216,14 +223,14 @@ OutputMonitoring = true
[Renderer:MyAirTrafficNoiseRenderer]
Class = BinauralAirTrafficNoise
Enabled = false
Outputs = MyTalkthroughHeadphones
Reproductions = MyTalkthroughHeadphones
[Renderer:MyVBAPFreefield]
Class = VBAPFreeField
Enabled = false
Output = VRLab_Horizontal_LS
Outputs = MixdownHeadphones
Reproductions = MixdownHeadphones
[Renderer:MyDummyRenderer]
......@@ -231,7 +238,7 @@ class = PrototypeDummy
Description = Dummy renderer for testing and benchmarking
Enabled = false
OutputGroup = MyDesktopHP
Outputs = MyTalkthroughHeadphones
Reproductions = MyTalkthroughHeadphones
# --= Audio reproduction =--
......
# VA common data
## License
The following files are licensed under Creative Commons BY 4.0
- WelcomeToVA.wav
The following files are licensed under Creative Commons BY-NC-SA 4.0 by the Institute of Technical Acoustics (ITA), RWTH Aachen University:
- ITA-Kunstkopf_5x5_256_44kHz.v17.ir.daff
- Singer.v17.ms.daff
- Trumpet1.v17.ms.daff
For more information, higher resolutions for academic purposes and commercial use, please contact us.
[Material]
name= carpet
notes=
absorp= 0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2
scatter= 0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2
interpol= 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
missingmaterial= 1
[Material]
name= plaster
notes=
absorp= 0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2
scatter= 0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2
interpol= 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
missingmaterial= 1
[Material]
name= Steinwand
notes=
# 20 | 25 | 31.5 | 40 | 50 | 63 | 80 | 100 | 125 | 160 | 200 | 250 | 315 | 400 | 500 | 630 | 800 | 1000 | 1250 | 1600 | 2000 | 2500 | 3150 | 4000 | 5000 | 6300 | 8000 | 10000 | 12500 | 16000 | 20000
absorp= 0.02,0.02,0.02,0.0233333,0.0266667,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.0333333,0.0366667,0.04,0.0433333,0.0466667,0.05,0.0566667,0.0633333,0.07,0.07,0.07,0.07,0.0733333,0.0766667,0.08,0.08
scatter= 0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.183333,0.216667,0.25,0.283333,0.316667,0.35,0.333333,0.316667,0.3,0.3,0.3,0.3,0.333333,0.366667,0.4,0.4,0.4,0.4,0.433333,0.466667,0.5,0.5
interpol= 1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1,1,0,1
AC3Db
MATERIAL "stonewall" rgb 1 1 1 amb 0.2 0.2 0.2 emis 0 0 0 spec 0.2 0.2 0.2 shi 128 trans 0
MATERIAL "plaster" rgb 0.627451 0.25098 0.25098 amb 0.2 0.2 0.2 emis 0 0 0 spec 0.2 0.2 0.2 shi 128 trans 0
MATERIAL "carpet" rgb 1 0 0 amb 0.2 0.2 0.2 emis 0 0 0 spec 0.2 0.2 0.2 shi 128 trans 0
OBJECT world
kids 1
OBJECT poly
name "*Paper_Space0"
loc -4 3.2 -4
crease 45.000000
numvert 8
0 -3.2 8
8 -3.2 8
8 -3.2 0
0 -3.2 0
8 0 0
8 0 8
0 0 8
0 0 0
numsurf 6
SURF 0x10
mat 0
refs 4
4 0 0
5 0 0
1 0 0
2 0 0
SURF 0x10
mat 0
refs 4
7 0 0
3 0 0
0 0 0
6 0 0
SURF 0x10
mat 0
refs 4
6 0 0
0 0 0
1 0 0
5 0 0
SURF 0x10
mat 0
refs 4
7 0 0
4 0 0
2 0 0
3 0 0
SURF 0x10
mat 2
refs 4
3 0 0
2 0 0
1 0 0
0 0 0
SURF 0x10
mat 1
refs 4
7 0 0
6 0 0
5 0 0
4 0 0
kids 0
/*
* --------------------------------------------------------------------------------------------
*
* VVV VVV A Virtual Acoustics (VA) | http://www.virtualacoustics.org
* VVV VVV AAA Licensed under the Apache License, Version 2.0
* VVV VVV AAA
* VVV VVV AAA Copyright 2015-2017
* VVVVVV AAA Institute of Technical Acoustics (ITA)
* VVVV AAA RWTH Aachen University
*
* --------------------------------------------------------------------------------------------
*/
/*!
@page VACore
@section core_intro_sec Introduction
VACore provides the entire functionality of real-time auralization and reproduction. It includes scene management and a lot of extra functionality to display and export audio.
@section core_getting_started_sec Getting started
If you are a C++ developer and you want to integrate VA into your application, the first contact point should be the interface represented by the #IVAInterface class in the VABase project.
If you are planning to create a new binding for any other programming and/or scripting language, also have a look at VANet and the #IVANetClient class.
@section core_developer_sec Developers
If you want to create your own auralization module, you will have to
- implement a rendering module that is compatible with #IVAAudioRenderer
- implement a reproduction module that is compatible with #IVAAudioReproduction
Also, add a code line that registers your module at the corresponding registry.
*/
#ifndef IW_VA_CORE
#define IW_VA_CORE
#include "VACoreDefinitions.h"
#include "VACoreFactory.h"
#include "VANetworkStreamAudioSignalSource.h"
#include "VAObjectPool.h"
#include "VAPoolObject.h"
#include "VAReferenceableObject.h"
#include "VAUncopyable.h"
#endif // IW_VA_CORE
......@@ -17,26 +17,54 @@
#include <VACoreDefinitions.h>
#include <VAStruct.h>
#include <string>
#ifndef VACORE_DEFAULT_CONFIGFILE
#define VACORE_DEFAULT_CONFIGFILE "\"VACore.ini\""
#endif // VACORE_DEFAULT_CONFIGFILE
// Foward declarations
class IVACore;
class IVAInterface;
namespace VACore
{
//! Factory method - creates a VACore instance
/**
* @input oArgs Arguments with configuration for the core
* @output Pointer to the core instance (VA interface API from VABase)
* @param[in] oArgs Arguments with configuration for the core
* @return Pointer to the core instance (VA interface API from VABase)
*/
VACORE_API IVAInterface* CreateCoreInstance( const CVAStruct& oArgs );
//! Parses input INI configuration file and converts it into a VA core config struct
/**
* @param[in] sConfigFilePath File path to core config (INI) file
* @return Core configuration
*/
VACORE_API IVACore* CreateCoreInstance( const CVAStruct& oArgs );
VACORE_API CVAStruct LoadCoreConfigFromFile( const std::string& sConfigFilePath );
//! Store configuration to INI file from VA core config struct
/**
* @param[in] oCoreConfig Core configuration struct
* @param[in] sConfigFilePath File path to core config (INI) file
*/
VACORE_API void StoreCoreConfigToFile( const CVAStruct& oCoreConfig, const std::string& sConfigFilePath );
//! Factore method - create a VACore instance with configuration file
VACORE_API IVACore* CreateCoreInstance( const std::string& sConfigFile = VACORE_DEFAULT_CONFIGFILE );
/**