Commit b66a0647 authored by Archit Tamarapu's avatar Archit Tamarapu
Browse files

format and lint

parent 453bdf64
Loading
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -36,7 +36,10 @@ from itertools import product
from multiprocessing import Pool
from time import sleep

from ivas_processing_scripts.audiotools.metadata import check_ISM_metadata, check_MASA_metadata
from ivas_processing_scripts.audiotools.metadata import (
    check_ISM_metadata,
    check_MASA_metadata,
)
from ivas_processing_scripts.constants import (
    LOGGER_DATEFMT,
    LOGGER_FORMAT,
@@ -149,7 +152,7 @@ def main(args):
            for i, meta in enumerate(metadata):
                meta.extend(metadata_MASA[i])

        if not cfg.input["fmt"].startswith("ISM") and not "MASA" in cfg.input["fmt"]:
        if not cfg.input["fmt"].startswith("ISM") and "MASA" not in cfg.input["fmt"]:
            metadata = [None] * len(cfg.items_list)

        cfg.metadata_path = metadata
+14 −5
Original line number Diff line number Diff line
@@ -231,7 +231,9 @@ class MetadataAssistedSpatialAudio(Audio):
        obj = super()._from_file(name, filename, fs)
        if isinstance(metadata_file, list):
            if len(metadata_file) > 1:
                warn("Only first metadata file used. Additional metadata ignored for MASA")
                warn(
                    "Only first metadata file used. Additional metadata ignored for MASA"
                )
            obj.metadata_file = Path(metadata_file[0])
        else:
            obj.metadata_file = Path(metadata_file)
@@ -391,6 +393,7 @@ class SceneBasedAudio(Audio):

class OMASAAudio(Audio):
    """Sub-class for combined OMASA format"""

    def __init__(self, name: str):
        super().__init__(name)
        try:
@@ -604,7 +607,8 @@ def _get_audio_class(fmt) -> Audio:
    elif fmt in SCENE_BASED_AUDIO_FORMATS.keys():
        return SceneBasedAudio
    elif (
        fmt in CHANNEL_BASED_AUDIO_FORMATS.keys() or fmt in CHANNEL_BASED_AUDIO_ALTNAMES.keys()
        fmt in CHANNEL_BASED_AUDIO_FORMATS.keys()
        or fmt in CHANNEL_BASED_AUDIO_ALTNAMES.keys()
    ):
        return ChannelBasedAudio
    elif fmt in OSBA_AUDIO_FORMATS.keys():
@@ -643,7 +647,12 @@ def fromfile(
    """Create an Audio object of the specified format from the given file"""
    filename = Path(filename)
    fmt_cls = _get_audio_class(fmt)
    if fmt_cls is ObjectBasedAudio or fmt_cls is MetadataAssistedSpatialAudio or fmt_cls is OMASAAudio or fmt_cls is OSBAAudio:
    if (
        fmt_cls is ObjectBasedAudio
        or fmt_cls is MetadataAssistedSpatialAudio
        or fmt_cls is OMASAAudio
        or fmt_cls is OSBAAudio
    ):
        return fmt_cls._from_file(fmt, filename, in_meta, fs)
    else:
        return fmt_cls._from_file(fmt, filename, fs)
+14 −2
Original line number Diff line number Diff line
@@ -343,7 +343,13 @@ def combine(

    # set vertical channels to zero
    if is_planar:
        y[:, VERT_HOA_CHANNELS_ACN[VERT_HOA_CHANNELS_ACN < (len(in_filenames) - is_planar_offset)] + is_planar_offset] = 0
        y[
            :,
            VERT_HOA_CHANNELS_ACN[
                VERT_HOA_CHANNELS_ACN < (len(in_filenames) - is_planar_offset)
            ]
            + is_planar_offset,
        ] = 0

    write(out_file, y, fs=in_fs)

@@ -394,7 +400,13 @@ def split_channels(
    x, in_fs = read(in_file, nchannels=in_nchans, fs=in_fs)

    if is_planar:
        x[:, VERT_HOA_CHANNELS_ACN[VERT_HOA_CHANNELS_ACN < (in_nchans - is_planar_offset)] + is_planar_offset] = 0
        x[
            :,
            VERT_HOA_CHANNELS_ACN[
                VERT_HOA_CHANNELS_ACN < (in_nchans - is_planar_offset)
            ]
            + is_planar_offset,
        ] = 0

    # Write output files
    for idx, out_file in enumerate(out_filenames):
+8 −6
Original line number Diff line number Diff line
@@ -36,8 +36,6 @@ from shutil import copyfile
from typing import Optional, Union
from copy import copy

from numpy import empty

from ivas_processing_scripts.audiotools import audio, audioarray, metadata
from ivas_processing_scripts.audiotools.audiofile import write
from ivas_processing_scripts.audiotools.convert.channelbased import convert_channelbased
@@ -161,7 +159,9 @@ def convert_file(
    # write output audio
    write(out_file, output.audio, output.fs)
    # write metadata
    if isinstance(output, audio.ObjectBasedAudio) or isinstance(output, audio.OSBAAudio):
    if isinstance(output, audio.ObjectBasedAudio) or isinstance(
        output, audio.OSBAAudio
    ):
        write_ISM_metadata_in_file(output.object_pos, [out_file], automatic_naming=True)
    elif isinstance(output, audio.MetadataAssistedSpatialAudio) and in_fmt == out_fmt:
        # audio objects point to same MD file, create new one with default naming for output
@@ -175,6 +175,7 @@ def convert_file(
            out_md_name = out_file.parent / (out_file.name + ".met")
            copyfile(output.metadata_files[-1], out_md_name)


def convert(
    input: audio.Audio,
    output: audio.Audio,
@@ -365,8 +366,7 @@ def format_conversion(
    ):
        raise NotImplementedError("Can only convert to MASA from SBA")
    if isinstance(output, audio.OMASAAudio) and not (
        isinstance(input, audio.OSBAAudio)
        or isinstance(input, audio.OMASAAudio)
        isinstance(input, audio.OSBAAudio) or isinstance(input, audio.OMASAAudio)
    ):
        raise NotImplementedError("Can only convert to OMASA from OSBA")

@@ -376,7 +376,9 @@ def format_conversion(
            "ISM is not supported as an output for rendering! Only usable as pass-through"
        )
    if isinstance(output, audio.OMASAAudio) or isinstance(output, audio.OSBAAudio):
        if not (isinstance(input, audio.OMASAAudio) or isinstance(input, audio.OSBAAudio)):
        if not (
            isinstance(input, audio.OMASAAudio) or isinstance(input, audio.OSBAAudio)
        ):
            raise NotImplementedError(
                "OMASA and OSBA only possible as output if input is OMASA or OSBA"
            )
+29 −7
Original line number Diff line number Diff line
@@ -33,9 +33,16 @@ from copy import copy, deepcopy
import numpy as np

from ivas_processing_scripts.audiotools import audio
from ivas_processing_scripts.audiotools.convert.objectbased import render_oba_to_binaural, render_oba_to_cba, \
    render_oba_to_sba
from ivas_processing_scripts.audiotools.convert.masa import render_masa_to_binaural, render_masa_to_cba, render_masa_to_sba
from ivas_processing_scripts.audiotools.convert.objectbased import (
    render_oba_to_binaural,
    render_oba_to_cba,
    render_oba_to_sba,
)
from ivas_processing_scripts.audiotools.convert.masa import (
    render_masa_to_binaural,
    render_masa_to_cba,
    render_masa_to_sba,
)

""" OMASAAudio functions """

@@ -48,10 +55,21 @@ def convert_omasa(
    """Convert an OMASA signal to the requested output format"""

    # split OMASA object in ISM and MASA object
    oba = audio.fromarray("ISM" + str(omasa.num_ism_channels), omasa.audio[:, :omasa.num_ism_channels], omasa.fs)
    oba = audio.fromarray(
        "ISM" + str(omasa.num_ism_channels),
        omasa.audio[:, : omasa.num_ism_channels],
        omasa.fs,
    )
    oba.metadata_files = copy(omasa.metadata_files)
    oba.object_pos = copy(omasa.object_pos)
    masa = audio.fromarray("MASA" + str(omasa.num_channels-omasa.num_ism_channels) + "DIR" + str(omasa.dirs), omasa.audio[:, omasa.num_ism_channels:], omasa.fs)
    masa = audio.fromarray(
        "MASA"
        + str(omasa.num_channels - omasa.num_ism_channels)
        + "DIR"
        + str(omasa.dirs),
        omasa.audio[:, omasa.num_ism_channels :],
        omasa.fs,
    )
    masa.metadata_file = omasa.metadata_files[-1]

    # OMASA -> Binaural
@@ -100,13 +118,17 @@ def convert_omasa(
    elif isinstance(out, audio.OSBAAudio):
        # check if ism object number is the same
        if out.num_ism_channels != omasa.num_ism_channels:
            raise ValueError("OMASA to OSBA conversion only possible if number of ISM objects matches")
            raise ValueError(
                "OMASA to OSBA conversion only possible if number of ISM objects matches"
            )

        # only render MASA part
        out_masa = deepcopy(out)
        render_masa_to_sba(masa, out_masa)

        out.audio = np.concatenate((omasa.audio[:, :omasa.num_ism_channels], out_masa.audio), axis=1)
        out.audio = np.concatenate(
            (omasa.audio[:, : omasa.num_ism_channels], out_masa.audio), axis=1
        )

    else:
        raise NotImplementedError(
Loading