Commit 91fa7589 authored by Anika Treffehn's avatar Anika Treffehn
Browse files

fixed some bugs

parent 25be4451
Loading
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -57,9 +57,14 @@ class Postprocessing(Processing):
            in_file_no_error = Path(f"{in_file.with_suffix('')}.noerror.wav")
            out_file_no_error = Path(f"{out_file.with_suffix('')}.noerror.wav")
            if in_meta:
                in_meta_no_error = None  # TODO
                in_meta_noerror = []
                for meta in in_meta:
                    path_parts = str(meta).split(".")
                    suffix = ".".join(path_parts[-3:])
                    name = ".".join(path_parts[:-3])
                    in_meta_noerror.append(Path(f"{name}.noerror.{suffix}"))
            else:
                in_meta_no_error = None
                in_meta_noerror = None
            convert.convert_file(
                in_file_no_error, out_file_no_error, logger=logger, in_meta=in_meta_no_error, **self.__dict__
                in_file_no_error, out_file_no_error, logger=logger, in_meta=in_meta_noerror, **self.__dict__
            )
+1 −3
Original line number Diff line number Diff line
@@ -73,9 +73,7 @@ class Preprocessing2(Processing):
                preamble = self.preamble

            # read out old
            metadata = []
            for meta in in_meta:
                metadata.append(np.genfromtxt(meta, delimiter=","))
            metadata = audio_object.object_pos

            # modify metadata
            metadata = add_remove_preamble(metadata, preamble)
+31 −15
Original line number Diff line number Diff line
@@ -55,25 +55,36 @@ class Processing_splitting_scaling(Processing):

        # get number of channels from output format
        num_channels = audio.fromtype(self.out_fmt).num_channels
        # read file

        # read file and metadata
        x, fs = read(in_file, nchannels=num_channels, fs=self.fs)
        if isinstance(audio.fromtype(self.out_fmt), audio.ObjectBasedAudio):
            meta_arrays = []
            for meta in in_meta:
                meta_arrays.append(np.genfromtxt(meta, delimiter=","))
        else:
            meta_arrays = None

        # read file and metadata for signal with no bitstream errors
        if self.tx_condition:
            in_file_noerror = Path(f"{in_file.with_suffix('')}.noerror.wav")
            out_file_noerror = Path(f"{out_file.with_suffix('')}.noerror.wav")
            x_noerror, _ = read(in_file_noerror, nchannels=num_channels, fs=self.fs)
        # read metadata
            if isinstance(audio.fromtype(self.out_fmt), audio.ObjectBasedAudio):
            meta_arrays = []
                meta_arrays_noerror = []
                for meta in in_meta:
                meta_arrays.append(np.genfromtxt(meta, delimiter=","))
                    path_parts = str(meta).split(".")
                    suffix = ".".join(path_parts[-3:])
                    name = ".".join(path_parts[:-3])
                    meta_noerror = Path(f"{name}.noerror.{suffix}")
                    meta_arrays_noerror.append(np.genfromtxt(meta_noerror, delimiter=","))
            else:
            meta_arrays = None
                meta_arrays_noerror = None

        # cut preamble and split file
        out_files, file_splits, out_meta, meta_splits = self.revert_preamble_concatenation(x, fs, in_file, out_file, meta_arrays, False, logger)
        if self.tx_condition:
            in_meta_noerror = None  # TODO
            out_files_noerror, file_splits_noerror, out_meta_noerror, meta_splits_noerror = self.revert_preamble_concatenation(x_noerror, fs, in_file_noerror, out_file_noerror, in_meta_noerror, True)
            out_files_noerror, file_splits_noerror, out_meta_noerror, meta_splits_noerror = self.revert_preamble_concatenation(x_noerror, fs, in_file_noerror, out_file_noerror, meta_arrays_noerror, True, logger=None)

        # scale splitted files
        if self.loudness:
@@ -82,6 +93,7 @@ class Processing_splitting_scaling(Processing):
                scaling_splits = measure_loudness(file_splits_noerror, self.out_fmt, fs, self.loudness, self.loudness_fmt, meta_splits_noerror, logger)
                file_splits = [f*loud for f, loud in zip(file_splits, scaling_splits)]
            else:
                # do normal scaling
                file_splits = adjust_loudness(file_splits, self.out_fmt, fs, self.loudness, self.loudness_fmt, meta_splits, logger)

        # derive output folder names
@@ -113,6 +125,12 @@ class Processing_splitting_scaling(Processing):
            if isinstance(audio.fromtype(self.out_fmt), audio.ObjectBasedAudio):
                write_ISM_metadata_in_file(meta_s, om)
                write_ISM_metadata_in_file(meta_s, oom)
        # write noerror files in tmp folder
        if self.tx_condition:
            for ofne, file_sne, omne, meta_sne in zip(out_files_noerror, file_splits_noerror, out_meta_noerror, meta_splits_noerror):
                write(ofne, file_sne, fs)
                if isinstance(audio.fromtype(self.out_fmt), audio.ObjectBasedAudio):
                    write_ISM_metadata_in_file(meta_sne, omne)

    def revert_preamble_concatenation(self, x, fs, in_file, out_file, in_meta, noerror=False, logger=None):
        # remove preamble and first half of signal due to repetition
@@ -134,7 +152,11 @@ class Processing_splitting_scaling(Processing):
            file_splits, meta_splits = concat_teardown(x, splits, self.out_fmt, fs, split_fs, in_meta, logger)

            # set new out_files
            if noerror:
                out_files = [in_file.parent.joinpath(sn).with_suffix(f".{self.name}.noerror.wav") for sn in split_names]
            else:
                out_files = [in_file.parent.joinpath(sn).with_suffix(f".{self.name}.wav") for sn in split_names]

            if isinstance(audio.fromtype(self.out_fmt), audio.ObjectBasedAudio):
                out_meta = []
                for of in out_files:
@@ -145,8 +167,6 @@ class Processing_splitting_scaling(Processing):
            else:
                out_meta = repeat(None)

            if self.tx_condition:
                file_splits_noerror, meta_splits_noerror = concat_teardown(x, splits, self.out_fmt, fs, split_fs, logger)
        else:
            out_files = [out_file]
            file_splits = [x]
@@ -157,10 +177,6 @@ class Processing_splitting_scaling(Processing):
                meta_splits = repeat(None)
                out_meta = repeat(None)

            if self.tx_condition:
                file_splits_noerror = None  # TODO
                meta_splits_noerror = None  # TODO

        return out_files, file_splits, out_meta, meta_splits