diff options
author | Andrew Cady <d@jerkface.net> | 2015-12-04 21:24:15 -0500 |
---|---|---|
committer | Andrew Cady <d@jerkface.net> | 2015-12-04 21:24:15 -0500 |
commit | 060af37ea78454b32b915c3364296720be118025 (patch) | |
tree | c2e1aa0c9954f32339026592e74d54d7ff4291e9 | |
parent | 2c7fa00813d51cf5a8436b459b62f2d343b75cde (diff) |
treat EOF from stdin as if "exit" were typed
-rw-r--r-- | midi-dump.hs | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/midi-dump.hs b/midi-dump.hs index c47e8bf..747ae28 100644 --- a/midi-dump.hs +++ b/midi-dump.hs | |||
@@ -27,7 +27,6 @@ import qualified Sound.ALSA.Sequencer.Address | |||
27 | import qualified Sound.ALSA.Sequencer.Port | 27 | import qualified Sound.ALSA.Sequencer.Port |
28 | import qualified Sound.ALSA.Sequencer.Queue | 28 | import qualified Sound.ALSA.Sequencer.Queue |
29 | 29 | ||
30 | |||
31 | verbose = False | 30 | verbose = False |
32 | 31 | ||
33 | main = main' `AlsaExc.catch` handler | 32 | main = main' `AlsaExc.catch` handler |
@@ -144,7 +143,7 @@ emptyRecording now = Recording now [] | |||
144 | maybeReadLine = asks _lineReader >>= liftIO . tryTakeMVar | 143 | maybeReadLine = asks _lineReader >>= liftIO . tryTakeMVar |
145 | startLineReader = do | 144 | startLineReader = do |
146 | mv <- liftIO newEmptyMVar | 145 | mv <- liftIO newEmptyMVar |
147 | thread <- liftIO $ forkIO (forever $ getLine >>= putMVar mv) | 146 | thread <- liftIO $ forkIO (forever $ tryIOError getLine >>= either (const $ putMVar mv "exit") (putMVar mv)) |
148 | return mv | 147 | return mv |
149 | 148 | ||
150 | data Chunk = Chunk Int64 Int64 Int64 Int64 Int64 BS.ByteString | 149 | data Chunk = Chunk Int64 Int64 Int64 Int64 Int64 BS.ByteString |
@@ -179,8 +178,8 @@ startSaver sqlite = do | |||
179 | 178 | ||
180 | 179 | ||
181 | getMidiDesc :: Event.T -> Maybe String | 180 | getMidiDesc :: Event.T -> Maybe String |
182 | getMidiDesc ((Event.Cons _ _ _ _ _ _ (Event.NoteEv Event.NoteOn ev))) = return $ ("on:" ++) $ showPitch $ unPitch $ Event.noteNote ev | 181 | getMidiDesc (Event.Cons _ _ _ _ _ _ (Event.NoteEv Event.NoteOn ev)) = return $ ("on:" ++) $ showPitch $ unPitch $ Event.noteNote ev |
183 | getMidiDesc ((Event.Cons _ _ _ _ _ _ (Event.NoteEv Event.NoteOff ev))) = return $ ("off:" ++) $ showPitch $ unPitch $ Event.noteNote ev | 182 | getMidiDesc (Event.Cons _ _ _ _ _ _ (Event.NoteEv Event.NoteOff ev)) = return $ ("off:" ++) $ showPitch $ unPitch $ Event.noteNote ev |
184 | getMidiDesc _ = Nothing | 183 | getMidiDesc _ = Nothing |
185 | 184 | ||
186 | tsDeltas :: [TimeSpec] -> [Integer] | 185 | tsDeltas :: [TimeSpec] -> [Integer] |