Aj-snapshot is the simplest-possible connection logger for ALSA and JACK.

Strengths [Weaknesses]


Aj-snapshot is one command. It takes a snapshot of your session, and that's all it does. No new window to open, no complex configuration file required.


The output of aj-snapshot is a human-readable XML file, so even if you don't have aj-snapshot on a computer, you can open and read the specs of a session.

Weaknesses [Strengths]


Because it is so simple, it is a mostly manual tool. It does not restore your session beyond the actual sound routing (JACK and ALSA connections). This may be too simplistic for a user who wants applications launched, patch banks and settings loaded, and so on.

What is Session Management?

It's not uncommon for a musician to use several different applications when creating just one piece of music, and a completely different set of music applications for the next piece. The problem of remembering what applications got used for what, which sound banks were loaded for which piece, what sound output was plugged into what input, and what an effect unit was set at, becomes overwhelming very quickly.

The problem is not new; synth artists and studio engineers have been keeping notebooks detailing how different songs are “configured” since at least th 70s, but since the studio has moved into the computer, it only makes since to make it a problem for the computer rather than for the artist.

The solution is session management, and there are several approaches. As usual with Slackermedia, you should find the solution that works best for you; aj-snapshot is only one option of many.

Aj-snapshot is not so much a session manager as it is a connection manager, which is part of session management. If you enjoy the modular approach to multimedia, then you may find that using aj-snapshot along with careful and deliberate file management is all the session management you need.


Install aj-snapshot from http://slackbuilds.org or manually from http://aj-snapshot.sourceforge.net.

Using aj-snapshot

Aj-snapshot is not a tool you use early in your work, since it's basically useless until you have something to take a snapshot of. Once you have configured a rig that you like, then take a moment to take a snapshot of your routing setup:

$ aj-snapshot foo.aj

where foo.aj is the filename that will be created for the snapshot. This file can be stored any where, and it's up to you how to organise your files; Slackermedia recommends storing your snapshots with your music project files.

If a file with the same name exists in the destination directory, aj-snapshot offers to overwrite it. Force aj-snapshot to overwrite existing files with the -f (–force) option.

A snapshot contains all active ALSA and JACK connections. (You can exclude one or the other, but by default both are stored.)

Restoring a Session

When you need to resume work on a project, you should start JACK, any graphical JACK frontend that you use (such as Patchage or QJackCtl), your DAW, and any applications you are using external of your DAW (stand-alone synths and effects), and then run aj-snapshot:

$ aj-snapshot --restore foo.aj

All of your connections are restored, and you can continue working.

When you restore connections with aj-snapshot, the default behaviour is to leave all existing connections untouched and to add the connections from the snapshot file on top of those. If you want to restore the exact state of the system, you must tell aj-snapshot to remove all existing connections before doing the restore:

$ aj-snapshot --remove --restore foo.aj

You can use –remove (-x) to remove all existing connections without any further action.

$ aj-snapshot -x

Things Not Logged by Aj-Snapshot

Aj-snapshot only takes a snapshot of Alsa and Jack connections (hence its name, AJ Snapshot). This means that aj-snapshot affectively knows where all the virtual cables and plugs are going, but it knows nothing about the virtual devices on either end of those cables.

If you connect zynaddsubfx, loaded with the Space Oberpad patch, to an Calf reverb unit set to Tunnel, and then to Muse for recording, the all aj-snapshot knows is: zynaddsubfx → Calf → Muse. It knows nothing, as you can see, about the synth patch loaded into the synth, the type of effect in the Calf rack, or the profile loaded into that effect in the Calf rack. That could change the sound of your music pretty thoroughly, so it's important to understand that aj-snapshot is a connection manager, not a true session manager.

To keep track of the state of your synths and effects, you must save setting or session files (different applications will call them by different names) per application, per song. Furthermore, if you design your own sounds or effects, you may also need to save those as personal banks.

This produces a lot of files containing a lot of important information, and if you choose to live your artistic life this way (and there are many reasons that you may want to), without an all-in-one DAW to keep track of all of this for you, you must devise a clear and consistent method of keeping all of this data for each composition distinct and safe.

For more information on project management, read about Slackermedia's Planter file system tool.