mediabus-0.2.0.0: src/Data/MediaBus/BlankMedia.hs
module Data.MediaBus.BlankMedia
( CanGenerateBlankMedia(..)
, CanBeBlank(..)
) where
import Data.MediaBus.Ticks
import Data.MediaBus.Segment
import Data.Time.Clock
import GHC.TypeLits
import Control.Lens
import Data.Proxy
class CanGenerateBlankMedia a where
blankFor :: NominalDiffTime -> a
blankFor dt = blankForTicks (nominalDiffTime # dt :: Ticks 1000000000000 Integer)
blankForTicks :: (Integral i, KnownNat r) => Ticks r i -> a
blankForTicks ticks = blankFor (from nominalDiffTime # ticks)
class CanBeBlank a where
blank :: a
instance (HasStaticDuration d, CanGenerateBlankMedia a) =>
CanBeBlank (Segment d a) where
blank = MkSegment (blankFor (getStaticDuration (Proxy :: Proxy d)))