{-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Sound.Tidal.Simple where import Sound.Tidal.Control (chop, hurry) import Sound.Tidal.Core ((#), (|*), (<~), silence, rev) import Sound.Tidal.Params (crush, gain, pan, speed, s) import Sound.Tidal.ParseBP (parseBP_E) import Sound.Tidal.Pattern (ControlPattern) import GHC.Exts ( IsString(..) ) instance {-# OVERLAPPING #-} IsString ControlPattern where fromString :: String -> ControlPattern fromString = Pattern String -> ControlPattern s (Pattern String -> ControlPattern) -> (String -> Pattern String) -> String -> ControlPattern forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> Pattern String forall a. (Enumerable a, Parseable a) => String -> Pattern a parseBP_E crunch :: ControlPattern -> ControlPattern crunch :: ControlPattern -> ControlPattern crunch = (ControlPattern -> ControlPattern -> ControlPattern forall b. Unionable b => Pattern b -> Pattern b -> Pattern b # Pattern Double -> ControlPattern crush 3) scratch :: ControlPattern -> ControlPattern scratch :: ControlPattern -> ControlPattern scratch = ControlPattern -> ControlPattern forall a. Pattern a -> Pattern a rev (ControlPattern -> ControlPattern) -> (ControlPattern -> ControlPattern) -> ControlPattern -> ControlPattern forall b c a. (b -> c) -> (a -> b) -> a -> c . Pattern Int -> ControlPattern -> ControlPattern chop 32 louder :: ControlPattern -> ControlPattern louder :: ControlPattern -> ControlPattern louder = (ControlPattern -> ControlPattern -> ControlPattern forall a. Num a => Pattern a -> Pattern a -> Pattern a |* Pattern Double -> ControlPattern gain 1.2) quieter :: ControlPattern -> ControlPattern quieter :: ControlPattern -> ControlPattern quieter = (ControlPattern -> ControlPattern -> ControlPattern forall a. Num a => Pattern a -> Pattern a -> Pattern a |* Pattern Double -> ControlPattern gain 0.8) silent :: ControlPattern -> ControlPattern silent :: ControlPattern -> ControlPattern silent = ControlPattern -> ControlPattern -> ControlPattern forall a b. a -> b -> a const ControlPattern forall a. Pattern a silence skip :: ControlPattern -> ControlPattern skip :: ControlPattern -> ControlPattern skip = (0.25 Pattern Time -> ControlPattern -> ControlPattern forall a. Pattern Time -> Pattern a -> Pattern a <~) left :: ControlPattern -> ControlPattern left :: ControlPattern -> ControlPattern left = (ControlPattern -> ControlPattern -> ControlPattern forall b. Unionable b => Pattern b -> Pattern b -> Pattern b # Pattern Double -> ControlPattern pan 0) right :: ControlPattern -> ControlPattern right :: ControlPattern -> ControlPattern right = (ControlPattern -> ControlPattern -> ControlPattern forall b. Unionable b => Pattern b -> Pattern b -> Pattern b # Pattern Double -> ControlPattern pan 1) higher :: ControlPattern -> ControlPattern higher :: ControlPattern -> ControlPattern higher = (ControlPattern -> ControlPattern -> ControlPattern forall a. Num a => Pattern a -> Pattern a -> Pattern a |* Pattern Double -> ControlPattern speed 1.5) lower :: ControlPattern -> ControlPattern lower :: ControlPattern -> ControlPattern lower = (ControlPattern -> ControlPattern -> ControlPattern forall a. Num a => Pattern a -> Pattern a -> Pattern a |* Pattern Double -> ControlPattern speed 0.75) faster :: ControlPattern -> ControlPattern faster :: ControlPattern -> ControlPattern faster = Pattern Time -> ControlPattern -> ControlPattern hurry 2 slower :: ControlPattern -> ControlPattern slower :: ControlPattern -> ControlPattern slower = Pattern Time -> ControlPattern -> ControlPattern hurry 0.5