Skip to content

ecarter/als-recover

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Recovering synth patches from old Ableton projects — your preset was never lost

I had a back catalogue of Ableton projects, originally produced on Windows 10 with VST2 plugins, that I could no longer open on a VST3-only Mac. Every synth track came up empty. The usual advice is "you should have saved your presets" — but it turns out you don't need to. The full patch state is already inside the .als file. This is the tool + the trick for getting it back.

als_extract.py is one self-contained Python 3 script (stdlib only). It reads a project and either reconstructs loadable .fxp presets (Serum, Sylenth1) or recovers the exact preset names to reload by hand (Native Instruments / Komplete Kontrol). It only reads the project you point it at; it never modifies it.

Why the patches went missing in the first place

You can read the origin straight out of the file. Native Instruments presets, hosted through Komplete Kontrol, still carry their original Windows install paths inside the project:

C:\Program Files\Common Files\Native Instruments\Super 8 R2\Presets\Gamey.nksf
D:\Users\you\Native Instruments\Studio Drummer\Snapshots\Garage Kit - Full\...
F:\Users\you\Native Instruments\Battery 4 Factory Library\Kits\Techno Wikinger Kit.nbkt

Those projects were VST2 on Windows. Two things broke them on the move to a modern Mac:

  1. Komplete Kontrol dropped VST2. Modern KK is VST3/AU only (VST2 ended after the 2.x line), so the Komplete Kontrol VST2 the projects reference simply doesn't exist anymore.
  2. Serum / Sylenth1 are VST3 on the Mac. Live opens the project, finds no VST2 to instantiate, and the track is silent.

But Live had already serialized each plugin's complete state into the .als when the project was saved. Nothing was lost — it just had nothing to load it into.

The trick

A .als is gzipped XML. Each VST2 instrument's state is stored as a hex <Buffer> blob. There are two kinds:

  • Opaque-state synths (Serum, Sylenth1). The blob is the patch. The VST2 .fxp preset format is just a tiny header (CcnK / FPCh, big-endian) wrapped around exactly this chunk. Rebuild that header around the blob and you get a .fxp that the VST3 build loads for backward-compatibility — even if the original preset file is gone from disk. (Two gotchas the script handles: Sylenth1's chunk is 1lys-prefixed and must not be decompressed; when a synth was hosted inside Komplete Kontrol, its chunk is nested in KK's state.)
  • NI / Komplete Kontrol. The state is opaque and can't be rebuilt from outside Live, but the blob stores the hosted plugin, preset name, library, and file path in plaintext — so you get the exact name to reload by hand in KK VST3.

Usage

# List every plugin, recovered preset names, and the project's origin
python3 als_extract.py inspect "My Song.als"

# Rebuild .fxp presets for each Serum/Sylenth1 track (default: project folder)
python3 als_extract.py fxp "My Song.als" -o ./recovered

Example inspect output on an unrecovered Windows project:

Project : coast roller [pre-recovery backup].als
Saved by: Ableton Live 9.7.7
Origin  : Windows VST2 project (drive paths in blobs: F:\)

  [2-Komplete Kontrol] Komplete Kontrol  -> NI/KK: reload by name: Techno Wikinger Kit.nbkt (Battery 4 Factory Library)
  [4-Sylenth1] Sylenth1  -> recoverable as .fxp (run: fxp)
  [5-Komplete Kontrol] Komplete Kontrol  -> NI/KK: reload by name: Scarbee Pre-Bass - Amped - Fat.nki (Scarbee Pre-Bass Amped)

Then drop the generated .fxp into the VST3 plugin's preset browser, or reload the named NI preset in Komplete Kontrol.

Scope / honesty

  • Validated on Serum and Sylenth1 (.fxp reconstruction) and NI/Komplete Kontrol (name recovery), across projects saved by Live 9, 10, and 12.
  • Effects and unsupported instruments are reported but not reconstructed.
  • The project-embedded chunk can differ from the original disk preset — that's a feature: it preserves tweaks you made after loading the preset.
  • A reconstructed Serum/Sylenth patch loads the sound; NI/KK presets are reload-by-name, not auto-loaded (KK's VST3 state container isn't writable from outside Live).

About

Recover synth patches (Serum/Sylenth1) and NI/Komplete Kontrol preset names from old Ableton .als projects — your preset was never lost

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages