Commit 7c150828 authored by malenovsky's avatar malenovsky
Browse files

Merge branch '101-error-in-omasa-item-generation' into 'main'

Resolve "Error in OMASA item generation"

See merge request !193
parents 0375de2a af01ceeb
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -129,14 +129,20 @@ def convert_osba(
            )

        # 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_masa = audio.fromtype(out.name[4:])
        if str(out.metadata_files[-1]).endswith(".met"):
            # if MASA metadata filename is given, copy it
            out_masa.metadata_file = copy(out.metadata_files[-1])
        render_sba_to_masa(sba, out_masa)

        # combine ISM audio with MASA audio into OMASA audio
        out.audio = np.concatenate((oba.audio, out_masa.audio), axis=1)

        # ism audio is passed through
        ism_audio = osba.audio[:, : osba.num_ism_channels]
        # combine ISM metadata with MASA metadata filenames
        out.metadata_files = oba.metadata_files + [out_masa.metadata_file]

        out.audio = np.concatenate((ism_audio, out_sba.audio), axis=1)
        # copy ISM object positions
        out.object_pos = copy(oba.object_pos)

    # OSBA -> OSBA
    elif isinstance(out, audio.OSBAAudio):
+11 −0
Original line number Diff line number Diff line
@@ -197,6 +197,17 @@ def render_sba_to_masa(
    masa_out: audio.MetadataAssistedSpatialAudio,
) -> None:
    num_tcs = masa_out.num_channels

    # convert to HOA2 if input is HOA3
    if sba_in.name.endswith("HOA3"):
        warn(
            "MASA conversion only supports up to 2nd order ambisonics! Converting to HOA2 format."
        )
        sba_hoa2 = audio.fromtype("HOA2")
        sba_hoa2.fs = sba_in.fs
        render_sba_to_sba(sba_in, sba_hoa2)
        sba_in = sba_hoa2

    masa = masaAnalyzer(sba_in, num_tcs, masa_out.dirs, masa_out.metadata_file)
    masa_out.audio = masa.audio

+4 −2
Original line number Diff line number Diff line
@@ -285,6 +285,7 @@ def reverb_hoa2(
    input: Audio,
    hoa2_IR: Audio,
    align: Optional[float] = None,
    mode: Optional[str] = None,
) -> Audio:
    """
    Convolve mono audio signal with an HOA2 impulse response
@@ -322,7 +323,7 @@ def reverb_hoa2(
        # separate IR into each channel
        IR.audio = hoa2_IR.audio[:, [i]]
        # convolve mono input with channel IR
        ych.append(reverb(input, IR, align=align))
        ych.append(reverb(input, IR, align=align, modee=mode))

    # combine into HOA2 output
    y = audio.fromtype("HOA2")
@@ -336,6 +337,7 @@ def reverb_hoa3(
    input: Audio,
    hoa3_IR: Audio,
    align: Optional[float] = None,
    mode: Optional[str] = None,
) -> Audio:
    """
    Convolve mono audio signal with an HOA3 impulse response
@@ -373,7 +375,7 @@ def reverb_hoa3(
        # separate IR into each channel
        IR.audio = hoa3_IR.audio[:, [i]]
        # convolve mono input with channel IR
        ych.append(reverb(input, IR, align=align))
        ych.append(reverb(input, IR, align=align, mode=mode))

    # combine into HOA3 output
    y = audio.fromtype("HOA3")
+4 −4
Original line number Diff line number Diff line
@@ -288,12 +288,12 @@ def generate_ismN_scene(
            x.fs = cfg.fs

        # adjust the level of the audio source file (need to convert to MONO first)
        if np.isinf(level):
            # set all channels to zero
            x.audio = np.zeros_like(x.audio)
        elif level is None:
        if level is None:
            # do not change the level of the audio source signal
            logger.info("-- Level of the audio source signal is not changed")
        elif np.isinf(level):
            # set all channels to zero
            x.audio = np.zeros_like(x.audio)
        else:
            x_temp = audio.ChannelBasedAudio(
                "MONO"
+4 −4
Original line number Diff line number Diff line
@@ -316,12 +316,12 @@ 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:
        if level is None:
            # do not change the level of the audio source signal
            logger.info("-- Level of the audio source signal is not changed")
        elif np.isinf(level):
            # set all channels to zero
            x.audio = np.zeros_like(x.audio)
        else:
            x.audio, _ = loudness_norm(x, level, loudness_format="STEREO")

Loading