samaaron

samaaron

The Black Dog's New EP Seclusion released as code using Elixir and Luerl

Hi everyone,

just thought that some of you might be interested in a new experimental live coding system I co-developed with the University of Sheffield.

It doesn’t quite have a name yet, but we developed it in collaboration with the band The Black Dog who have used it to release a number of tracks of their latest EP Seclusion as code.

http://bleep.sheffield.ac.uk/artist/seclusion

The live coding system was built using Phoenix LiveView, Luerl and WebAudio. It was a huge amount of fun and it was amazing how much power the tools gave me to build it. Soooo much nicer than Qt and C++ :wink:

If you want to know a little more about how it works, we gave a workshop recently and the material we used is here:

Also, the source code is available here:

http://github.com/samaaron/bleep

I’m going to use ideas and experiences from this project to build the next version of Sonic Pi.

Most Liked

samaaron

samaaron

I haven’t yet found any direct benefits from WebAudio + LiveView, but WebAudio + Phoenix Channels opens up a huge set of opportunities for collaborative jamming.

I plan to consolidate my learning from this project and fold it back into Tau5, a ground-up rewrite of Sonic Pi, which will drop Ruby and switch to Luerl + Elixir. I also plan to switch to Phoenix/LiveView for the GUI - working simultaneously with an embedded Qt WebEngine for a standard app feel and web browsers for a more web-approach.

I still plan on using SuperCollider for the standalone desktop app, but will definitely explore integrating the WebAudio engine from the project with The Black Dog to enable pure web-based audio possibilities. Note that the Web Audio engine was written by Guy Brown from Sheffield University and can be found here (still quite rough around the edges): GitHub - guyjbrown/synth-designer: A system for designing synthesizers with WebAudio, and a synthesis engine that underpins software for live coding. · GitHub

My plans for Tau5 can be found here: https://www.patreon.com/posts/112605951

Also, thanks for your kind words regarding my talks. It’s always wonderful to share the joy of programming with others!

binaryape

binaryape

This is wonderful!

linusdm

linusdm

Thanks for bumping this!

I’ve wondered about using the web audio api in combination with LV/Phoenix. Thanks for sharing Sam! In the past I’ve done some work on the crossroad of (very modest) audio processing and Qt. Nowhere near as fun as Elixir development. I can imagine how much more fun this other stack is for this kind of domain.

I’ve seen you present your work about Sonic Pi a few years ago in Londen. Till today it still stands as one of the most energetic and inspiring presentations I’ve seen. :smiling_face:

Where Next?

Popular in Discussions Top

blackode
Elixir Upgrading is so Simple in Ubuntu and It worked for me Ubuntu 16.04 git clone https://github.com/elixir-lang/elixir.git cd elixir...
New
MarioFlach
Hello, I want to share a project I’ve been working on for a while: https://github.com/almightycouch/gitgud Background Some time ago I ...
New
AngeloChecked
What learn first? Rust or Elixir Hi Elixir community! I’m here because i want learn a new language. I’m a junior developer and mainly i ...
New
AstonJ
If a newbie asked you about Phoenix Contexts, how would you explain the basics to them? Feel free to be as concise or in-depth as you li...
New
Ankhers
Just a little information upfront. Generally speaking, if I feel like I need to either break a pipe chain or use an anonymous function in...
New
New
rms.mrcs
A couple of days ago I was discussing with a friend about different approaches to write microservices. He said that if he was going to w...
New
100phlecs
Are there any downsides, like perf issues, to putting all functional components in CoreComponents as long as you prefix it with the conte...
New
wmnnd
The Go vs Elixir thread got me thinking: Would it be too hard to implement a simple mechanism for creating Go-style static app binaries f...
New
pdgonzalez872
If this has been asked here before, please point me to where it was asked as I didn’t find it when I searched the forum. Maybe a mailing ...
New

Other popular topics Top

danschultzer
None of the current solutions worked well for me, so I went ahead and built a user management system from scratch. This project took far...
548 29377 241
New
electic
Hi, I am new to Elixir. I am trying to use the DateTime component to insert a date into MySQL however the there seems to be no way to fo...
New
ovidiubadita
Hey all, I discovered Elixir and I love it. I always wanted to learn a functional programming and I intended to go for Haskell, but afte...
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
chrismccord
This release brings a number of exciting features, including integration with the new Phoenix LiveDashboard and Phoenix LiveView. There h...
New
josevalim
Hi everyone, One of the features added to Elixir early on to help integration with Erlang code was the idea of overridable function defi...
New
stefanluptak
Hello everybody, usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
ashish173
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New
axelson
This post is a wiki (feel free to hit the edit button near the bottom right of this post to add your own changes!) This post collects co...
239 47930 226
New
lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New

Latest on Elixir Forum

We're in Beta

About us Mission Statement