This is a project to use the Expert Sleepers 8x CV expander (FHX-8CV) and the 8x gates expander (FHX-8GT) with patch.init() for loads more CV and gate outputs. This is based on implementing the Expert Sleepers SPI protocol in patch.init() - after figuring out the protocol. Here is a short clip with the setup running a software emulation of Øchd but unlike the real Øchd this patch.init() emulation is switchable for bipolar and unipolar CV outs.
The Øchd emulation was just a proof of concept to pull together the key ideas. Here’s a link to a pdf with all the details of the pinout and interconnect and all the details I was able to puzzle out about how to work with the Expert Sleepers SPI protocol.
It’s basically all working as a base for the project I really want to work on. If I get progress on that I’ll add some notes here.
FYI the Øchd emulation is in C++. There is an infinite loop driving a loop counter. There are 8 values held for the 8 LFOs and 8 values held to increment the LFOs each time the loop goes around. The increment amounts are based on powers of the golden ratio.
Thanks! So sorry I don’t know Gen but I can only see this working if there is SPI support in Gen. I think the approach I took with this project should work on any embedded system that has SPI and three GPIO pins spare, but if Gen is more about signal processing it might not have a way to call the SPI and GPIO.
This is eminently WIP (I have yet to publish an example), but I intend to clean this up over the next few days/weeks and publish it to crates.io, so follow the repo if you are interested. Currently the code requires embassy, but I intend to make the async part optional, so it should also work with regular embedded-hal projects.