I want to create a cleaner stage wiring method for live musicians. The following diagram will likely explain my situation better than I can with words:

I/O Diagram

Basically, there are at least two raspberry pi's in this setup - the first is at the distribution hub, receiving input from a musician to send to the mixer (not shown) and also receiving an audio feed from the mixer to send to the musician.

The second box (that is powered over Ethernet) receives an audio feed from the distribution hub for the musician's monitor feed and also sends an audio feed (their instrument/mic) to the distribution hub. So the complete topology would look something like this: one distribution hub, multiple receiver boxes (one for each musician), each connecting and powered over ethernet.

Each box would need high-quality AD/DA conversion - there are analog/digital signals flowing in both directions. Really, there are two distinct flows of audio between the distribution hub and the receiver. Here's a diagram of the signal flow and conversions necessary:

Signal Flow Diagram

  1. Is this possible with the Raspberry Pi?
  2. What additional hardware would I need to implement this?
  3. How can I maintain a high-quality audio signal from end to end?
  4. How can I send power over ethernet?

I'm obviously not looking for a full solution here, just something to get me going in the right direction. I've only done very basic things with a raspberry pi (see: lighting up LED's). I'm a software engineer, so any code that needs to be written for this should not a problem for me.

I have a Raspberry Pi 2 Model B, but am open to any other/additional hardware.

  • There's no way I'd ever put a pi into a professional audio system for FoH. They're pretty dreadful compared to even the cheapest of el cheapo Behringer gear, and their bandwidth limitations are fairly severe. Don't do this. You're going to have to splash some on your ADC/DAC components anyway, spend a little more and buy distribution gear designed for the job.
    – goobering
    Nov 11 '16 at 8:24
  • @goobering Hm, interesting. I guess I should say that this is more as just a fun project/prototype. I didn't expect the Pi to be able to fully handle something this processor intensive. I am looking to create some sort of proof-of-concept/prototype though, and I just figured the Pi would be a decent place to start. Also, as far as I know, there isn't any stage distribution gear that sends monitor feeds AND accepts input to send back to the mixer. The Behringer S16-M/I only does monitors. The goal is to only have to run an ethernet to every performer on stage for full I/O. Nov 11 '16 at 16:54
  • It's an interesting notion but I'm not sure I'm fully grasping the benefits of it over just flinging audio over cat5 cabling. You can run line or mic level signals literally hundreds of feet with not much in the way of distortion (see: jeffgeerling.com/articles/audio-video/…), and without any expensive ADC/DAC or other digital components. Once you start introducing digital conversions and streaming you're entering difficult, uncertain territory - jitter, skew, traffic, timing, etc.
    – goobering
    Nov 12 '16 at 15:26

You can do this, although there will be some distortion introduced by the ADCs and DACs. If that distortion is low, then this system will work nicely.

To do lossless transmission (once in the digital domain) and retain low latency, you will want to look at a real time protocol (RTP).

RTP is implemented for you in tools such as ffmpeg (avconv). It is a UDP network broadcast from one point to another or many (multicast). As it is UDP it keeps latency to a minimum. Here is an example rtp broadcast using ffmpeg : ffmpeg -f alsa -ac 1 -ar 96000 -i default -acodec pcm_f32le -f rtp rtp://remote_host:port

As you will probably want many source points, you will probably need to use the dmix plugin on the receiver to down mix all sources, however you can get creative in other ways at this point and possibly use a digital mixer in some way to control the volume of each source stream at the receiver (sink).

To playback you can use ffmpeg again, pointing it at the source.

Regarding other aspects of networking, you will need to set one of your Pis up to do DHCP serving.

Again to keep latency to a minimum, you should use one of the GPIO add on sound cards, which are available, some of them provide inputs as well as outputs.

You will require a power over ethernet hat as well, with one Pi providing the power for the entire system.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.