Commit 72ad73b6 authored by Michael Kohnen's avatar Michael Kohnen
Browse files

BFormat rotation basics work, number LS hardcoded, number inputchannels...

BFormat rotation basics work, number LS hardcoded, number inputchannels hardcoded, re-max weighting has to be checked
parent 49c5a267
......@@ -650,15 +650,15 @@ void CVAAmbisonicsBinauralMixdownReproduction::UpdateScene(CVASceneState* pNewSt
Eigen::MatrixXd matRotation = buildRotationMatrix(m_orderMatrices, m_iAmbisonicsTruncationOrder);
//To be deleted: only for testing purposes. Better display of 25x25 matrix (possible to see ind. values)
double matrix[25][25];
/*double matrix[25][25];
for (int i = 0; i < 25; i++) {
for (int j = 0; j < 25; j++) {
matrix[i][j] = matRotation(i, j);
}
}
*/
Eigen::MatrixXd matYinvRot = matRotation * m_matYinv;
/*Eigen::MatrixXd matYinvRot = matRotation * m_matYinv;
double debugYinvRot[25][25];
for (int i = 0; i < 25; i++) {
......@@ -672,11 +672,11 @@ void CVAAmbisonicsBinauralMixdownReproduction::UpdateScene(CVASceneState* pNewSt
debugYinv[i][j] = m_matYinv(i, j); //matrix[zeilen][spalten]
}
}
*/
int m, n;
int iCurrentOrder;
double dGain;
double dGain=0;
//gains
for (int i = 0; i < GetNumInputChannels(); i++){
iCurrentOrder = floor(sqrt(i));
......@@ -685,6 +685,7 @@ void CVAAmbisonicsBinauralMixdownReproduction::UpdateScene(CVASceneState* pNewSt
for (int k = 0; k < 25; k++){
SHLinear2DegreeOrder(k, m, n);
dGain += m_matYinv(k, j) * matRotation(i,k) * m_vdRemaxWeights[n];
//dGain = m_matYinv(i, j) * m_vdRemaxWeights[iCurrentOrder];
}
m_pDecoderMatrixPatchBay->ConnectChannels(0, i, 0, j, dGain);
dGain = 0;
......@@ -692,7 +693,15 @@ void CVAAmbisonicsBinauralMixdownReproduction::UpdateScene(CVASceneState* pNewSt
}
}
/*for (int i = 0; i < GetNumInputChannels(); i++)
{
int iCurrentOrder = (int) floor(sqrt(i));
for( int j=0; j < GetNumVirtualLoudspeaker(); j++ )
{
double dGain = m_matYinv(i, j)*m_vdRemaxWeights[iCurrentOrder];
m_pDecoderMatrixPatchBay->ConnectChannels(0, i, 0, j, dGain);
}
}*/
else if ((m_sRotationMode == "ViewUp") || (m_sRotationMode == "Quaternion") || !m_bBFormatIsInit) {
......@@ -704,7 +713,7 @@ void CVAAmbisonicsBinauralMixdownReproduction::UpdateScene(CVASceneState* pNewSt
//Get Pose of VirtualLoudspeaker
const CVAHardwareDevice* pDevice(m_pVirtualOutput->vpDevices[i]);
if (m_sRotationMode == "ViewUp") {
if (m_sRotationMode == "ViewUp" || !m_bBFormatIsInit) {
//old functionality to rotate
dAzimuth = GetAzimuthOnTarget_DEG(vListenerPos, vListenerView, vListenerUp, pDevice->vPos); //Old solution
dElevation = GetElevationOnTarget_DEG(vListenerPos, vListenerUp, pDevice->vPos); //Old solution
......@@ -784,12 +793,14 @@ void CVAAmbisonicsBinauralMixdownReproduction::UpdateScene(CVASceneState* pNewSt
pFilterChL->Release();
pFilterChR->Release();
m_bBFormatIsInit = true;
m_pdsStreamFilter->pTrigger->trigger();
}
m_bBFormatIsInit = true;
}
else {
return; //RotationMode is set to a wrong String
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment