cutcutcodec.core.filter.mix.audio_cast

Basic linear casts between different audio layouts.

For coefficient downmixing, based on https://www.rfc-editor.org/rfc/rfc7845#section-5.1.1.5 and http://www.atsc.org/wp-content/uploads/2015/03/A52-201212-17.pdf p96

Classes

AudioConvertor(in_layout, out_layout)

Combine the matrix in order to find the complete transformation chain.

LinearAudioConvertor(in_layout, out_layout, ...)

Convertion of a specific layout thanks the transition matrix.

Details

class cutcutcodec.core.filter.mix.audio_cast.AudioConvertor(in_layout: Layout | str | Integral, out_layout: Layout | str | Integral)[source]

Combine the matrix in order to find the complete transformation chain.

Examples

>>> import torch
>>> _ = torch.manual_seed(0)
>>> from cutcutcodec.core.classes.frame_audio import FrameAudio
>>> from cutcutcodec.core.filter.mix.audio_cast import AudioConvertor
>>> frame_in = FrameAudio(0, 1, "5.1", torch.randn((6, 1024)))
>>> (conv := AudioConvertor("5.1", "mono"))
AudioConvertor('5.1', 'mono')
>>> torch.round(conv(frame_in), decimals=3)
FrameAudio(0, 1, 'mono', [[-0.296,  0.279, -0.775, ..., -2.045, -2.013,
                           -0.316]])
>>> torch.round(
...     AudioConvertor("stereo", "mono")(AudioConvertor("5.1", "stereo")(frame_in)), decimals=3
... )
FrameAudio(0, 1, 'mono', [[-0.296,  0.279, -0.775, ..., -2.045, -2.013,
                           -0.316]])
>>>

Initialise and create the class.

Parameters

in_layoutcutcutcodec.core.classes.layout.Layout

Casted and transmitted to cutcutcodec.core.filter.mix.audio_cast.LinearAudioConvert initialisator.

out_layoutcutcutcodec.core.classes.layout.Layout

Casted and transmitted to cutcutcodec.core.filter.mix.audio_cast.LinearAudioConvert initialisator.

class cutcutcodec.core.filter.mix.audio_cast.LinearAudioConvertor(in_layout: Layout, out_layout: Layout, matrix: ndarray[float64])[source]

Convertion of a specific layout thanks the transition matrix.

Parameters

in_layoutcutcutcodec.core.classes.layout.Layout

The layout of the input frames (readonly).

out_layoutcutcutcodec.core.classes.layout.Layout

The layout of the converted frames (readonly).

Initialise and create the class.

Parameters

in_layoutcutcutcodec.core.classes.layout.Layout

The layout of the input frames.

out_layoutcutcutcodec.core.classes.layout.Layout

The layout of the converted frames.

matrixarray

The linear transformation matrix.