@@ -87,8 +87,10 @@ void binauraliser_create
8787 pData -> codecStatus = CODEC_STATUS_NOT_INITIALISED ;
8888 pData -> procStatus = PROC_STATUS_NOT_ONGOING ;
8989 pData -> reInitHRTFsAndGainTables = 1 ;
90- for (ch = 0 ; ch < MAX_NUM_INPUTS ; ch ++ )
90+ for (ch = 0 ; ch < MAX_NUM_INPUTS ; ch ++ ) {
9191 pData -> recalc_hrtf_interpFLAG [ch ] = 1 ;
92+ pData -> src_gains [ch ] = 1.f ;
93+ }
9294 pData -> recalc_M_rotFLAG = 1 ;
9395}
9496
@@ -214,6 +216,12 @@ void binauraliser_process
214216 for (; i < nSources ; i ++ )
215217 memset (pData -> inputFrameTD [i ], 0 , BINAURALISER_FRAME_SIZE * sizeof (float ));
216218
219+ /* Apply source gains */
220+ for (ch = 0 ; ch < nSources ; ch ++ ) {
221+ if (fabsf (pData -> src_gains [ch ] - 1.f ) > 1e-6f )
222+ utility_svsmul (pData -> inputFrameTD [ch ], & (pData -> src_gains [ch ]), BINAURALISER_FRAME_SIZE , NULL );
223+ }
224+
217225 /* Apply time-frequency transform (TFT) */
218226 afSTFT_forward_knownDimensions (pData -> hSTFT , pData -> inputFrameTD , BINAURALISER_FRAME_SIZE , MAX_NUM_INPUTS , TIME_SLOTS , pData -> inputframeTF );
219227
@@ -435,6 +443,30 @@ void binauraliser_setInterpMode(void* const hBin, int newMode)
435443 pData -> recalc_hrtf_interpFLAG [ch ] = 1 ;
436444}
437445
446+ void binauraliser_setSourceGain (void * const hAmbi , int srcIdx , float newGain )
447+ {
448+ binauraliser_data * pData = (binauraliser_data * )(hAmbi );
449+ pData -> src_gains [srcIdx ] = newGain ;
450+ }
451+
452+ void binauraliser_setSourceSolo (void * const hAmbi , int srcIdx )
453+ {
454+ binauraliser_data * pData = (binauraliser_data * )(hAmbi );
455+ int i ;
456+ for (i = 0 ; i < pData -> nSources ; i ++ ){
457+ if (i == srcIdx )
458+ pData -> src_gains [i ] = 1.f ;
459+ else
460+ pData -> src_gains [i ] = 0.f ;
461+ }
462+ }
463+
464+ void binauraliser_setUnSolo (void * const hAmbi )
465+ {
466+ binauraliser_data * pData = (binauraliser_data * )(hAmbi );
467+ for (int i = 0 ; i < pData -> nSources ; i ++ )
468+ pData -> src_gains [i ] = 1.f ;
469+ }
438470
439471
440472/* Get Functions */
0 commit comments