cutcutcodec.core.edit.generalize.delay_to_fir

Convert a filter delay into a convlolution.

Functions

delay_to_fir(graph, *, node)

Replace the properties of the delay node by the properties of a conv node.

Details

cutcutcodec.core.edit.generalize.delay_to_fir.delay_to_fir(graph: MultiDiGraph, *, node: str)[source]

Replace the properties of the delay node by the properties of a conv node.

Works only for audio streams.

Examples

>>> from pprint import pprint
>>> from cutcutcodec.core.classes.container import ContainerOutput
>>> from cutcutcodec.core.compilation.tree_to_graph import tree_to_graph
>>> from cutcutcodec.core.edit.generalize.delay_to_fir import delay_to_fir
>>> from cutcutcodec.core.filter.audio.delay import FilterAudioDelay
>>> from cutcutcodec.core.generation.audio.noise import GeneratorAudioNoise
>>> out = ContainerOutput(FilterAudioDelay(GeneratorAudioNoise(0).out_streams, 1).out_streams)
>>> graph = tree_to_graph(out)
>>>
>>> pprint(dict(graph.nodes("state")))
{'container_output_1': {},
 'filter_audio_delay_1': {'delay': '1'},
 'generator_audio_noise_1': {'layout': 'stereo', 'seed': 0.0}}
>>> pprint(list(graph.edges))
[('filter_audio_delay_1', 'container_output_1', '0->0'),
 ('generator_audio_noise_1', 'filter_audio_delay_1', '0->0')]
>>> delay_to_fir(graph)
>>> pprint(dict(graph.nodes("state")))  
{'container_output_1': {},
 'filter_audio_fir_1': {'fir_encoded': 'XQAAAAT//////////wAAb/3//6O3/0c+SBVyOWFRuJIo5qOGB/n...',
                        'fir_rate': 48000},
 'generator_audio_noise_1': {'layout': 'stereo', 'seed': 0.0}}
>>> pprint(list(graph.edges))
[('generator_audio_noise_1', 'filter_audio_fir_1', '0->0'),
 ('filter_audio_fir_1', 'container_output_1', '0->0')]
>>>