* Main task: Tracks-database-Traktor
1) Directory & file structure - "DIR"
2) ORG database - "ORG" 
3) Traktor NML file - "NML"
1-2-3 linked by filename + directory
*** Part 1: DIR
  -------------
  
  - current: wav  
    /year/Author - Title (version).wav
    /year/v_Author - Title (version).wav
  - current: mp3, m4a
    /1mp3/Author - Title (version).mp3
    /1mp3/Author - Title (version).year.mp3
    /1m4a/Author - Title (version).m4a
    /1m4a/Author - Title (version).year.m4a
  - example: http://hpac.rwth-aachen.de/teaching/sem-ell-18/tracks-sample.txt
  - TODO: 
    /year/prefix_Author* - Title* (version*).ext
  
    separator between Author and Title: " - "
    separator between Title and version: " ("
    separator between version and extension: ")."
  
    - mp3 & m4a: CHANGE DIRECTORY when possible
  
    - prefix_: either empty or "v_" (= vynil)
  
    - Author*: shorter version of Author 
      - NEW FILENAME!
      - no "feat", "ft", "presents", "pres", "with", "introduce"  / replace with special symbol
        Steal Vybe ft Alexis Simmons - Selene -> 
        Steal Vybe_- Selene
      - if filename too long: possible cut at "&" and "vs"
        Djaimin & Oliver P & Barbara Tucker ->
        Djaimin & Oliver P &_-
  
    - Title*: shorter version of Title
      - NEW FILENAME!
      - no parenthesis in the title 
        Freaks - The Creeps (You're Giving Me) (Justin Robertson Remix).wav ->
        Freaks - The Creeps_(Justin Robertson Remix).wav
  
      - if filename "too long"
        1) title to initials: 
           If Everybody In The World Loved Everybody In The World (Original).wav -> 
           IEITWLWITW (Original).wav
        2) cut + symbol
           If Everybody In The World Loved Everybody In The World (Original).wav -> 
           If Everybody_(Original).wav
        3) ???
  
    - Version*: shorter version of Version
      - NEW FILENAME!
      - no parenthesis in the version
        Space Cowboy - Crazy Talk (Pique & Nique (You Will Miss Me Remix)) ->
        Space Cowboy - Crazy Talk (Pique & Nique _)       
      - (Special Danny Krivit Extended Re-edit 12" Mix).wav ->
        (Special_Mix).wav      [Mix|Remix|Version]
  
    - "too long" = 64? 80?
  
  - TODO: if filename renamed and filename.jpg 
    -> rename filename.jpg too!  
  
  - TODO: if filename (and dir) renamed
    -> NO INFORMATION LOST! -> change ORG and NML
  
  - TODO: check for errors (duplicates)!!!
*** Part 2: ORG
  -------------
  
  - for each track in DIR -> one entry in ORG 
  
    ORG: Header + Properties 
    Header: filename
    Properties (fields):  Author, (Author+), Title, (Title+), Version, (Version +), year
    Ignore other properties (Notes, Release, format, extension, ...)
  
  - Are there files in DIR which are not in ORG?
    -> create ORG entry; make sure it's unique
  
  - Files in DIR with corresponding entry in ORG -> update/complete
  
  - Are the entries in ORG consistent with the files in DIR?
    Check info - report errors!
    Do the ORG entries actually exist? Suggestions?
    Does the year match the directory?
  
  - Example: http://hpac.rwth-aachen.de/teaching/sem-ell-18/tracks.org
*** Part 3: "NML"
  ---------------
  
  - 
     ... 
    ...
     ... 
    
  
    
    
    
    
    
    
    
    
  - Example: http://hpac.rwth-aachen.de/teaching/sem-ell-18/collection.nml
  - If entry in ORG does not exist in NML -> nothing to do
  
  - if entry in ORG is in NML: check/update
  
  - TITLE, ARTIST, DIR, FILE, MIX
  
  - Are the entries in NML consistent with ORG (and DIR)?
  
  - PLAYLISTS, NODE, PLAYLIST, FOLDER, PRIMARYKEY ... -> update!
*** Objectives
  - clarity
  - (document/visualize the actions)
  - extensibility/customization
  - programmability? 
    we want to assess the language
* Secondary tasks:
  1) Spectrogram
     - libraries
     - real time
     - visualization
  
  2) Stone-grid (2,3,4 players)
     - logic (not strategy)
     - multi-player
     - visualization
  
  3) Ray-tracing algorithm
     - computation
     - objects
     - NOT visualization
  
  4) Chess re-player/analyzer