packages feed

classify-frog-0.2.3: src/Rate.hs

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