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 Faudiostream-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/faudiostream-users