Database management

Having Installed and started IDyOM and connected to a database, you can edit and examine the contents of the database and import/export data to/from it.

Importing data

Before you can do anything you will need to import some data. Methods exist for **kern files (see Kernscores) and midi files.

 
CL-USER> (idyom-db:import-data :krn "/home/mas01mtp/research/data/kern/shanxi237/" "A test dataset" 31)
Inserting data into database: dataset 31.
NIL
CL-USER> (idyom-db:describe-dataset 31)

 A test dataset
 -----------------------------------------------------------------------------
 ID         No. Compositions     No. events           Mean events/composition
 31         237                  11056                46.649788           
 -----------------------------------------------------------------------------
NIL
CL-USER> 
 
CL-USER> (idyom-db:import-data :mid "/home/marcusp/research/data/midi/Witchcraft/" "Melodies used in an experiment by de Noojier et al. (2008)" 32)

Inserting data into database: dataset 32.
NIL
CL-USER> (idyom-db:describe-dataset 32)

 Melodies used in de Noojier et al. (2008)
 -----------------------------------------------------------------------------
 ID         No. Compositions     No. events           Mean events/composition
 32         10                   313                  31.3                
 -----------------------------------------------------------------------------

Describing the database

A quick way of listing the database contents is:

CL-USER> (idyom-db:describe-database)
0    Songs and ballads from Nova Scotia, Canada.
1    Chorale melodies harmonised by J.S. Bach.
2    Chorale soprano melodies harmonised by J.S. Bach.
3    Alsatian folk songs from the Essen Folk Song Collection.
...

Datasets can be examine in more detail using the verbose option in describe-database and describe-dataset:

CL-USER> (idyom-db:describe-database :verbose t)

 Songs and ballads from Nova Scotia, Canada.
 -----------------------------------------------------------------------------
 ID         No. Compositions     No. events           Mean events/composition
 0          152                  8552                 56.263157           
 -----------------------------------------------------------------------------

 Chorale melodies harmonised by J.S. Bach.
 -----------------------------------------------------------------------------
 ID         No. Compositions     No. events           Mean events/composition
 1          185                  9227                 49.875675           
 -----------------------------------------------------------------------------

 Chorale soprano melodies harmonised by J.S. Bach.
 -----------------------------------------------------------------------------
 ID         No. Compositions     No. events           Mean events/composition
 2          100                  4693                 46.93               
 -----------------------------------------------------------------------------

 Alsatian folk songs from the Essen Folk Song Collection.
 -----------------------------------------------------------------------------
 ID         No. Compositions     No. events           Mean events/composition
 3          91                   4496                 49.406593           
 -----------------------------------------------------------------------------

... 

 Pop melodies used in a segmentation experiment with Daniel Muellensiefen.
 -----------------------------------------------------------------------------
 ID         No. Compositions     No. events           Mean events/composition
 29         15                   1265                 84.333336           
 -----------------------------------------------------------------------------

 Hymn melodies from Hymns Ancient and Modern.
 -----------------------------------------------------------------------------
 ID         No. Compositions     No. events           Mean events/composition
 30         120                  4280                 35.666668           
 -----------------------------------------------------------------------------
(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30)

 
CL-USER> (idyom-db:describe-dataset 0 :verbose t)

 Songs and ballads from Nova Scotia, Canada.
 -----------------------------------------------------------------------------
 ID         No. Compositions     No. events           Mean events/composition
 0          152                  8552                 56.263157           
 -----------------------------------------------------------------------------
 CPITCH (26):     (54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
                   72 73 74 75 76 77 79 81)
 MPITCH (17):     (31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47)
 ACCIDENTAL (3):  (-1 0 1)
 DUR (14):        (3 4 6 8 12 16 18 24 36 48 60 72 96 120)
 DELTAST (7):     (0 12 24 36 48 60 72)
 BIOI (17):       (1 3 4 6 8 12 16 18 24 30 36 48 60 72 84 96 120)
 KEYSIG (9):      (-4 -3 -2 -1 0 1 2 3 4)
 MODE (2):        (0 9)
 BARLENGTH (7):   (36 48 72 96 120 144 168)
 PULSES (6):      (2 3 4 5 6 7)
 PHRASE (3):      (-1 0 1)
 DYN (1):         (NIL)
 TEMPO (19):      (52 54 60 64 76 80 82 84 92 96 100 108 110 112 120 132
                   144 152 172)
 VOICE (1):       (1)
 -----------------------------------------------------------------------------NIL
CL-USER> 

Exporting data

There are functions for exporting compositions from the database in a range of formats including midi. PDF scores can be created using third-party software called Lilypond.

CL-USER> (idyom-db:export-data (idyom-db:get-composition 31 0) :mid "/tmp/")
NIL

Produces a midi file in the "/tmp/" directory.

CL-USER> (idyom-db:export-data (idyom-db:get-composition 31 0) :lisp "/tmp/")
NIL

Produces a lisp readable representation of the dataset (useful if one wants to read it back into the database).

CL-USER> (idyom-db:export-data (idyom-db:get-composition 31 0) :ly "/tmp/")
NIL

Produces a lilypond file.

CL-USER> (idyom-db:export-data (idyom-db:get-composition 31 0) :pdf "/tmp/")
NIL

Produces a pdf score (via lilypond).

These functions also work for entire datasets. For example,

CL-USER> (idyom-db:export-data (idyom-db:get-dataset 31) :mid "/tmp/")
NIL

exports the whole of dataset 31 to the "/tmp/" directory as midi files.

Deleting a dataset

CL-USER> (idyom-db:delete-dataset 735)

deletes dataset 735 from the database.

Copying and combining datasets

CL-USER> (idyom-db:copy-datasets 4 '(1 2 3) "Combination of datasets 1 2 3.")

This will create a new dataset 4 which is the result of combining existing datasets 1, 2 and 3.