reactive-balsa 0.3 → 0.4
raw patch · 5 files changed
+30/−27 lines, 5 filesdep +non-emptydep +reactive-banana-bunchdep −reactive-bananadep ~reactive-midyim
Dependencies added: non-empty, reactive-banana-bunch
Dependencies removed: reactive-banana
Dependency ranges changed: reactive-midyim
Files
- reactive-balsa.cabal +5/−4
- src/Reactive/Banana/ALSA/Common.hs +8/−4
- src/Reactive/Banana/ALSA/Example.hs +10/−12
- src/Reactive/Banana/ALSA/Private.hs +2/−2
- src/Reactive/Banana/ALSA/Sequencer.hs +5/−5
reactive-balsa.cabal view
@@ -1,5 +1,5 @@ Name: reactive-balsa-Version: 0.3+Version: 0.4 License: BSD3 License-File: LICENSE Author: Henning Thielemann <haskell@henning-thielemann.de>@@ -45,15 +45,15 @@ Source-Repository this type: darcs location: http://hub.darcs.net/thielema/reactive-balsa/- tag: 0.3+ tag: 0.4 Flag splitBase description: Choose the new smaller, split-up base package. Library Build-Depends:- reactive-midyim >=0.3 && <0.4,- reactive-banana >=1.1 && <1.2,+ reactive-midyim >=0.4 && <0.5,+ reactive-banana-bunch >=1.0 && <1.1, midi-alsa >=0.2 && <0.3, midi >=0.2 && <0.3, alsa-seq >=0.6 && <0.7,@@ -62,6 +62,7 @@ non-negative >=0.1 && <0.2, data-accessor-transformers >=0.2.1 && <0.3, data-accessor >=0.2.1 && <0.3,+ non-empty >=0.2.1 && <0.4, utility-ht >=0.0.8 && <0.1, containers >=0.2 && <0.6, transformers >=0.2 && <0.6,
src/Reactive/Banana/ALSA/Common.hs view
@@ -34,14 +34,15 @@ import Data.Accessor.Basic ((^.), (^=), ) -import Control.Functor.HT (void, )-import Data.Maybe (maybeToList, )-import Data.List (intercalate, )- import qualified Control.Monad.Trans.Reader as Reader import Control.Monad.Trans.Reader (ReaderT, )+import Control.Functor.HT (void, ) +import qualified Data.NonEmpty as NonEmpty import qualified Data.Monoid as Mn+import Data.Foldable (Foldable, foldMap, )+import Data.Maybe (maybeToList, )+import Data.List (intercalate, ) import Prelude hiding (init, filter, reverse, ) @@ -232,6 +233,9 @@ instance Events ev => Events [ev] where flattenEvents = concatMap flattenEvents++instance (Foldable f, Events ev) => Events (NonEmpty.T f ev) where+ flattenEvents = foldMap flattenEvents instance (Events ev0, Events ev1) => Events (ev0,ev1) where flattenEvents (ev0,ev1) = flattenEvents ev0 ++ flattenEvents ev1
src/Reactive/Banana/ALSA/Example.hs view
@@ -19,8 +19,8 @@ import qualified Reactive.Banana.MIDI.Utility as RBU -import qualified Reactive.Banana.Combinators as RB-import Reactive.Banana.Combinators ((<@>), )+import qualified Reactive.Banana.Bunch.Combinators as RB+import Reactive.Banana.Bunch.Combinators ((<@>), ) import qualified Sound.MIDI.ALSA.Check as Check import qualified Sound.MIDI.ALSA.Query as Query ()@@ -31,7 +31,7 @@ import qualified System.Random as Random import Control.Monad.Trans.Reader (ReaderT, )-import Control.Monad (guard, liftM2, liftM3, join, foldM, (<=<), )+import Control.Monad (guard, liftM2, liftM3, join, ) import Control.Applicative (pure, (<*>), (<$>), ) import Data.Tuple.HT (mapFst, ) import Data.Maybe (mapMaybe, )@@ -93,14 +93,12 @@ latch = Seq.runM (Seq.bypassM Note.maybeBndExt (fmap fst . Process.pressed KeySet.latch)) groupLatch = Seq.runM (Seq.bypassM Note.maybeBndExt (fmap fst . Process.pressed KeySet.groupLatch)) delay = Seq.runM $ \evs -> do dt <- ticks 0.2; return $ Process.delay dt evs-delayAdd = Seq.runM $ \evs -> do dt <- ticks 0.2; Process.delayAdd dt evs+delayAdd = Seq.runM $ \evs -> do dt <- ticks 0.2; return $ Process.delayAdd dt evs delayTranspose = Seq.runM $ \evs -> do let proc p dt = do tk <- ticks dt- return $- Process.delay tk $- RBU.mapMaybe (stranspose p) evs- foldM Process.unionM (fmap now evs) <=< sequence $+ return $ Process.delay tk $ RBU.mapMaybe (stranspose p) evs+ fmap (foldl RB.union (fmap now evs)) $ sequence $ proc 4 0.2 : proc 7 0.4 : proc 12 0.6 :@@ -191,7 +189,7 @@ -} split = Seq.run $- uncurry (RBU.union "split")+ uncurry RB.union . mapFst (RBU.mapMaybe (stranspose 12)@@ -233,7 +231,7 @@ -- Seq.cyclePrograms (map program [13..17]) times evs defer <- Time.ticksFromSeconds $ time 0.1 pgms <- Process.cycleProgramsDefer defer (map program [13..17]) times evs- Process.unionM (RB.filterJust pgms) evs+ return $ RB.union (RB.filterJust pgms) evs sweep = Seq.runM $ \evs ->@@ -245,7 +243,7 @@ depth <- Process.controllerRaw c depthCC 64 evs center <- Process.controllerRaw c centerCC 64 evs speed <- Process.controllerExponential c speedCC 0.3 (0.1, 1) evs- RBU.union "sweep"+ RB.union (RB.filterE (not . Common.checkController (flip elem [centerCC, depthCC, speedCC])) evs) .@@ -277,5 +275,5 @@ g -> ReaderT Seq.Handle IO () trainer g = Seq.runTimesM $ \ times evs ->- Process.unionM (fmap singletonBundle evs) =<<+ RB.union (fmap singletonBundle evs) <$> Process.trainer (channel 0) (time 0.5) (time 0.3) (Training.all g) times evs
src/Reactive/Banana/ALSA/Private.hs view
@@ -4,8 +4,8 @@ import qualified Reactive.Banana.MIDI.Process as Process import qualified Reactive.Banana.MIDI.Time as Time -import qualified Reactive.Banana.Combinators as RB-import qualified Reactive.Banana.Frameworks as RBF+import qualified Reactive.Banana.Bunch.Combinators as RB+import qualified Reactive.Banana.Bunch.Frameworks as RBF import qualified Sound.ALSA.Sequencer as SndSeq import qualified Sound.ALSA.Sequencer.Client as Client
src/Reactive/Banana/ALSA/Sequencer.hs view
@@ -15,9 +15,9 @@ import qualified Reactive.Banana.MIDI.Utility as RBU import Reactive.Banana.MIDI.Common (Future(Future), ) -import qualified Reactive.Banana.Combinators as RB-import qualified Reactive.Banana.Frameworks as RBF-import Reactive.Banana.Combinators ((<@>), )+import qualified Reactive.Banana.Bunch.Combinators as RB+import qualified Reactive.Banana.Bunch.Frameworks as RBF+import Reactive.Banana.Bunch.Combinators ((<@>), ) import qualified Sound.ALSA.Sequencer.Event.RemoveMonad as Remove import qualified Sound.ALSA.Sequencer.Event as Event@@ -28,7 +28,7 @@ import qualified Control.Monad.Trans.Reader as MR import Control.Monad.Trans.Reader (ReaderT(ReaderT), ) import Control.Monad (liftM, forever, )-import Control.Applicative (pure, (<*>), )+import Control.Applicative ((<$>), ) import Control.Functor.HT (void, ) import Data.Monoid (mempty, ) @@ -82,7 +82,7 @@ . fmap Event.body =<< RBF.fromAddHandler addEventHandler RBF.reactimate $- pure (outputEvents h) <*> time <@> evs)+ outputEvents h <$> time <@> RB.collect evs) forever $ do ev <- Event.input (sequ h) runTimeHandler $ AlsaTime.fromEvent ev