Network music performance

Hello all,

I would like to know how i can go about building a elk pi based network music performance system?

Is it a case of either building a bit of software myself to run within the OS, simply running Jacktrip or is there some sort of integrated Jacktrip type functionality?



As an aside, what are you going to use for the backhaul network? Latency on the public internet is intolerable, IMHO.

I’m using jamulus in these days at home to perform some reharsal with my (non professional) band on the public internet and the overall delay is in between 20 and 30 ms (not optimal, but tolerable). The server is on the AWS data center in Milan and we all live in the city with fiber connections and that certainly help. It would be very interesting to understand if AudioOS would help to reduce further the overall delay for such a system.

Hi guys,
I can’t say much yet… but we are working on a solution to connect musicians over the Internet with Elk and we will release the official news very soon :wink:


Sounds good :slight_smile:
I’m looking forward to know the scope of the solution since I’m already working on something similar.

Let us know when it will be available. We can male some test :slight_smile:

1 Like

I should have probably posted my NATS “topic” here because I am mostly interested in end to end network music performance, however I am finding NATS ( a real OSC killer and way more flexible. For example, the Tesla subsystems all use NATS to message, you can work in go, C++, C#, javascript, python etc and pass messages with ease. I am mostly concerned about making a end to end hardware solution with stereo in and stereo out on both ends, that is relatively painless user experience.
It would be better if it was extensible to multi sites … Elk seems like a good space for this idea. Any thoughts?

I’ve answered in the other thread regarding NATS on Elk:

It might be worth mentioning though that OSC isn’t the only option available in Elk. We provide gRPC as a secondary, more powerful API for SUSHI (our audio host), and gRPC also has native support for pretty much any programming language that you can name. We even provide wrapper client libraries for C++ and Python:

I have been using OSC for years and recently implemented WebRTC on a project but was not aware of gRPC thanks for the pointer, I found this that will let me use my NATS stuff with the ELK gRPC handlers … I will be giving it a try soon. Thanks again

1 Like

@Stefano Do you have any update for us regarding to the " solution to connect musicians over the Internet with Elk" ? Thanks.

1 Like

@Stefano Can you use any other NMP applications like Jacktrip, Jamulus on Elk OS with embedded hardware ?


I see you addressed to question to Stefano, but since I too can answer I’ll go ahead in his place:

While supporting the applications you mention is a theoretical possibility, it would not be possible without significant re-engineering of their respective codebases.

Elk doesn’t have any plans of carrying such work out - but of course that doesn’t preclude anyone else from doing it, since Elk Audio OS is open source!

Ilias of Elk

Hi @Ilias,

Thank you for the response. So I’m wondering… If we are to use the Elk OS with say an embedded device built with Elk pi hat and a Raspberry Pi, (Basically a bridge device) to perform networked music, is it safe to say that we have to use Elk studio or develop a compatible NMP app ourselves ?



While Elk Audio OS is open source, the software that make Elk LIVE possible is not - so you cannot use an Elk Pi Hat with RPi together with Elk studio - only the Elk Bridge devices we sell.

If you however implement any NMP app as a VST3/LV2 plugin, and load that into Sushi (the headless DAW that is part of Elk Audio OS), that would work.

Keep in mind you need to also implement a way for that plugin to initiate a connection with peers, and running on Elk Audio OS means the plugin is headless (no GUI).

But e.g. a plain text file next to the plugin would work, as would an RPC API - e.g. gRPC, Json RPC, etc.

Ilias of Elk

Thank you @Ilias for the information. I will check out the VST3/LV2 plugin. Does Elk OS have means to establish peer to peer connections? using a something like a websocket maybe?


Making what you’re describing is definitely a lot of work, and it requires a lot of base knowledge first - i.e. learning to make a plugin and getting it to run and x-compile, in Sushi, on Elk Audio OS. For that bit we have a lot of documentation, tools and examples: Elk Development Kit Documentation — Elk DevKit documentation

Definitely don’t try to design an NMP system yourself, there is a LOT to unpack in how these work. Find a few open source alternatives and look at how they work.

As for your question: apart from the low-latency audio, Elk OS is like any other Linux OS - we don’t provide any websocket infrastructure for NMP’s, that’s something you will have to implement.

Ilias of Elk

Hi Illias,

I agree with you. There are lot of science involved in NMP applications and I, my self have been researching about these for about year now. Certainly developing a NMP application from the ground up seems a lot of work. I have been looking into some open-source projects as-well as you mentioned. Like, Jacktrip, Jamulus and so on. Please mention if you have some any other better open-source projects that you’ve come across which might give better understanding about how these work. Thanks again for quick responses.


No, you’ve covered most of them.

GitHub - christofmuc/JammerNetz: OpenSource internet jam sessions, aka Networked Music Performance software. is interesting to look at too, if your use is compatible with the Affero license!

1 Like

Oh one other thing, forgive me for my lack of hardware understanding, can we use an Elk dev kit like Hifiberry Elk bundle without using Elk OS. Just run on some other Linux OS. Or is it pointless to do that ?

Hi @Kasun97 ,
of course you can, HiFiberry provides its own Linux distro for that use case but you can literally run any RPi distro, the HiFiberry drivers are in pretty much any recent RPi kernel.