3 ms·
The project that I am a part of uses the PRUs to implement an ultra-low latency audio platform: http://bela.io http://bela.io It's open source, here's the PRU
by jarmitage 10y ago
The project that I am a part of uses the PRUs to implement an ultra-low latency audio platform: http://bela.io http://bela.io
It's open source, here's the PRU code: https://github.com/BelaPlatform/Bela/blob/master/pru_rtaudio.p https://github.com/BelaPlatform/Bela/blob/master/pru_rtaudio...
This paper describes the platform in more detail: http://www.eecs.qmul.ac.uk/~andrewm/mcpherson_aes2015.pdf http://www.eecs.qmul.ac.uk/~andrewm/mcpherson_aes2015.pdf
This paper compares latency achievements using this strategy compared to Raspberry Pi, Arduino, Max/MSP, etc: https://qmro.qmul.ac.uk/xmlui/bitstream/handle/123456789/12479/Moro%20Action-Sound%20Latency%202016%20Submitted.pdf https://qmro.qmul.ac.uk/xmlui/bitstream/handle/123456789/124...
- suraj 10y agoThanks! This looks a really good starting point for a project I am working on. Using PRU for I2S is genius :) Can you please point me to the detailed specifications somewhere on http://bela.io http://bela.io?
- jarmitage 10y agoCool! What are you working on? What kind of specification are you looking for? Feel free to get in touch info@bela.io or forum.bela.io
- bsder 10y agoWhat's the advantage of this over the Bone's built-in I2S/McASP stuff?
- jarmitage 10y agoHi, there's a post about this on our forum: https://forum.bela.io/d/20-pru-vs-mcasp https://forum.bela.io/d/20-pru-vs-mcasp Here's an excerpt: "Bela uses both the McASP and the PRU. The McASP actually streams the data to the codec, but the PRU handles passing data to and from it, as a sort of sophisticated DMA controller. We use the PRU here because it can also do SPI transactions with the other ADC and DAC and it can sample the GPIOs, all aligned on a sample-by-sample basis with the audio clock. The PRU then puts the results in a memory buffer for the CPU to work with. To take any advantage of that, you need a Xenomai kernel, because this lets you write audio code that can interrupt the entire rest of the OS. If you don't have this, then you're stuck with the timing uncertainty that regular Linux provides, meaning you need larger buffer sizes (= longer latency). It also means that audio performance may depend on system load, which is not true of Xenomai (rather the reverse: rest-of-system performance depends on audio load)."
- bsder 10y agoInteresting. Never heard of Xenomai before. Can any of this feed into the TSN(Time sensitive networking)/AVB(audio video bridging) standards? I haven't found anything useful in that space.