August 11th, 2019
By: Carlin "Rick" Smith
On July 27th Aurender released the much anticipated version 3 of their Conductor application. While the update was probably most important for the visual overhaul of the user interface there were a few other new features that caught my attention. Conductor V3 also included the ability to backup or restore playlists, ratings and “Add to my Library” content. The ability to archive these settings externally for further backup is a very nice feature indeed. While Aurender has supported for a while the ability to clone one Aurender to another in the case of disk failure or even for an upgrade the user may not have both units at the same time.
As I pondered this further though I began thinking about the ability to restore playlists. I formed a hypothesis: If I can determine the structure of the Aurender backup I can author playlists externally and then "restore" them (really import them) into the Aurender. Why? The Aurender has a playlist editor and it works okay but I find working with a very large library easier on the computer where I have a larger collection of tools at my disposal. In fact, unless you own a ACS10 or A30 all metadata editing is done outside the Aurender. For example, I can quite easily script the creation of a playlist on the computer using an intricate set of metadata rules. On the Aurender it is more of a hunt and peck exercise.
First I made a backup of an Aurender. It is easy enough to do in Conductor just click settings then in the Backup & Restore tab click "Backup to Music1/backup".
After this you will have a new folder at the root of your Music1 share called "backup". Your Aurender will immediately scan this folder for new music and it won't find any but I think a future design tweak should exclude this folder or perhaps store on its own share separate from your music. I then moved this folder over to my iMac to explore the contents.
NOTE: If you have an Aurender with two disks like an N10 or W20 the backup written contains metadata for all disks. This will become important later in the article when I talk about portability of backups between single disk and multi-disk Aurender units.
You will see three files in the backup along with a folder called playlists.
BackupdDone.txt - this is a simple text file with a timestamp on one line.
rate.db - this is a SQlite database containing your song star ratings from your library.
web.db - this is a SQlite data containing I believe any contents from the "Add to my library" function. I say I believe because mine was an empty shell since I don't use that particular feature.
playlists folder - This folder contains your playlists one per M3U file.
At this point I was feeling pretty good that given these are standard file formats and open source databases there was a high probably I could prove my hypothesis valid.
One of my playlists called "System Burn In" contains a number of songs from test discs that I often use in a loop if I have a new piece of gear that I want to put some hours on before critical listening. The picture below is the contents of the System Burn In.m3u file from an Aurender N10 with two disks. Each music file is on a line with the relative path from your Aurender disk to the file. Whatever your playlist is named becomes the filename of the m3u file in the backup.
I keep a compete copy of my library on the computer with the exact disk structure of my Aurender for meta data editing and local/off-site backups. Outside of DSD files I also have an iTunes version of the library as I use many scripts I have developed over the year and a few from Doug's Scripts for mass editing of files. Accordingly I have this playlist also rendered in iTunes and exported it as a m3u file with iTunes. Nothing here is specific to iTunes or any other library manager. Even if you just manage your music files individually the concepts apply.
The picture below is how iTunes rendered the playlist during export.
As you can see comparing the screenshots the relative path on my iMac: /Volumes/Music Library/Aurender Music/Media/ refers to an external USB-C SSD array that has a complete copy of my Aurender library. The lines with # preceding them are header and other information specific to the M3U format. You can just as easily hand assemble a playlist or use any other tool capable of producing a m3u text file.
Using iTunes I create a Smart Playlist I called "Songs With Love" where out of my 55,000+ music files I created a random list of songs that contain Love in the title. For the purpose of readability I limited to just 15 songs for this article but could easily be a very large playlist. I assume the Aurender would still be limited to the normal 2000 songs per playlist but I did not test this.
Exporting this playlist as a m3u file I end up with the following: (I removed the extra #lines for clarity - the Aurender seems to ignores them if you leave them in)
Knowing I need to change the paths to the Aurender relative path I remove the extra information leaving me with this file:
At this point I am ready to add this file to the backup/playlists folder and place the folder back at the root of the Music1 directory on the Aurender. I left all the original files and other playlists there so they would be restored as well. I then using Conductor did the restore to check my results. To my surprise this new playlist didn't show up so I decided to look for differences in the original files and the newly created one.
It took just a few minutes to realize the newly created file was using Legacy Mac CR (Carriage Returns) for EOL
while the Aurender ones were using Unix LF (Line Feed) for EOL.
So I re-saved the file using UNIX LF to match and did the restore procedure a 2nd time.
SUCCESS!
As you can see the newly created playlist that was authored external to the Aurender is now available and works as you would think. I will caution this is an early experimentation and has not been fully sanctioned by Aurender but I will share with them. As of writing I don't expect any harmful effects except maybe if you author a playlist larger than the Aurender is designed to handle.
During this process I quickly came to the conclusion that this backup and restore feature would not work (at least completely) between Aurenders with a single disk and Aurenders with multiple disks as the relative paths are part of the playlist. For example, take an original W20 that has two 6TB disks labeled Music1, Music2 and you wanted to upgrade to the just released W20SE which has one 4TB SSD labeled Music1. Your files referencing Music1 would likely work but anything referring to Music2 would not work as it doesn't exist on the new unit.
Now you could overcome this by hand editing the playlists files to reflect the new location of your music as described above.
I decided to explore the contents of the SQlite rate.db database to see if the star ratings of tracks also had references to the relative disk paths.
Using the SQlite3 command line on my iMac I opened the rate.db database, listed the tables (in this case one), and and the schema.
rick-imac:backup crsmith$ sqlite3 rate.db
SQLite version 3.24.0 2018-06-04 14:10:15
Enter ".help" for usage hints.sqlite> .tables
track_ratesqlite> .schema track_rate
CREATE TABLE track_rate (_id INTEGER PRIMARY KEY, path TEXT NOT NULL , pkey TEXT NOT NULL,rate INTEGER,track_id INTEGER);sqlite>
You can see there is a single table called track_rate and and five fields. The column path being my primary concern.
Lets take a look at few rows of output:
sqlite> select path from track_rate limit 0, 5;
Music1/Library/Various Artists/Blue Coast Collection 2/Blue Coast Collection 2 - 02 - On The Moon - 2.8MHz-DSF.dsf
Music1/[Comp]/The 25th Anniversary Rock & Roll Hall Of Fame Concerts/3-12 All Day And All Of The Night.m4a
Music1/Other/August Burns Red/Found in Far Away Places/13 Majoring in the Minors (Reprise).m4a
Music1/Other/Primus/They Can't All Be Zingers/02 John The Fisherman.m4a
Music1/[BWSS]/Youssou N Dour/Fatteliku - Live in Athens 1987/06 In Your Eyes - with Peter Gabriel.m4asqlite>
As you can see the track paths are relative just like playlists (not surprising). This confirms though star rated tracks on a two disk Aurender would not restore successfully to single disk Aurender since the paths for tracks with ratings on Music2 would not exist.
However, all is not lost for those inclined to alter the path. Assuming all music previously stored on Music2 was now stored on Music1 with all other file structures the same this simple SQL command would alter your track ratings to reflect the new locations.
sqlite> select path from track_rate limit 10,5;
Music2/Other/Jimmy Eat World/Bleed American/08 Get It Faster.m4a
Music2/Other/Jimmy Eat World/Bleed American/09 Cautioners.m4a
Music2/Other/Jimmy Eat World/Bleed American/10 The Authority Song.m4a
Music2/Other/Jimmy Eat World/Bleed American/11 My Sundown.m4a
Music2/Other/Michael Cain/The Green Eyed Keeper/02 Elders, Pt. 1.m4asqlite> update track_rate
...> set path = replace(path, 'Music2', 'Music1')
...> where path like 'Music2%';sqlite> select path from track_rate limit 0,5;
Music1/Library/Various Artists/Blue Coast Collection 2/Blue Coast Collection 2 - 02 - On The Moon - 2.8MHz-DSF.dsf
Music1/[Comp]/The 25th Anniversary Rock & Roll Hall Of Fame Concerts/3-12 All Day And All Of The Night.m4a
Music1/Other/August Burns Red/Found in Far Away Places/13 Majoring in the Minors (Reprise).m4a
Music1/Other/Primus/They Can't All Be Zingers/02 John The Fisherman.m4a
Music1/[BWSS]/Youssou N Dour/Fatteliku - Live in Athens 1987/06 In Your Eyes - with Peter Gabriel.m4asqlite>
By opening up access (maybe better said exposing) to these internal structures Aurender could very well signal the beginning of other ways to curate you library and associated ratings, playlists and other content. I applaud the ability to store this information elsewhere for disaster purposes and will suggest to Aurender perhaps a new FAQ on migrating from one Aurender to the other and perhaps a semi-automated way of dealing with changes in disk structures.
Want more information visit our Sound Lab Aurender micro-site.