[{"data":1,"prerenderedAt":532},["ShallowReactive",2],{"docs":3,"doc:\u002Fdocs\u002Fguide\u002Fsamples":88},[4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84],{"path":5,"title":6,"description":7},"\u002Fdocs\u002Fcodemods","Codemods","A codemod is a small program that changes Live Sets. livesaver runs it over folders of sets, shows\nwhat would change, and with --apply writes the changes the same way every livesaver command\ndoes: the result must be well-formed XML, Live's backup scheme is followed\n(Backup\u002F\u003Cset> [date time].als), the run is journaled, and livesaver undo \u003Crun> puts every set\nback.",{"path":9,"title":10,"description":11},"\u002Fdocs\u002Fformat","Ableton Live file formats — what livesaver relies on","Facts collected from Live's own files (verified against real sets) and public research\n(Steinberg VST3 SDK, JUCE, Ableton's maxdevtools). Each page names its sources.",{"path":13,"title":14,"description":15},"\u002Fdocs\u002Fformat\u002Fcontainers","Containers and id spaces","How Live's files are packed: which are gzip-compressed XML and which are binary, what lies beside them, and how the ids inside a document are numbered.",{"path":17,"title":18,"description":19},"\u002Fdocs\u002Fformat\u002Ffileref","FileRef","A \u003CFileRef> locates one file. It appears in many containers, but only some are real dependencies.",{"path":21,"title":22,"description":23},"\u002Fdocs\u002Fformat\u002Ffinder","Finder tags, comments and plug-in bundles (macOS)","What status, reorg and the plug-in inventory read and write outside Live's own files.",{"path":25,"title":26,"description":27},"\u002Fdocs\u002Fformat\u002Ffingerprints","Fingerprints","How Live recognises a file again: the size and the checksum it stores with every reference, where vendors and pack updates break that, and what livesaver compares instead.",{"path":29,"title":30,"description":31},"\u002Fdocs\u002Fformat\u002Flive-setup","Live installation and library locations","Where Live keeps its app resources, its library folders and its own databases, and how livesaver finds them without being told. Everything below was read on a Mac; Windows is at the end, from Ableton's documentation.",{"path":33,"title":34,"description":35},"\u002Fdocs\u002Fformat\u002Fplugins","Plug-ins in Live Sets","How a Live Set stores a plug-in in each format, how the same plug-in is recognised across formats, and what an upgrade from VST2 to VST3 has to carry over.",{"path":37,"title":38,"description":39},"\u002Fdocs\u002Fformat\u002Fversions","\u003CAbleton> root attributes per Live version","The root is \u003CAbleton MajorVersion MinorVersion SchemaChangeCount Creator Revision>. Creator is \"Ableton Live x.y.z\".",{"path":41,"title":42,"description":43},"\u002Fdocs\u002Fguide\u002Fbrowser","In the browser","The app also runs on its own, as a page in your browser. It reads the folders you give it and changes nothing: good for a first look, or on a computer where you cannot install anything. In Chrome and Edge it can also fix samples and upgrade plug-ins, if you switch that on: see Fixing in the page.",{"path":45,"title":46,"description":47},"\u002Fdocs\u002Fguide\u002Fcommand-line","The command line","Everything the app does, the livesaver command does too, and more: project status in Finder, a catalog of your sets to search, and codemods. Every command only plans unless you pass --apply.",{"path":49,"title":50,"description":51},"\u002Fdocs\u002Fguide\u002Fgetting-started","Getting started","livesaver finds the samples your Ableton Live sets have lost, collects them into their projects, and shows which plug-ins are missing. This page takes you from nothing to your first scan.",{"path":53,"title":54,"description":55},"\u002Fdocs\u002Fguide\u002Fhistory","History and undo","Everything livesaver changes is written down as a run: what it was asked, every step it took, and the original of every set it rewrote. That is what makes an undo possible, also weeks later.",{"path":57,"title":58,"description":59},"\u002Fdocs\u002Fguide\u002Fmissing","When samples stay missing","A fix can only find what is in the folders it searches. What stays missing is listed by where it came from, because what helps differs: a pack is installed again, an old drive is plugged in, a folder is added.",{"path":61,"title":62,"description":63},"\u002Fdocs\u002Fguide\u002Fplugins","Plug-ins","Live finds a plug-in by its format and its id, never by its name. livesaver reads which plug-ins your sets use and compares them with what is installed, the way Live does, so you know before you open a set what will be missing in it.",{"path":65,"title":66,"description":67},"\u002Fdocs\u002Fguide\u002Fquestions","Questions and answers","Short answers to what comes up first. If yours is not here, ask on GitHub.",{"path":69,"title":70,"description":71},"\u002Fdocs\u002Fguide\u002Fsafety","How your work is kept safe","livesaver edits the files your music lives in. These are the rules it keeps, so that nothing is lost.",{"path":73,"title":74,"description":75},"\u002Fdocs\u002Fguide\u002Fsamples","Fix missing samples","A set that has lost its samples opens in Live with “Media files are missing”. livesaver finds the files again by what they are, puts them into the project, and points the set at them, for every project at once.",{"path":77,"title":78,"description":79},"\u002Fdocs\u002Fguide\u002Fwindows","livesaver on Windows","livesaver is made and tested on a Mac. Windows is new: it is built from what Ableton documents about Live on Windows and from the way sets that were saved on Windows store their files. No one has tried it on a Windows computer with Live yet. This page says what is there, what differs from a Mac, and what is not known.",{"path":81,"title":82,"description":83},"\u002Fdocs\u002Fverification","Verification","What is checked, and how to repeat it. Checks on a real library are read-only; everything that\nwrites runs on temporary copies.",{"path":85,"title":86,"description":87},"\u002Fdocs\u002Fweb","The web app","apps\u002Fweb is one app (Vite, Vue, Nuxt UI) that runs in two situations:",{"id":89,"title":74,"body":90,"description":75,"extension":527,"meta":528,"navigation":426,"path":73,"seo":529,"stem":530,"__hash__":531},"docs\u002Fdocs\u002Fguide\u002Fsamples.md",{"type":91,"value":92,"toc":517},"minimark",[93,97,100,105,108,207,227,231,239,247,251,257,264,286,296,302,306,314,345,349,352,360,367,373,377,385,389,469,482,486,501,510,513],[94,95,74],"h1",{"id":96},"fix-missing-samples",[98,99,75],"p",{},[101,102,104],"h2",{"id":103},"what-a-scan-finds","What a scan finds",[98,106,107],{},"Every sample a set uses is in one of these states:",[109,110,111,127],"table",{},[112,113,114],"thead",{},[115,116,117,121,124],"tr",{},[118,119,120],"th",{},"State",[118,122,123],{},"What it means",[118,125,126],{},"What a fix does",[128,129,130,142,153,164,175,186,197],"tbody",{},[115,131,132,136,139],{},[133,134,135],"td",{},"In the project",[133,137,138],{},"where it belongs",[133,140,141],{},"nothing",[115,143,144,147,150],{},[133,145,146],{},"In a pack or in Live",[133,148,149],{},"in an installed pack or the Core Library",[133,151,152],{},"nothing: it stays in its pack",[115,154,155,158,161],{},[133,156,157],{},"Outside the project",[133,159,160],{},"the file exists, but elsewhere on your disk",[133,162,163],{},"copies it into the project",[115,165,166,169,172],{},[133,167,168],{},"Found elsewhere",[133,170,171],{},"missing where the set says, found in a folder that was searched",[133,173,174],{},"copies it into the project and repairs the reference",[115,176,177,180,183],{},[133,178,179],{},"Not found",[133,181,182],{},"no file of this name is in the folders that were searched",[133,184,185],{},"nothing: it stays missing",[115,187,188,191,194],{},[133,189,190],{},"Several candidates",[133,192,193],{},"several files of this name fit, with different audio",[133,195,196],{},"nothing: livesaver does not guess",[115,198,199,202,205],{},[133,200,201],{},"Different content",[133,203,204],{},"a file of this name was found, but it is not the same audio",[133,206,141],{},[98,208,209,210,214,215,218,219,222,223,226],{},"A set is ",[211,212,213],"strong",{},"Complete"," when all its samples are fine, ",[211,216,217],{},"Can be fixed"," when a fix completes it, and has ",[211,220,221],{},"Samples missing"," when some stay missing after a fix. A file that is not a Live Set at all is ",[211,224,225],{},"Unreadable",".",[101,228,230],{"id":229},"how-a-sample-is-recognised","How a sample is recognised",[98,232,233,234,238],{},"A set stores, for every sample, its size and a checksum over its first 16 KB. livesaver computes the same checksum as Live does, so it recognises a file wherever it lies and whatever it is called now. The name alone is never enough: two files called ",[235,236,237],"code",{},"Kick.wav"," are rarely the same kick.",[98,240,241,242,246],{},"See ",[243,244,26],"a",{"href":245},"..\u002Fformat\u002Ffingerprints"," for the details.",[101,248,250],{"id":249},"review-and-fix","Review and fix",[98,252,253,254,256],{},"Press ",[211,255,250],{}," on the overview. Nothing is written before the third step.",[98,258,259],{},[260,261],"img",{"alt":262,"src":263},"The review: what a fix will do, before anything is written","images\u002Freview-light.webp",[265,266,267,274,280],"ol",{},[268,269,270,273],"li",{},[211,271,272],{},"What will happen",": how many sets are rewritten, how many references are repointed, how many files are copied and how large they are, per project.",[268,275,276,279],{},[211,277,278],{},"Ready?"," Live has to be closed, so that no open set is overwritten under it, and there has to be room for the copies.",[268,281,282,285],{},[211,283,284],{},"Fix",", then what it did, with its undo.",[98,287,288,289,291,292,295],{},"You can fix all projects, one (the ",[211,290,284],{}," button on its row, or in its panel), or a selection (tick the projects, then ",[211,293,294],{},"Fix selected",").",[98,297,298],{},[260,299],{"alt":300,"src":301},"Every project with its state, and what a fix would change in it","images\u002Fprojects-light.webp",[101,303,305],{"id":304},"what-a-fix-does-on-your-disk","What a fix does on your disk",[98,307,308,309,313],{},"A fix does what Live's ",[310,311,312],"em",{},"Collect All and Save"," does, for every project:",[315,316,317,332,335,342],"ul",{},[268,318,319,320,323,324,327,328,331],{},"A sample from outside the project is copied to ",[235,321,322],{},"Samples\u002FImported"," in the project, with its analysis file (",[235,325,326],{},".asd","). A Max for Live device goes to the project's ",[235,329,330],{},"Presets"," folder.",[268,333,334],{},"The set is rewritten to point at the copy. Only the bytes of the references change; everything else in the set stays as Live saved it. In Finder the set then shows the date of the fix.",[268,336,337,338,341],{},"Before that, the set as it was is copied to the project's ",[235,339,340],{},"Backup"," folder, named with date and time, as Live names its own backups.",[268,343,344],{},"A file of a pack or of the Core Library that is larger than 50 MB is not copied: the set points at it in the pack. You can change that limit in the settings.",[101,346,348],{"id":347},"uncertain-matches","Uncertain matches",[98,350,351],{},"Most files are confirmed by their fingerprint. A few are not, and livesaver says so:",[315,353,354,357],{},[268,355,356],{},"a file of an Ableton pack that was found by its name and size alone,",[268,358,359],{},"a library file with other tags than the one the set remembers, which you can allow in the settings (“Also accept a library file with another fingerprint”).",[98,361,362,363,366],{},"In the review, a switch leaves the uncertain matches out. Those samples then stay missing, and you can decide later. If you keep them in, listen to those sets after the fix; the ",[211,364,365],{},"Changes"," tab shows which they are.",[98,368,369],{},[260,370],{"alt":371,"src":372},"Every planned change: how the file was found, and whether its fingerprint confirms it","images\u002Fchanges-light.webp",[101,374,376],{"id":375},"take-it-back","Take it back",[98,378,379,380,384],{},"Every fix can be undone: from its result, from the overview, and from the ",[243,381,383],{"href":382},"history","History",", also days later.",[101,386,388],{"id":387},"the-same-on-the-command-line","The same on the command line",[390,391,396],"pre",{"className":392,"code":393,"language":394,"meta":395,"style":395},"language-sh shiki shiki-themes material-theme-lighter github-light github-dark","# read-only: what is missing, what a fix would do\nlivesaver doctor ~\u002FMusic\u002FProjects\n\n# a dry run, with reports\nlivesaver collect ~\u002FMusic\u002FProjects\n\n# the fix (quit Live first)\nlivesaver collect ~\u002FMusic\u002FProjects --apply\n","sh","",[235,397,398,407,421,428,434,444,449,455],{"__ignoreMap":395},[399,400,403],"span",{"class":401,"line":402},"line",1,[399,404,406],{"class":405},"sutJx","# read-only: what is missing, what a fix would do\n",[399,408,410,414,418],{"class":401,"line":409},2,[399,411,413],{"class":412},"sbgvK","livesaver",[399,415,417],{"class":416},"s_sjI"," doctor",[399,419,420],{"class":416}," ~\u002FMusic\u002FProjects\n",[399,422,424],{"class":401,"line":423},3,[399,425,427],{"emptyLinePlaceholder":426},true,"\n",[399,429,431],{"class":401,"line":430},4,[399,432,433],{"class":405},"# a dry run, with reports\n",[399,435,437,439,442],{"class":401,"line":436},5,[399,438,413],{"class":412},[399,440,441],{"class":416}," collect",[399,443,420],{"class":416},[399,445,447],{"class":401,"line":446},6,[399,448,427],{"emptyLinePlaceholder":426},[399,450,452],{"class":401,"line":451},7,[399,453,454],{"class":405},"# the fix (quit Live first)\n",[399,456,458,460,462,465],{"class":401,"line":457},8,[399,459,413],{"class":412},[399,461,441],{"class":416},[399,463,464],{"class":416}," ~\u002FMusic\u002FProjects",[399,466,468],{"class":467},"stzsN"," --apply\n",[98,470,471,474,475,478,479,226],{},[235,472,473],{},"--certain-only"," leaves the uncertain matches out, and ",[235,476,477],{},"--match-library-path"," accepts library files by their name and place. See ",[243,480,46],{"href":481},"command-line",[101,483,485],{"id":484},"old-saves-of-a-song","Old saves of a song",[98,487,488,489,492,493,496,497,500],{},"A project often keeps the first save of a song beside the newer ones: ",[235,490,491],{},"Song.als"," from Live 9, and ",[235,494,495],{},"Song 2.als",", ",[235,498,499],{},"Song 3.als"," from the Live of today. If the old save misses a sample, the project counts as incomplete, although the song you work on is fine.",[98,502,503,506,507,226],{},[211,504,505],{},"Leave out sets of older Live versions",", among the options of the library, takes such sets out of a scan: a set that was last saved with Live 9 or older (or 10, or 11) is not checked, not listed and not fixed. The overview says how many sets were left out. On the command line it is ",[235,508,509],{},"--min-live 10",[98,511,512],{},"A set that is left out is not touched by a fix either, so it stays as it was saved.",[514,515,516],"style",{},"html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":395,"searchDepth":409,"depth":409,"links":518},[519,520,521,522,523,524,525,526],{"id":103,"depth":409,"text":104},{"id":229,"depth":409,"text":230},{"id":249,"depth":409,"text":250},{"id":304,"depth":409,"text":305},{"id":347,"depth":409,"text":348},{"id":375,"depth":409,"text":376},{"id":387,"depth":409,"text":388},{"id":484,"depth":409,"text":485},"md",{},{"title":74,"description":75},"docs\u002Fguide\u002Fsamples","-7gD5kwCzya5KSTcpf256H8_AFQ8-Cc_D7dlcQYYyn0",1791245843399]