Using Git for Version Control in Audio Projects
You are Unregistered, please register to gain Full access.    
Advertisements


Workstation Center Digital audio workstations (DAW), trackers, sequencers and programming.

Reply
Thread Tools
Old 30-07-2016, 06:12 AM   #1
Jaded
Total mad cunt
Jaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MC
Jaded's Avatar
Posts: 4,320
MC Status: 6902809
Thanks: 4,603
Thanked 3,472 Times in 2,100 Posts
Using Git for Version Control in Audio Projects

Okay, so this is just a quick one because I'm not sure how interested you guys will be. But if you are, I'll get more in depth.

I wanted to talk about using a version control system (VCS) for keeping track of audio projects. We all have systems such as [Project-Name-vX] and such. That's cool. But for some projects, I really think that git can be quite useful.

Basically, it's a distributed VCS that can be used to track changes in a project. It saves every change you commit to a repository, meaning you have a complete history of the project which you can move backwards and forwards over.








The Installation

To use it, the first thing you need to do is download it for your OS:
(For Windows users, it's worth it just for Git Bash)
[Only registered and activated users can see links. Click here to register]









The Basics

Git has four basic concepts:
  • Add / Stage
    When you change something, and you're happy with the change, you add or stage the changed files so that they are saved with the next commit.
    Quote:
    # Add one file1 and file2.
    $ git add file1 file2

    # Add all files in the project folder.
    $ git add --a
  • Commit
    Commits save any changes to staged files in the repository. When you commit changes to the repository, you add a message which describes what's been changed.
    Quote:
    # Commit staged files with a message.
    $ git commit -m "Sequenced nice 808 drum loop. Needs more cowbell."

    # Add all currently tracked files and commit with message.
    $ git commit -am "Added more cowbell"
  • Reset
    Reset can be used to unstage files or reset all files to their state at the last commit.
    Quote:
    # Accidentally add all files.
    $ git add --a
    # Undo.
    $ git reset
    # Add correct files.
    $ git add correctFile1 correctFile2

    # Completely trash everything you've changed since the last commit.
    $ git reset --hard
  • Push / Pull
    Git's a distributed VCS which means that you can easily send any changes to a server (like github, or a local computer or your own server). Once you have setup a remote server this can be done with git pull.
    Quote:
    # Push all branches to a remote server called origin.
    $ git push origin --all

    # Do the same thing after setting the remote (as above).
    $ git push

    # Get any changes from the remote.
    $ git pull

This is a pretty simplified explanation and I really recommend checking out the the git docs site:
[Only registered and activated users can see links. Click here to register]


Their geting started guide is really helpful and better explains things than I could:
[Only registered and activated users can see links. Click here to register]









The Audio Exmaple
So I've created a really really simple example using Reaktor 6:
[Only registered and activated users can see links. Click here to register]


Now that you have git you can get a complete copy of the repository:
Quote:
# Clone the repository at the current location
# into a folder called folderName.
$ git clone [Only registered and activated users can see links. Click here to register]
folderName
There's eight commits and all I've done is added a clock and some Bento Box blocks to the ensemble with a commit at a few stages. You can read the commit history here:
[Only registered and activated users can see links. Click here to register]


If you click to view any commit you will be able to download the ensemble as it existed when the commit message was written.

Here are the commit messages:
Quote:
  • Git Init: Empty ensemble with Clock.
  • Added 8 Steps to chain.
  • Setup ADSR / VCA gates.
  • Added OSC x 2, Mix x 1 and routed to VCA.
  • Routed VCA > SVF > Out 1 & 2.
  • Keylinked filter and setup test tone.
  • Added README.
  • Added gitignore.
Reading those descriptions, I doubt you'll be surprised with what you find in the downloaded files.

So that's a quick intro. If anyone's interested, let me know and I'll get into more depth with info about:
  • Telling git to ignore files.
  • Creating branches to maintain multiple versions at once.
  • Using git for collaborative projects.

Peace.

Advertisements

Jaded is offline   Thanks Reply With Quote
Old 30-07-2016, 06:22 AM   #2
GomesR
IDMf Supporter
GomesR is a savage MCGomesR is a savage MCGomesR is a savage MCGomesR is a savage MCGomesR is a savage MCGomesR is a savage MCGomesR is a savage MCGomesR is a savage MCGomesR is a savage MCGomesR is a savage MCGomesR is a savage MC
GomesR's Avatar
Posts: 2,796
MC Status: 71074
Thanks: 1,696
Thanked 1,170 Times in 717 Posts
Re: Using Git for Version Control in Audio Projects

This is very cool. Sometimes the way I build my ensemble in Reaktor is just importing existing ones, sometimes it crashes and I'm hours into something. Also I'm still a huge fan of using 8tape for layering stuff so, if I'm understanding how this works, it's sort of a godsend.

Definitely gonna check this out, thank you

------------------
GomesR is offline   Thanks Reply With Quote
Old 30-07-2016, 07:01 AM   #3
Jaded
Total mad cunt
Jaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MC
Jaded's Avatar
Posts: 4,320
MC Status: 6902809
Thanks: 4,603
Thanked 3,472 Times in 2,100 Posts
Re: Using Git for Version Control in Audio Projects

Quote:
Originally Posted by GomesR View Post
Sometimes the way I build my ensemble in Reaktor is just importing existing ones, sometimes it crashes and I'm hours into something.
Yes, so it would be perfect for situations like this. So say you had a working ensemble and you're about to start trying something which could crash things:
Quote:
$ git commit -am "Getting ready to try something tricky."
Then say you work on it for a half hour and things are kind of okay and then you fuck thing up beyond all repair:
Quote:
$ git reset --hard
And you're back to where things were before you started.

Or... if it works, or you get to a point where it's kind of working but you're worried it's going to break:
Quote:
$ git commit -am "Added [some device] and connected. Now trying the tricky routing.
And so on...
Jaded is offline   Thanks Reply With Quote
Thanks to Jaded
GomesR (30-07-2016)
Old 30-07-2016, 08:34 AM   #4
Nystagmus
Savage Mad Cunt
Nystagmus is a savage MCNystagmus is a savage MCNystagmus is a savage MCNystagmus is a savage MCNystagmus is a savage MCNystagmus is a savage MCNystagmus is a savage MCNystagmus is a savage MCNystagmus is a savage MCNystagmus is a savage MCNystagmus is a savage MC
Nystagmus's Avatar
Planet Earth; 2017 AD.
Posts: 3,801
MC Status: 65410
Thanks: 3,367
Thanked 1,308 Times in 987 Posts
Re: Using Git for Version Control in Audio Projects

i dont fully comprehend the details, but thanks. it seems worth studying a bit.

------------------
Mutually-Assured Survival is preferred.

Be a false negative of yourself !
Nystagmus is offline   Thanks Reply With Quote
Old 30-07-2016, 09:38 PM   #5
TL072
Master of the LFO
TL072 has a reputation beyond reputeTL072 has a reputation beyond reputeTL072 has a reputation beyond reputeTL072 has a reputation beyond reputeTL072 has a reputation beyond reputeTL072 has a reputation beyond reputeTL072 has a reputation beyond reputeTL072 has a reputation beyond reputeTL072 has a reputation beyond reputeTL072 has a reputation beyond reputeTL072 has a reputation beyond repute
Posts: 468
MC Status: 6560
Thanks: 103
Thanked 131 Times in 99 Posts
Re: Using Git for Version Control in Audio Projects

I will be interested to see where this thread goes. I might add that git is very good for .pd files for you puredata folks because the .pd files are just text files so the git diff algo works very well.

There is also some guy who has created a git tool in ruby for versioning Renoise files: [Only registered and activated users can see links. Click here to register]


These files are a mixture of xml and audio files (if I recall correctly), so the little script unzips the file so that again, the diff between the text parts of the project can be more efficiently stored.

I have not used it so I cannot comment on its quality.
TL072 is offline   Thanks Reply With Quote
Old 02-08-2016, 10:14 AM   #6
plsnp
Regular Freak
plsnp has a spectacular aura aboutplsnp has a spectacular aura aboutplsnp has a spectacular aura about
Amsterdam
Age: 25
Posts: 22
MC Status: 210
Thanks: 0
Thanked 4 Times in 4 Posts
Re: Using Git for Version Control in Audio Projects

this is all way to complicated for using git, its actually very simple, just don't use command line stuff.

1. download sourcetree
2. go to bitbucket, create an account, create a repository for ur song or sick new app whatever
3. on repository -> on the left you have this ... in a circle icon, click on it -> clone -> clone in sourcetree

now you got your repo on ur pc, play around with sourcetree, it's not that hard, but the interface is intimidating at first, just look around, you commit each change, and you push when you want to upload the "commits"
plsnp is offline   Thanks Reply With Quote
Thanks to plsnp
Jaded (02-08-2016)
Old 02-08-2016, 02:26 PM   #7
Jaded
Total mad cunt
Jaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MC
Jaded's Avatar
Posts: 4,320
MC Status: 6902809
Thanks: 4,603
Thanked 3,472 Times in 2,100 Posts
Re: Using Git for Version Control in Audio Projects

Quote:
Originally Posted by plsnp View Post
this is all way to complicated for using git, its actually very simple, just don't use command line stuff.
Git users around the world are banging their heads on their desks right now.

Quote:
Originally Posted by plsnp View Post
1. download sourcetree
2. go to bitbucket, create an account, create a repository for ur song or sick new app whatever
3. on repository -> on the left you have this ... in a circle icon, click on it -> clone -> clone in sourcetree

now you got your repo on ur pc, play around with sourcetree, it's not that hard, but the interface is intimidating at first, just look around, you commit each change, and you push when you want to upload the "commits"
SourceTree's okay, but for newbies my recommendation would be the GitHub desktop app (sadly, only Windows and Mac):
[Only registered and activated users can see links. Click here to register]


Another really good offering (available on all platforms) is GitKraken. The app itself has a nice dark theme with really nice graphic design. I recommend every IDMf user go and visit their front page because it's seriously cool:
[Only registered and activated users can see links. Click here to register]


There's a comprehensive list of gui clients at the git foundation website:
[Only registered and activated users can see links. Click here to register]


Although, as plsnp said, the interface is quite intimidating if you don't understand git. And that's a lot easier to do if you know the CLI first... Then you'll look at the gui clients and go, meh.

In terms of remote repo providers, BitBucket is definitely my recommended choice as you get unlimited private repositories on a free account and you can share each with a maximum of five users before hitting the paywall:
[Only registered and activated users can see links. Click here to register]


Github is probably my least recommended as all repos are public unless you pay:
[Only registered and activated users can see links. Click here to register]


Another provider is GitLab. They're probably the most interesting of the lot because you can use their remote service, or you can download their community edition (CE) which allows you to setup your own Gui for a Git server:
[Only registered and activated users can see links. Click here to register]
Jaded is offline   Thanks Reply With Quote
Thanks to Jaded
vashima (02-08-2016)
Old 02-08-2016, 03:09 PM   #8
Jaded
Total mad cunt
Jaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MC
Jaded's Avatar
Posts: 4,320
MC Status: 6902809
Thanks: 4,603
Thanked 3,472 Times in 2,100 Posts
Re: Using Git for Version Control in Audio Projects

Quote:
Originally Posted by TL072 View Post
I will be interested to see where this thread goes. I might add that git is very good for .pd files for you puredata folks because the .pd files are just text files so the git diff algo works very well.

There is also some guy who has created a git tool in ruby for versioning Renoise files: [Only registered and activated users can see links. Click here to register]


These files are a mixture of xml and audio files (if I recall correctly), so the little script unzips the file so that again, the diff between the text parts of the project can be more efficiently stored.

I have not used it so I cannot comment on its quality.
This looks cool bro. According to the README it's not exactly stable. But then it's using 7-zip (which seems weird in 2016) to access the file archive and interpret the XML.

If I can get my hands on some Renoise files I'll have a deeper look, because if it's plain text XML it should be really easy to script i/o between the project archive and repo...
Jaded is offline   Thanks Reply With Quote
Old 02-08-2016, 03:32 PM   #9
A.M
IDMf SupporterIDMf Artist
A.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MC
A.M's Avatar
Age: 52
Posts: 9,220
MC Status: 175560
Thanks: 10,269
Thanked 3,511 Times in 2,620 Posts
Re: Using Git for Version Control in Audio Projects

Sorry, J..but can you tell me how this differs from the likes of real-time back up or using something like True Image to back up directories and drives?

I mean, it seems like a halfway house between coding and backing up..but if it's just backing up we're talking about here, then aren't there offerings out there that don't require you to code commands in order to get the job done?

I used to have a program that automatically updated files on your HD once they'd been changed and kept all versions of those files so you have a complete record..but I lost it over the years.

Obviously I'm no coder.

------------------
A.M is offline   Thanks Reply With Quote
Thanks to A.M
lolirl (02-08-2016)
Old 02-08-2016, 03:43 PM   #10
Jaded
Total mad cunt
Jaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MC
Jaded's Avatar
Posts: 4,320
MC Status: 6902809
Thanks: 4,603
Thanked 3,472 Times in 2,100 Posts
Re: Using Git for Version Control in Audio Projects

I'll post some screenshots / explanation tomorrow
Jaded is offline   Thanks Reply With Quote
Thanks to Jaded
A.M (02-08-2016)
Old 02-08-2016, 06:36 PM   #11
Nystagmus
Savage Mad Cunt
Nystagmus is a savage MCNystagmus is a savage MCNystagmus is a savage MCNystagmus is a savage MCNystagmus is a savage MCNystagmus is a savage MCNystagmus is a savage MCNystagmus is a savage MCNystagmus is a savage MCNystagmus is a savage MCNystagmus is a savage MC
Nystagmus's Avatar
Planet Earth; 2017 AD.
Posts: 3,801
MC Status: 65410
Thanks: 3,367
Thanked 1,308 Times in 987 Posts
Re: Using Git for Version Control in Audio Projects

Pushing gits into commitment sounds like a bad idea to me
What if the gits rebel and want relationships on the side?

------------------
Mutually-Assured Survival is preferred.

Be a false negative of yourself !
Nystagmus is offline   Thanks Reply With Quote
Old 02-08-2016, 07:37 PM   #12
vashima
vashima is a savage MCvashima is a savage MCvashima is a savage MCvashima is a savage MCvashima is a savage MCvashima is a savage MCvashima is a savage MCvashima is a savage MCvashima is a savage MCvashima is a savage MCvashima is a savage MC
vashima's Avatar
Pocatello, Idaho
Age: 29
Posts: 675
MC Status: 13560
Thanks: 1,111
Thanked 271 Times in 208 Posts
Re: Using Git for Version Control in Audio Projects

Gitkraken looks pretty slick. I'm looking forward to understanding this a bit more.
vashima is offline   Thanks Reply With Quote
Old 04-08-2016, 07:50 PM   #13
TL072
Master of the LFO
TL072 has a reputation beyond reputeTL072 has a reputation beyond reputeTL072 has a reputation beyond reputeTL072 has a reputation beyond reputeTL072 has a reputation beyond reputeTL072 has a reputation beyond reputeTL072 has a reputation beyond reputeTL072 has a reputation beyond reputeTL072 has a reputation beyond reputeTL072 has a reputation beyond reputeTL072 has a reputation beyond repute
Posts: 468
MC Status: 6560
Thanks: 103
Thanked 131 Times in 99 Posts
Re: Using Git for Version Control in Audio Projects

Quote:
Originally Posted by A.M View Post
Sorry, J..but can you tell me how this differs from the likes of real-time back up or using something like True Image to back up directories and drives?

I mean, it seems like a halfway house between coding and backing up..but if it's just backing up we're talking about here, then aren't there offerings out there that don't require you to code commands in order to get the job done?

I used to have a program that automatically updated files on your HD once they'd been changed and kept all versions of those files so you have a complete record..but I lost it over the years.

Obviously I'm no coder.
I do not have time to really explain fully, but I will try to provide some background info.

Git is a version control system usually for programming. Where it excels over just copying files is that it saves only the differences between files (also can provide a journal of what each change involves and a whole pile of other features, mainly for programming, that even I do not fully understand). This means that you are working on a few files and make a few changes to a few lines, only these lines are saved in the database. If you make a several versions. You are only saving a few lines and not 3x the whole project, but you can reconstruct the state of your project at any time from the past through a few key commands. So if you really screw it up, you can go back to working on how it looked last Thursday.

The caveat is that this really only works with text files and not binary files. That is why I mentioned the .pd files and the Renoise program. Renoise files are actually a zip file containing a text file contain the notes to be played (.xml) and the audio files. What that plugin does as far as I know is takes care of unzipping the file, saving the changes with git, but leaving you with the zipped file to continue working with. Other DAWs (of if you work with SuperCollider or csound) that have a text format of project file should also benefit from this.

The other cool thing about git, which I will only be very brief with is that it enables de-centralised work. Previous version control systems like CVS and SVN had to live on one single server. It was not easy for people to make a copy of the server, do something completely crazy with it, and push the changes (remember only the differences between files) back to the server. In addition you could only have one server. With git, I can clone someones project work on it and send my ideas back to them to see if they want to include it in their project. Similarly someone can clone my project work on it and send them back to me, then I can work them into my project and send it back to the original etc.

This would be really cool if it could work on audio projects (where you could see the proposed changes to a track and then choose to integrate them), but alas, it only works on a text diff not a diff constrained to the data structure.
TL072 is offline   Thanks Reply With Quote
Old 04-08-2016, 08:56 PM   #14
A.M
IDMf SupporterIDMf Artist
A.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MC
A.M's Avatar
Age: 52
Posts: 9,220
MC Status: 175560
Thanks: 10,269
Thanked 3,511 Times in 2,620 Posts
Re: Using Git for Version Control in Audio Projects

Quote:
Originally Posted by TL072 View Post
I do not have time to really explain fully, but I will try to provide some background info.

Git is a version control system usually for programming. Where it excels over just copying files is that it saves only the differences between files (also can provide a journal of what each change involves and a whole pile of other features, mainly for programming, that even I do not fully understand). This means that you are working on a few files and make a few changes to a few lines, only these lines are saved in the database. If you make a several versions. You are only saving a few lines and not 3x the whole project, but you can reconstruct the state of your project at any time from the past through a few key commands. So if you really screw it up, you can go back to working on how it looked last Thursday.

The caveat is that this really only works with text files and not binary files. That is why I mentioned the .pd files and the Renoise program. Renoise files are actually a zip file containing a text file contain the notes to be played (.xml) and the audio files. What that plugin does as far as I know is takes care of unzipping the file, saving the changes with git, but leaving you with the zipped file to continue working with. Other DAWs (of if you work with SuperCollider or csound) that have a text format of project file should also benefit from this.

The other cool thing about git, which I will only be very brief with is that it enables de-centralised work. Previous version control systems like CVS and SVN had to live on one single server. It was not easy for people to make a copy of the server, do something completely crazy with it, and push the changes (remember only the differences between files) back to the server. In addition you could only have one server. With git, I can clone someones project work on it and send my ideas back to them to see if they want to include it in their project. Similarly someone can clone my project work on it and send them back to me, then I can work them into my project and send it back to the original etc.

This would be really cool if it could work on audio projects (where you could see the proposed changes to a track and then choose to integrate them), but alas, it only works on a text diff not a diff constrained to the data structure.
Thanks for taking the time to go into detail on this..really appreciate that.

Yeah..I understand what you mean..not too unlike [Only registered and activated users can see links. Click here to register]
..
and was the point I was touching on..that, for a non-programmer, some other program would be better.

I get there are various things you can do with Git, but I'm talking about just automatically backing up your project files as you save them in your DAW. The program I used to have years ago did just that and you ended up with the most current version of your file, along with ever other version before the changes were saved.

I'm pretty sure the program was Free..or in beta at the time, so if it's still going, it's more than likely fee-based by now. I'm talking about back in early 2000s, running on Windows 98..up to XP.

Oh..and it would have worked with the project files in my DAW, too, as it basically made copies of the files..not really a hard task.

I really wish I could remember the name of that piece of software..as it was really good and would be a perfect fit for the non-programmer types out there, who wanted something like Git, but didn't want to have to lean commands.

That said, some of the UIs posts here look really cool and certainly reduce the learning cure a bit, making it all more accessible to the casual user.

------------------
A.M is offline   Thanks Reply With Quote
Old 05-08-2016, 12:59 AM   #15
GomesR
IDMf Supporter
GomesR is a savage MCGomesR is a savage MCGomesR is a savage MCGomesR is a savage MCGomesR is a savage MCGomesR is a savage MCGomesR is a savage MCGomesR is a savage MCGomesR is a savage MCGomesR is a savage MCGomesR is a savage MC
GomesR's Avatar
Posts: 2,796
MC Status: 71074
Thanks: 1,696
Thanked 1,170 Times in 717 Posts
Re: Using Git for Version Control in Audio Projects

It wouldn't matter so much for a DAW, but in reaktor it's great. When I'm working on a project it takes about 90 saves on average. (Those are my "sub-saves" per one save) Snapshots, each loop, changes to existing ensembles, I mean every time you turn a knob, it's save. This software streamlines all of that. Maybe not as useful for somebody using Ableton and whatnot, where it's as easy as just hotkeying a save.

------------------
GomesR is offline   Thanks Reply With Quote
Thanks to GomesR
A.M (05-08-2016)
Old 05-08-2016, 11:19 AM   #16
A.M
IDMf SupporterIDMf Artist
A.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MCA.M is a savage MC
A.M's Avatar
Age: 52
Posts: 9,220
MC Status: 175560
Thanks: 10,269
Thanked 3,511 Times in 2,620 Posts
Re: Using Git for Version Control in Audio Projects

Quote:
Originally Posted by GomesR View Post
It wouldn't matter so much for a DAW, but in reaktor it's great. When I'm working on a project it takes about 90 saves on average. (Those are my "sub-saves" per one save) Snapshots, each loop, changes to existing ensembles, I mean every time you turn a knob, it's save. This software streamlines all of that. Maybe not as useful for somebody using Ableton and whatnot, where it's as easy as just hotkeying a save.
I get what you're saying, G..and that's the thing..I'm one of those whose just looking for a similar system to back up my DAW projects..not necessarily the audio files from each session, but if it did that, too, then that would be cool.
The program I used to have did all that in the background, so there was no need to type in any commands or set filters or anything like that.

That said, I get how Git can be and is a life-saver for people like yourself, when what you're doing is in such a state of flux and constantly changing. To be able to go back and have whichever version you were working on..whenever you want is really handy.

------------------
A.M is offline   Thanks Reply With Quote
Old 10-08-2016, 09:41 AM   #17
Jaded
Total mad cunt
Jaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MC
Jaded's Avatar
Posts: 4,320
MC Status: 6902809
Thanks: 4,603
Thanked 3,472 Times in 2,100 Posts
Re: Using Git for Version Control in Audio Projects

Quote:
Originally Posted by TL072 View Post
The caveat is that this really only works with text files and not binary files.
I've been looking into this further and the git-lfs project is an extension for using git for large file storage:
[Only registered and activated users can see links. Click here to register]


I've only skimmed the docs at this point though, so I'm not sure what it really does...

Quote:
Originally Posted by TL072 View Post
That is why I mentioned the .pd files and the Renoise program. Renoise files are actually a zip file containing a text file contain the notes to be played (.xml) and the audio files. What that plugin does as far as I know is takes care of unzipping the file, saving the changes with git, but leaving you with the zipped file to continue working with. Other DAWs (of if you work with SuperCollider or csound) that have a text format of project file should also benefit from this.
This got me thinking and I did some research. It seems that gzipped XML is common across a range of DAW's, certainly true for Ableton. I haven't checked any others.


Whichever file format it is (I'm going to demonstrate with Ableton Live Set), you just follow a pattern like this to move the project file to gzip and extract the XML:
Quote:
$ mv Live.als Live.gz;
$ gunzip Live.gz;
$ mv Live Live.xml;
Now you have an XML file containing the live set so you could just commit that to the repo:
Quote:
$ git add Live.xml;
$ gitt commit -m "Description of work that was done.";
Then you can either just wipe the XML file:
Quote:
$ rm Live.xml;
Then if you rewind or want to repack the data...
Quote:
$ mv Live.xml Live;
$ gzip Live;
$ rm Live.als;
$ mv Live.gz Live.als;
It wouldn't be too difficult to write a script that can do this and commit with a message in a single command. Something like:
Quote:
$ commit-project -f Live.als -m "Added the bass for the sub woofer brah.";
Which would do all of the file shenannigans, stage and commit to the repo.

Quote:
Originally Posted by TL072 View Post
This would be really cool if it could work on audio projects (where you could see the proposed changes to a track and then choose to integrate them), but alas, it only works on a text diff not a diff constrained to the data structure.
It would be a pretty cool project to write a "project file interpreter" that could parse the XML data from the project into some kind of dashboard display so you could see a history of additions, subtractions and settings etc. Then you could look at your projects over time and see production patterns.

Looking at the Ableton XML, it's pretty easy to understand. It would just be a lot of work. But it would be possible to hack together something that lists all of the audio and midi tracks and device chains in a weekend...

In fact, I might look into this further because I think git would be a perfect way to track changes in the XML data to identify which sections do what. Eg, change one parameter at a time, commit, review changes... repeat.
Jaded is offline   Thanks Reply With Quote
Old 10-08-2016, 09:56 AM   #18
Jaded
Total mad cunt
Jaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MC
Jaded's Avatar
Posts: 4,320
MC Status: 6902809
Thanks: 4,603
Thanked 3,472 Times in 2,100 Posts
Re: Using Git for Version Control in Audio Projects

Quote:
Originally Posted by A.M View Post
Yeah..I understand what you mean..not too unlike [Only registered and activated users can see links. Click here to register]
..
and was the point I was touching on..that, for a non-programmer, some other program would be better.
Yeah, kind of but not really a backup solution. So it's true that because you push stuff around (like to a server) that it serves as a form of backup, it's more about keeping the history.

So where you might compulsively hit the save key when you're working in a DAW lest it crashes, you're not going to stop and commit every single save. Instead, you might work for half an hour trying to get something done and you'll reach a point where you say, "Hey, I've made some good progress."

That's when you commit because you're saying, this is a point that I can move forward from that would be good to come back to... if that makes sense.

Quote:
Originally Posted by A.M View Post
I get there are various things you can do with Git, but I'm talking about just automatically backing up your project files as you save them in your DAW. The program I used to have years ago did just that and you ended up with the most current version of your file, along with ever other version before the changes were saved.
To illustrate how it's not necessarily about backing up, I'll give you an example of something that I ran into with Time Machine.

I used to have Time Machine set to make incremental backups every hour and I was working on a project with a lot of field recordings recorded at 24-bit 96k. I was creating clips from the raw recordings and batching them through a bunch of different processes. So the whole process involved generating a bunch of audio files which were all going to be scrapped at the end of the project. But because I had Time Machine on, my backup ended up saving all of the files and ended up being three or four times larger than the raw files and the final assets combined.

Whereas, if I had been using Git, I wouldn't have committed all of those files to the repository. I would maybe have added the raw files from the start, then the Audition PKF files for the individually clipped regions (tiny file size). Then I would have committed the project settings for each batch process (more tiny files). But I wouldn't have committed any more audio until I was done with the project and had rendered my final audio because I already had everything I needed in the project files and raw audio.
Jaded is offline   Thanks Reply With Quote
Thanks to Jaded
A.M (10-08-2016)
Old 10-08-2016, 09:57 AM   #19
Jaded
Total mad cunt
Jaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MC
Jaded's Avatar
Posts: 4,320
MC Status: 6902809
Thanks: 4,603
Thanked 3,472 Times in 2,100 Posts
Re: Using Git for Version Control in Audio Projects

Also, I haven't had time to work on some more audio examples or anything since I started this. Will try and get some more stuff together soon...
Jaded is offline   Thanks Reply With Quote
Old 10-08-2016, 10:05 AM   #20
Jaded
Total mad cunt
Jaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MCJaded is a savage MC
Jaded's Avatar
Posts: 4,320
MC Status: 6902809
Thanks: 4,603
Thanked 3,472 Times in 2,100 Posts
Re: Using Git for Version Control in Audio Projects

Also, this tutorial series from Bitbucket might be helpful to get your head around this topic. Here's the first section:
[Only registered and activated users can see links. Click here to register]


I'll check some video series and see if I can find anything basic that's not super geeky and post here..

Advertisements

Jaded is offline   Thanks Reply With Quote
Thanks to Jaded
A.M (10-08-2016)
Reply


Thread Tools

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
How do you backup your projects? Xenon Workstation Center 26 27-09-2013 11:06 AM
Embarassing Old Projects Spyderbyte Music Scene Chat 30 20-06-2013 05:57 PM
[Breaks/Techno] Online Mixing Service version Vs. My version modescmoesc Listening Booth 8 07-12-2011 10:31 PM
[Electro] G.M.U.F. - Hallway (Version 1 & Version 2) GodMadeUsFonky Listening Booth 1 08-11-2011 09:43 PM
My Projects Chromasonic Introduce Yourself 0 02-10-2011 07:08 PM


All times are GMT +1. The time now is 05:15 AM.


Electronic Music Forums

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, vBulletin Solutions, Inc.