packages feed

music-preludes 1.8 → 1.8.1

raw patch · 9 files changed

+152/−107 lines, 9 filesdep −aesondep −data-defaultdep ~lilyponddep ~music-articulationdep ~music-dynamicsPVP ok

version bump matches the API change (PVP)

Dependencies removed: aeson, data-default

Dependency ranges changed: lilypond, music-articulation, music-dynamics, music-dynamics-literal, music-parts, music-pitch, music-pitch-literal, music-score, musicxml2

API changes (from Hackage documentation)

Files

examples/chords.hs view
@@ -49,7 +49,7 @@     dropLast n = reverse . drop n . reverse  -counterRh = set parts' rh $ (mcatMaybes $ times 4 $ octavesUp 1 $ scat [rest^*2,g,g,g^*2,g^*2, rest^*2, scat [g,g,g]^*2])^/8+counterRh = set parts' rh $ (removeRests $ times 4 $ octavesUp 1 $ scat [rest^*2,g,g,g^*2,g^*2, rest^*2, scat [g,g,g]^*2])^/8  strings = set parts' (tutti violin) $ octavesAbove 1 $       (c_<>e_<>g_)^*4 
examples/imitations.hs view
@@ -2,8 +2,9 @@ {-# LANGUAGE NoMonomorphismRestriction #-}  module Main where-import Music.Score.Util (rotated)-import Music.Prelude.Standard+import Music.Time.Internal.Util (rotate)+import Music.Prelude+import qualified Data.Ratio  -- Get (bar,beat) -- 400 bars in 60 BPM@@ -19,7 +20,7 @@  main = {-openMusicXml-}open noteScore -noteScore :: Score Note+noteScore :: Score StandardNote noteScore = compress 4 $ {-addInstrChange $-}       mempty @@ -76,88 +77,90 @@  -------------------------------------------------------------------------------- -colLegno1 :: Score Note+colLegno1 :: Score StandardNote colLegno1 = {-staccato $ -} level (ppp {-`cresc` mp |> mp^*0.2-}) $ text "col legno battuto"  $-        (down 12 $ delay 0 $ repTimes 7 $ mcatMaybes $ ([4,4,4,5,4] `groupWith` g) |> rest^*6)-    </> (down 12 $ delay 1 $ repTimes 7 $ mcatMaybes $ ([4,4,5,4,5] `groupWith` g) |> rest^*6)-    </> (down 24 $ delay 3 $ repTimes 7 $ mcatMaybes $ ([4,5,4,5,4] `groupWith` g) |> rest^*6)-    </> (down 24 $ delay 6 $ repTimes 7 $ mcatMaybes $ ([3,3,5,3,5] `groupWith` g) |> rest^*6)+        (down _P8  $ delay 0 $ repTimes 7 $ removeRests $ ([4,4,4,5,4] `groupWith` g) |> rest^*6)+    </> (down _P8  $ delay 1 $ repTimes 7 $ removeRests $ ([4,4,5,4,5] `groupWith` g) |> rest^*6)+    </> (down _P15 $ delay 3 $ repTimes 7 $ removeRests $ ([4,5,4,5,4] `groupWith` g) |> rest^*6)+    </> (down _P15 $ delay 6 $ repTimes 7 $ removeRests $ ([3,3,5,3,5] `groupWith` g) |> rest^*6)  -- dur 45 -colLegno2 :: Score Note+colLegno2 :: Score StandardNote colLegno2 = {-staccato $ -} level (mp) $ text "col legno battuto"  $-        (down 12 $ delay 0 $ repTimes 4 $ mcatMaybes $ [4,4,5,4,5,4]  `groupWith` g |> rest^*6)-    </> (down 12 $ delay 1 $ repTimes 4 $ mcatMaybes $ [4,4,5,4,5,4]  `groupWith` g |> rest^*6)-    </> (down 12 $ delay 3 $ repTimes 4 $ mcatMaybes $ [4,5,4,5,4,4]  `groupWith` g |> rest^*6)-    </> (down 12 $ delay 6 $ repTimes 4 $ mcatMaybes $ [3,3,5,3,3]    `groupWith` g |> rest^*6)+        (down _P8 $ delay 0 $ repTimes 4 $ removeRests $ [4,4,5,4,5,4]  `groupWith` g |> rest^*6)+    </> (down _P8 $ delay 1 $ repTimes 4 $ removeRests $ [4,4,5,4,5,4]  `groupWith` g |> rest^*6)+    </> (down _P8 $ delay 3 $ repTimes 4 $ removeRests $ [4,5,4,5,4,4]  `groupWith` g |> rest^*6)+    </> (down _P8 $ delay 6 $ repTimes 4 $ removeRests $ [3,3,5,3,3]    `groupWith` g |> rest^*6) -- -colLegno2Alt :: Score Note+colLegno2Alt :: Score StandardNote colLegno2Alt = {-staccato $ -} level (mp) $ text "col legno battuto"  $-        (down 12 $ delay 0 $ mcatMaybes $ repWithIndex 4 $ \t -> [4,4,5,4,5,4]  `groupWith` g |> rest^*(1+4*t))-    </> (down 12 $ delay 1 $ mcatMaybes $ repWithIndex 4 $ \t -> [4,4,5,4,5,4]  `groupWith` g |> rest^*(1+4*t))-    </> (down 24 $ delay 3 $ mcatMaybes $ repWithIndex 4 $ \t -> [4,5,4,5,4,4]  `groupWith` g |> rest^*(1+4*t))-    </> (down 24 $ delay 6 $ mcatMaybes $ repWithIndex 4 $ \t -> [3,3,5,3,3]    `groupWith` g |> rest^*(1+4*t))+        (down _P8 $ delay 0 $ removeRests $ repWithIndex 4 $ \t -> [4,4,5,4,5,4]  `groupWith` g |> rest^*(1+4*t))+    </> (down _P8 $ delay 1 $ removeRests $ repWithIndex 4 $ \t -> [4,4,5,4,5,4]  `groupWith` g |> rest^*(1+4*t))+    </> (down _P15 $ delay 3 $ removeRests $ repWithIndex 4 $ \t -> [4,5,4,5,4,4]  `groupWith` g |> rest^*(1+4*t))+    </> (down _P15 $ delay 6 $ removeRests $ repWithIndex 4 $ \t -> [3,3,5,3,3]    `groupWith` g |> rest^*(1+4*t))  -- -------------------------------------------------------------------------------- -- -makeJete :: Behavior Pitch -> Bool -> Duration -> Score Note-makeJete p v d = text "jeté" $ pitches' %~ (+ p) $ mcatMaybes $ g_ |> ((if v then cs else cs_){-^/2-}) {-|> rest^/2-} |> rest^*d+makeJete :: Behavior Interval -> Bool -> Duration -> Score (Maybe StandardNote)+makeJete p v d = {-text "jeté" $-} pitches' %~ (.+^ p) $ removeRests $ g_ |> ((if v then cs else cs_){-^/2-}) {-|> rest^/2-} |> rest^*d -makeJetes :: [Behavior Pitch] -> [Bool] -> [Duration] -> Score Note+makeJetes :: [Behavior Interval] -> [Bool] -> [Duration] -> Score (Maybe StandardNote) makeJetes ps vs ds = scat $ zipWith3 makeJete ps vs ds -jete1 :: Score Note-jete1 = id $ -- FIXME temporary fix w.r.t onset/padToBar-        (delay 3  $ up 0    $ makeJetes (rotated 0 ps) (rotated 3 vs) (rotated 1 ds))-    </> (delay 5  $ up 0    $ makeJetes (rotated 1 ps) (rotated 0 vs) (rotated 3 ds))^*(4/5)-    </> (delay 7  $ down 12 $ makeJetes (rotated 2 ps) (rotated 1 vs) (rotated 2 ds))-    </> (delay 12 $ down 12 $ makeJetes (rotated 3 ps) (rotated 2 vs) (rotated 0 ds))^*(4/5)+jete1 :: Score StandardNote+jete1 = removeRests $ -- FIXME temporary fix w.r.t onset/padToBar+        (delay 3  $ up _P1   $ makeJetes (rotate 0 ps) (rotate 3 vs) (rotate 1 ds))+    </> (delay 5  $ up _P1   $ makeJetes (rotate 1 ps) (rotate 0 vs) (rotate 3 ds))^*(4/5)+    </> (delay 7  $ down _P8 $ makeJetes (rotate 2 ps) (rotate 1 vs) (rotate 2 ds))+    </> (delay 12 $ down _P8 $ makeJetes (rotate 3 ps) (rotate 2 vs) (rotate 0 ds))^*(4/5)     where-        ps = take n $ cycle [0,6,6,0,6,6,0]+        ps = take n $ cycle [_P1,d5,d5,_P1,d5,d5,_P1]         vs = take n $ cycle [True,False,True,False,True,False,True,False]         ds = take n $ cycle $ fmap (+ 4) [3,7,5,7,5,5,3,7,7,7,7,7,5,3,7,7,7,7,7,3,3,5]         n  = 9 -- --- -- colLegno3 :: Score Note--- -- colLegno3 = (down 12 $ delay 0 $ rep $ [4,4,5,4,5,4]  `groupWith` g |> rest^*6)+-- -- colLegno3 :: Score StandardNote+-- -- colLegno3 = (down _P8 $ delay 0 $ rep $ [4,4,5,4,5,4]  `groupWith` g |> rest^*6) --  --  -- -------------------------------------------------------------------------------- -- -makeCanon_I :: Rational -> Dynamic Note -> Score Note -> Score Note -> Score Note+makeCanon_I :: Rational -> Dynamic StandardNote -> Score StandardNote -> Score StandardNote -> Score StandardNote makeCanon_I n dn subj1 subj2 =-        level dn (rev (a </> b </> c </> d) |> (a </> b </> c </> d))+        level dn (empty |> (a </> b </> c </> d))     where         a = (repTimes (floor $ 5*n/(4/3)) $ subj1 ^*(4/3))         b = (repTimes (floor $ 5*n/1)     $ subj2 ^*1)         c = (repTimes (floor $ 5*n/2)     $ subj1 ^*2)         d = (repTimes (floor $ 5*n/3)     $ subj2 ^*3) -- -canon_I :: Score Note+canon_I :: Score StandardNote canon_I = text "ord" $ (^*2) $ makeCanon_I 1 {-dn-}mf subj1 subj2     where         subj1 = g_ |> a_^*(3/2) |> g_^*2         subj2 = f_^*3 |> bb_^*1 |> a_ |> g_^*3         -- dn   = (repTimes 5 $ (pp `cresc` mf)^*3 |> (mf `dim` pp)^*3 )--- --- makeCanon_II :: Score (Levels Double) -> Score Note -> Score Note -> Score Note--- makeCanon_II dn subj1 subj2 =---         level dn (rev $ a </> b </> c </> d)---     where---         a = (repWithTime 5 $ \t -> {-up (round $ octave * t) $ -}subj1 ^*(4/3))---         b = (repWithTime 5 $ \t -> {-up (round $ octave * t) $ -}subj2 ^*1)---         c = (repWithTime 2 $ \t -> {-up (round $ octave * t) $ -}subj1 ^*2)---         d = (repWithTime 2 $ \t -> {-up (round $ octave * t) $ -}subj2 ^*3)--- --- canon_II :: Score Note--- canon_II = text "ord" $ (^*2) $ makeCanon_II dn subj1 subj2---     where---         subj1 = g_ |> d^*(3/2) |> c^/2 |> a_^/2 |> bb_^/2---         subj2 = f_^*3 |> bb_^*1 |> a_ |> d_^*3---         dn   = (repTimes 5 $ (pp `cresc` mf)^*3 |> (mf `dim` pp)^*3 )++makeCanon_II :: Dynamic StandardNote -> Score StandardNote -> Score StandardNote -> Score StandardNote+makeCanon_II dn subj1 subj2 =+        level dn (rev $ a </> b </> c </> d)+    where+        a = (repWithTime 5 $ \t -> {-up (round $ octave * t) $ -}subj1 ^*(4/3))+        b = (repWithTime 5 $ \t -> {-up (round $ octave * t) $ -}subj2 ^*1)+        c = (repWithTime 2 $ \t -> {-up (round $ octave * t) $ -}subj1 ^*2)+        d = (repWithTime 2 $ \t -> {-up (round $ octave * t) $ -}subj2 ^*3)++repWithTime n f = scat $ fmap f [1..n]++canon_II :: Score StandardNote+canon_II = text "ord" $ (^*2) $ makeCanon_II {-dn-}mf subj1 subj2+    where+        subj1 = g_ |> d^*(3/2) |> c^/2 |> a_^/2 |> bb_^/2+        subj2 = f_^*3 |> bb_^*1 |> a_ |> d_^*3+        -- dn   = (repTimes 5 $ (pp `cresc` mf)^*3 |> (mf `dim` pp)^*3 ) -- --- makeCanon_III :: Double -> Score (Levels Double) -> Score Note -> Score Note -> Score Note+-- makeCanon_III :: Double -> Score (Levels Double) -> Score StandardNote -> Score StandardNote -> Score StandardNote -- makeCanon_III n dn subj1 subj2 = --         level dn (rev (a </> b </> c </> d) |> (a </> b </> c </> d)) --     where@@ -166,53 +169,55 @@ --         c = (repTimes (5*n/2)     $ subj1 ^*2) --         d = (repTimes (5*n/3)     $ subj2 ^*3) -- --- canon_III :: Score Note+-- canon_III :: Score StandardNote -- canon_III = text "ord" $ makeCanon_III 1.6 dn subj1 subj2 --     where --         subj1 = g^*2 |> d |> eb^*(3/2) |> c^*2 |> d^*2 --         subj2 = f_^*3 |> bb_^*1 |> a_ |> g_^*2 |> d^*3 |> c^*1 --         dn   = (repTimes 5 $ (mf `cresc` _f)^*3 |> (_f `dim` mf)^*3 ) -- --- makeCanon_IV :: Bool -> Score Note -> Score Note -> Score Note -> Score Note--- makeCanon_IV flip subj1 subj2 bass = if flip then lower </> upper else upper </> lower---     where---         upper = (repWithTime (10/(4/5)) $ \t -> reg Vl1 t   $ subj1 ^* (4/5) )---             </> (repWithTime (12/(2/3)) $ \t -> reg Vla1 t  $ subj1 ^* (2/3) )---             </> (repWithTime (15/ 1   ) $ \t -> reg Vc1 t   $ subj1 ^* 1     )---             </> (repWithTime (18/ 2   ) $ \t -> reg Db2 t   $ bass ^* 1    )--- ---         lower = (repWithTime (10/(2/3)) $ \t -> reg Vl2 t   $ subj2 ^* (2/3) )---             </> (repWithTime (12/ 1   ) $ \t -> reg Vla2 t  $ subj2 ^* 1     )---             </> (repWithTime (15/(3/2)) $ \t -> reg Vc2 t   $ subj2 ^* (3/2) )---             </> (repWithTime (18/ 2   ) $ \t -> reg Db2 t   $ bass ^* 1    )--- ---         reg Vl1  t | t < 0.3 = up   (octave + fifth) | t < 0.6 = up octave       | t >= 0.6 = up fifth---         reg Vl2  t | t < 0.4 = up   octave           | t < 0.7 = up fifth        | t >= 0.7 = up fifth---         reg Vla1 t | t < 0.4 = up   fifth            | t < 0.7 = up fifth        | t >= 0.7 = up unison---         reg Vla2 t | t < 0.4 = up   unison           | t < 0.7 = up fifth        | t >= 0.7 = up unison---         reg Vc1  t | t < 0.4 = down octave           | t < 0.7 = down octave     | t >= 0.7 = down fourth---         reg Vc2  t | t < 0.4 = down octave           | t < 0.7 = down octave     | t >= 0.7 = down fourth--- ---         reg Db1  t | t < 0.4 = down (octave*1)       | t < 0.7 = down (octave*1) | t >= 0.7 = down (octave*1)---         reg Db2  t | t < 0.4 = down (octave*2)       | t < 0.7 = down (octave*1) | t >= 0.7 = down (octave*1)--- --- --- canon_IV :: Score Note--- canon_IV = text "ord" $ c^*padC |> firstC |> secondC---     where---         firstC  = level dn1 $ rev $ makeCanon_IV False subj1 subj2 bass---         secondC = level dn2       $ makeCanon_IV True subj1 subj2 bass---         padC    = fromIntegral $ 4 - numerator (getDuration $ duration firstC) `mod` 4---         dn1     = (repTimes 10 $ (mf `cresc` _f)^*5 |> (_f `dim` mf)^*5)---         dn2     = (repTimes 10 $ (_f `cresc` ff)^*5 |> (ff `dim` _f)^*5)--- ---         subj1 = down 2 $ (d^*3 |> a |> g^*2 |> c' |> b |> c' |> b |> g |> a^*3)---         subj2 = down 2 $ (d^*2 |> a |> g^*2 |> c' |> b |> c' |> b |> g |> a^*3)---         bass  = melody [d,a] |> g^*2 |> melody [c,d,a] |> g^*2---         -- bass  = melody [d,g] |> a^*2 |> melody [c,g,d] |> a^*2+makeCanon_IV :: Bool -> Score StandardNote -> Score StandardNote -> Score StandardNote -> Score StandardNote+makeCanon_IV flip subj1 subj2 bass = if flip then lower </> upper else upper </> lower+    where+        upper = (repWithTime (10/(4/5)) $ \t -> reg "Vl1" t   $ subj1 ^* (4/5) )+            </> (repWithTime (12/(2/3)) $ \t -> reg "Vla1" t  $ subj1 ^* (2/3) )+            </> (repWithTime (15/ 1   ) $ \t -> reg "Vc1" t   $ subj1 ^* 1     )+            </> (repWithTime (18/ 2   ) $ \t -> reg "Db2" t   $ bass ^* 1    ) +        lower = (repWithTime (10/(2/3)) $ \t -> reg "Vl2" t   $ subj2 ^* (2/3) )+            </> (repWithTime (12/ 1   ) $ \t -> reg "Vla2" t  $ subj2 ^* 1     )+            </> (repWithTime (15/(3/2)) $ \t -> reg "Vc2" t   $ subj2 ^* (3/2) )+            </> (repWithTime (18/ 2   ) $ \t -> reg "Db2" t   $ bass ^* 1    ) +        reg "Vl1"  t | t < 0.3 = up   (_P8 + _P5) | t < 0.6 = up _P8       | t >= 0.6 = up _P5+        reg "Vl2"  t | t < 0.4 = up   _P8           | t < 0.7 = up _P5        | t >= 0.7 = up _P5+        reg "Vla1" t | t < 0.4 = up   _P5            | t < 0.7 = up _P5        | t >= 0.7 = up _P1+        reg "Vla2" t | t < 0.4 = up   _P1           | t < 0.7 = up _P5        | t >= 0.7 = up _P1+        reg "Vc1"  t | t < 0.4 = down _P8           | t < 0.7 = down _P8     | t >= 0.7 = down _P4+        reg "Vc2"  t | t < 0.4 = down _P8           | t < 0.7 = down _P8     | t >= 0.7 = down _P4 +        reg "Db1"  t | t < 0.4 = down (_P8^*1)       | t < 0.7 = down (_P8^*1) | t >= 0.7 = down (_P8^*1)+        reg "Db2"  t | t < 0.4 = down (_P8^*2)       | t < 0.7 = down (_P8^*1) | t >= 0.7 = down (_P8^*1)+++canon_IV :: Score StandardNote+canon_IV = text "ord" $ {-c^*padC |> firstC |>-} secondC+    where+        firstC  = {-level dn1 $-} rev $ makeCanon_IV False subj1 subj2 bass+        secondC = {-level dn2 $-}       makeCanon_IV True subj1 subj2 bass+        padC    = fromIntegral $ 4 - Data.Ratio.numerator (realToFrac $ _duration firstC) `mod` 4+        -- dn1     = (repTimes 10 $ (mf `cresc` _f)^*5 |> (_f `dim` mf)^*5)+        -- dn2     = (repTimes 10 $ (_f `cresc` ff)^*5 |> (ff `dim` _f)^*5)++        subj1 = down _M2 $ (d^*3 |> a |> g^*2 |> c' |> b |> c' |> b |> g |> a^*3)+        subj2 = down _M2 $ (d^*2 |> a |> g^*2 |> c' |> b |> c' |> b |> g |> a^*3)+        bass  = scat [d,a] |> g^*2 |> scat [c,d,a] |> g^*2+        -- bass  = scat [d,g] |> a^*2 |> scat [c,g,d] |> a^*2+++instance Reversible (Score a) where+  rev = stretchRelativeMidpoint (-1)+ cresc = const dim   = const repTimes = times@@ -226,3 +231,24 @@ moveToPart p x = parts' .~ p $ x  [vl1, vl2] = divide 2 $ tutti violin+++_solo :: Lens' Part Solo+_solo f (Part s i u) = fmap (\s -> Part s i u) $ f s++_subpart :: Lens' Part Subpart+_subpart f (Part s i u) = fmap (\u -> Part s i u) $ f u++_instrument :: Lens' Part Instrument+_instrument f (Part s i u) = fmap (\i -> Part s i u) $ f i++-- Not perfect but works for many cases+ucat xs = if allDistinct ps +    then mconcat xs +    else mconcat $ zipWith (set parts') (divide (length xs) p) xs+  where+    ps = concatMap (toListOf parts') xs+    p  = foldr1 smallestPart ps+++
examples/part.hs view
@@ -50,7 +50,7 @@ bell = let     cue :: Score (Maybe StandardNote)     cue = stretchTo 1 (rest |> a) -    in parts' .~ solo tubularBells $ text "l.v." $ mcatMaybes $ times 40 $ scat [times 3 $ scat [cue,rest], rest^*2]+    in parts' .~ solo tubularBells $ text "l.v." $ removeRests $ times 40 $ scat [times 3 $ scat [cue,rest], rest^*2]  strings :: Score StandardNote strings = pcat [
examples/phrases.hs view
@@ -10,7 +10,7 @@ subj  = times 2 $ scat [c,c,d,b_,e,e]^/16  -- Each voice differ slighly in onset etc-voca v = delay ((4/8)^*v) $ mcatMaybes $ scat $ fmap (\i -> (id $ up (_M2^*i) subj) |> rest^*(15/8)) +voca v = delay ((4/8)^*v) $ removeRests $ scat $ fmap (\i -> (id $ up (_M2^*i) subj) |> rest^*(15/8))    $ [0..3]  -- The @@ -19,7 +19,7 @@   $ composer "Anonymous"   $ timeSignature (3/8)    $ timeSignatureDuring ((14*3/8) <-> 200) (4/8) -  $ over phrases (rotateValues 1)+  $ over (phrases . valuesV) (rotate 1)   -- $ over (phrases.middleV) (octavesAbove 1)    -- $ over phrases fuse    $ rcat @@ -27,3 +27,9 @@   $ map voca [0..3]  main  = open $ asScore $ music++rotate :: Int -> [a] -> [a]+rotate n xs = iterate rotate1 xs !! n+  where+    rotate1 [] = []+    rotate1 xs = last xs : init xs
+ examples/voices.hs view
@@ -0,0 +1,16 @@++import Music.Prelude+import qualified Music.Score++subj :: Voice Pitch+subj = mconcat [c',ab,db',e,f,g,ab,bb,c']++type Chorale = [Voice (Maybe Pitch)]++renderVoice :: Voice (Maybe Pitch) -> Score StandardNote+renderVoice = fmap pitchToNote . removeRests . renderAlignedVoice . aligned 0 0+  where+    pitchToNote = fromPitch' . pure++renderChorale :: Chorale -> Score StandardNote+renderChorale = rcat . fmap renderVoice
music-preludes.cabal view
@@ -1,6 +1,6 @@  name:                   music-preludes-version:                1.8+version:                1.8.1 author:                 Hans Hoglund maintainer:             Hans Hoglund license:                BSD3@@ -26,7 +26,7 @@  library     build-depends:      base                    >= 4 && < 5,-                        aeson                   >= 0.7.0.6 && < 1,+                        -- aeson                   >= 0.7.0.6 && < 1,                         lens                    >= 4.6 && < 4.7,                         split,                         containers,@@ -38,17 +38,17 @@                         optparse-applicative    >= 0.8  && < 1,                         average                 >= 0.6  && < 1,                         semigroups              >= 0.13.0.1 && < 1,-                        data-default,+                        -- data-default,                         monadplus,-                        lilypond                == 1.8,-                        musicxml2               == 1.8,-                        music-score             == 1.8,-                        music-pitch             == 1.8,-                        music-dynamics          == 1.8,-                        music-articulation      == 1.8,-                        music-parts             == 1.8,-                        music-pitch-literal     == 1.8,-                        music-dynamics-literal  == 1.8,+                        lilypond                == 1.8.1,+                        musicxml2               == 1.8.1,+                        music-score             == 1.8.1,+                        music-pitch             == 1.8.1,+                        music-dynamics          == 1.8.1,+                        music-articulation      == 1.8.1,+                        music-parts             == 1.8.1,+                        music-pitch-literal     == 1.8.1,+                        music-dynamics-literal  == 1.8.1,                         -- For examples:                         async     if !os(windows)
src/Music/Prelude/Basic.hs view
@@ -36,7 +36,6 @@         openAndPlay   ) where -import           Data.Default import           Data.Typeable  import           Music.Pitch             hiding (Fifths)
src/Music/Prelude/Instances.hs view
@@ -25,7 +25,6 @@ module Music.Prelude.Instances () where  import           Data.AffineSpace.Point-import           Data.Default import           Data.Typeable  import           Music.Dynamics
src/Music/Prelude/Standard.hs view
@@ -33,7 +33,6 @@         openAndPlay   ) where -import           Data.Default import           Data.Typeable  import           Music.Pitch