-- | -- Module : DobutokO.Sound.Effects.Specs -- Copyright : (c) OleksandrZhabenko 2020 -- License : MIT -- Stability : Experimental -- Maintainer : olexandr543@yahoo.com -- -- Helps to create experimental music. -- Can be used for applying the SoX effects with the needed specifications. -- {-# OPTIONS_GHC -threaded #-} {-# LANGUAGE FlexibleInstances #-} module DobutokO.Sound.Effects.Specs where import Numeric (showFFloat) data Frequency a = FHz a | FkHz a deriving Eq instance Show (Frequency Float) where show (FHz x) = showFFloat Nothing x "" show (FkHz x) = showFFloat Nothing x "k" type Freq1 = Frequency Float frequency1 :: Freq1 -> Float frequency1 (FHz x) = x frequency1 (FkHz x) = 1000.0 * x data Width a = H a | K a | O a | Q a deriving Eq instance Show (Width Float) where show (H x) = showFFloat Nothing x "h" show (K x) = showFFloat Nothing x "k" show (O x) = showFFloat Nothing x "o" show (Q x) = showFFloat Nothing x "q" type Width1 = Width Float