Commit 0375de2a authored by malenovsky's avatar malenovsky
Browse files

Merge branch '100-unable-to-scale-blank-hoa3-file-in-osba-item-generation' into 'main'

Resolve "Unable to scale blank HOA3 file in OSBA item generation"

See merge request !192
parents e18ed66c d8876df9
Loading
Loading
Loading
Loading
+32 −5
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@
#  the United Nations Convention on Contracts on the International Sales of Goods.
#
import logging
import sys
from itertools import groupby, repeat
from pathlib import Path

@@ -249,6 +250,23 @@ def generate_ismN_scene(
                if isinstance(scene["level"], list)
                else scene["level"]
            )

            # check if level is "-Inf" string or "N/A" or "n/a" or "NaN"
            if isinstance(level, str):
                if level.lower() in ["-inf"]:
                    level = -np.inf
                elif level.lower() in ["none", "no", "", "null", "n/a", "na", "nan"]:
                    level = None
                else:
                    # convert to float
                    try:
                        level = float(level)
                    except ValueError:
                        logger.error(f"Error: Level {level} is not a valid entry!")
                        sys.exit(-1)
            elif isinstance(level, (int, float)):
                # do nothing, it is already a number
                pass
        else:
            level = -26

@@ -270,7 +288,16 @@ def generate_ismN_scene(
            x.fs = cfg.fs

        # adjust the level of the audio source file (need to convert to MONO first)
        x_temp = audio.ChannelBasedAudio("MONO")  # create a temporary mono audio object
        if np.isinf(level):
            # set all channels to zero
            x.audio = np.zeros_like(x.audio)
        elif level is None:
            # do not change the level of the audio source signal
            logger.info("-- Level of the audio source signal is not changed")
        else:
            x_temp = audio.ChannelBasedAudio(
                "MONO"
            )  # create a temporary mono audio object
            x_temp.audio = x.audio.copy()
            x_temp.fs = x.fs
            x_temp.audio, _ = loudness_norm(x_temp, level, loudness_format="MONO")
+25 −1
Original line number Diff line number Diff line
@@ -247,6 +247,23 @@ def generate_MASA_scene(
                if isinstance(scene["level"], list)
                else scene["level"]
            )

            # check if level is "-Inf" string or "N/A" or "n/a" or "NaN"
            if isinstance(level, str):
                if level.lower() in ["-inf"]:
                    level = -np.inf
                elif level.lower() in ["none", "no", "", "null", "n/a", "na", "nan"]:
                    level = None
                else:
                    # convert to float
                    try:
                        level = float(level)
                    except ValueError:
                        logger.error(f"Error: Level {level} is not a valid entry!")
                        sys.exit(-1)
            elif isinstance(level, (int, float)):
                # do nothing, it is already a number
                pass
        else:
            level = -26

@@ -299,6 +316,13 @@ def generate_MASA_scene(
            x = reverb_hoa3(x, IR, mode=None)

        # adjust the level of the FOA/HOA2/HOA3 signal
        if np.isinf(level):
            # set all channels to zero
            x.audio = np.zeros_like(x.audio)
        elif level is None:
            # do not change the level of the audio source signal
            logger.info("-- Level of the audio source signal is not changed")
        else:
            x.audio, _ = loudness_norm(x, level, loudness_format="STEREO")

        # ensure the length of the audio source signal is a multiple of 20ms
+25 −1
Original line number Diff line number Diff line
@@ -247,6 +247,23 @@ def generate_MC_scene(
                if isinstance(scene["level"], list)
                else scene["level"]
            )

            # check if level is "-Inf" string or "N/A" or "n/a" or "NaN"
            if isinstance(level, str):
                if level.lower() in ["-inf"]:
                    level = -np.inf
                elif level.lower() in ["none", "no", "", "null", "n/a", "na", "nan"]:
                    level = None
                else:
                    # convert to float
                    try:
                        level = float(level)
                    except ValueError:
                        logger.error(f"Error: Level {level} is not a valid entry!")
                        sys.exit(-1)
            elif isinstance(level, (int, float)):
                # do nothing, it is already a number
                pass
        else:
            level = -26

@@ -299,6 +316,13 @@ def generate_MC_scene(
            x = reverb_hoa3(x, IR, mode=None)

        # adjust the level of the FOA/HOA2/HOA3 signal
        if np.isinf(level):
            # set all channels to zero
            x.audio = np.zeros_like(x.audio)
        elif level is None:
            # do not change the level of the audio source signal
            logger.info("-- Level of the audio source signal is not changed")
        else:
            x.audio, _ = loudness_norm(x, level, loudness_format="STEREO")

        # ensure the length of the audio source signal is a multiple of 20ms
+27 −3
Original line number Diff line number Diff line
@@ -244,6 +244,23 @@ def generate_OMASA_scene(
                if isinstance(scene["level"], list)
                else scene["level"]
            )

            # check if level is "-Inf" string or "N/A" or "n/a" or "NaN"
            if isinstance(level, str):
                if level.lower() in ["-inf"]:
                    level = -np.inf
                elif level.lower() in ["none", "no", "", "null", "n/a", "na", "nan"]:
                    level = None
                else:
                    # convert to float
                    try:
                        level = float(level)
                    except ValueError:
                        logger.error(f"Error: Level {level} is not a valid entry!")
                        sys.exit(-1)
            elif isinstance(level, (int, float)):
                # do nothing, it is already a number
                pass
        else:
            level = -26

@@ -284,6 +301,13 @@ def generate_OMASA_scene(
            x.fs = cfg.fs

        # adjust the level of the source file
        if np.isinf(level):
            # set all channels to zero
            x.audio = np.zeros_like(x.audio)
        elif level is None:
            # do not change the level of the audio source signal
            logger.info("-- Level of the audio source signal is not changed")
        else:
            if fmt in ["FOA", "HOA2", "HOA3"]:
                x.audio, _ = loudness_norm(x, level, loudness_format="STEREO")
            else:
+27 −3
Original line number Diff line number Diff line
@@ -235,6 +235,23 @@ def generate_OSBA_scene(
                if isinstance(scene["level"], list)
                else scene["level"]
            )

            # check if level is "-Inf" string or "N/A" or "n/a" or "NaN"
            if isinstance(level, str):
                if level.lower() in ["-inf"]:
                    level = -np.inf
                elif level.lower() in ["none", "no", "", "null", "n/a", "na", "nan"]:
                    level = None
                else:
                    # convert to float
                    try:
                        level = float(level)
                    except ValueError:
                        logger.error(f"Error: Level {level} is not a valid entry!")
                        sys.exit(-1)
            elif isinstance(level, (int, float)):
                # do nothing, it is already a number
                pass
        else:
            level = -26

@@ -275,6 +292,13 @@ def generate_OSBA_scene(
            x.fs = cfg.fs

        # adjust the level of the source file
        if np.isinf(level):
            # set all channels to zero
            x.audio = np.zeros_like(x.audio)
        elif level is None:
            # do not change the level of the audio source signal
            logger.info("-- Level of the audio source signal is not changed")
        else:
            if fmt in ["FOA", "HOA2", "HOA3"]:
                x.audio, _ = loudness_norm(x, level, loudness_format="STEREO")
            else:
Loading