Articles

The Joy of Project Snapshots

All of us at some point in our lives have tried to send someone a Max patcher and failed.

Maybe there were some missing abstractions, or a wayward Javascript file, or the patcher snapshots you were using went astray. You possibly had something in your search path you forgot was a 3rd party object because you were so used to using it.

It can get really bad when you quickly need help with a patching problem. Say you try and write up a support ticket, or you create a topic on the forum. Instead of getting help and getting back to the gig, you spend the next few days chasing down errors in the Max window, or trying to find where you have objects stashed but support doesn’t, or you pasted it into the forum topic but you forgot to include some files - and now no one knows what’s going on.

We’ve all been there, and - as a support guy - I feel your pain.

Here’s a way round it all - make a project snapshot. Whether or not you keep your code organized in projects you can make use of the project snapshot feature to quickly make a robust and portable version of your patcher.

The first step is to save your top level patcher as a project. If it already is a project, skip straight to making the snapshot.

Your project will save with a new project name and open in Max - note your old patcher code is not touched.

Make the Snapshot!

In the project window select the menu item for making a snapshot of your patcher.

Save it somewhere and you’re done.

That’s it! Saving a project snapshot includes all data, abstractions, patcher snapshots and non factory externs in the snapshot file - which is in zip format. Some things, like buffer~ references, jit.movie files and vst~ plugins are not saved unless they are explicitly added to the project.

The filename is date stamped so you can keep track of versions of your code. Now you can send this maxzip file around to anyone you like knowing that you will not have to deal with the drama of missing parts.

But wait there’s more!

Patcher snapshot pro tip:

These days it’s quite common when doing big shows to be working on multiple computers, attached to projectors or in machine rooms or scattered all about the show. You might be working on a laptop to develop code for all of these machines. Patcher snapshots gives you a great way to save versions of a project to run on other machines.

Let’s have a look at the snapshot file naming scheme.

In my case, the resultant file is called

testy Mctest_20160321_135749.maxzip

You’ll notice that this gives us Name_Date_Time. You can use this as a lightweight versioning system.

Making patcher snapshots as you go means you don’t worry about making sure you are moving over all of the parts of your code while you are slammed trying to knock the project out. Plus you get safety - if you move a patcher snapshot over to one of your show machines and there’s something wrong with it - you can easily quit and go back to a previous version based on the filename.

That’s it for now - if you have questions or comments please feel to fire away in the comments!

by Andrew Pask on March 29, 2016

Creative Commons License
daddymax's icon

I had a few issues with this when it first popped up. Did i read somewhere that it doesnt save basic int/ float number (that it prefers live dials and live objects)?

In short - does it 100% nail down every parameter you have going (bar buffers and loaded movies, etc) or are there other considerations to factor in?

Andrew Pask's icon

There are 2 places in Max where we use the term "snapshots"

Patcher snapshots save parameter data in a patch - the thing you are talking about. Everything saved is a parameter.

This article is about Project Snapshots - which save entire projects and their patcher dependencies, which may also include patcher snapshots.

-A

daddymax's icon

Aha - i missed that point - thank you Andrew.