packages feed

zwirn-0.2.3.1: src/zwirn-stream/Zwirn/Stream/Types.hs

{-# LANGUAGE DeriveGeneric #-}

module Zwirn.Stream.Types where

import Control.Concurrent.MVar (MVar)
import Data.Text (Text)
import GHC.Generics (Generic)
import qualified Sound.Osc.Transport.Fd.Udp as O
import Sound.Tidal.Clock
import Zwirn.Language.Evaluate.Expression
import Zwirn.Language.Play (ActionMap, BusMap, PlayMap)
import Zwirn.Stream.Target

data StreamConfig = StreamConfig
  { streamConfigTargets :: [TargetConfig],
    streamConfigDefaultTarget :: Text,
    streamConfigLocalPort :: Int,
    streamConfigPrecision :: Rational,
    streamConfigClock :: ClockConfig
  }
  deriving (Generic)

data Stream = Stream
  { sPlayMap :: MVar PlayMap,
    sActionMap :: MVar ActionMap,
    sBusMap :: MVar BusMap,
    sState :: MVar ExpressionMap,
    sBusses :: MVar [Int],
    sTargetMap :: TargetMap,
    sDefaultTarget :: Text,
    sLocal :: O.Udp,
    sClockRef :: ClockRef,
    sConfig :: StreamConfig
  }