Commit b18034ab authored by Anika Treffehn's avatar Anika Treffehn
Browse files

extended naming of masa modes by num of dirs

parent a24171d2
Loading
Loading
Loading
Loading
+70 −10
Original line number Diff line number Diff line
@@ -241,11 +241,21 @@ CHANNEL_BASED_AUDIO_ALTNAMES = {
}

METADATA_ASSISTED_SPATIAL_AUDIO_FORMATS = {
    "MASA1": {
    "MASA1DIR1": {
        "num_channels": 1,
        "dirs": 1,
    },
    "MASA2": {
    "MASA1DIR2": {
        "num_channels": 1,
        "dirs": 2,
    },
    "MASA2DIR1": {
        "num_channels": 2,
        "dirs": 1,
    },
    "MASA2DIR2": {
        "num_channels": 2,
        "dirs": 2,
    },
}

@@ -304,37 +314,87 @@ SCENE_BASED_AUDIO_FORMATS = {
}

OMASA_AUDIO_FORMATS = {
    "ISM1MASA1": {
    # 1 dir
    "ISM1MASA1DIR1": {
        "num_channels": 2,
        "num_ism_channels": 1,
        "dirs": 1,
    },
    "ISM1MASA2DIR1": {
        "num_channels": 3,
        "num_ism_channels": 1,
        "dirs": 1,
    },
    "ISM2MASA1DIR1": {
        "num_channels": 3,
        "num_ism_channels": 2,
        "dirs": 1,
    },
    "ISM2MASA2DIR1": {
        "num_channels": 4,
        "num_ism_channels": 2,
        "dirs": 1,
    },
    "ISM3MASA1DIR1": {
        "num_channels": 4,
        "num_ism_channels": 3,
        "dirs": 1,
    },
    "ISM3MASA2DIR1": {
        "num_channels": 5,
        "num_ism_channels": 3,
        "dirs": 1,
    },
    "ISM4MASA1DIR1": {
        "num_channels": 5,
        "num_ism_channels": 4,
        "dirs": 1,
    },
    "ISM4MASA2DIR1": {
        "num_channels": 6,
        "num_ism_channels": 4,
        "dirs": 1,
    },
    # 2 sdirs
    "ISM1MASA1DIR2": {
        "num_channels": 2,
        "num_ism_channels": 1,
        "dirs": 2,
    },
    "ISM1MASA2": {
    "ISM1MASA2DIR2": {
        "num_channels": 3,
        "num_ism_channels": 1,
        "dirs": 2,
    },
    "ISM2MASA1": {
    "ISM2MASA1DIR2": {
        "num_channels": 3,
        "num_ism_channels": 2,
        "dirs": 2,
    },
    "ISM2MASA2": {
    "ISM2MASA2DIR2": {
        "num_channels": 4,
        "num_ism_channels": 2,
        "dirs": 2,
    },
    "ISM3MASA1": {
    "ISM3MASA1DIR2": {
        "num_channels": 4,
        "num_ism_channels": 3,
        "dirs": 2,
    },
    "ISM3MASA2": {
    "ISM3MASA2DIR2": {
        "num_channels": 5,
        "num_ism_channels": 3,
        "dirs": 2,
    },
    "ISM4MASA1": {
    "ISM4MASA1DIR2": {
        "num_channels": 5,
        "num_ism_channels": 4,
        "dirs": 2,
    },
    "ISM4MASA2": {
    "ISM4MASA2DIR2": {
        "num_channels": 6,
        "num_ism_channels": 4,
        "dirs": 2,
    },
}

+1 −1
Original line number Diff line number Diff line
@@ -103,7 +103,7 @@ def convert_osba(
            raise ValueError("OSBA to OMASA conversion only possible if number of ISM objects matches")

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

        out.audio[:, :osba.num_ism_channels] = osba.audio[:, :osba.num_ism_channels]
+3 −6
Original line number Diff line number Diff line
@@ -196,14 +196,11 @@ def render_sba_to_masa(
    sba_in: audio.SceneBasedAudio,
    masa_out: audio.MetadataAssistedSpatialAudio,
) -> None:
    num_dirs = 1
    if sba_in.name == "HOA2":
        num_dirs = 2

    num_tcs = masa_out.name[-1]
    md_out_path = masa_out.metadata_files
    num_tcs = masa_out.num_channels
    md_out_path = masa_out.metadata_files  # TODO: get metadata files

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


+2 −2
Original line number Diff line number Diff line
@@ -74,7 +74,7 @@ def masaAnalyzer(
    if num_dirs not in [1, 2]:
        raise ValueError(f"Only 1 or 2 directions supported, but {num_dirs} was given.")

    if sba.name not in ["PLANARFOA", "FOA", "HOA2"]:
    if sba.name not in ["PLANARFOA", "FOA", "HOA2"]:  # TODO treffehn: add planarhoa2?
        raise ValueError(f"Only FOA or HOA2 suported, but {sba.name} was given.")

    if num_dirs == 2 and sba.name != "HOA2":
@@ -105,7 +105,7 @@ def masaAnalyzer(
        # we need to run in the masaAnalyzer directory to use the .bin files it requires
        run(cmd, cwd=binary.resolve().parent)

        fmt = f"MASA{num_tcs}"
        fmt = f"MASA{num_tcs}DIR{num_dirs}"
        masa = audio.fromfile(fmt, tmp_out_pcm, 48000, [metadata_out_path])

        return masa