Cleanfeed on a Raspberry Pi

So you’ve used Cleanfeed, fallen in love with it (don’t lie, I know you have), and you may have potentially asked yourself, “What’s the deal –  shouldn’t Cleanfeed make any dedicated hardware?”

Well the truth is, we don’t need to.. no really, what’s the point? In today’s world of web-based environments, we felt the need for developing, maintaining and supporting dedicated pieces of hardware can just be cumbersome and offer no real value to the power and ease that Cleanfeed already delivers to users already using it around the world.

Cleanfeed has been developed on the web to make broadcast quality live audio links easier than ever to be used by everyone, and that’s the key word – everyone (even your grandma)!

The best bit of hardware is the computing hardware you already use in your every day life. So having an extra bit of kit can just be irritating to setup and maintain.

To prove the point, and to fulfil one’s requirement to run Cleanfeed on ‘dedicated hardware’ – I took up the challenge of proving that Cleanfeed can run on something even more configurable and customisable, the Raspberry Pi.

And so, we begin…

Hardware;

Raspberry Pi 2, model B (900mhz “Quad Core” with 1GB RAM)
https://www.raspberrypi.org/products/raspberrypi-2-model-b/

– M-Audio M-Track : Stereo out (Jack/TRS) / headphones / stereo (XLR/Jack) input + phantom power.
http://www.m-audio.com/products/view/m-track

OS & Software;

– Raspbian Jessie (Debian): https://www.raspbian.org/
– Chromium (latest build)
– Pulse Audio Volume Control 3.0

Issues encountered:

I found that Debian’s default Alsa audio engine required extra configuration to recognise the M-Audio external sound card’s I/O properly. Even setting it as the systems default device proved tricky, as Chromium relies on the default system audio device for it’s sound output.

To resolve this I switched to the Pulse Audio Volume Control. Cleanfeed worked seamlessly after the change, picking up the external M-Audio USB device without fail.

Remaining Bugs:

1) The Pi struggled to power back on properly if the phantom power switch remained switched on, on the M-Track. To resolve this the phantom power had to remain off, then powered back on only after the Pi had booted back up. I suspect the reason behind this glitch is that not much power was being supplied to the USB bus on the Pi. I guess a sound card with external PSU would be better anyway, though the M-Track was the only external USB card I had laying about (geek alert!).

2) The refresh rate of the PPM meters on the Cleanfeed interface would spring the Pi’s ARM CPU up to 75% use. We’ve since addressed this issue and shouldn’t replicate anymore, so we’re seeing much smoother operation.

Note: Chromium can also be launched from command line, and so can be configured to automatically start up as a dedicated app after a reboot etc. You’ll need to setup a startup script with some switches, however: http://peter.sh/experiments/chromium-command-line-switches/

Cleanfeed Conclusion:

My experiment and configuration proves that Cleanfeed is so well written, it runs incredibly well on an embedded system – enabling many more use cases for Cleanfeed. Imagine the possibilities for outside broadcasts, or fixed set up interview ‘booths’ etc.

I hope you’ve found this useful. If you have any questions or would like some further information, please get in touch.