Source code for brownify.models

from __future__ import annotations

from dataclasses import dataclass
from typing import Callable, List

import numpy as np


[docs]@dataclass class Pipeline: """A processing sequence for an audio source Pipelines define an audio source name, a series of actions to apply, and an audio sink name. They also include a flag noting whether or not the track should be saved for merging. Args: source: Name of an audio source actions: Series of actions to apply to the source sink: New name for the processed audio save: Mark a sink to be saved into the final merged file """ source: str actions: List[Callable] sink: str save: bool
[docs]@dataclass class Track: """A container for an audio track Track includes the audio details needed for managing an audio track throughout the processing stages. Args: audio: Array containing the an sequence of audio data; the first dimension represents time, and the second dimension (if present) represents channels num_channels: Number of channels in the audio data sample_rate: The rate at which the audio data was sampled save: Mark a track to be saved in the final merged file """ audio: np.ndarray num_channels: int sample_rate: int save: bool
[docs] def clone(self) -> Track: """Clone a track Create a deep copy of a track with the save parameter always initialized to False Returns: A deep copy of the original track """ return Track( audio=np.copy(self.audio), num_channels=self.num_channels, sample_rate=self.sample_rate, save=False, )