☛ i-have-a-question@spacecat.filou.se
☛ github
Made using HOTGLUE
longplay (digital) audio delay/looper/sampler/recorder

even if there are solid commercial solutions for the plausible use cases, the aim here is to create a working low-budget basis that can be customized for special needs. (also, the cheaper solutions seem to have a delay/loop time or channel count that is not satisfactory)

also consider this a proof of concept for using stm32 for simple audio effect units..


data throughput

for sampling rate of 48khz and 16bit sample resolution needs throughput of at least 48k x 2 bytes = 93kB / sec / channel; or given storage blocks of 512 bytes: 48k x 2 / 512 = 187.5 combined block read+writes / sec, or a max time limit of 5.3333..ms per read/write operation.

furthermore 93kB / sec / channel means a required storage space of 93kB * 60 = 5.44921875 MB / minute / channel or 326.953125 MB / hour / channel. what recording time is enough really?

the basic SPI interface of SD cards requires 7-10ms on average, thus is not feasible. (tested on nucleo-f303k8; maybe could use a faster controller...)

the 4bit SDIO mode (on nucleo-l476rg) seems to manage sub-msec speeds and thus is plausible

spi test code: https://gist.github.com/tschiemer/c77ccae718c401fa7604f56b68034944
sdio test code: https://gist.github.com/tschiemer/cd443ef1b4bcfde33b37d3293b4d5490



(some) stm32s provide 12bit ADCs and DACs, possibly opamps, so along with the SDIO interface they offer themselves for a budget friendly basis.
nucleo-l476rg were chosen for the moment being.

simple MIDI synth module

microcontrollers oftentimes have integrated PWMs - so why not just turn these into pwm based synths?

Seemingly [1] NES sound was generated using:
2 PWMs
1 triangle wave
1 noise channel
1 sample channel

[1] https://www.youtube.com/watch?v=la3coK5pq5w

so, really simple, 'init?

(other platforms used fm based synthesis, but that seems a bit more complicated to do out of the box)

trying to rely on stm32s, because I'm familiar with them and they're cheap..

PWMs: pretty much comme out of the box
triangle waves: the stm32 DAC peripheral in theory has a triangle wave and noise output (the noise is not satisfactory though)
noise alternative: just randomly toggle a gpio pin (using the RNG (or some floating gpio input) as source) :)
samples: well there's a DAC


rotary woofer

Now that's interesting.

[1] http://www.rotarywoofer.com/
[2] https://hackaday.com/2016/03/30/rotary-subwoofer-combines-a-speaker-coil-w-a-fan/
[3] https://soundbridge.io/rotary-woofers/


- motor and control: check
- using polyurethane round belts from motor to blade axis (motor doesn't have to be on same axis as rotor)
- rc model helicopter main rotor head (Align 500 4 blade)
- needs some modifications to allow bigger angles

moving the rotor blades:

- model servo: mechanically too slow (for cheap model), furthermore in theory only 50 positional updates possible per second due to servo controls -> fail (digital control would be bothersome aswell)
- (small) dc motor: seems too slow
- commercial voice coil motor: way too expensive
- transducer (broken.. visaton bs 120): mechanically fitting seems promising, but seemingly not enough movement (heavy magnet is moving part in center)
- diy voice coil... (motor): possible, but elaborate
- old loud speaker voice coil: tests coming up (it's really what's been used otherwise aswell, so this should do the trick)