Commit 4cacc54a authored by Jonas Stienen's avatar Jonas Stienen
Browse files

Initial VACore checkin

parents
# $Id:$
cmake_minimum_required( VERSION 2.8 )
project( VACore )
list( APPEND CMAKE_MODULE_PATH "$ENV{VISTA_CMAKE_COMMON}" )
include( VistaCommon )
vista_use_package( VistaCoreLibs REQUIRED COMPONENTS VistaInterProcComm )
vista_use_package( VABase REQUIRED FIND_DEPENDENCIES )
vista_use_package( ITABase 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 )
# Including the source files of all source subfolders recursively
include( "include/_SourceFiles.cmake" )
include( "src/_SourceFiles.cmake" )
include_directories( "include" )
add_definitions( -DIEEE754_64FLOAT=1 )
add_definitions( -DVABASE_DLL -DITA_DATA_SOURCES_API -DITA_BASE_DLL -DITA_CONVOLUTION_DLL -DITA_CTC_DLL -DITA_SAMPLER_DLL -DVACORE_DLL -DVACORE_EXPORTS )
add_library( VACore ${ProjectSources} )
target_link_libraries( VACore
${VISTA_USE_PACKAGE_LIBRARIES} # contains all libraries from vista_use_package() calls
)
vista_configure_lib( VACore )
set( VACORE_INCLUDE_OUTDIR "${CMAKE_CURRENT_SOURCE_DIR}/include" )
vista_install( VACore )
vista_create_cmake_configs( VACore )
vista_create_default_info_file( VACore )
set_property( TARGET VACore PROPERTY FOLDER "VA" )
# tests
set( VACORE_COMMON_BUILD TRUE )
#add_subdirectory( "${CMAKE_CURRENT_SOURCE_DIR}/tests" )
#
# VACore default configuration file
#
[Paths]
# Any entry value will be added to the search path list, if existing. They will also be made available as macros (see below).
# If a file can not be found during runtime by local name, the core will try to locate it using the paths in ascending name order.
# Macros are not substituted, here.
InsideSceneData = D:\Users\stienen\Arbeitsumgebung\Inside\InsideSceneData
Cars = D:\Users\stienen\Arbeitsumgebung\Inside\InsideSceneData\Cars
VADataDir = D:\Users\stienen\Arbeitsumgebung\VA\VAData
VADataDirRelative = ../../../VAData
VAConfDirRelative = ../../../VACore/conf
conf_dir = conf
data_dir = data
[Files]
# List further config files to be appended to this configuration (also looking at paths)
#VRLabSetup = VASetup.VRLab.ini
[Macros]
# 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.daff
VADefaultHRIRDataset = $(DefaultHRIR)
HumanDir = Directivity/Slenczka_2005_energetic_3d_octave/Saenger.daff
ViolinDir = Directivity/Slenczka_2005_energetic_3d_octave/Geige1.daff
[Debug]
# Dump the audio device input streams into file
#DumpDeviceInput = $(ProjectName)_in.wav
# Dump the final output audio streams into file
#DumpFinalOutput = $(ProjectName)_out.wav
# Set log level: 0 = quiet; 1 = errors; 2 = warnings (default); 3 = info; 4 = verbose; 5 = trace;
LogLevel = 3
[Audio driver]
# MANDATORY: Audio driver backend (ASIO|Portaudio)
#Driver = ASIO
Driver = Portaudio
# MANDATORY: Audio device (e.g. ASIO4ALL v2, ASIO Hammerfall DSP, Portaudio 'default', 0,1,2,3,...)
#Device = ASIO4ALL v2
#Device = ASIO Hammerfall DSP
#Device = ASIO Fireface USB
#Device = ASIO MADIface USB
#Device = Focusrite USB 2.0 Audio Driver
Device = default
# MANDATORY: Sampling rate [Hz]
Samplerate = 44100
# OPTIONAL: Buffersize used for audio streaming [Samples]
# AUTO will determine the buffersize from the audio device automatically
# 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]
#
[Renderer:MyBinauralFreefield]
Class = BinauralFreefield
Enabled = true
Outputs = MyTalkthroughHeadphones
HRIRFilterLength = 256
MotionModelNumHistoryKeys = 10000
MotionModelWindowSize = 0.1
MotionModelWindowDelay = 0.1
MotionModelLogInputSources = false
MotionModelLogEstimatedOutputSources = false
MotionModelLogInputListener = false
MotionModelLogEstimatedOutputListener = false
[Renderer:MyAmbientMixer]
class = AmbientMixer
Description = Low-cost renderer to make sound audible without spatializations
Enabled = false
OutputGroup = MyDesktopHP
Outputs = MyTalkthroughHeadphones
[Renderer:MyBinauralArtificialReverb]
Class = BinauralArtificialReverb
Enabled = false
Outputs = MyTalkthroughHeadphones
ReverberationTime = 0.71
RoomVolume = 200
RoomSurfaceArea = 88
MaxReverbFilterLengthSamples = 88200
PositionThreshold = 1.0
AngleThresholdDegree = 30
SoundPowerCorrectionFactor = 0.05
TimeSlotResolution = 0.005
MaxReflectionDensity = 12000.0
ScatteringCoefficient = 0.1
SpeedOfSound = 344.0
[Renderer:MyBinauralRoomAcoustics]
Class = BinauralRoomAcoustics
Enabled = false
Outputs = MyTalkthroughHeadphones
# Setup options: Local, Remote, Hybrid
Setup = Local
ServerIP = PC-SEACEN
HybridLocalTasks = DS
HybridRemoteTasks = ER_IS, DD_RT
RavenDataBasePath = $(VADataDir)
# Task processing (Timeout = with desired update rate, for resource efficient processing; EventSync = process on request (for sporadic updates); Continuous = update as often as possible, for standalone server)
TaskProcessing = Timeout
# Desired update rates in Hz, may lead to resource problems
UpdateRateDS = 12.0
UpdateRateER = 4.2
UpdateRateDD = 0.08
DirectSoundPowerCorrectionFactor = 0.05
[Renderer:MyHearingAidRenderer]
Class = HearingAid
Enabled = false
Outputs = HearingAidTalkthrough
#Outputs = MyTalkthroughHeadphones
UpdateRateDS = 120.0
UpdateRateIS = 20.0
UpdateRateRT = 1.0
RenderingGain = 1.0
RenderingDelayInMs = 10.0
HRIRFilterLength = 256
# Dump individual listener signals
DumpListeners = false
# Gain for listener dumping [Factor]
DumpListenersGain = 10
[Renderer:MyGenericRenderer]
Class = GenericPath
Enabled = false
Outputs = MyTalkthroughHeadphones
NumChannels = 2
IRFilterLength = 200000
[Renderer:MyAirTrafficNoiseRenderer]
Class = BinauralAirTrafficNoise
Enabled = false
Outputs = MyTalkthroughHeadphones
[Renderer:MyVBAPFreefield]
Class = VBAPFreefield
Enabled = false
Output = VRLab_Horizontal_LS
Outputs = MixdownHeadphones
[Renderer:MyDummyRenderer]
class = Dummy
Description = Dummy renderer for testing and benchmarking
Enabled = false
OutputGroup = MyDesktopHP
Outputs = MyTalkthroughHeadphones
# --= Audio reproduction =--
# Here you write down the audio reproduction modules that are created after VA starts.
# Each section has the format [Reproduction:<ID>] (<ID> must be unique and is freely chooseable).
# Warum diese Schicht mit Eingngen und Ausgngen?
#- Vernnftige Gruppierung fr Meters
#- Abstraktion der Renderer und Reproductions von physikalischen Kanlen
#- Zusatzfunktionalitt unbh. von Renderer und Reproductions: Equalization
#
#- Diese Inputs mssen als Signalquellen im Core erscheinen
[Reproduction:MyTalkthroughHeadphones]
Class = Talkthrough
Enabled = true
Name = Generic talkthrough to output group
Outputs = MyDesktopHP
[Reproduction:MyHD600]
Class = Headphones
Enabled = false
# Headphone impulse response inverse file path (normalized)
HpIRInvFile = $(VADataDir)/HPEQ/HD600_all_eq_128_stereo.wav
#HpIRInvFilterLength = 22050
# Headphone impulse response inverse gain for calibration ( HpIR * HpIRInv == 0dB )
HpIRInvCalibrationGainDecibel = 0.1
Name = Equalized Sennheiser HD600 headphones
Outputs = MyDesktopHP
[Reproduction:MyNCTC]
Class = NCTC
Enabled = false
Name = Crosstalk cancellation for N loudspeaker
Outputs = HK_LS
TrackedListenerID = 1
# algorithm: reg|...
Algorithm = reg
RegularizationBeta = 0.01
DelaySamples = 2048
UseTrackedListenerHRIR = false
CTCDefaultHRIR = $(VADataDir)\HRIR\ITA-Kunstkopf_HRIR_AP11_Pressure_Equalized_3x3_256.daff
Optimization = OPTIMIZATION_NONE
[Reproduction:MyAmbisonics]
Class = HOA
Enabled = false
Name = Higher-Order Ambisonics
Enabled = false
Algorithm = HOA
Outputs = VRLab_Horizontal_LS
[Reproduction:MyMixdownHeadphones]
Class = BinauralMixdown
Enabled = false
Name = Binaural mixdown of virtual loudspeaker setup using HRIR techniques
Outputs = MyDesktopHP
VirtualOutput = VRLab_Horizontal_LS
TrackedListenerID = 1
HRIRFilterLength = 128
[Reproduction:HearingAidTalkthrough]
Class = Talkthrough
Enabled = false
Name = Hearing aid takthrough
Outputs = HearingAid
[Setup]
# hardware setup example for a desktop environment, usually more sophisticated
# settings are outsourced to a VASetup.ini that is included in the 'Files' section
# -- outputs
[Output:MyDesktopHP]
Description = Desktop user with headphones
Devices = MyHP
# -- inputs
[Input:MyDesktopMike]
Description = Generic desktop microphone, i.e. from WebCam or Line-In
Devices = MyLineIn
# -- hardware devices
[OutputDevice:MyHP]
Type = HP
Description = Headphone hardware device (two-channels)
Channels = 1,2
[InputDevice:MyLineIn]
Type = MIC
Description = Table microphone in front of user using line-in
Position = 0, -0.3, 0.2
Channels = 1
# -- outputs
[Output:Desktop_HP]
Description = Generic desktop user with headphones
Devices = HP
# this currently messes up the output patch bay (double block increment?)
#[Output:Desktop_LS]
#Description = Generic desktop user with two loudspeaker beside monitor
#Devices = LS_L, LS_R
# -- inputs
[Input:Desktop_Mike]
Description = Generic desktop microphone, i.e. from WebCam or Line-In
Devices = LINE_IN
# -- hardware devices
[OutputDevice:HP]
Type = HP
Description = Generic headphones
Channels = 1,2
[OutputDevice:LS_L]
Type = LS
Description = Generic loudspeaker on the left of monitor
Position = -0.3, -0.2, 0
OrientationRPY = 200, 0, 0
Channels = 1
[OutputDevice:LS_R]
Type = LS
Description = Generic loudspeaker on the right of monitor
Position = 0.3, -0.2, 0
OrientationRPY = 160, 0, 0
Channels = 2
[InputDevice:HP_MIKE]
Type = MIC
Description = Headphone-attached microphone using line-in
Channels = 1
[InputDevice:LINE_IN]
Type = MIC
Description = Table microphone in front of user using line-in
Position = 0, -0.3, 0.2
Channels = 1
[InputDevice:WEBCAM]
Type = MIC
Description = Webcam microphone on top of monitor
Position = 0, 0.3, 0
Channels = 2
\ No newline at end of file
# ITA Hörkabine audio hardware setup
# by Jonas Stienen, Florian Pausch
# Outputs: logical groups of output audio hardware
[Output:HK_LS]
Description = ITA Hörkabine setup with four loudspeaker
Enabled = true
Devices = LS_FL, LS_FR, LS_RR, LS_RL
[Output:HK_LS_FRONT]
Description = ITA Hörkabine setup with two loudspeaker
Enabled = false
Devices = LS_FL, LS_FR
[Output:HK_HD650]
Description = ITA Hörkabine headphones
Enabled = false
Devices = HD650
# Output devices: audio hardware devices for playback
[OutputDevice:HD650]
Type = HP
Channels = 1,2
[OutputDevice:LS_FL]
Type = LS
Description = K&H O110D, no13, front-left
Channels = 3
#Position = 0.25, 1.49, -2.05
#OrientationYPR = -135, -15, 0
Position = -0.8591, 1.522,-0.8591
OrientationYPR = -135, -19.1, 0
#DataFileName = $(VADataDir)/LSEQ/KleinHummel/ls13_eq_nDFT_1025.daff
[OutputDevice:LS_FR]
Type = LS
Description = K&H O110D, no14, front-right
Channels = 4
#Position = 2.05, 1.49, -2.05
#OrientationYPR = 135, -15, 0
Position = 0.8605, 1.521, -0.8605
OrientationYPR = 135, -19.1, 0
#DataFileName = $(VADataDir)/LSEQ/KleinHummel/ls14_eq_nDFT_1025.daff
[OutputDevice:LS_RR]
Type = LS
Description = K&H O110D, no15, rear-right
Channels = 5
#Position = 2.05, 1.49, -0.25
#OrientationYPR = 45, -15, 0
Position = 0.8422, 1.537, 0.8422
OrientationYPR = 45, -19.1, 0
#DataFileName = $(VADataDir)/LSEQ/KleinHummel/ls15_eq_nDFT_1025.daff
[OutputDevice:LS_RL]
Type = LS
Description = K&H O110D, no16, rear-left
Channels = 6
#Position = 0.25, 1.49, -0.25
#OrientationYPR = -45, -15, 0
Position = -0.8485, 1.516, 0.8485
OrientationYPR = -45, -19.1, 0
#DataFileName = $(VADataDir)/LSEQ/KleinHummel/ls16_eq_nDFT_1025.daff
# ITA Laboratory for Virtual Acoustics (VRLab) audio hardware setup
# by Jonas Stienen, Lukas Aspck
# Outputs: logical groups of output audio hardware
[Output:VRLAB_LS_ALL]
Description = ITA VRLab setup using all available broadband loudspeaker (O300 & O110)
Enabled = true
Devices = LS_FL, LS_FR, LS_RL, LS_RR, LS_TF, LS_TR, LS_TB, LS_TL, LS_BF, LS_BR, LS_BB, LS_BL
[Output:VRLAB_LS_HORIZONTAL]
Description = ITA VRLab setup using loudspeaker ring in horizontal plane at user's head elevation
Enabled = true
Devices = LS_FL, LS_FR, LS_RL, LS_RR
[Output:VRLAB_LS_STEREO]
Description = ITA VRLab simple stereo setup
Enabled = false
Devices = LS_FL, LS_FR
[Output:VRLAB_LS_CEILING]
Description = ITA VRLab ceiling loudspeaker ring setup
Enabled = false
Devices = LS_TF, LS_TR, LS_TB, LS_TL
[Output:VRLAB_LS_FLOOR]
Description = ITA VRLab floor loudspeaker ring setup
Enabled = false
Devices = LS_BF, LS_BR, LS_BB, LS_BL
[Output:VRLAB_LS_SUBWOOFER]
Description = ITA VRLab subwoofer loudspeaker setup
Enabled = false
Devices = LS_SUB
[Output:VRLAB_HP_MAIN]
Description = ITA VRLab operator headphones
Enabled = true
Devices = HP_MAIN
[Output:VRLAB_HP_USER1]
Description = ITA VRLab first user space headphones
Enabled = true
Devices = HP1
[Output:VRLAB_HP_USER2]
Description = ITA VRLab second user space headphones
Enabled = true
Devices = HP2
[Output:VRLAB_HP_WIRELESS]
Description = ITA VRLab wireless user space headphones
Enabled = false
Devices = WHP
# Output devices: audio hardware devices for playback
[OutputDevice:LS_FL]
Type = LS
Description = Neumann O300D broadband loudspeaker, front-left
Channels = 1
Position = -1.6131, 1.3725, -1.6131
OrientationYPR = -135, 0, 0
DataFileName = Neumann_O300D_Directivity_DFT.daff
[OutputDevice:LS_FR]
Type = LS
Description = Neumann O300D broadband loudspeaker, front-right
Channels = 2
Position = 1.6237, 1.3725, -1.6237
OrientationYPR = 135, 0, 0
DataFileName = Neumann_O300D_Directivity_DFT.daff
[OutputDevice:LS_RR]
Type = LS
Description = Neumann O300D broadband loudspeaker, rear-right
Channels = 3
Position = 1.6209, 1.3725, 1.6209
OrientationYPR = 45, 0, 0
DataFileName = Neumann_O300D_Directivity_DFT.daff
[OutputDevice:LS_RL]
Type = LS
Description = Neumann O300D broadband loudspeaker, rear-left
Channels = 4
Position = -1.6152, 1.3725, 1.6152
OrientationYPR = -45, 0, 0
DataFileName = Neumann_O300D_Directivity_DFT.daff
[OutputDevice:LS_TF]
Type = LS
Description = Neumann O110 broadband loudspeaker, top-front
Channels = 5
Position = 0, 2.6, -3
OrientationYPR = 180, -20, 0
DataFileName = Neumann_O110_Directivity_DFT.daff
[OutputDevice:LS_TR]
Type = LS
Description = Neumann O110 broadband loudspeaker, top-right
Channels = 6
Position = 3, 2.6, 0
OrientationYPR = 90, -20, 0
DataFileName = Neumann_O110_Directivity_DFT.daff
[OutputDevice:LS_TB]
Type = LS
Description = Neumann O110 broadband loudspeaker, top-back
Channels = 7
Position = 0, 2.6, 3
OrientationYPR = 0, -20, 0
DataFileName = Neumann_O110_Directivity_DFT.daff
[OutputDevice:LS_TL]
Type = LS
Description = Neumann O110 broadband loudspeaker, top-left
Channels = 8
Position = -3, 2.6, 0
OrientationYPR = -90, -20, 0
DataFileName = Neumann_O110_Directivity_DFT.daff
[OutputDevice:LS_BF]
Type = LS
Description = Neumann O100 broadband loudspeaker, bottom-front
Channels = 9
Position = 0, 0.2, -3
OrientationYPR = 180, 20, 0
DataFileName = Neumann_O100_Directivity_DFT.daff
[OutputDevice:LS_BR]
Type = LS
Description = Neumann O110D broadband loudspeaker, bottom-right
Channels = 10
Position = 3, 0.2, 0
OrientationYPR = 90, 20, 0
DataFileName = Neumann_O110D_Directivity_DFT.daff
[OutputDevice:LS_BB]
Type = LS
Description = Neumann O100 broadband loudspeaker, bottom-back
Channels = 11
Position = 0, 0.2, 3
OrientationYPR = 0, 20, 0
DataFileName = Neumann_O100_Directivity_DFT.daff
[OutputDevice:LS_BL]
Type = LS
Description = Neumann O110D broadband loudspeaker, bottom-left
Channels = 12
Position = -3, 0.2, 0
OrientationYPR = -90, 20, 0
DataFileName = Neumann_O110D_Directivity_DFT.daff
[OutputDevice:LS_SUB]
Type = LS
Description = Neumann O800 subwoofer loudspeaker, right corner
Channels = 14
Position = 3, 0.2, -3
OrientationYPR = 0, 0, 0
DataFileName = Neumann_O800_Directivity_DFT.daff
[OutputDevice:HP_MAIN]
Type = HP
Description = Behringer Headphone Deck
Channels = 17, 18
[OutputDevice:HP1]
Type = HP
Description = First (left) headphone at projector rack
Channels = 19, 20
[OutputDevice:HP2]
Type = HP
Description = Second (right) headphone at projector rack
Channels = 21, 22
[OutputDevice:WHP]
Type = HP
Description = Sennheiser wirless headphones
Channels = 23, 24
# -- outputs
[Output:Ac_Op]
Description = Acoustic Operator Monitor Loudspeaker
Devices = MONL, MONR
[Output:Wireless_HP]
Description = Wireless Headphones