Mike Slinn

Ableton Live SQLite3

Published 2025-04-10.
Time to read: 1 minutes.

This page is part of the av_studio collection.

Ableton Live uses an SQLite3 database. For Windows, the database is found in %LocalAppData%/Ableton/Live Database. The incantation to change to that directory from WSL/Ubuntu is:

Shell
$ cd "$( wslpath "$( cmd.exe /c echo %localAppData% 2>/dev/null | tr -d '\r' )" )"
$ pwd /mnt/c/Users/Mike Slinn/AppData/Local
$ cd 'Ableton/Live Database'

Ableton Live v11 uses a file called Live-files-53.db, while Live v12 uses a file called Live-files-1218.db.

Shell
$ ls *.db
Live-files-1218.db  Live-files-53.db 

Let's look at the v12 tables:

Shell
$ sqlite3 Live-files-1218.db
SQLite version 3.42.0 2023-05-16 12:36:15
Enter ".help" for usage hints.
sqlite> .headers on
sqlite> .mode column
sqlite> .tables ancestors plugin_modules devices plugins fe_values search_aggregation fe_values_record search_aggregation_content file_devices search_aggregation_docsize files search_aggregation_segdir keywords search_aggregation_segments metadata search_aggregation_stat metadata_values version places vfolder_patterns plugin_domains vfolders

Here is the schema for the files table:

sqlite3 continued
sqlite> pragma table_info('files');
cid  name             type     notnull  dflt_value  pk
---  ---------------  -------  -------  ----------  --
0    file_id          INTEGER  0                    1
1    parent_id        INTEGER  0                    0
2    file_type        INTEGER  0                    0
3    subtype          INTEGER  0        0           0
4    file_kind        INTEGER  0        0           0
5    mod_date         INTEGER  0                    0
6    file_size        INTEGER  0                    0
7    aggr_id          INTEGER  0                    0
8    name             TEXT     0                    0
9    colors           INTEGER  0        1           0
10   md_version       INTEGER  0        0           0
11   scanner_version  INTEGER  0        0           0
12   use_count        INTEGER  0        0           0
13   place_id         INTEGER  1        0           0
14   flags            INTEGER  0        3           0
15   device_type      INTEGER  0        0           0
16   device_arch      INTEGER  0        0           0
17   device_id        TEXT     0                    0
18   edit_source      TEXT     0                    0
19   edit_date        INTEGER  0                    0
20   fe_version       INTEGER  0        0           0 

Here are the rows for the first 10 .adg files. ADG stands for Ableton Device Group. These files contain presets of virtual instruments or audio effect racks.

sqlite3 continued
sqlite> select * from files where name like '%.adg' limit 10;
file_id  parent_id  file_type   subtype  file_kind  mod_date    file_size  aggr_id  name                     colors  md_version  scanner_version  use_count  place_id  flags  device_type  device_arch  device_id                                    edit_source  edit_date  fe_version
-------  ---------  ----------  -------  ---------  ----------  ---------  -------  -----------------------  ------  ----------  ---------------  ---------  --------  -----  -----------  -----------  -------------------------------------------  -----------  ---------  ----------
9067     9066       1633969965  0        32         1686173542  4689       94118    Keys & Scales.adg        1       3           10               0          5403      3      4            1            device:ableton:midifx:MidiEffectGroupDevice                          0
9068     9066       1633969965  0        32         1686173542  6575       94119    MIDI to MPE.adg          1       3           10               0          5403      3      4            1            device:ableton:midifx:MidiEffectGroupDevice                          0
9069     9066       1633969965  0        32         1686173542  3675       94120    MPE Invert.adg           1       3           10               0          5403      3      4            1            device:ableton:midifx:MidiEffectGroupDevice                          0
9070     9066       1633969965  0        32         1686173542  3701       94121    MPE Note PB Range.adg    1       3           10               0          5403      3      4            1            device:ableton:midifx:MidiEffectGroupDevice                          0
9072     9071       1633969965  0        32         1686173540  4648       94122    Arp Autobahn.adg         1       3           10               0          5403      3      4            1            device:ableton:midifx:MidiEffectGroupDevice                          0
9073     9071       1633969965  0        32         1686173540  3192       94123    Arp Chance.adg           1       3           10               0          5403      3      4            1            device:ableton:midifx:MidiEffectGroupDevice                          0
9074     9071       1633969965  0        32         1686173540  3111       94124    Arp Chord.adg            1       3           10               0          5403      3      4            1            device:ableton:midifx:MidiEffectGroupDevice                          0
9075     9071       1633969965  0        32         1686173540  5729       94125    Arp Descending Note.adg  1       3           10               0          5403      3      4            1            device:ableton:midifx:MidiEffectGroupDevice                          0
9076     9071       1633969965  0        32         1686173540  3179       94126    Arp Double.adg           1       3           10               0          5403      3      4            1            device:ableton:midifx:MidiEffectGroupDevice                          0 

Here is the schema and the first 5 rows of the places table:

sqlite3 continued
sqlite> pragma table_info('places');
cid  name         type     notnull  dflt_value  pk
---  -----------  -------  -------  ----------  --
0    file_id      INTEGER  0                    0
1    folder_kind  INTEGER  0                    0
2    level        INTEGER  1        0           0
3    name         TEXT     0                    0 
sqlite> select * from places limit 5; file_id folder_kind level name ------- ----------- ----- ------------------ 79005 0 0 Drum Machines 78999 0 0 Digicussion 2 79011 0 0 Guitar and Bass 79027 0 0 Konkrete Breaks 79031 0 0 M4L Building Tools

Although there is an entry for User Library in the places table, it seems that Push and Packs places are hard-coded, because they do not have entries in this table.

Here is the schema for the plugins table:

sqlite3 continued
sqlite> pragma table_info('plugins');
cid  name         type     notnull  dflt_value  pk
---  -----------  -------  -------  ----------  --
0    plugin_id       INTEGER  0                    1
1    module_id       INTEGER  0        0           0
2    dev_identifier  TEXT     0                    0
3    name            TEXT     0                    0
4    vendor          TEXT     0                    0
5    version         TEXT     0                    0
6    sdk_version     TEXT     0                    0
7    flags           INTEGER  0        0           0
8    scanstate       INTEGER  0        0           0
9    enabled         INTEGER  0        0           0 

Here is the schema and the single row of the version table:

sqlite3 continued
sqlite> pragma table_info('version');
cid  name      type  notnull  dflt_value  pk
---  --------  ----  -------  ----------  --
0    version   INT   0                    0
1    platform  INT   0                    0
sqlite>
select * from version; version platform ------- -------- 1218 1

Here is the schema and the first 10 rows of the vfolders table:

sqlite3 continued
sqlite> pragma table_info('vfolders');
cid  name        type     notnull  dflt_value  pk
---  ----------  -------  -------  ----------  --
0    vfolder_id  INTEGER  0                    1
1    group_id    INTEGER  0                    0
2    name        TEXT     0                    0
sqlite>
select * from vfolders where name like '%.adg' limit 10; file_id parent_id file_type subtype file_kind mod_date file_size aggr_id name colors md_version scanner_version use_count place_id flags device_type device_arch device_id edit_source edit_date fe_version ------- --------- ---------- ------- --------- ---------- --------- ------- ----------------------- ------ ---------- --------------- --------- -------- ----- ----------- ----------- ------------------------------------------- ----------- --------- ---------- 9067 9066 1633969965 0 32 1686173542 4689 94118 Keys & Scales.adg 1 3 10 0 5403 3 4 1 device:ableton:midifx:MidiEffectGroupDevice 0 9068 9066 1633969965 0 32 1686173542 6575 94119 MIDI to MPE.adg 1 3 10 0 5403 3 4 1 device:ableton:midifx:MidiEffectGroupDevice 0 9069 9066 1633969965 0 32 1686173542 3675 94120 MPE Invert.adg 1 3 10 0 5403 3 4 1 device:ableton:midifx:MidiEffectGroupDevice 0 9070 9066 1633969965 0 32 1686173542 3701 94121 MPE Note PB Range.adg 1 3 10 0 5403 3 4 1 device:ableton:midifx:MidiEffectGroupDevice 0 9072 9071 1633969965 0 32 1686173540 4648 94122 Arp Autobahn.adg 1 3 10 0 5403 3 4 1 device:ableton:midifx:MidiEffectGroupDevice 0 9073 9071 1633969965 0 32 1686173540 3192 94123 Arp Chance.adg 1 3 10 0 5403 3 4 1 device:ableton:midifx:MidiEffectGroupDevice 0 9074 9071 1633969965 0 32 1686173540 3111 94124 Arp Chord.adg 1 3 10 0 5403 3 4 1 device:ableton:midifx:MidiEffectGroupDevice 0 9075 9071 1633969965 0 32 1686173540 5729 94125 Arp Descending Note.adg 1 3 10 0 5403 3 4 1 device:ableton:midifx:MidiEffectGroupDevice 0 9076 9071 1633969965 0 32 1686173540 3179 94126 Arp Double.adg 1 3 10 0 5403 3 4 1 device:ableton:midifx:MidiEffectGroupDevice 0
* indicates a required field.

Please select the following to receive Mike Slinn’s newsletter:

You can unsubscribe at any time by clicking the link in the footer of emails.

Mike Slinn uses Mailchimp as his marketing platform. By clicking below to subscribe, you acknowledge that your information will be transferred to Mailchimp for processing. Learn more about Mailchimp’s privacy practices.