module Rate where
import qualified Sound.SoxLib as SoxLib
class C rate where unpack :: rate -> SoxLib.Rate
newtype Sample = Sample SoxLib.Rate deriving (Eq)
instance C Sample where unpack (Sample rate) = rate
newtype Feature = Feature SoxLib.Rate deriving (Eq)
instance C Feature where unpack (Feature rate) = rate
newtype Measure = Measure SoxLib.Rate deriving (Eq)
instance C Measure where unpack (Measure rate) = rate
ratio :: (C rate0, C rate1) => rate0 -> rate1 -> SoxLib.Rate
ratio r0 r1 = unpack r0 / unpack r1
featureFromSample :: Sample -> Feature
featureFromSample (Sample rate) = Feature rate