alimakki

alimakki

BeatConnect - A Multiplayer DAW powered by Elixir

Hello everyone.

I wanted to share a product that I’ve been working on in our company named BeatConnect, a multiplayer DAW that uses elixir and phoenix channels in the backend.

A bit of history -

The company started around the pandemic, where the founder (who is a musician), wanted to collaborate with his friends without the need to drag equipment and instruments physically, which inspired the idea.

The product originally started as a VST3 plugin that you can load into any DAW which would provided you with a small “mini sequencer” that you can invite peers to join in a collaborative session, drop samples, edit, and do what music producers do, and eventually take the edited stems back into your DAW of choice.

The original iteration used a java server which is where I originally came in, as I was a java dev before joining the company. Oddly (at the time), the website was built in elixir and live-view by a 3rd part, which I have not encountered before.

As we evolved and simplified, we made the decision to eventually deprecate the java server in favor of going all in with elixir, as it was a “natural fit” for our use case. As the Java server was a purely TCP based server with our custom protocol, the first port to the elixir backend was fairly lightweight and built off of gen_tcp, presence and pubsub.

Fast forward to today, the our server is now an umbrella application, spanning a protocol server that powers the the mDaw itself (which is now a phoenix channel server), a web-app and and admin server.

The beauty of the elixir stack is how it all clusters together so well, allow each component to message each other with ease. I’m not a huge fan of the classic ORMs (e.x. hibernate), but I’ve come to grow fond of Ecto and it’s query dsl. I’ve also really enjoyed the developer experience in the elixir ecosystem. Things tend to be well thought out, well documented and digging through the code if necessary is not too terrifying.

Happy to answer any questions :slight_smile:

If you want to give it a shot, visit www (dot) beatconnect (dot) com

(mDaw screenshot)

Most Liked

harmon25

harmon25

Hi @alimakki! :smiley:
I have had the pleasure of working at BeatConnect with @alimakki for a couple years now. We have come a long way since the java server!

Shout out to @tomkonidas - who planted the Elixir seed, and what ultimately landed me the job :stuck_out_tongue:

We also have a lot of other tech at play:

  • Unity + C++ for the mDAW UI and audio engine
  • Electron + React for for our desktop launcher app
  • The web app (auth/registration) has a lot of live_view (and Surface)
  • Marketing website (beatconnect.com) is nextjs

Let us know if you have any questions!

Where Next?

Popular in Discussions Top

WolfDan
After doing a port from a c++ library to my project in phoenix I’ve seen that I need a faster way to run this algorithm and I found this ...
New
arpan
Hello everyone :wave: Today I am very excited to announce a project that I have been working on for almost 3 months now. The project is...
New
chuck
Let me start by stating an assumption: Phoenix is a great approach to building REST APIs. There are many reasons for this, but I will ass...
New
lucaong
Hello Elixir and Nerves community, I have been working for a while on an open-source embedded key-value database for Elixir, that I call...
230 13924 124
New
AlexMcConnell
The reason that Rails is as popular as it is is because it’s very easy for relatively inexperienced developers to get a lot of work done....
588 19568 166
New
AstonJ
Are there any Elixir or Erlang libraries that help with this? I’ve been thinking how streaming services like twitch have exploded recentl...
New
Crowdhailer
I’ve been hearing much about the new formatter and it’s something I have been keen to try. I find examples buy far the most illuminating...
248 19204 150
New
AstonJ
I’ve just started the Phoenix part of the utterly brilliant online course by @pragdave. On generating the Phoenix app he uses the --no-ec...
New
marciol
Please, let me know if this kind of discussion already took place in another topic . Hi all, how do you consider if is better to build ...
New
chulkilee
Here are the list of HTTP client libraries/wrappers, and some thoughts on HTTP client in general. I’d like to hear from others how they w...
New

Other popular topics Top

senggen
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] 15:22:35.803 [error] gen_event {lager_file_backend...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
chrismccord
This release brings a number of exciting features, including integration with the new Phoenix LiveDashboard and Phoenix LiveView. There h...
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
nobody
Hi! In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir? Searched the docs for ip address and the web, no good results. Thanks!
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New
marick
I had some trouble figuring out how to make many-to-many associations work. Once I got it working, I wrote a blog post. Because I’m a nov...
New
jononomo
For some reason my phoenix channels are working for me in my local dev environment, but as soon as I deploy via Docker, I get a 403 error...
New
svb
Hi! Currently I want to submit a form by pressing the Enter key. However, since my input field is of type “textarea” this is just adds a...
New
sergio
Kind of like when jquery came out, it was super necessary. Existing drag and drop libraries have a bunch of baggage to support old browse...
New

We're in Beta

About us Mission Statement