module Sound.Tidal.StreamTypes where

import qualified Data.Map.Strict as Map
import Sound.Tidal.Pattern
import Sound.Tidal.Show ()

data PlayState = PlayState {PlayState -> ControlPattern
pattern :: ControlPattern,
                            PlayState -> Bool
mute :: Bool,
                            PlayState -> Bool
solo :: Bool,
                            PlayState -> [ControlPattern]
history :: [ControlPattern]
                           }
               deriving Int -> PlayState -> ShowS
[PlayState] -> ShowS
PlayState -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PlayState] -> ShowS
$cshowList :: [PlayState] -> ShowS
show :: PlayState -> String
$cshow :: PlayState -> String
showsPrec :: Int -> PlayState -> ShowS
$cshowsPrec :: Int -> PlayState -> ShowS
Show

type PatId = String
type PlayMap = Map.Map PatId PlayState

data TickState = TickState {
                    TickState -> Arc
tickArc   :: Arc,
                    TickState -> Double
tickNudge :: Double
                   }
  deriving Int -> TickState -> ShowS
[TickState] -> ShowS
TickState -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TickState] -> ShowS
$cshowList :: [TickState] -> ShowS
show :: TickState -> String
$cshow :: TickState -> String
showsPrec :: Int -> TickState -> ShowS
$cshowsPrec :: Int -> TickState -> ShowS
Show