How we came up with a way to use GitHub to write songs.

Lorenzo's Music and GitHub Logo

The idea to collaborate on songs and music online has always interested me. I've talked to people that say they've done it, but it was more of a track sharing concept. They would work on a track, share it with another person and they would add on top of it.

That's when I first got the idea to use GitHub for that process.

Recently I was talking on twitter to Jason from The Choose Linux Podcast about this concept and he had mentioned it on his show.
I thought I would write down the concept of how we've been using GitHub for this just to see if anyone had any interest in it.

There are two ways I've done this on GitHub. One is an easy version and the second is a more complex version.

The first idea I tried was a similar kind of concept to sharing the song file but I exported all the individual tracks as "Stems" into a GitHub repository to use as individual tracks.

GitHub Music Collaboration (Easy Version)

To test out this idea, I set up a GitHub repository using a finished song for people to create remixes.
https://github.com/lorenzosmusic/i-never-wanted-to-say-remix-stems

Here was the explanation for how it would work in this case.

GitHub Song Remix Instructions

  1. Grab the audio stems to use in the stems folder.
  2. Import them to the DAW (Digital Audio Workstation) of your choice like Protools, Cubase, Ardour, etc...
  3. Remix the song in some awesome new way
  4. Export the new remix you made
  5. Send us the link to your new version at info@lorenzosmusic.com
  6. We email you back saying how much we like it.
Also, creating a version tag for the GitHub Repository turns the whole thing into a zip file people can download!

GitHub Music Collaboration (Complex Version)

Because the whole band only uses open source software for writing and recording I began to wonder if I could build out this concept even more? What if we had the ability for all of us to work on songs and build and change them in the original working file? 

The end result: This would become the song we release.

GitHub Song Writing process

  • We are using the multitracking software Ardour to record songs.
  • Add the Ardour song folder to GitHub as a new repository
  • Add the Git Large File Storage (LFS) extension to the repository (Sometimes the audio files are too large. This fixes that.)
  • Create a new branch every time you work on the song. (I add the date to the branch title so everyone knows what the current one is.)
  • When the song is done, make that branch the default branch.
  • Create a release tag
  • Share the repository for remixing!
This isn't perfect but it's worked for us so far. Plus, you can now work on this anywhere. And if your computer crashes you'll always have the working file.

Here are a few notes on this method:
  • Before starting always pull the latest updates!
  • Always push your latest changes!
  • We try and make sure we all have the same plugins. Otherwise, the mixes won't sound the same.
  • Creating a new branch each time takes a good amount of communication. Let everyone know when you do it so they can switch to the new one.
  • Branching keeps everyone from losing the version they are working on.
This is just a basic rundown of the concept.

I share live videos while working on songs and editing on our YouTube channel from time to time. For updates on that subscribe to - https://www.youtube.com/lorenzosmusic




Get the mixtape

Lorenzo's Music "Rom-Comm Mixtape" available now! - listen on Spotify, Apple Music, Amazon, Deezer, Google Play, Bandcamp & YouTube

Also...