Skip to content
Snippets Groups Projects
Commit 7aabb626 authored by Marius Schmeling's avatar Marius Schmeling
Browse files

added Directivity mapping

parent e5b4d7bd
Branches
No related tags found
1 merge request!4Release
......@@ -58,6 +58,11 @@ std::string FVAPluginModule::directivity;
VAQuat* FVAPluginModule::tmpQuat = new VAQuat();
VAVec3* FVAPluginModule::tmpVec = new VAVec3();
TArray<FString> FVAPluginModule::listOfPhonemes;
TArray<FString> FVAPluginModule::listOfDirectivities;
TMap<FString, FString> FVAPluginModule::dirMapping;
TMap<FString, int> FVAPluginModule::dirMappingToInt;
void FVAPluginModule::StartupModule()
{
......@@ -886,6 +891,82 @@ void FVAPluginModule::processExeption(FString location, FString exp)
UE_LOG(LogTemp, Error, TEXT("Error in [%s] with error: %s"), *location, *exp);
}
bool FVAPluginModule::readDirFile(FString dirName)
{
FString BaseDir = IPluginManager::Get().FindPlugin("VAPlugin")->GetBaseDir();
FString dir = FPaths::Combine(*BaseDir, TEXT("config/directivities/"));
FString config_file_name = dir + dirName;
GConfig->UnloadFile(config_file_name);
GConfig->LoadFile(config_file_name);
FConfigFile* config = GConfig->FindConfigFile(config_file_name);
if (config == nullptr) {
// UE_LOG(LogTemp, Error, TEXT("[Sc]Unable to load study config file: %s"), *config_file_name_);
VAUtils::logStuff(FString("Unable to load directivity config file") + config_file_name);
return false;
}
listOfPhonemes.Empty();
dirMapping.Empty();
listOfDirectivities.Empty();
config->GetArray(TEXT("DirectivityMapping"), TEXT("ListOfPhonemesArray"), listOfPhonemes);
// FString listOfdir;
// config->GetString(TEXT("DirectivityMapping"), TEXT("ListOfPhonemesString"), listOfDir);
VAUtils::logStuff("The following inputs for dirs were registered: ");
FString tmpS;
FString test = "Hallo";
for (auto entry : listOfPhonemes) {
config->GetString(TEXT("DirectivityMapping"), *entry, tmpS);
if (tmpS.IsEmpty()) {
UE_LOG(LogTemp, Warning, TEXT(" Directivity for %s is empty!"), *entry);
continue;
}
dirMapping.Add(entry, tmpS);
UE_LOG(LogTemp, Warning, TEXT(" %s --> %s"), *entry, *tmpS);
// if(tmpS is not in Directivities yet)
if (!listOfDirectivities.Contains(tmpS)) {
listOfDirectivities.Add(tmpS);
}
}
VAUtils::logStuff("------------------");
VAUtils::logStuff("Finished reading Dir File");
FString folder;
config->GetString(TEXT("DirectivityMapping"), TEXT("dirFolder"), folder);
int iHRIR;
FString tmp;
for (auto entry : listOfDirectivities) {
// tmp = folder;
// tmp.Append(entry);
std::string dir(TCHAR_TO_UTF8(*(folder + entry)));
iHRIR = pVA->CreateDirectivityFromFile(dir);
dirMappingToInt.Add(entry, iHRIR);
}
return true;
}
bool FVAPluginModule::processDirFile()
{
// iHRIR = pVA->CreateDirectivityFromFile(dir);
return false;
}
bool FVAPluginModule::isConnected()
{
if (!isMasterAndUsed()) {
......
......@@ -90,7 +90,8 @@ void AVAReceiverActor::BeginPlay()
FVAPluginModule::processSoundQueue();
FVAPluginModule::readDirFile(dirName);
FVAPluginModule::processDirFile();
}
// Called every frame
......
......@@ -130,15 +130,26 @@ public:
static bool isViewModeHMD();
// check if View Mode is Cave //
static bool isViewModeCave();
// check if is Master and VA Server should be used //
static bool isMasterAndUsed();
// process / output CVAException
// process / output CVAException //
static void processExeption(FString location, CVAException e);
static void processExeption(FString location, FString exception);
// read Dir file //
static bool readDirFile(FString dirName);
// process Dir file //
static bool processDirFile();
// TODO: //
// change Dir file //
protected:
......@@ -220,6 +231,17 @@ protected:
// bool if VA is used //
static bool useVA;
// List of all registered input Phonemes //
static TArray<FString> listOfPhonemes;
// List of all actual dirs//
static TArray<FString> listOfDirectivities;
// Mapping of all inputs to their phenomes //
static TMap<FString, FString> dirMapping;
// Mapping of all phenomes to their int value @VA Server //
static TMap<FString, int> dirMappingToInt;
// bool runServerTest();
......
......@@ -50,6 +50,10 @@ public:
UPROPERTY(EditAnywhere, meta = (DisplayName = "Port [0, 65535]", ClampMin = "0", ClampMax = "65535", UIMin = "0", UIMax = "65535"))
uint16 vPort = 12340;
// Factor for global output Gain
UPROPERTY(EditAnywhere, meta = (DisplayName = "Name of ini file for directivities"))
FString dirName = "default.ini";
// return directivity x in form: $(x)
std::string getDirectivity();
......
......@@ -8,6 +8,7 @@
#include "VANet.h"
class VAUtils
{
public:
......
[DirectivityMapping]
dirFolder=
default=default
a=ad
b=ad
c=ad
d=ad
e=ad
f=ad
g=bd
h=bd
i=
j=jd
k=kd
l=ld
m=md
n=nd
o=od
p=pd
q=wd
r=rd
s=sd
t=td
u=ud
v=vd
w=wd
x=xd
y=yd
z=zd
ListOfPhonemesString=a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
ListOfPhonemesArray=default
ListOfPhonemesArray=a
ListOfPhonemesArray=b
ListOfPhonemesArray=c
ListOfPhonemesArray=d
ListOfPhonemesArray=e
ListOfPhonemesArray=f
ListOfPhonemesArray=g
ListOfPhonemesArray=h
ListOfPhonemesArray=i
ListOfPhonemesArray=j
ListOfPhonemesArray=k
ListOfPhonemesArray=l
ListOfPhonemesArray=m
ListOfPhonemesArray=n
ListOfPhonemesArray=o
ListOfPhonemesArray=p
ListOfPhonemesArray=q
ListOfPhonemesArray=r
ListOfPhonemesArray=s
ListOfPhonemesArray=t
ListOfPhonemesArray=u
ListOfPhonemesArray=v
ListOfPhonemesArray=w
ListOfPhonemesArray=x
ListOfPhonemesArray=y
ListOfPhonemesArray=z
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment