While it still has to finish execution in time for the next one, there will be a slight delay between when the buffers are swapped and when the function is called. By filling the buffer at the start, the Waveform can actually swap buffers before execution of your callback has finished, and it'll still be fine.
I'd definitely try something other than the saw wave just in case there are glitches - maybe something like voice?
That Winbond chip seems great. Espruino's SPI can hit around 16Mhz I think (I'm not 100% sure on that - it'll depend on what chip, and I think some SPI devices might be able to go a little faster than others too). The chip itself can handle the 4 pin SPI thing too (SDIO-style interface?) but it's not exposed in Espruino - too much work I'm afraid and not enough call for it...
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
Yes, I think it'd make a difference - as would getting rid of the function call... So:
While it still has to finish execution in time for the next one, there will be a slight delay between when the buffers are swapped and when the function is called. By filling the buffer at the start, the Waveform can actually swap buffers before execution of your callback has finished, and it'll still be fine.
I'd definitely try something other than the saw wave just in case there are glitches - maybe something like voice?
That Winbond chip seems great. Espruino's SPI can hit around 16Mhz I think (I'm not 100% sure on that - it'll depend on what chip, and I think some SPI devices might be able to go a little faster than others too). The chip itself can handle the 4 pin SPI thing too (SDIO-style interface?) but it's not exposed in Espruino - too much work I'm afraid and not enough call for it...