4 ms·
This is super cool—but why use a micro with no fp unit and only 2048 bytes of ram? Something much more capable likely wouldn't be more expensive.
by nynx 4y ago
This is super cool—but why use a micro with no fp unit and only 2048 bytes of ram? Something much more capable likely wouldn't be more expensive.
- ChuckNorris89 4y agoSame reason stories are about running Doom on underpowered devices and not on GPUs. For the challenge. Running FFT on powerful devices with FP would not be a story.
- nynx 4y agoFair enough, that’s a good answer!
- tlamponi 4y agoFor one AVRs are really cheap and neat, and a few cents can add up, e.g., if you plan to sell 10k+ devices. Sometimes it's also just what you already have lying around, so better use that then to let it get covered with dust. Some anecdotes for when I assisted on a µC course at my university where we used AVRs: We also had one practical assigned with FFT to read out the RPM of a fan via a microphone input sampled by an ADC to detect blocking of the fan (as fallback for early detection of cooling failures in a simulated processing plant), with some user interface displayed on a GLCD on top of it; was quite a pleasure to see the tiny thing handle all that in realtime and still provide a fluid user interface experience. Another assignment was creating a lunar lander like game controlled by Wii/Nintendo nun chucks with sound (read from SDCard over SPI and then routed to an external sound module over SPI, DMA would have been great so to say), and high scores send over an external SPI attached Ethernet module. The game required fixed point arithmetic too for its physics, and it truly learned students that parallelism and concurrency are two different things and that one simple core can already do a lot of cool stuff.
- Gordonjcp 4y agoFor the same reason as I implemented a VA synth on an Arduino with an antialiased oscillator and 2-pole resonant filter - because building a Ship In A Bottle is fun!
- mv9 4y agoIs it open source? I'm curious.
- Gordonjcp 4y agoThe oscillator bit is, but I don't appear to have uploaded the one with the filter which I will need to find. https://github.com/ErroneousBosh/slttblep https://github.com/ErroneousBosh/slttblep The filter is just an SVF with, with a precomputed expo scale "bent over" at the top to correct for quantisation. From that the two SVF coefficients ω/Q and ω*Q are calculated every time there's a control update and of course because you can't divide on an Arduino it uses a lookup table of reciprocals just as for the blep. I could probably use a "wider" table of 16-bit values for better precision.