------------------------------------------------------------------------------ -- ConductiveDefaults.hs -- created: Fri Oct 1 23:21:01 JST 2010 ------------------------------------------------------------------------------ -- This module contains useful defaults for getting started with Conductive. 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