My band Lorenzo's Music came up with a method where we can collaborate remotely on songs using GitHub for music.
This method is with the full DAW sessions where we can add tracks, effects, mix, and everything.
We've been doing this since 2017. And in 2022, we were actually asked to talk at the Ubuntu Summit in Prague about how we did this.
Please let me know if there are any questions about this process.
What we use
Git LFS Data Storage
I switched the whole band to using Ubuntu Studio so we would all have the same effects and software to make sure we were on a level playing field as far as having all the exact same tools.
We record the band using Ardour as our DAW.
We have an organization account for the band on GitHub to share the recording sessions.
In this organization account I bought a Git LFS Storage subscription for $5 a month to store the .wav files. It's the lowest tier and even as a four-piece band, we have not had to bump up to the next tier yet.
And we use Google Sites to keep track of the song's progress and branches.
Using GitHub for music
Starting the song
Create a repository for a song
I create a repository for the song we're going to work on in GitHub and Clone that locally.
Then I add Git LFS to the repository to track .wav files.
Now that I have the repository ready I create an Ardour session in the repository folder on the laptop.
Then I record tracks, edit, and mix as normal.
Back up session to GitHub
When I'm done recording I commit the changes to GitHub.
Document progress in our wiki (Google Sites)
I make a page for the song on Google Sites.
I create a header on the page with the date.
Then I document what we did for the song and even share an mp3 from the session there so we can reference it.
Create a branch to make changes to the song
If we recorded this session at our studio, now any member of the band can clone the repository at home.
When they clone it locally on their laptop at home.
They create a new branch in the repository to work from.
Then add tracks or do what they need to do to the song.
When they are done they commit the new branch to GitHub.
Then on the Google Site page for the song create a new header section with the date and the branch name.
And under that document what changes they made to the song.
Here is the key part that makes it possible to collaborate on GitHub
So far this all seems pretty normal, nothing too extraordinary yet. But here is the part that makes it work for remote collaboration.
When I originally described the whole process of what I was trying out to the band. I told them my main concern was what was going to happen when I tried to merge this new branch with the main branch. I worried that If there was a conflict during the merge of the two branches there was no way to fix it.
That's when our bass player Cliff said something that changed the whole thing...
He said, "Why would we have to merge it?"
He was right! We weren't writing code, we were creating music.
Branches = Song changes
Each branch is just the progress of the song!
So moving forward if someone wants to make changes we do this.
Say I want to add a vocal track. I would do a pull on my local repository, switch to the most recent branch, and then make a new branch off of that.
Then make changes, commit that branch, and document it in Google Sites.
This would go on that way until the song is done. That's the key method of how to use GitHub for music
When the song is done
When the song is finished I create a new branch called "Final-Mix" upload that and switch that to the main branch in the repository on GitHub.
This is how my band Lorenzo's Music has been using GitHub remotely now for years and we have been able to record and release several albums and singles doing this.
I think I covered everything, But please let me know if there are any questions or if there are things that aren't clear about it. I would love to hear what you think!