zwirn-0.2.3.1: src/zwirn-doux/Zwirn/Doux/Types.hs
{-# LANGUAGE DeriveGeneric #-}
module Zwirn.Doux.Types where
import Control.Concurrent.MVar
import GHC.Generics (Generic)
import Sound.Doux.Engine
import Sound.Tidal.Clock
import Zwirn.Language.Evaluate (ExpressionMap)
import Zwirn.Language.Play
data StreamConfig = StreamConfig
{ streamConfigPrecision :: Rational,
streamConfigSamples :: Maybe FilePath,
streamConfigInput :: Maybe String,
streamConfigOutput :: Maybe String,
streamConfigHost :: Maybe String,
streamConfigBufferSize :: Int,
streamConfigChannels :: Int,
streamConfigBlockSize :: Int,
streamConfigMaxVoices :: Int,
streamConfigClock :: ClockConfig
}
deriving (Generic)
data Stream = Stream
{ sDoux :: Doux,
sPlayMap :: MVar PlayMap,
sActionMap :: MVar ActionMap,
sBusMap :: MVar BusMap,
sState :: MVar ExpressionMap,
sClockRef :: ClockRef,
sConfig :: StreamConfig
}
defaultDouxClockConfig :: ClockConfig
defaultDouxClockConfig =
ClockConfig
{ clockFrameTimespan = 1 / 20,
clockEnableLink = False,
clockProcessAhead = 1 / 10,
clockSkipTicks = 10,
clockQuantum = 4,
clockBeatsPerCycle = 4
}