• General
  • Bela with 8 ch in via USB + MPU9250 IMU

I'm hoping to using Bela for a low-latency binaural audio processing unit with headtracking and I just want to check if some things are possible...

1) can I send 8 channels of 44.1KHz/16bit audio data to the board via it's USB connection? If not, is there a tethered (e.g. Ethernet?) or wireless solution (with better QoS than Wifi) that could do it? Small buffers are fine, in fact preferable in my use-case.

2) Can I use an IMU like the Invensys MPU9250 Integrated 9-Axis Altitude Acceleration Magnetometer Gyro Module? I like this because it higher cooms rate 400Hz on I2C and 1Mhz on SPI. There is an Arduino library for it, would this take much porting?
Chip https://invensense.tdk.com/products/motion-tracking/9-axis/mpu-9250/
Module -http://vi.raptor.ebaydesc.com/ws/eBayISAPI.dll?ViewItemDescV4&item=152544767351&category=181785&pm=1&ds=0&t=1599802651000&ver=0
library https://github.com/hideakitai/MPU9250

Thanks for anyone's opinion.

    kinGarrilla 1) can I send 8 channels of 44.1KHz/16bit audio data to the board via it's [sic] USB connection?

    technically it's possible, however:
    - it will hiccup with CPU loads above average
    - there is no real-time guarantee and latency is going to be fairly high
    - it is not supported by us
    - this is not supported by us and you probably shouldn't use it unless you are ready to struggle a lot for little to no returns
    instructions are here

    kinGarrilla ) Can I use an IMU like the Invensys MPU9250 Integrated 9-Axis Altitude Acceleration Magnetometer Gyro Module?

    sure. A spare SPI peripheral is only available on BelaMini. Bela has one SPI peripheral that is already used by the analog I/O (it only becomes available if you decide to disable analog I/O). On Bela there is "bitbang" SPI available, but that's fairly slow (100kHz tops) and CPU intensive. 400kHz I2C is available on both.

    kinGarrilla There is an Arduino library for it, would this take much porting?

    it shouldn't be too much of a pain. Ultimately it's mostly a matter of rewriting write_byte(), read_byte() and read_bytes() or - better - find a Linux-based replacement for the Wire library, or write one if it's not available.