-- | DB of locally defined tunings, but for ordinary use see "Music.Theory.Tuning.Scala".
module Music.Theory.Tuning.DB where

import Data.List {- base -}

import Music.Theory.Tuning

import Music.Theory.Tuning.Alves_1997
import Music.Theory.Tuning.Gann_1993
import Music.Theory.Tuning.Polansky_1978
import Music.Theory.Tuning.Polansky_1985c

import Music.Theory.Tuning.DB.Alves
import Music.Theory.Tuning.DB.Gann
import Music.Theory.Tuning.DB.Microtonal_Synthesis
import Music.Theory.Tuning.DB.Riley
import Music.Theory.Tuning.DB.Werckmeister

-- | (last-name,first-name,title,year,hmt/tuning,scala/name)
type Named_Tuning = (String,String,String,String,Tuning,String)

named_tuning_t :: Named_Tuning -> Tuning
named_tuning_t (_,_,_,_,t,_) = t

tuning_db :: [Named_Tuning]
tuning_db =
    [("Aaron","Pietro","","1523",pietro_aaron_1523,"meanquar")
    ,("Alves","Bill","Slendro","",alves_slendro,"slendro_alves")
    ,("Alves","Bill","Pelog/Bem","",alves_pelog_bem,"")
    ,("Alves","Bill","Pelog/Barang","",alves_pelog_barang,"")
    ,("Gann","Kyle","Superparticular","1992",gann_superparticular,"gann_super")
    ,("Harrison","Lou","Ditone","",harrison_ditone,"")
    ,("Harrison","Lou","16-tone","",lou_harrison_16,"harrison_16")
    ,("Johnston","Ben","MTP","1977",ben_johnston_mtp_1977,"")
    ,("Johnston","Ben","25-tone","",ben_johnston_25,"johnston_25")
    ,("Kirnberger","Johann Philipp","III","",kirnberger_iii,"kirnberger")
    ,("Malcolm","Alexander","Monochord","1721",five_limit_tuning,"malcolm")
    ,("Partch","Harry","43-tone","",partch_43,"partch_43")
    ,("Polansky","Larry","Piano Study #5","1985",ps5_jpr,"polansky_ps")
    ,("Polansky","Larry","Psaltery","1978",psaltery_o,"")
    ,("Riley","Terry","Harp of New Albion","",riley_albion,"riley_albion")
    ,("Tsuda","Mayumi","13-limit","",mayumi_tsuda,"tsuda13")
    ,("Vallotti","","","1754",vallotti,"vallotti")
    ,("Werckmeister","Andreas","Werckmeister III","",werckmeister_iii,"werck3")
    ,("Werckmeister","Andreas","Werckmeister IV","",werckmeister_iv,"werck4")
    ,("Werckmeister","Andreas","Werckmeister V","",werckmeister_v,"werck5")
    ,("Werckmeister","Andreas","Werckmeister VI","",werckmeister_vi,"werck6")
    ,("Young","La Monte","The Well-Tuned Piano","",lmy_wtp,"young-lm_piano")
    ,("Young","Thomas","","1799",thomas_young_1799,"young2")
    ,("Zarlino","Gioseffo","","1588",zarlino_1588,"zarlino2")
    ,("","","JI/12 7-limit","",septimal_tritone_just_intonation,"ji_12")
    ,("","","ET/12","",equal_temperament_12,"")
    ,("","","ET/19","",equal_temperament_19,"")
    ,("","","ET/31","",equal_temperament_31,"")
    ,("","","ET/53","",equal_temperament_53,"")
    ,("","","ET/72","",equal_temperament_72,"")
    ,("","","ET/96","",equal_temperament_96,"")
    ,("","","Pythagorean/12","",pythagorean_12,"pyth_12")
    ]

tuning_db_lookup_scl :: String -> Maybe Tuning
tuning_db_lookup_scl nm = fmap named_tuning_t (find (\(_,_,_,_,_,scl) -> scl == nm) tuning_db)