From b4f30bddff95f56d3418db0a130331d9666a706e Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Sun, 6 Dec 2015 04:06:43 -0500 Subject: remove now-redundant "_playNOW" queue (just use the RealTimeQueue) --- midi-dump.hs | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/midi-dump.hs b/midi-dump.hs index b68a790..e6d2aca 100644 --- a/midi-dump.hs +++ b/midi-dump.hs @@ -42,7 +42,6 @@ main = main' `AlsaExc.catch` handler data LoopState = LoopState { _wantExit :: Bool, keysDown :: MidiPitchSet, - _playNOW :: [Event.Data], _scheduled :: Q.Queue Event.Data, _recording :: Recording, _replay :: Recording, @@ -50,7 +49,7 @@ data LoopState = LoopState { } initializeState :: TimeSpec -> LoopState -initializeState now = LoopState False Set.empty [] createQueue (StartRecording now) (StartRecording now) now +initializeState now = LoopState False Set.empty createQueue (StartRecording now) (StartRecording now) now data LoopEnv = LoopEnv { _saver :: Chan CompleteRecording, @@ -132,24 +131,13 @@ mainLoop :: MidiController () mainLoop = do maybeReadLine >>= maybe processMidi processCommand wantExit <- gets _wantExit - - playImmediates playScheduled - unless wantExit mainLoop playScheduled :: MidiController () playScheduled = queueAction $ runScheduledIO (TimeSpec 1 0) $ uncurry alsaDelayNoteEv -- TODO: flush ALSA output here (and remove flush from playNoteEv) -playImmediates :: MidiController () -playImmediates = do - immediate <- gets _playNOW - unless (null immediate) $ do - forM_ immediate playNoteEv - -- TODO: flush ALSA output here (and remove flush from playNoteEv) - modify $ \s -> s { _playNOW = [] } - _playNote :: Bool -> Event.Note -> MidiController () _playNote noteOn note = playNoteEv $ Event.NoteEv onoff note @@ -189,7 +177,7 @@ processCommand "exit" = modify $ \s -> s { _wantExit = True } processCommand "" = gets _replay >>= playRecording processCommand "C" = do let notes = (Event.NoteEv Event.NoteOn . mkNote) <$> [60, 64, 67] - modify $ \s -> s { _playNOW = notes } + forM_ notes (delayNoteEv (TimeSpec 0 0)) processCommand "C'" = do let notes = (Event.NoteEv Event.NoteOn . mkNote) <$> [60, 64, 67] forM_ notes (delayNoteEv (TimeSpec 2 0)) @@ -199,7 +187,7 @@ processCommand "C'" = do let mkNote pitch = Event.simpleNote (Event.Channel 0) (Event.Pitch pitch) (Event.Velocity 128) setDuration d note = note { Event.noteDuration = Event.Duration d } let notes = (Event.NoteEv Event.NoteOn . setDuration 4290000000 . mkNote) <$> [60, 64, 67] - modify $ \s -> s { _playNOW = notes } + forM_ notes (delayNoteEv (TimeSpec 0 0)) -} processCommand str = liftIO $ putStrLn $ "Unknown command: " ++ str -- cgit v1.2.3