**Intense Tech with Defense Mech --- Manage your LSDj save files with libLSDj!** - Posted February 19th, 2019 by [DEFENSE MECHANISM](https://defensemech.com) *Note: [traducción al Español por Pixel Guy encontrado aquí](../es/04-organiza-tus-archivos-de-guardado-con-liblsdj.md.html).* Hello and welcome back to Intense Tech! In this installment, we're going to get down and dirty with the command line to introduce you to a true power tool for handling your LSDj save files and songs! By the end of this lesson you will know how to organize a set of folders for each song and create a master list of all the songs on your save files. If this sounds like something you need in your life, keep reading! ------------------------------------------------------------------------ If you're an LSDj user, chances are that at some point you've had to deal with backing up your save files, whether from a hardware flash cartridge or with an emulator such as BGB. Maybe you're ready to play your first live set, and you want to put your best songs in order in a brand new save. Although there is the well-known [LSDManager](https://github.com/jkotlinski/lsdmanager) for managing the songs in these save files, its UI makes it tedious to manually import and export every song. Furthering that aggravation, the UI requires the user to load each save file to review which songs it contains. Since that's a task of pure tedium, it's likely that you'll forget what's in your save files by the next time you need to put a new save file together. ![***How am I supposed to know what's going on here?***](../media/image3.png) Luckily, to help save us from tedium, our friend [4ntler](http://soundcloud.com/4ntler) has been hard at work creating some tools using a library he created called [libLSDJ](https://github.com/stijnfrishert/liblsdj)! The [current release](https://github.com/stijnfrishert/liblsdj/releases) includes 2 tools we're going to take a look at today: **lsdsng-export** and **lsdsng-import**. In order to get started, first you'll want to download the zip file of the current release for your platform (Mac or Windows). Note: [Lemondrop](https://twitter.com/lemondropbass) has kindly made a nifty save management tool using libLSDJ for both Windows and Mac! Check it out here: For today's lesson, I've created a folder called 'LSDJ' and extracted the lsdsng\tools.zip into that folder. I've also created a subfolder inside 'LSDJ' called 'saves' inside which I placed the save files I want to organize from my website at . [Grab a copy for yourself](https://penzeys.com) -- or use your own save files to follow right along! To begin, we need to open the command-line or Terminal window. On Windows, with a window open to the LSDJ folder, you can open a command-line window by pressing Shift+Right-Click and choosing "Open command window here". (Note: Windows 10 no longer allows this, but you can choose "Open Powershell window here instead") On Mac, you can open Terminal from Spotlight, and then type `cd` followed by a space, then click and drag the LSDJ folder onto the Terminal and press Return to set it to the current folder. To view the songs in a save file, you can type: `lsdsng-export -p` and the save file you want to view. This will "print" the list of songs into our command-line or Terminal window. In our case, because lsdsng-export also recognizes folders, we can view the contents of every save file at once by typing: `lsdsng-export -p saves` and voilà! A list appears so we can instantly read what's in any save file. When you see 'WM' underneath the name of the save file, that indicates the song that is preloaded into the working memory of that save. This can be turned into a "master list" of the songs in every save file and saved as a text file. This is simple to do on the command line by simply typing: `lsdsng-export -p saves > songlist.txt` which creates a text file called "songlist.txt" that includes the entire output of every save file in the 'saves' folder and the songs within them. This can be extremely handy, although it is limited to one folder only. If you have another folder containing save files within the 'saves' folder, that subfolder will be ignored To view one save by itself, like SUNBURST.sav, we can type: `lsdsng-export -p saves/SUNBURST.sav` (We use a slash to tell lsdsng-export to look inside the 'saves' folder for SUNBURST.sav.) The output looks like this: ```none SUNBURST.sav # Name Ver Fmt WM ENAMORED * 7 0 ENAMORED 6D 7 1 ILLUMIN8 78 7 2 NEARMISS 7D 7 3 FRESH 92 7 4 BLONGING 52 7 ``` Without the **-p** argument, typing `lsdsng-export saves/SUNBURST.sav` will extract all lsdsng files into our 'LSDJ' folder. On Windows, you can also drag a save file onto lsdsng-export without opening the command line at all! You can even extract EVERY lsdsng in the folder 'saves' just by typing: `lsdsng-export saves` If you want to organize every song into its own folder, it's also possible to do this by specifying with the **-f** argument: `lsdsng-export -f saves` This will place each lsdsng into a folder named after it. When extracting a lot of save files, this can be very helpful if you have multiple backups of songs. Each folder will contain every version of that song from all of your save files! Let's say we want to extract the lsdsng files from SUNBURST.sav into a new folder called 'songs'. We can tell lsdsng-export to do this by typing: `lsdsng-export saves/SUNBURST.sav -o Sunburst` which will output every lsdsng file into a folder called 'Sunburst'. If there is no 'Sunburst' folder yet, it will be created! If I only wanted to extract the lsdsng for NEARMISS, I could specify by name or by index. (Index refers to the number of the song listed underneath the `#`.) To extract it by name, I would type: `lsdsng-export -n NEARMISS saves/SUNBURST.sav` To extract by index I would type: `lsdsng-export -i 0 saves/SUNBURST.sav` These options can be used more than once to extract multiple songs like: `lsdsng-export -n NEARMISS -n ILLUMIN8 saves/SUNBURST.sav` and they can also be combined together, like: `lsdsng-export -n NEARMISS -i 1 saves/SUNBURST.sav` (It's worth keeping in mind that the first song in the index is 0, not 1.) These can be combined with the output folder: `lsdsng-export -n NEARMISS -i 1 saves/SUNBURST.sav -o songs` It's also possible to extract the lsdsng for the song in working memory. This can be handy if you forgot to save your song in LSDj but the changes you've been making are still loaded and intact. You can do this by typing: `lsdsng-export -w saves/SUNBURST.sav` So far so good? OK! Once we've extracted our songs, it's time to compile them into a save file using lsdsng-import. Again, there are a few ways to do this. Let's say we have one or more lsdsng files that we want to turn into a save file. On Windows, without opening a command line, you can drag one or all of the lsdsng's together onto lsdsng-import, which will automatically create a save file called 'out.sav'. To do this on the command line, type: `lsdsng-import` followed by any number of lsdsng files which will be combined into 'out.sav' by default. You can specify the name of the output save file by using the -o argument: `lsdsng-import -o mysave.sav song1.lsdsng song2.lsdsng` (and so on). If you want to add another song to 'mysave.sav' later, you can use the -s argument: `lsdsng-import song3.lsdsng -s mysave.sav` which will add song3.lsdsng onto 'mysave.sav'. To combine all the songs in the 'songs' folder into one save file, you can type: `lsdsng-import songs` which create a save file called 'songs.sav'. This method will place them in the save file in order of the file names, so before doing this, you may need to rename the save files so that they appear in the proper order when they are sorted by name. If at any point you forget how to run either lsdsng-export or lsdsng-import, typing either `lsdsng-export`or `lsdsng-import` with no other arguments will display help text that describes the options.

Footnote for Linux users: Not to exclude you, but compiling from source and using the command line are hopefully familiar enough to you that you may not need this tutorial! 😄

----------------------------------------- Thanks again to [4ntler](https://4ntler.com) for his wonderful work on libLSDJ! Please support [4ntler](https://4ntler.bandcamp.com) by buying his albums on Bandcamp!
------------------------------------------ I hope you enjoyed this tour through libLSDJ! Thanks to all my patrons for their support. If you'd like to offer support, please consider [joining me on Patreon](https://patreon.com/defensem3ch). It means a lot and it helps me continue to make and host this content, pay for translations, and get your input on what kinds of articles to write next!


Thanks again for reading, and until next time, this is [DEFENSE MECHANISM](https://defensemech.com), signing off! ----------------------------------------- Previous: [ <-- Don't Sleep on Z ](03-dont-sleep-on-z-feat-hypnogram.md.html) Next: [ Wave Cruncher Instrument Library --> ](05-lsdj-wave-cruncher-instrument-library.md.html) -----------------------------------------