Preview and listen

How recording works

The Als Preview plugin listens to everything that reaches Live’s Main track and keeps it, bar by bar, so the app can play your song from any bar later. Here is what happens from the moment you press Play.

The short version

  • The plugin sits on the Main track and passes your audio through untouched. It has no knobs, adds no latency and changes nothing about how your set sounds.
  • It records only while Live’s transport runs. Each stretch you play without stopping or jumping becomes one take.
  • With every bit of audio it notes which bar and beat Live was playing, so each take knows exactly where in the arrangement it belongs.
  • The app lays all takes of a set onto its arrangement as the Recording lane. Where takes overlap, the newest one wins.
  • Everything stays on your Mac, as compressed audio of about 85 MB per hour.
The bottom of an arrangement in Als Preview: the last tracks, then the Recording lane with the plugin’s takes as waveforms. Older takes are paler, newer ones solid.
The Recording lane under the arrangement. Each take is drawn where it was played; older takes are paler, the newest are solid.

Where the plugin listens

Put the plugin on the Main track, after the devices that are already there. Then it hears exactly what comes out of your speakers: every track, every return, and your limiter or master bus processing. You can put it earlier in the chain, but then the preview is missing whatever comes after it.

Drums Bass Keys Vocals Main track EQ Eight Limiter Als Preview unchanged Your speakers A copy of every block, with its beat recorded while Live plays
Your tracks meet on the Main track. The plugin, last in the chain, passes the audio on unchanged and records a copy.

One plugin per set is all it takes. It records in stereo at Live’s sample rate; a mono Main track is recorded on both channels. How to add it is on Set up the plugin in Live.

Recording without getting in Live’s way

Live computes your audio in small blocks, each a few milliseconds long, and has to hand every block to your audio interface on time. If anything in the chain takes too long, you hear a click or a dropout. That’s why a plugin must never wait for anything while it processes audio: not for the disk, not for memory from the system, not for another part of the program.

Writing a file can take unpredictably long. Your disk may be busy, another app may be saving. So the plugin splits the job in two:

  1. In Live’s audio thread, it only copies. When Live hands the plugin a block, the plugin passes the audio on and copies it into a ring buffer: a piece of memory reserved when the plugin starts, used round and round like a circular tape. Next to the audio it notes the bar and beat Live reports, the tempo, whether the transport is running, and whether Live is exporting. Copying a few kilobytes takes almost no time, and it never has to wait.
  2. A second thread, the writer, does the rest. Fifty times a second it wakes up, takes everything that has queued up in the ring, encodes it as AAC and adds it to the current take on disk.
Live’s audio thread Calls the plugin for every block, a few ms of audio. It copies it in and never waits. write read 8 s of audio The writer Every 20 ms it takes what’s queued, encodes it as AAC and adds it to the take.
The audio thread writes each block into the ring, the writer reads what has queued up. The ring holds 8 seconds of audio; in practice only a few blocks are ever waiting.

The ring has room for 8 seconds of audio, while the writer empties it every 20 milliseconds, so it never comes close to full. If your Mac were ever so busy that the writer fell 8 seconds behind, the plugin would rather drop a block from the recording than make Live wait: your playback never stutters because of the recorder. The plugin window would then show how many blocks were dropped.

During an export, nobody is listening in real time, so there the plugin does wait for the writer instead of dropping anything. The exported recording is always complete.

How much CPU does this take? Very little. In the audio thread the plugin copies the block it is given and nothing else. Encoding runs outside the audio thread, on a CPU core Live isn’t waiting on.

What makes a take

A take is one stretch of playback that runs without a break. The plugin compares the position Live reports for each block with where it expected the block to be. If they don’t match, you jumped, and a new take begins.

In Live you…The recorder…
press Playstarts a take at the current position.
press Stopfinishes the take and saves it.
click elsewhere while playingfinishes the take and starts a new one at the new position.
play a loopstarts a new take each time the loop jumps back. The last pass ends up on top.
solo a trackpauses, if the Remote Script is installed (see Soloing a track).
export the arrangementrecords the export as a take and logs it as an export (see Exports).
tap Play and Stop quicklythrows the take away. Takes shorter than half a second are never kept.

Every take is two files: the audio, and a small file that maps the audio to the arrangement (four times a second it notes the beat Live reports). The small file is written last, after the audio is complete, so the app never sees a take that is still being written. While Live plays, the take that’s being recorded is not in the Recording lane yet; it appears when you stop.

Newest takes on top

You rarely play a song from start to finish. You loop the drop, play the intro, fix the bridge and play the drop again. The app puts all of these takes together into one lane, like layers of paper: the newest take lies on top, and older takes show through only where nothing newer covers them.

1 9 17 25 33 Monday Tuesday Today Recording lane not recorded: skipped crossfades at the seams
Three takes of the same song. In the Recording lane, today’s retake of bars 13 to 17 wins, Tuesday’s take fills bars 9 to 25 around it, and Monday’s take is only heard where nothing newer was played.
  • Seams are crossfaded. Where a newer take starts on top of an older one, the two blend over a tenth of a second, so you don’t hear the cut. Where there is nothing to blend with, a five-millisecond fade keeps the cut from clicking.
  • Slivers are dropped. A retake never lines up with the old one to the sample. Leftovers of an older take shorter than a quarter beat at the edge of a newer one are left out instead of playing as a tiny blip.
  • Bars you never played are filled in. A approximate preview of the set plays them, in blue, and takes always win over it. Without a preview, playback jumps from one recorded stretch to the next, so a set with a recorded intro and drop plays as intro, then drop.
  • Old takes that can no longer be heard are deleted. After every take, the plugin deletes the takes that newer ones now cover completely, in every version of the set they belong to. Only audio you can still hear stays on disk.

How to play the lane, move the start marker and listen to older versions is on Listening to a set.

In time with the arrangement

Tempo changes

Because each take notes the beat Live reports four times a second, the app doesn’t need to know your tempo map. Tempo automation, a change halfway through the song or a different tempo next week: every take still lines up with the bars it was played at, and the playhead runs along the clips at the right speed.

Latency

Devices with lookahead, like a limiter on the Main track, and Live’s delay compensation hold the audio back a little before it reaches the plugin. So when you press Play, the plugin first sees a few milliseconds of silence or of the tail of what played before, and then the music.

Live’s position 17.1 17.2 17.3 17.4 18.1 18.2 18.3 18.4 Play At the plugin latency, measured In the app
Every take that starts from a stop measures how long the music took to arrive. The app moves the audio back by that much.

Each take that starts from a stop measures this delay: it looks for the first moment within a second that is clearly louder than everything before it. The app takes the middle value of all of a set’s measurements and shifts every take by it, so the takes stay aligned with each other even if one measurement was off, for example because a take started on a rest.

Sample rates

Takes are recorded at Live’s sample rate up to 48 kHz. At higher rates they are converted while recording: 88.2 and 176.4 kHz to 44.1 kHz, 96 and 192 kHz to 48 kHz. That keeps the files small, and you still hear the full audible range.

Soloing a track

When you solo the bass to fix it, the Main track only gets the bass. Recorded as usual, that solo would end up on top of your full mix in the Recording lane. Live doesn’t tell plugins which tracks are soloed, though. The optional AlsPreview Remote Script does:

Live You solo a track AlsPreview Remote Script runs inside Live, sees solos this Mac only Plugin on Main pauses recording
  • While any track or return is soloed, the plugin records nothing, and the full mix you recorded before stays in the lane.
  • The message about a solo arrives a moment after Live applies it. The plugin cuts the take back to where the solo began, so not even those few milliseconds end up in the recording.
  • When the last solo ends, recording resumes a tenth of a second later, after Live has brought back the full mix.
  • Without the script, soloed playback is recorded like anything else. Playing that part again with all tracks replaces it.

Setting it up takes a minute and works for every set: Set up the Remote Script.

Exports

When you choose File › Export Audio/Video in Live, Live plays the arrangement through the plugin too, but as fast as it can rather than in real time. The plugin notices: if Live renders more than twice as fast as the clock, judged after the first second of audio, it’s an export.

0 s 10 s on the clock Playing 1 s of audio per second Exporting 10 s of audio in 1 s More than twice as fast: an export logged with its start, end and length
  • The plugin logs the export: when it started and finished, how long it is and which bars it covers. The app then finds the file Live wrote at that time with that length, and shows it with the set. More on Exports.
  • The export is also saved as a take. After exporting the whole song, the Recording lane has all of it, rendered cleanly.
  • Export time counts as time you worked on the set, but not as playing time.

Save As and versions

The plugin gives each set an ID, which Live saves inside the .als file as part of the plugin’s settings. That is how the app knows which takes belong to which set, even after you rename or move the file. Save the set once after adding the plugin, so the ID is in the file.

Save As copies that ID into the new file. To still tell the copies apart, the plugin also counts the saves: every time Live saves the set, it asks the plugin for its settings, and the plugin starts a new revision. Each take notes the revisions it was played on.

Night Bus Home 4 Radio Edit Save As plays with both files only with Night Bus Home 4 only with Radio Edit
Takes recorded before Save As play with both files. Takes recorded afterwards play only with the file you had open.
  • A take belongs to the file you had open in Live, and to Live’s backups of it.
  • A file saved later from that state, with Save As, inherits the takes played before it was saved. Nothing recorded in the copy plays with the original.
  • Save As or Save a Copy? The plugin can’t tell the two apart. Until your next save shows which file stayed open in Live, new takes play in both files.
  • Retakes in one version never delete audio another version still needs.

The same revisions let the History draw exactly which save each version came from. See Versions and history.

Plugin in your Default Set or a template? It works, but every set made from that template starts with the template’s ID. The plugin keeps them apart by the Live session each one was opened in: what you play in a new set stays with that set and the saves that continue it. To keep things simple, add the plugin to each set rather than saving it in the template.

Where takes are kept

Takes are saved in Als Preview’s shared folder on your Mac, one folder per set ID:

~/Library/Group Containers/7Q88FGB2TN.de.marvinvogel.ableton-preview/Recordings/

  • The audio is AAC at 96 kbit/s per channel, about 85 MB per hour in stereo.
  • The app, its Quick Look preview in Finder and the plugin window in Live all read the same takes.
  • If Live quits in the middle of a take, the unfinished audio is cleaned up after an hour.
  • Nothing is uploaded. The plugin’s only connection is to the Remote Script, on your Mac.
  • Settings › Storage shows how much space each set’s recording takes, and deletes recordings you no longer need. A deleted recording is made again the next time its set plays.

Your library and the other files Als Preview keeps are on Your data and disk space.

After the free trial The plugin never stops recording or tracking time, even when the app is locked. Nothing you play is lost; buy Lifetime and it’s all there.