From 6b1f45968645c12a31a750e7c1e428ca44ab4172 Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Thu, 3 Dec 2015 02:40:01 -0500 Subject: separate out a midi event hook in midi-dump.hs --- midi-dump.hs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'midi-dump.hs') diff --git a/midi-dump.hs b/midi-dump.hs index aa19def..0f714ed 100644 --- a/midi-dump.hs +++ b/midi-dump.hs @@ -1,18 +1,19 @@ -{-# LANGUAGE NondecreasingIndentation #-} import AlsaSeq import Control.Concurrent (threadDelay) import qualified Sound.ALSA.Exception as AlsaExc import qualified Data.Set as Set -main = (do +main = main' `AlsaExc.catch` handler + where + handler e = putStrLn $ "alsa_exception: " ++ AlsaExc.show e - withAlsaInit $ \h public private q publicAddr privateAddr -> do +main' = withAlsaInit $ \h public private q publicAddr privateAddr -> do cmdlineAlsaConnect h public let forwardNOW = forwardNoteEvent h q publicAddr go keysDown = do - keysDown' <- parseAlsaEvents h keysDown forwardNOW + keysDown' <- parseAlsaEvents h keysDown (\ev -> do forwardNOW ev; hook ev) if (keysDown == keysDown') then threadDelay 15000 -- 15ms. Seems like a lot, but it sounds OK. Cuts CPU down to 2%. else do @@ -20,6 +21,7 @@ main = (do go keysDown' putStrLn "Rock on!" - go Set.empty) - `AlsaExc.catch` \e -> - putStrLn $ "alsa_exception: " ++ AlsaExc.show e + go Set.empty + +hook :: MidiHook +hook ev = return () -- cgit v1.2.3