-- |
-- Module      :  DobutokO.Sound.Effects.Trim
-- Copyright   :  (c) OleksandrZhabenko 2020
-- License     :  MIT
-- Stability   :  Experimental
-- Maintainer  :  olexandr543@yahoo.com
--
-- Helps to create experimental music. 
-- Can be used for applying the SoX \"trim\" effect with the needed time specifications. 
-- 

{-# OPTIONS_GHC -threaded #-}
{-# LANGUAGE FlexibleInstances #-}

module DobutokO.Sound.Effects.Trim where

import DobutokO.Sound.Effects.Timespec


data Trim a = Trim a deriving Trim a -> Trim a -> Bool
(Trim a -> Trim a -> Bool)
-> (Trim a -> Trim a -> Bool) -> Eq (Trim a)
forall a. Eq a => Trim a -> Trim a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Trim a -> Trim a -> Bool
$c/= :: forall a. Eq a => Trim a -> Trim a -> Bool
== :: Trim a -> Trim a -> Bool
$c== :: forall a. Eq a => Trim a -> Trim a -> Bool
Eq

instance Show (Trim TSpecification) where
  show :: Trim TSpecification -> String
show (Trim TSpecification
x) = [String] -> String
forall a. Monoid a => [a] -> a
mconcat [String
"trim ",TSpecification -> String
forall a. Show a => a -> String
show TSpecification
x]

trim1 :: Trim a -> a
trim1 :: Trim a -> a
trim1 (Trim a
x) = a
x

trimSet1 :: a -> Trim a
trimSet1 :: a -> Trim a
trimSet1 a
x = a -> Trim a
forall a. a -> Trim a
Trim a
x

type Trim1 = Trim TSpecification

showTrimQ :: Trim1 -> [String]
showTrimQ :: Trim TSpecification -> [String]
showTrimQ = String -> [String]
words (String -> [String])
-> (Trim TSpecification -> String)
-> Trim TSpecification
-> [String]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Trim TSpecification -> String
forall a. Show a => a -> String
show