Murphy Randle

This talk combines the power of Elm and Elixir’s Phoenix to turn Twitter into a platform for live crowd-sourced music composition. We’ll cover Elm and Elixir channels, custom DSL parsing in Elm, and driving the Web Audio API through Elm’s native inter-op abstraction: ports.

This talk aims to demonstrate the power of coordinating:

  • Parser combinators, and Elm’s bogdanp/elm-combine library for transforming strings into data
  • Elm’s standard application architecture
  • Ports (Elm’s abstraction for interacting with its host language, in this case, Javascript)
  • The Phoenix Web framework and its real-time channels
  • Elm’s integration with Phoenix channels
  • Tone.js for making music with the Web Audio API

For illustrative purposes we’ll suppose we are a consultancy, and a client has just approached us with the need to turn tweets into music. She has come up with a compact musical notation that will fit a good chunk of music into 140 characters, and she wants us to teach the browser to play the music encoded in that notation. But that’s not all. Her vision includes a client that streams in tweets, parsing them and queueing them up to be played as they happen, ultimately allowing users to listen to a never-ending piece of real-time music, composed by a symphony of twitter users world-wide.


Chief smile officer and executive code whisperer at Kuali, Murphy makes tools to support higher education. He’s an Egghead.io instructor, a full-stack JS dev, and a functional programming padawan. He comes from a background in animation technologies, specializing in rendering and pipeline development. If you look carefully, you might see his name in the credits of a film.