Skip to content
Snippets Groups Projects
Commit 829514e9 authored by Philipp Schäfer's avatar Philipp Schäfer
Browse files

Launcher: adding setting for VASetup.ini filename

parent 29d2fceb
Branches
No related tags found
No related merge requests found
......@@ -3,6 +3,7 @@
"nLauncherPort": 41578,
"nVAServerPort": 12340,
"nWaitForVAServerStart": 5,
"sVASetupIni": "VASetup.aixCAVE.ini",
"lsBinauralReproductionModules": ["TalkthroughHP", "CTC"],
"dVAServerDirectories" = {
......
......@@ -3,6 +3,7 @@
"nLauncherPort": 41578,
"nVAServerPort": 12340,
"nWaitForVAServerStart": 3,
"sVASetupIni": "VASetup.Launcher.ini",
"lsBinauralReproductionModules": ["TalkthroughHP"],
"lsAmbisonicsReproductionModules": ["AmbisonicsBinauralMixdown"],
......
......@@ -40,6 +40,11 @@ class LauncherConfig:
print( "ERROR reading the json config. Missing " + str(e.args[0]) )
sys.exit( ErrorCodes.ERROR_INCOMPLETE_CONFIG )
try:
conf.sVASetupIni = json_config["sVASetupIni"]
except KeyError:
conf.sVASetupIni = None
try:
conf.lsBinauralReproductionModules = json_config["lsBinauralReproductionModules"]
except KeyError:
......@@ -56,6 +61,7 @@ class LauncherConfig:
class VAComposedIniParser:
def __init__(self, oLauncherConf : LauncherConfig):
self.sVASetupIni = oLauncherConf.sVASetupIni
self.lsBinauralReproductionModules = oLauncherConf.lsBinauralReproductionModules
self.lsAmbisonicsReproductionModules = oLauncherConf.lsAmbisonicsReproductionModules
self.lsCustomReproductionModules = oLauncherConf.lsCustomReproductionModules
......@@ -73,29 +79,33 @@ class VAComposedIniParser:
def prepare_inis(self):
print("Parsing VA ini-files")
self.link_renderer_ini()
self.link_setup_and_renderer_ini()
return self.prepare_reproduction_ini()
def link_renderer_ini(self):
def link_setup_and_renderer_ini(self):
if not self.sRendererIniPath:
print("No renderer ini-file sent by client, using default one.")
print("No renderer ini-file sent by client, using default one: 'VARenderer.Default.ini'")
self.sRendererIniPath = "VARenderer.Default.ini"
if not self.sVASetupIni:
print("No setup ini-file specified, using default one: 'VASetup.Launcher.ini'")
self.sVASetupIni = "VASetup.Launcher.ini"
sMainInifile = self.get_main_inifile()
if not os.path.isfile(sMainInifile):
print("ERROR: Could not find 'VACore.Main.ini' in 'conf' folder. Did you delete it?")
sys.exit( ErrorCodes.ERROR_MISSING_VA_INI )
rendererIni = self._create_parser()
mainIni = self._create_parser()
try:
rendererIni.read( sMainInifile )
rendererIni["Files"]["VARendererIni"] = self.sRendererIniPath
mainIni.read( sMainInifile )
mainIni["Files"]["VARendererIni"] = self.sRendererIniPath
mainIni["Files"]["VASetupIni"] = self.sVASetupIni
except Exception as e:
print( "ERROR: " + str(e) )
sys.exit( ErrorCodes.ERROR_INCOMPLETE_VA_INI )
with open( sMainInifile, 'w' ) as inifile:
rendererIni.write(inifile)
mainIni.write(inifile)
def prepare_reproduction_ini(self):
sFileToRead = self.sConfFolder + "VAReproduction.Prototype.ini"
......
......@@ -39,6 +39,7 @@ The VAServerLauncher can be configured by adjusting the settings in `./LaunchScr
| nLauncherPort | Port used for communication with launcher | 41578 |
| nVAServerPort | Port used for communication with VAServer | 12340 |
| nWaitForVAServerStart | Time to wait for VAServer to start [seconds] | 3 |
| sVASetupIni | Name of VA ini-file with [audio hardware](#audio-hardware) settings located in `conf` folder | "VASetup.Launcher.ini" |
| lsBinauralReproductionModules | [Reproduction modules](#audio-reproduction) used for [binaural](#unreal-project-configuration) input signals | ["TalkthroughHP"] |
| lsAmbisonicsReproductionModules | [Reproduction modules](#audio-reproduction) used for [ambisonics](#unreal-project-configuration) input signals | ["AmbisonicsBinauralMixdown"] |
| lsCustomReproductionModules | [Reproduction modules](#audio-reproduction) used for [custom](#unreal-project-configuration) purposes (e.g. multiple renderers with different signal types) | e.g. ["TalkthroughHP", "AmbisonicsBinauralMixdown"] |
......@@ -51,7 +52,7 @@ If you want to use other VAServer versions than provided, you can extend the `dV
A set of .ini files is provided in the `./conf` directory. The VAServerLauncher will automatically combine them before starting the VAServer. For this to work, you should **not** change those files with the following exceptions.
### Audio hardware
The audio hardware settings are specific to each computer and typically have to be modified in the `VASetup.Launcher.ini`. Those include [audio driver](https://www.virtualacoustics.org/VA/documentation/configuration/#audio-driver-configuration) and [output device](https://www.virtualacoustics.org/VA/documentation/configuration/#audio-hardware-configuration) settings including the respective channels (e.g. headphones on channels 1 & 2).
The audio hardware settings are specific to each computer and typically have to be modified in the VASetup ini file (see `sVASetupIni` in [Launcher config](#launcher-configuration), default `VASetup.Launcher.ini`). Those include [audio driver](https://www.virtualacoustics.org/VA/documentation/configuration/#audio-driver-configuration) and [output device](https://www.virtualacoustics.org/VA/documentation/configuration/#audio-hardware-configuration) settings including the respective channels (e.g. headphones on channels 1 & 2).
### Audio reproduction
The audio [reproduction settings](https://www.virtualacoustics.org/VA/documentation/reproduction/) can to be modified in the `VAReproduction.Prototype.ini`. VA uses reproduction modules to specify how the audio stream is processed before being sent to the output devices. For examples binaural signals can be reproduced using a direct routing to headphones or using cross-talk cancellation (CTC) and loudspeakers.
......@@ -64,7 +65,7 @@ Per default the following reproduction modules are defined
- AmbisonicsLS
- AmbisonicsBinauralMixdown
You can add additional modules, if you want. However, you should *not* rename the existing ones. Furthermore, all modules must be disbaled [Enabled = false]. The VAServerLauncher will automatically enable the reproduction modules specified in the `VirtualAcousticStarterConfig.json` (see [Launcher configuration](#launcher-configuration)) when starting the VAServer.
You can add additional modules, if you want. However, you should **not** rename the existing ones. Furthermore, all modules must be disbaled [Enabled = false]. The VAServerLauncher will automatically enable the reproduction modules specified in the `VirtualAcousticStarterConfig.json` (see [Launcher configuration](#launcher-configuration)) when starting the VAServer.
In any case, especially for the loudspeaker-based modules, you will have to update the `Outputs` setting according to what you defined in the `VASetup.Launcher.ini`.
......
#
# -------------------------------------------------------------------------------------------
#
# VVV VVV A
# VVV VVV AAA Virtual Acoustics (VA)
# VVV VVV AAA Real-time auralization for virtual reality
# VVV VVV AAA
# VVVVVV AAA (c) Copyright Institute of Technical Acoustics (ITA)
# VVVV AAA RWTH Aachen University (http://www.akustik.rwth-aachen.de)
#
# -------------------------------------------------------------------------------------------
#
[Debug]
# Set log level: 0 = quiet; 1 = errors; 2 = warnings; 3 = info (default); 4 = verbose; 5 = trace;
LogLevel = 3
[Audio driver]
# MANDATORY: Audio driver backend (ASIO|Portaudio|Virtual)
Driver = ASIO
# MANDATORY: Audio device ( e.g. ASIO4ALL v2, ASIO Hammerfall DSP, Portaudio 'default', 0,1,2,3,..., virtual user 'Trigger' )
Device = ASIO Hammerfall DSP
# MANDATORY: Sampling rate [Hz]
Samplerate = 44100
# OPTIONAL: Buffer size / block length used for audio streaming [Samples]
# AUTO will determine the buffer size from the audio device automatically [recommended, set in sound card driver configuration]
# Note: Adjust this to your latency requirements
BufferSize = AUTO
# Define number of output channels manually (e.g. for virtual device)
OutputChannels = AUTO
[Setup]
# -- outputs
[Output:Ac_Op]
Description = Acoustic Operator Monitor Loudspeaker
Devices = MONL, MONR
[Output:Wireless_HP]
Description = Wireless Headphones
Devices = WHP
[Output:HP_1]
Description = Wired Headphones 1
Devices = HP1
[Output:HP_2]
Description = Wired Headphones 2
Devices = HP2
[Output:Cave_LS]
Type = Group
Description = aixCave Loudspeaker Array
Devices = LS1, LS2, LS3, LS4, LS5, LS6, LS7, LS8, LS9, LS10, LS11, LS12
[Output:Cave_SW]
Description = aixCave Subwoofer Array
Devices = SW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8, SW9
[Output:Cave_LS_QuadConfig]
Type = Group
Description = aixCave quadratic loudspeaker configuration (center of screen edges)
Devices = LS2, LS5, LS8, LS11
# -- inputs
[Input:Cave_MikeArray]
Description = aixCave Microphone Array
Devices = MIC1,MIC2,MIC3,MIC4,MIC5,MIC6,MIC7,MIC8,MIC9,MIC10,MIC11,MIC12,MIC13,MIC14,MIC15,MIC16,MIC17,MIC18,MIC19,MIC20,MIC21,MIC22
[Input:Ac_Op_TableMike]
Description = Acoustic Operator Table Microphone
Devices = TMIC1
[Input:Cave_Op_TableMike]
Description = Cave Operator Table Microphone Panasonic xyz
Devices = TMIC2
[Input:Cave_WirelessMike]
Description = Cave Wireless Microphone
Devices = WMIC
# -- hardware output devices
# Top-Down View
# RPY in -z direction, -x = +yaw, y = +pitch
#Subwoofer (Pro Dipe 10S V2) Lautsprecher Neumann KH120
#+--------------+ +---4---5---6---+
#| | | |
#| 7 8 9 | 3 7
#| | | |
#| 4 5 6 | +----> +X 2 + 8
#| | | | |
#| 1 2 3 | V 1 9
#| | | |
#+==============+ +Z +==12==11==10===+
# Door Door
[OutputDevice:MONL]
Type = LS
Description = Neumann K110
Channels = 1
DataFileName = Neumann_K110_Directivity_DFT.daff
[OutputDevice:MONR]
Type = LS
Description = Neumann K110
Channels = 2
DataFileName = Neumann_K110_Directivity_DFT.daff
[OutputDevice:WHP]
Type = HP
Description = Sennheiser
Channels = 3,4
DataFileName = Sennheiser_WHP_Equalization.wav
[OutputDevice:HP1]
Type = HP
Description = Superlux 1
Channels = 5,6
DataFileName = Superlux_Equalization.wav
[OutputDevice:HP2]
Type = HP
Description = Superlux 2
Channels = 7,8
DataFileName = Superlux_Equalization.wav
[OutputDevice:LS1]
Type = LS
Description = Neumann K110
Channels = 9
Position = -2.556, 3.405, 1.313
OrientationRPY = 0, -42, -90
DataFileName = Neumann_K110_Directivity_DFT.daff
[OutputDevice:LS2]
Type = LS
Description = Neumann K110
Channels = 10
Position = -2.555, 3.402, 0
OrientationRPY = 0, -42, -90
DataFileName = Neumann_K110_Directivity_DFT.daff
[OutputDevice:LS3]
Type = LS
Description = Neumann K110
Channels = 11
Position = -2.552, 3.402, -1.313
OrientationRPY = 0, -42, -90
DataFileName = Neumann_K110_Directivity_DFT.daff
[OutputDevice:LS4]
Type = LS
Description = Neumann K110
Channels = 12
Position = -1.313, 3.405, -2.551
OrientationRPY = 0, -42, 180
DataFileName = Neumann_K110_Directivity_DFT.daff
[OutputDevice:LS5]
Type = LS
Description = Neumann K110
Channels = 13
Position = 0, 3.403, -2.55
OrientationRPY = 0, -42, 180
DataFileName = Neumann_K110_Directivity_DFT.daff
[OutputDevice:LS6]
Type = LS
Description = Neumann K110
Channels = 14
Position = 1.313, 3.403, -2.555
OrientationRPY = 0, -42, 180
DataFileName = Neumann_K110_Directivity_DFT.daff
[OutputDevice:LS7]
Type = LS
Description = Neumann K110
Channels = 15
Position = 2.560, 3.402, -1.313
OrientationRPY = 0, -42, 90
DataFileName = Neumann_K110_Directivity_DFT.daff
[OutputDevice:LS8]
Type = LS
Description = Neumann K110
Channels = 16
Position = 2.560, 3.402, 0
OrientationRPY = 0, -42, 90
DataFileName = Neumann_K110_Directivity_DFT.daff
[OutputDevice:LS9]
Type = LS
Description = Neumann K110
Channels = 17
Position = 2.559, 3.404, 1.313
OrientationRPY = 0, -42, 90
DataFileName = Neumann_K110_Directivity_DFT.daff
[OutputDevice:LS10]
Type = LS
Description = Neumann K110
Channels = 18
Position = 1.313, 3.399, 2.30
OrientationRPY = 0, -42, 0
DataFileName = Neumann_K110_Directivity_DFT.daff
[OutputDevice:LS11]
Type = LS
Description = Neumann K110
Channels = 19
Position = 0, 3.401, 2.3
OrientationRPY = 0, -42, 0
DataFileName = Neumann_K110_Directivity_DFT.daff
[OutputDevice:LS12]
Type = LS
Description = Neumann K110
Channels = 20
Position = -1.313, 3.401, 2.3
OrientationRPY = 0, -42, 0
DataFileName = Neumann_K110_Directivity_DFT.daff
[OutputDevice:SW1]
Type = LS
Description = Pro Dipe 10S V2
Channels = 21
Position = -1.75, 3.45, -1.75
OrientationRPY = 0, -90, 0
DataFileName = ProDipe_Directivity_DFT.daff
[OutputDevice:SW2]
Type = LS
Description = Pro Dipe 10S V2
Channels = 22
Position = 0, 3.45, -1.75
OrientationRPY = 0, -90, 0
DataFileName = ProDipe_Directivity_DFT.daff
[OutputDevice:SW3]
Type = LS
Description = Pro Dipe 10S V2
Channels = 23
Position = 1.75, 3.45, -1.75
OrientationRPY = 0, -90, 0
DataFileName = ProDipe_Directivity_DFT.daff
[OutputDevice:SW4]
Type = LS
Description = Pro Dipe 10S V2
Channels = 24
Position = -1.75, 3.45, 0
OrientationRPY = 0, -90, 0
DataFileName = ProDipe_Directivity_DFT.daff
[OutputDevice:SW5]
Type = LS
Description = Pro Dipe 10S V2
Channels = 25
Position = 0, 3.45, 0
OrientationRPY = 0, -90, 0
DataFileName = ProDipe_Directivity_DFT.daff
[OutputDevice:SW6]
Type = LS
Description = Pro Dipe 10S V2
Channels = 26
Position = 1.75, 3.45, 0
OrientationRPY = 0, -90, 0
DataFileName = ProDipe_Directivity_DFT.daff
[OutputDevice:SW7]
Type = LS
Description = Pro Dipe 10S V2
Channels = 27
Position = -1.75, 3.45, 1.75
OrientationRPY = 0, -90, 0
DataFileName = ProDipe_Directivity_DFT.daff
[OutputDevice:SW8]
Type = LS
Description = Pro Dipe 10S V2
Channels = 28
Position = 0, 3.45, 1.75
OrientationRPY = 0, -90, 0
DataFileName = ProDipe_Directivity_DFT.daff
[OutputDevice:SW9]
Type = LS
Description = Pro Dipe 10S V2
Channels = 29
Position = 1.75, 3.45, 1.75
OrientationRPY = 0, -90, 0
DataFileName = ProDipe_Directivity_DFT.daff
# -- microphones
# Top-Down View
# Mikrofone (Panasonic P9925-ND / WM-61A)
# RPY in -z direction, -x = +yaw, y = +pitch
#+--------------------------------------+
#| |
#| 19 20 21 22 |
#| |
#| 14 15 16 17 18 |
#| |
#| 10 11 12 13 |
#| |
#| 5 6 7 8 9 | +----> +X
#| | |
#| 1 2 3 4 | |
#| | V
#+======================================+ +Z
# Door
[InputDevice:WMIC]
Type = HP
Description = Sennheiser Wireless Microphone
Channels = 1
[InputDevice:TMIC1]
Type = HP
Description = Table Microphone 1
Channels = 7
[InputDevice:TMIC2]
Type = HP
Description = Table Microphone 2
Channels = 8
[InputDevice:MIC1]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 9
Position = -1.350, 3.435, 1.559
OrientationRPY = 0, -90, 0
[InputDevice:MIC2]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 10
Position = -0.450, 3.435, 1.559
OrientationRPY = 0, -90, 0
[InputDevice:MIC3]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 11
Position = 4.50, 3.435, 1.559
OrientationRPY = 0, -90, 0
[InputDevice:MIC4]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 12
Position = 1.350, 3.435, 1.559
OrientationRPY = 0, -90, 0
[InputDevice:MIC5]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 13
Position = -1.8, 3.435, 0.779
OrientationRPY = 0, -90, 0
[InputDevice:MIC6]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 14
Position = -0.9, 3.435, 0.779
OrientationRPY = 0, -90, 0
[InputDevice:MIC7]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 15
Position = 0, 3.435, 0.779
OrientationRPY = 0, -90, 0
[InputDevice:MIC8]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 16
Position = 0.9, 3.435, 0.779
OrientationRPY = 0, -90, 0
[InputDevice:MIC9]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 17
Position = 1.8, 3.435, 0.779
OrientationRPY = 0, -90, 0
[InputDevice:MIC10]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 18
Position = -1.35, 3.435, 0
OrientationRPY = 0, -90, 0
[InputDevice:MIC11]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 19
Position = -0.45, 3.435, 0
OrientationRPY = 0, -90, 0
[InputDevice:MIC12]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 20
Position = 0.45, 3.435, 0
OrientationRPY = 0, -90, 0
[InputDevice:MIC13]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 21
Position = 1.35, 3.435, 0
OrientationRPY = 0, -90, 0
[InputDevice:MIC14]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 22
Position = -1.8, 3.435, -0.779
OrientationRPY = 0, -90, 0
[InputDevice:MIC15]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 23
Position = -0.9, 3.435, -0.779
OrientationRPY = 0, -90, 0
[InputDevice:MIC16]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 24
Position = 0, 3.435, -0.779
OrientationRPY = 0, -90, 0
[InputDevice:MIC17]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 25
Position = 0.9, 3.435, -0.779
OrientationRPY = 0, -90, 0
[InputDevice:MIC18]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 9
Position = 1.8, 3.435, -0.779
OrientationRPY = 0, -90, 0
[InputDevice:MIC19]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 26
Position = -1.35, 3.435, -1.559
OrientationRPY = 0, -90, 0
[InputDevice:MIC20]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 27
Position = -0.45, 3.435, -1.559
OrientationRPY = 0, -90, 0
[InputDevice:MIC21]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 28
Position = 0.45, 3.435, -1.559
OrientationRPY = 0, -90, 0
[InputDevice:MIC22]
Type = MIC
Description = Panasonic P9925-ND / WM-61A
Channels = 29
Position = 1.350, 3.435, -1.559
OrientationRPY = 0, -90, 0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment