Internet audio streaming apps for music performance — some options

A couple of weeks ago bP/555 asked me to recommend a solution for streaming high quality audio from a music performance in Barcelona to the  DIALECTIC night at Horse Bazaar here in Melbourne. The venues at either end were connected to the Internet using domestic-grade ADSL2 modems. This certainly wasn’t a super-high-bandwidth Internet 2 academic network scenario. bP wanted high quality audio (“320 kbps mp3″ was the way he put it), video was optional. It wasn’t a collaborative performance, the audio only had to travel in one direction.

I’ve been working with streaming real-time audio over LANs a bit lately, but streaming from Barcelona to Melbourne is quite a different proposition — not something I have any personal experience with. I do have an interest in network music peformance and I’ve been following development of the CELT low latency codec for a while, which is designed for low-latency distributed music performance. So I was interested to find some answers. I figured the best thing to do was to ask around and see what solutions people are using. I asked on ACMA-L and the celt-dev list and pinged a few friends privately too. This post shares the responses I received and a few of my thoughts on different approaches. If you know of something else I havn’t mentioned here please post it in the comments.

A few preliminaries

Before I get on to the alternatives people suggested I want to note a couple of points I made to bP:

  • The computers at either end need to be connected to the network using cables — you don’t want WiFi packet loss layered on top of the already high demands of real-time streaming media.
  • Since the computers will likely be behind NAT routers at either end, you either need a plug-and-play solution that can deal with NAT traversal  (possibly using intermediate servers) or have access to configure the routers to forward traffic on to your computers.

Another thing that became apparent, and that was reinforced to me by a number of people, was that you need to be sure your internet link can sustain the bandwidth needed for the performance. It’s all good and well to ask for 320kbps audio streaming, but if your Internet link can’t reliably sustain the bandwidth then it won’t happen. In general no public link between Barcelona and Melbourne with ADSL endpoints guarantees bandwidth but you can at least test things a work out what the upper practical limit is — keep in mind that it will depend on network routes and network load (i.e. day of week and time of day).

On to the options that were suggested…

Hi-fi chat apps

Early on I’d suggested Skype as a simple and easy plug-and-play option. I like the idea of using a voice chat-app because it’s super-easy to set up and the software should be able to navigate the hazards of domestic situations like NAT firewall traversal without fuss. However one of the key things bP wanted was high-fidelity music grade audio. This put a lot of voice-quality internet-chat applications out of the picture. I learnt there are solutions that use the music-quality CELT codec I mentioned above (which incidentally promises better quality than mp3 at the same bit rate). To this end, Dennis Heerema on the celt-dev mailing list suggested the following two free solutions:

  • Fideliphone - Simple to configure, point to point, almost but not-quite out of beta.
  • TeamTalk - Client-server config, uses speex codec or CELT (mono and stereo).

Shoutcast, Icecast and friends

A number of people suggested shoutcast or icecast streaming. These are the usual go-to choices for internet radio broadcasting. You can buy streams from various commercial suppliers around the web.

People had good things to say about Nicecast ($40, Mac OSX only) as a simple solution for non-technical people. Matt Hitchcock said: “It is a GUI wrapper with an icecast underbelly and runs intuitively and without any fuss.” There’s a list of other icecast clients at the icecast site.

Jordan Reyne uses shoutcast for her Second Life performances “their sound quality is excellent”. She uses a free broadcast client called butt (“ broadcast using this tool”), which is available for Windows, Mac and Linux. Jordan has posted a 6 part blog on using shoutcast streams inside VRs such as Second Life or Heritge Trust etc.

Distributed network music performance

Distributed network music performance is the idea of playing music live with other people over the internet. Audio quality is important here, but so is low-delay. After all, playing in time is difficult with a 50ms delay, let alone a 10 second delay! One important thing to note here is that audio codecs such as mp3 add a lot of delay just encoding and decoding the audio. So it becomes important to use uncompressed audio or low latency codecs such as CELT or its successor Opus (both with <5ms codec delay).

For low-delay distributed network music performance Alex Carôt’s Soundjack seems to be the go-to solution. As well as distributed musical performances Alex says that it’s “already used by numerous radio stations and for other high-quality audio/video streaming purposes.” The big advantage of systems like this is that they are designed to provide low-latency two-way communication for collaborative performances. Delays are often orders-of-magnitude lower than systems designed for broadcast streaming. Unfortunately you still have the speed of light to contend with (~86ms from Melbourne to Barcelona in a fibre optic cable, not to mention routing delays).

For high-bandwidth situations a few people suggested Juan-Pablo Caceres’ JackTrip. JackTrip can handle uncompressed and multichannel audio and is commonly used on local area networks. For streaming over the Internet from Barcelona to Melbourne using ADSL modems this option just wasn’t going to cut it.

Mixlr

Mixlr’s mission “is to make audio broadcasting as easy as possible, both for casual broadcasters, musicians and DJs.” They provide client and server applications for both Mac and PC. It’s not a free service but you can sign up for a 15 day free trial. This solution really appealed to me for bP’s situation — it’s focused on high quality audio for musical performance and it’s packaged in an easy to use, off-the-shelf app.

VLC (Video Lan Client)

A couple of people suggested VLC. Scott Gresham-Lancaster wrote:

Another option that I have used in the past particularly if you are just going one way with most of the content is to use Video Lan Client. If you have enough bandwidth you can do point to point streaming of HD with that, especially if you have hardware compression. We did a direct link between the stage at Stanford and University in Bejing this way with great success. Engadget have a nice intro here:

www.engadget.com/2005/11/29/how-to-stream-almost-anything-using-vlc

Other Contenders

I’m not really familiar with live video broadcasting services such as Livestream and USTREAM but the venue in Barcelona had used Livestream before and it appears to offer good quality audio, although perhaps not the “320kbps mp3″ quality we were looking for. These options support video and broadcast, which although not critical in this case could be useful for many applications.

Quicktime broadcaster was also suggested, this is “Apple’s standards-based live encoding software.”

Wrap up

Which solution did bP end up using? I’m not telling :-) As often happens there was little time to try out all of the options and a choice was made based on expediency. My feeling is that any of the solutions listed above could have worked well and are certainly worth exploring for future events.

In the future I hope setting up a hi-fi intercontinental audio link is as easy as placing a phone call, and with many of the solutions above we’re almost there. The hardest part for the uninitiated seems to be in working out which solution to choose. Do you have experience performing music over the internet? If so, please share your experience in the comments.

Many thanks to Alex Carôt, Nick Collins, Ken Fields, Scott Gresham-Lancaster, Dennis Heerema, Matt Hitchcock, Julian Knowles, Jordan Reyne, Rob Watson and the members of ACMA-L and celt-dev for helping bP and I out and answering our questions. Thanks to bP for asking the question, I’ve learnt a lot.

Share/Bookmark

12 Comments

  • 1
    March 4, 2011 - 12:27 am | Permalink

    You might also want to check out Scenic:
    code.sat.qc.ca/trac/scenic/
    We’ve used it for live concerts between Montreal and Vancouver

  • 2
    March 4, 2011 - 11:59 am | Permalink

    Regarding simplifying the connection process, we made a mac app (called Artsmesh) that issued command line scripts to ran jack, jacktrip, oscgroups, jabber and status.net clients. All you had to do (after some preference setup) was select network partners with a mouse and then push the play button to make all the connections. We also pulled the FOAF data (friend of a friend) from our status.net server as a better profile schema than the jabber user profile. However, the audio (jacktrip) will run only on a research network – either ipv4 or ipv6. We compiled an ipv6 version of jacktrip. Chatting in the Artsmesh client, would post directly to our public status.net microblog (tags and all). syneme.ucalgary.ca/Artsmesh+Project

  • 3
    Arkadas
    March 8, 2011 - 12:34 am | Permalink

    I’m curious witch app you ended up with…

    Or let’s say do you have testing results / expirence you want to share with us!

    regards,

    Arkadas

  • 4
    rossb
    March 8, 2011 - 10:54 am | Permalink

    @Arkadas: I didn’t want to say in the post because (1) there wasn’t time to test many of the options at all, and (2) I wasn’t there to see what happened, and (3) the choice was kind of arbitrary based on what people had used before.

    But, that said, I’ve received a few emails from people asking about what was used, so I’ll post it here: In the end Livestream was used, There were 4 small audio dropouts during the 1 hour set. They ran low-res video as well. I don’t consider 4 dropouts acceptable myself but no one knows what the root cause of the dropouts was (could have been software, hardware, network configuration etc). Mixlr at 320kbps was also tried but at the high data rate the network link didn’t cope — apparently there wasn’t time to experiment with lower data rates such as Mixlr’s standard 128kbps option.

    So in conclusion, I felt that the research was more important to post than the result — which is inconclusive.

    It would be interesting to hear other people’s experiences with stability/quality/distance/technology.

  • 5
    frank
    March 16, 2011 - 8:52 pm | Permalink

    I’m about to use the VoIP server freeswitch with CELT codec to build a studio – reporter – link. Freeswitch is used the communication server and in special “softphone” configurations on both ends. The big advantage is that this is a fully compatible solution to those from MAYAH or others, once one decides to hack AAC-LD into freeswitch or CELT into the MAYAH. I could imagine to ship portable reporter devices containing the CELT codec.
    Right now there are issues with audio dropouts over lines with longer latency (but no packet loss). Will figure this out.

  • 6
    Arkadas
    April 12, 2011 - 9:16 pm | Permalink

    @rossb why didn’t you choose for a point to point solution?

    Did some testing myself with TeamTalk – Client-server config, uses speex codec or CELT (mono and stereo).

    1 Over the internet (1 Mb upload) with teamviewer VPN had some drop -outs in audio, my gues is that this is related to the delay in the Teamviewer VPN service, ping time was not constant and reached peaks as high as 150 ms. Using Celt in higher birates stereo mode.

    2 Over the internet 1 Mb upload) without VPN, much better results no drops at all. Using Celt in higher birates stereo mode.

    3 Over a analog (PSTN) telephone line, even though the bitrates used in this situation, are lower, the quality is much better than a telephone line, especially when the speex codec is choosen and the content is speech only. When you want to use is for music and speech audio, it might be wise to setup the codec to encode celt in mono mode, this gives you more bandwith for encoding a better audio quality and gives a resonable results for the limited bandwith a PSTN gives you.

    4 Over WiFI, practically the best situation given the available amount of bandwith…But limited in coverage…. You might want to use is in combination with situation 1 2 and 3 to cover the last meters wireless on location.

    Next I want to test with fideliphone, but the friend i tested with bought a mac and there is no mac client yet……

    @frank please keep us posted with your results, I’m very intrested in your solution because of the freeswitch implementation….

    regards,

    Arkadas

  • 7
    frank
    February 1, 2012 - 8:54 pm | Permalink

    There are news. Meanwhile, the CELT codec is superseeded by the OPUS codec. Freeswitch has support for OPUS, but it’s expiremental and not obvious to configure. On the other hand I have issues with compiling the portaudio module of Fresswitch.
    But I have discoverd ‘baresip’, a very clean, lightweight, no-frills SIP client for the command land. It has excellent support for various codecs, including OPUS.
    I’m now using baresip on both ends and FS for the switching. My plan is to prepare a beagleboard with baresip and professional audio I/O as a mobile device.
    OPUS has hifi quality over 3G links. Rocks.

  • 8
    February 23, 2012 - 7:13 pm | Permalink

    hi,

    have a look at www.luci.eu
    not free but ( in pro terms ) not expensive
    i used it for many live broadcasts
    one was 5 hours with the austrian radio ( ORF )
    it cross platform, runs on windows, osx & iphone

    see:
    dl.dropbox.com/u/137991/LUCI_resolution_pag_46.jpg
    dl.dropbox.com/u/137991/LUCI_resolution_pag_47.jpg

    a big pro of LUCI is its compatibility with professional ( expensive ) codec’s ( mayah, prodys, aeq, … )
    it also support EBU’s ACIP protocol

    but i am also testing www.fideliphone.com/ with good result … but it uses more bandwidth for less quality

    w

  • 9
    March 22, 2013 - 4:27 am | Permalink

    I’m the developer of Fideliphone. One of the people I test with occasionally is a musician in England (I’m in Minnesota). We routinely talk at Fideliphone’s highest bitrate while he plays his keyboards at me. The connection is usually flawless, and I always attempt to find the root cause if it isn’t.

    My reply to this post is quite late, so Fideliphone is no longer in beta, but it is very simple. It doesn’t support any nat traversal solutions yet, and it is completely point-to-point. I’m working on an updated version with opus support and some better nat traversal, but a full time job and family get in the way. Fideliphone is open source, though, and I’m always open to working with other developers on it.

    Also, regarding the assertion that Fideliphone runs at a higher bitrate than other solutions for its quality. Quality usually depends on the codec being used. Fideliphone, for historical reasons, uses celt 0.6.1. There are newer and better versions of celt, but they took over two years to get released. In the meantime, we didn’t want to delay Fideliphone to wait for improvements on what was already a great codec, and we didn’t feel the improvements were worth trying to build forward compatibility into Fideliphone for future versions of celt. Now that opus has been standardized, this will be a lot easier, but, to my ear, opus at a high bitrate sounds just like celt at a high bitrate. This makes sense, because opus at a high bitrate is celt at a high bitrate. Listeners may perceive higher quality audio from a more expensive solution, but that doesn’t mean that it’s there. In the end, it’s all about the quality of the codec being used.

  • 10
    October 31, 2013 - 9:04 am | Permalink

    Bamb! Like That!! This Page Is Gold!!! And The Comment Section Is Platinum!!!! We have been looking for a final solution for streaming live bands during live interviews and this spot is bang on!

    We run a non profit live venue for unsigned artists and we have everything set accept for the “how to do it” part hahaha. Since this is 100% out of pocket, we need to know the easiest and least expensive way to have a band play live in other countries and stream them live through our shoutcast encoder, while at the same time have a dj locally interview them remotely at the same time of their live performance. (audio only at the moment).

    We use Sam broadcaster. We would appreciate any assistance possible

    Thank You Peace

  • Leave a Reply

    Your email address will not be published. Required fields are marked *

    * Copy This Password *

    * Type Or Paste Password Here *

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>