Commit 3f45c63a authored by Archit Tamarapu's avatar Archit Tamarapu
Browse files

Merge branch 'fix_osba_rendering_scaling' into 'main'

[fix] scaling of ISM and SBA rendered output before combining for OSBA

See merge request !156
parents ca9a4d98 8256128f
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -244,7 +244,9 @@ def main():
    # validate required arguments
    if args.input is None or args.in_fmt is None or args.output is None:
        parser.print_usage()
        raise SystemExit("the following arguments are required: -i/--in, -if/--in_fmt, -o/--out")
        raise SystemExit(
            "the following arguments are required: -i/--in, -if/--in_fmt, -o/--out"
        )

    elif args.input is not None:
        if not args.out_fs:
@@ -280,7 +282,9 @@ def main():
        else:
            # input was a dir so output should be a dir too
            if args.output.is_file():
                raise NotADirectoryError(f"Input directory '{args.input}' specified with file output to '{args.output}' - please specify an output directory instead")
                raise NotADirectoryError(
                    f"Input directory '{args.input}' specified with file output to '{args.output}' - please specify an output directory instead"
                )
            if not args.output.exists():
                args.output.mkdir()
                print(f"Created output directory {args.output}")
+10 −9
Original line number Diff line number Diff line
@@ -81,14 +81,14 @@ def convert_osba(

        # combine results
        try:
            out.audio = out_ism.audio + out_sba.audio
            out.audio = 0.5 * (out_ism.audio + out_sba.audio)
        except ValueError as e:
            if (
                out_ism.audio.shape[0] != out_sba.audio.shape[0]
                and out_sba.audio.shape[0] == osba.audio.shape[0]
            ):
                out.audio = out_sba.audio
                out.audio[: out_ism.audio.shape[0], :] += out_ism.audio
                out.audio = 0.5 * out_sba.audio
                out.audio[: out_ism.audio.shape[0], :] += 0.5 * out_ism.audio
            else:
                raise e

@@ -104,7 +104,7 @@ def convert_osba(
        render_sba_to_cba(sba, out_sba)

        # combine results
        out.audio = out_ism.audio + out_sba.audio
        out.audio = 0.5 * (out_ism.audio + out_sba.audio)

    # OSBA -> SBA
    elif isinstance(out, audio.SceneBasedAudio):
@@ -118,7 +118,7 @@ def convert_osba(
        render_sba_to_sba(sba, out_sba)

        # combine results
        out.audio = out_ism.audio + out_sba.audio
        out.audio = 0.5 * (out_ism.audio + out_sba.audio)

    # OSBA -> OMASA
    elif isinstance(out, audio.OMASAAudio):
@@ -128,14 +128,15 @@ def convert_osba(
                "OSBA to OMASA conversion only possible if number of ISM objects matches"
            )

        # only render SBA part
        # only render SBA part to MASA
        out_sba = audio.fromtype(out.name[4:])
        out_sba.metadata_file = out.metadata_files[-1]
        render_sba_to_masa(sba, out_sba)

        out.audio = np.concatenate(
            (osba.audio[:, : osba.num_ism_channels], out_sba.audio), axis=1
        )
        # ism audio is passed through
        ism_audio = osba.audio[:, : osba.num_ism_channels]

        out.audio = np.concatenate((ism_audio, out_sba.audio), axis=1)

    # OSBA -> OSBA
    elif isinstance(out, audio.OSBAAudio):
+3 −3
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ from typing import Optional, Union
from warnings import warn

import numpy as np
from scipy.special import lpmv
from scipy.special import factorial, lpmv

from ivas_processing_scripts.audiotools import audio
from ivas_processing_scripts.audiotools.audioarray import delay, framewise_io
@@ -348,8 +348,8 @@ def getRSH(
    for i, (l, m) in enumerate(LM):
        # N3D norm
        response[i, :] = np.sqrt(
            ((2 * l + 1) * float(np.math.factorial(l - np.abs(m))))
            / (4 * np.pi * float(np.math.factorial(l + np.abs(m))))
            ((2 * l + 1) * float(factorial(l - np.abs(m))))
            / (4 * np.pi * float(factorial(l + np.abs(m))))
        )

        # trig term