temporal-media 0.5.0 → 0.6.0
raw patch · 3 files changed
+24/−19 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Temporal.Class: class Harmony a where a =:= b = har [a, b] har = foldl1 (=:=)
+ Temporal.Class: class Melody a where a +:+ b = mel [a, b] mel = foldl1 (+:+)
+ Temporal.Media: instance (Num t, IfB t, OrdB t) => Harmony (Track t a)
+ Temporal.Media: instance (Num t, IfB t, OrdB t) => Melody (Track t a)
- Temporal.Class: (+:+) :: Compose a => a -> a -> a
+ Temporal.Class: (+:+) :: Melody a => a -> a -> a
- Temporal.Class: (=:=) :: Compose a => a -> a -> a
+ Temporal.Class: (=:=) :: Harmony a => a -> a -> a
- Temporal.Class: class Compose a where a =:= b = har [a, b] a +:+ b = mel [a, b] har = foldl1 (=:=) mel = foldl1 (+:+)
+ Temporal.Class: class (Melody a, Harmony a) => Compose a
- Temporal.Class: class Compose a => Rest a
+ Temporal.Class: class Rest a
- Temporal.Class: har :: Compose a => [a] -> a
+ Temporal.Class: har :: Harmony a => [a] -> a
- Temporal.Class: harMap :: Compose b => (a -> b) -> [a] -> b
+ Temporal.Class: harMap :: Harmony b => (a -> b) -> [a] -> b
- Temporal.Class: loopBy :: Compose a => Int -> a -> a
+ Temporal.Class: loopBy :: Melody a => Int -> a -> a
- Temporal.Class: mel :: Compose a => [a] -> a
+ Temporal.Class: mel :: Melody a => [a] -> a
- Temporal.Class: melMap :: Compose b => (a -> b) -> [a] -> b
+ Temporal.Class: melMap :: Melody b => (a -> b) -> [a] -> b
Files
- src/Temporal/Class.hs +16/−13
- src/Temporal/Media.hs +7/−5
- temporal-media.cabal +1/−1
src/Temporal/Class.hs view
@@ -1,6 +1,7 @@ {-# Language TypeFamilies #-} module Temporal.Class(- DurOf, Duration(..), Compose(..), loopBy, melMap, harMap, + DurOf, Duration(..), Melody(..), Harmony(..), Compose(..), + loopBy, melMap, harMap, Delay(..), (+|), Rest(..), Stretch(..), (*|), Limit(..), Loop(..)@@ -13,27 +14,30 @@ -- | Duration for the given type. type family DurOf a :: * -class Compose a where+class Melody a where -- | Sequent composition for a list of values (melody). mel :: [a] -> a+ -- | Sequent composition. Play first track then second.+ (+:+) :: a -> a -> a + a +:+ b = mel [a, b]+ mel = foldl1 (+:+)++class Harmony a where -- | Parallel composition for a list of values (harmony). har :: [a] -> a- - -- | Sequent composition. Play first track then second.- (+:+) :: a -> a -> a -- | Parallel composition. Play two tracks simultaneously. (=:=) :: a -> a -> a a =:= b = har [a, b]- a +:+ b = mel [a, b]- har = foldl1 (=:=)- mel = foldl1 (+:+) ++class (Melody a, Harmony a) => Compose a where+ -- | Repeats the given audio segment several times.-loopBy :: Compose a => Int -> a -> a+loopBy :: Melody a => Int -> a -> a loopBy n = mel . replicate n class Delay a where@@ -52,7 +56,7 @@ (*|) :: Stretch a => DurOf a -> a -> a (*|) = str -class Compose a => Rest a where+class Rest a where rest :: DurOf a -> a class Limit a where@@ -63,11 +67,10 @@ -- | Loops over the sound loop :: a -> a - -- | Transforms a sequence and then applies a mel.-melMap :: (Compose b) => (a -> b) -> [a] -> b+melMap :: (Melody b) => (a -> b) -> [a] -> b melMap f xs = mel $ fmap f xs -- | Transforms a sequence and then applies a har.-harMap :: (Compose b) => (a -> b) -> [a] -> b+harMap :: (Harmony b) => (a -> b) -> [a] -> b harMap f xs = har $ fmap f xs
src/Temporal/Media.hs view
@@ -98,13 +98,15 @@ (=:/) :: (Real t, IfB t, OrdB t) => Track t a -> Track t a -> Track t a a =:/ b = slice 0 (dur a `minB` dur b) $ a <> b --- | Parallel composition on list of tracks (short for harmony).-instance (Num t, IfB t, OrdB t) => Compose (Track t a) where- har = mconcat+instance (Num t, IfB t, OrdB t) => Melody (Track t a) where mel = foldr (+:+) nil-- a =:= b = a <> b a +:+ b = a <> del (dur a) b++instance (Num t, IfB t, OrdB t) => Harmony (Track t a) where+ har = mconcat+ a =:= b = a <> b ++instance (Num t, IfB t, OrdB t) => Compose (Track t a) where -- | Turncating parallel composition on list of tracks. harT :: (Real t, IfB t, OrdB t) => [Track t a] -> Track t a
temporal-media.cabal view
@@ -1,5 +1,5 @@ Name: temporal-media-Version: 0.5.0+Version: 0.6.0 License-file: LICENSE Cabal-Version: >= 1.6 License: BSD3