module Sound.Conductive.ConductiveDefaults where
import Control.Concurrent.MVar
import Data.Map
import Sound.Conductive.ConductiveBaseData
import Sound.Conductive.Generator
import Sound.Conductive.IOI
import Sound.Conductive.MusicalEnvironment
import Sound.Conductive.MusicalTime
import Sound.Conductive.Player
defaultPlayerStore :: Data.Map.Map String Player
defaultPlayerStore = newPlayerStore ("default",("default","defaultIOI","defaultAction",50))
defaultTempoClock :: IO TempoClock
defaultTempoClock = do
s <- currentTime
let defaultTempo = TempoChange { newTempo = 120
, beatOfTempoChange = 0
, timeOfTempoChange = s
}
let defaultTS = TimeSignature { startingMeasure = 0
, startingBeat = 0
, timeSignature = 4
}
return $ TempoClock { startTime = s
, tempoChanges = [defaultTempo]
, timeSignatureChanges = [defaultTS]
}
defaultTempoClockStore :: IO (Map [Char] TempoClock)
defaultTempoClockStore = do
t <- defaultTempoClock
return $ fromList [("default",t)]
defaultActionStore :: Data.Map.Map [Char] (t -> t1 -> IO ())
defaultActionStore = fromList [("defaultAction", (\x y -> putStrLn "yeah!"))]
defaultIOI :: MVar MusicalEnvironment -> Player -> IO Double
defaultIOI e p = iOIFromList e p "default"
defaultIOIStore
:: Data.Map.Map
[Char] (MVar MusicalEnvironment -> Player -> IO Double)
defaultIOIStore = fromList [("defaultIOI", defaultIOI)]
defaultInterruptStore :: Data.Map.Map [Char] [IO ()]
defaultInterruptStore = fromList [("defaultInterrupt",[return()::IO()])]
defaultIOIListStore :: Data.Map.Map [Char] [Double]
defaultIOIListStore = fromList [("default",makeIOIList 0 [1.0])]
defaultMusicalEnvironment :: IO (MVar MusicalEnvironment)
defaultMusicalEnvironment = do
tcs <- defaultTempoClockStore
gs <- defaultGeneratorStore
let me = MusicalEnvironment
{ environmentName = "defaultEnvironment"
, playerStore = defaultPlayerStore
, tempoClockStore = tcs
, iOIStore = defaultIOIStore
, actionStore = defaultActionStore
, interruptStore = defaultInterruptStore
, doubleGeneratorStore = gs
, iOIListStore = defaultIOIListStore
}
newMVar me