summaryrefslogtreecommitdiff
path: root/midi-dump.hs
diff options
context:
space:
mode:
Diffstat (limited to 'midi-dump.hs')
-rw-r--r--midi-dump.hs10
1 files changed, 6 insertions, 4 deletions
diff --git a/midi-dump.hs b/midi-dump.hs
index 275593d..0de26bf 100644
--- a/midi-dump.hs
+++ b/midi-dump.hs
@@ -244,11 +244,13 @@ metronome = gets _metronome >>= mapM_ f
244 f (Metronome start interval ticked) = do 244 f (Metronome start interval ticked) = do
245 now <- getAbsTime 245 now <- getAbsTime
246 let next = ticked + interval 246 let next = ticked + interval
247 prequeue = 0::Int 247 prequeue = 10::Int64
248 when (now > next - (interval * TimeSpec (fromIntegral prequeue) 0)) $ do 248 intervals :: Int64 -> TimeSpec
249 intervals n = interval * TimeSpec n 0 -- NB. very strange "*" for TimeSpec
250 when (now > next - intervals prequeue) $ do
249 let delay = next - now 251 let delay = next - now
250 forM_ [0..prequeue] $ fromIntegral >>> \n -> alsaDelayNoteEv (delay + interval * TimeSpec n 0) $ metronote 127 252 forM_ [0..prequeue] $ \n -> alsaDelayNoteEv (delay + intervals n) (metronote 127)
251 modify $ \s -> s { _metronome = Just $ Metronome start interval (next + interval * TimeSpec (fromIntegral prequeue) 0) } 253 modify $ \s -> s { _metronome = Just $ Metronome start interval (next + intervals prequeue) }
252 254
253 metronote vel = Event.NoteEv Event.NoteOn $ Event.simpleNote (Event.Channel 9) (Event.Pitch 37) (Event.Velocity vel) 255 metronote vel = Event.NoteEv Event.NoteOn $ Event.simpleNote (Event.Channel 9) (Event.Pitch 37) (Event.Velocity vel)
254 256