Dear list,
I am currently trying to implement 1bit-synthesis mechanisms in faust and have
some sketches on how to implement that:
It basically boils down to interpret a stream of integers (of a given
bit-depth, say, 32bits) as a stream of blocks (of size 32) of bits.
This is quite close to hardware interfaces such as the i2s implementation of
the esp32 [1], which has native capabilities to transmit PDM (pulse density
modulation, aka DSD, aka 1-bit audio) [2].
the technical implementation would be to create a series of
1-bit-block-specific operations (primitives) that could handle the basics of
such dsp. This would particularly mean to create a 1-sample delay operator,
i.e. an operator that turns the bitstream
10110101...
into
010110101...
I discovered the `ffunction` primitive that allows to integrate foreign
functions into the language, however, AFAICS (and according to sletz on slack,
and from what I got from the documentation at [3]), they need to be stateless.
the aforementioned 1-bit delay, though, requires a state (of one additional
integer).
does anyone know if there is a possibility to implement such a (1-sample) delay
as a primitive in faust?
all the best and thanks for your thoughts
Till
[1]
https://www.espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_en.pdf
[2] search e.g. for "pdm" in this article
https://hackaday.com/2019/04/18/all-you-need-to-know-about-i2s/
[3] https://faust.grame.fr/doc/manual/index.html#ffunction
_______________________________________________
Faudiostream-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/faudiostream-users