Loops With Friends is a collaborative music-making web app built with Elixir/Phoenix, Elm, and the WebAudio API.
It supports up to seven users in a given "jam," in which each user gets their own music loop. Each user can start and stop their loop to make music in real time with the other users in the jam. The app automatically creates and balances additional jams as users join and leave.
See these blog posts for more on how it's built.
- Collaborative Music Loops in Elixir and Elm
- Jamming with Phoenix Presence
- Talk to My (Elixir) Agent
- Phoenix Channel Race Conditions
- Testing Phoenix Sockets and Channels
- Injecting Agent Names in Elixir Tests
- Using Stubs to Isolate Elixir Tests
- Testing Function Delegation in Elixir
-
Install Elixir, Phoenix, and dependencies.
-
Clone and
cd
into the repository.git clone https://github.com/jeffcole/loops_with_friends.git cd loops_with_friends
-
Install Elixir dependencies.
mix deps.get
-
Create and migrate the database.
mix ecto.create && mix ecto.migrate
-
Install asset dependencies.
npm install
-
Install Elm packages.
cd web/static/elm ../../../node_modules/.bin/elm-package install cd ../../..
-
Run the server.
mix phoenix.server
-
Visit
http://localhost:4000
in the browser.
Run the test suite with mix test
.
- Eliminate the loop queueing gap by playing all loops on page load at zero volume, and setting the volume on user message receipt.
The loops used by the app are Apple Loops.
Copyright © 2017 Jeff Cole. See LICENSE for more information.