Loops With Friends
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.
cdinto the repository.
git clone https://github.com/jeffcole/loops_with_friends.git cd loops_with_friends
Install Elixir dependencies.
Create and migrate the database.
mix ecto.create && mix ecto.migrate
Install asset dependencies.
Install Elm packages.
cd web/static/elm ../../../node_modules/.bin/elm-package install cd ../../..
Run the server.
http://localhost:4000in the browser.
Run the test suite with
- 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.