Section: New Results
Retiming for Faust
Participants : Alain Darte, Alexandre Isoard [Master 1 student, ens -l yon] , Yann Orlarey [Grame] .
Faust (Functional Audio Stream) is a formal specification stream-like language designed for real-time signal processing and synthesis. Faust programs are compiled into equivalent C++ programs and optimized for parallel execution. One of the core optimizations in Faust is a preliminary phase called normalization, which amounts to change the delays between operators into an equivalent normalized form used for, among others, redundancy elimination.
We showed that this normalization is actually a special form of retiming, a
well-known technique in circuit design and loop transformations. However, an
important subtlety needs to be considered: the problem of initialization of
signals, which is usually not even mentioned in the retiming literature. We
proved that the problem comes from “time-dependent” operators in Faust and
that all these operators can be decomposed into combinations of regular
operators (in the sense that standard retiming applies) and a single elementary
time-dependent operator, called init, which transfers any signal with no
modification for time
This collaboration between Compsys and Grame did not go beyond the Master internship of A. Isoard yet and did not lead to an actual implementation within Faust.