{-# OPTIONS_GHC -threaded #-}
{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}
module DobutokO.Sound.Effects.Classes.ComplexParamSet where
import DobutokO.Sound.Effects.Segment
import DobutokO.Sound.Effects.Silence
import DobutokO.Sound.Effects.Sinc
import DobutokO.Sound.Effects.Timespec
class Complex2ParamSet a b c where
set21c :: a -> b -> c
instance Complex2ParamSet a b (Duration a b) where
set21c x y = durationSet x y 3
instance Complex2ParamSet Position Float FirstTSpec where
set21c = seconds2FstTSpec
instance Complex2ParamSet Position Int FirstTSpec where
set21c = samples2FstTSpec
instance Complex2ParamSet Position2 Float NextTSpec where
set21c = seconds2NextTSpec
instance Complex2ParamSet Position2 Int NextTSpec where
set21c = samples2NextTSpec
class Complex3ParamSet a b c d where
set31c :: a -> b -> c -> d
instance Complex3ParamSet STSpecification1 Duration2 Threshold1 ATSpec where
set31c = aboveTSpecSet1
instance Complex3ParamSet STSpecification2 Duration2 Threshold1 BTSpec where
set31c = belowTSpecSet1
class BoolParamSet1 a b where
set1B :: Bool -> a -> b
instance BoolParamSet1 a (SincAB a) where
set1B = sincABSet1
instance BoolParamSet1 a (SincTN a) where
set1B = sincTNSet1
class ComplexParamSet2 a b where
set2c :: a -> a -> b -> b
instance ComplexParamSet2 a (Segment a) where
set2c = segmentSet2
class ComplexParamSet3 a b where
set3c :: a -> a -> a -> b
instance ComplexParamSet3 a (Segment a) where
set3c = segmentSet3