diff --git a/src/Synthesizer/MIDI/CausalIO/Process.hs b/src/Synthesizer/MIDI/CausalIO/Process.hs
--- a/src/Synthesizer/MIDI/CausalIO/Process.hs
+++ b/src/Synthesizer/MIDI/CausalIO/Process.hs
@@ -88,6 +88,7 @@
 import qualified Data.List.HT as ListHT
 import qualified Data.Maybe as Maybe
 import Data.Monoid (Monoid, mempty, mappend, )
+import Data.Semigroup (Semigroup, (<>), )
 import Data.Maybe (maybeToList, )
 import Data.Tuple.HT (mapFst, mapPair, )
 
@@ -289,6 +290,9 @@
    evaluateHead =
       EventListMT.switchTimeL (\t _ -> rnf (NonNegW.toNumber t)) .
       unwrapNoteOffList
+
+instance Semigroup NoteOffList where
+   NoteOffList xs <> NoteOffList ys = NoteOffList (xs <> ys)
 
 instance Monoid NoteOffList where
    mempty = NoteOffList (EventListTT.pause mempty)
diff --git a/src/Synthesizer/MIDI/Example/Instrument.hs b/src/Synthesizer/MIDI/Example/Instrument.hs
--- a/src/Synthesizer/MIDI/Example/Instrument.hs
+++ b/src/Synthesizer/MIDI/Example/Instrument.hs
@@ -318,14 +318,14 @@
 sampledSound :: (Real, SigSt.T Real) -> Instrument Real Real
 sampledSound sound vel freq dur =
    SigS.toStorableSignalVary (chunkSizesFromLazyTime dur) $
-   SigS.map ((amplitudeFromVelocity vel) *) $
+   SigS.map (amplitudeFromVelocity vel *) $
    sampledSoundGenerator sound freq
 
 sampledSoundDetuneStereo ::
    Real -> (Real, SigSt.T Real) -> Instrument Real (Stereo.T Real)
 sampledSoundDetuneStereo detune sound vel freq dur =
    SigS.toStorableSignalVary (chunkSizesFromLazyTime dur) $
-   SigS.map ((amplitudeFromVelocity vel) *>) $
+   SigS.map (amplitudeFromVelocity vel *>) $
    SigS.zipWith Stereo.cons
       (sampledSoundGenerator sound (freq*(1-detune)))
       (sampledSoundGenerator sound (freq*(1+detune)))
@@ -485,7 +485,7 @@
 toneFromFilteredNoise resonanceMod cutoffMod speedMod freqMod vel freq dur =
    let period = 100
        filtNoise =
-          ((((amplitudeFromVelocity vel) *) . UniFilter.lowpass) ^<<
+          (((amplitudeFromVelocity vel *) . UniFilter.lowpass) ^<<
            UniFilter.causal <<< Causal.feedSnd NoiseS.white
            <<^ (\(r,f) -> UniFilter.parameter $
                   FiltR.Pole r (f/period)))
diff --git a/src/Synthesizer/MIDI/PiecewiseConstant/ControllerSet.hs b/src/Synthesizer/MIDI/PiecewiseConstant/ControllerSet.hs
--- a/src/Synthesizer/MIDI/PiecewiseConstant/ControllerSet.hs
+++ b/src/Synthesizer/MIDI/PiecewiseConstant/ControllerSet.hs
@@ -60,6 +60,7 @@
 import Data.Traversable (traverse, )
 import Data.Foldable (traverse_, )
 import Data.Monoid (Monoid, mempty, mappend, )
+import Data.Semigroup (Semigroup, (<>), )
 
 import Data.Maybe.HT (toMaybe, )
 import Data.Tuple.HT (mapFst, mapPair, )
@@ -129,12 +130,15 @@
       fromIntegral . P.toInteger .
       P.sum . EventListTT.getTimes . stream
 
-instance Monoid (T key y) where
-   mempty = Cons Map.empty (EventListTT.pause mempty)
-   mappend x y =
+instance Semigroup (T key y) where
+   x <> y =
       Cons
          (initial x)
          (EventListTT.append (stream x) (flatten y))
+
+instance Monoid (T key y) where
+   mempty = Cons Map.empty (EventListTT.pause mempty)
+   mappend = (<>)
 
 instance (NFData key, NFData a) => CutG.NormalForm (T key a) where
    evaluateHead xs = rnf (initial xs)
diff --git a/synthesizer-midi.cabal b/synthesizer-midi.cabal
--- a/synthesizer-midi.cabal
+++ b/synthesizer-midi.cabal
@@ -1,5 +1,5 @@
 Name:           synthesizer-midi
-Version:        0.6.0.4
+Version:        0.6.1
 License:        GPL
 License-File:   LICENSE
 Author:         Henning Thielemann <haskell@henning-thielemann.de>
@@ -15,11 +15,11 @@
 Stability:      Experimental
 Tested-With:    GHC==6.12.3
 Tested-With:    GHC==7.2.1
-Cabal-Version:  >=1.14
+Cabal-Version:  1.14
 Build-Type:     Simple
 
 Source-Repository this
-  Tag:         0.6.0.4
+  Tag:         0.6.1
   Type:        darcs
   Location:    http://code.haskell.org/synthesizer/midi/
 
@@ -45,12 +45,13 @@
     deepseq >=1.1 && <1.5,
     numeric-prelude >=0.3 && <0.5,
     non-negative >=0.1 && <0.2,
-    event-list >=0.1 && <0.2,
+    event-list >=0.1.2 && <0.2,
     data-accessor-transformers >=0.2.1 && <0.3,
     data-accessor >=0.2.1 && <0.3,
     containers >=0.1 && <0.6,
     array >=0.1 && <0.6,
     transformers >=0.2 && <0.6,
+    semigroups >=0.1 && <1.0,
     utility-ht >=0.0.1 && <0.1
 
   If flag(splitBase)
