From e804a2b7c210560fd6c62d689fd21367792e1080 Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Fri, 17 Jan 2014 14:13:44 -0500 Subject: get ready to recognize midi channels --- axis.hs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'axis.hs') diff --git a/axis.hs b/axis.hs index f7ec772..c14c0a7 100644 --- a/axis.hs +++ b/axis.hs @@ -68,6 +68,14 @@ drawKeys pitches videoSurface font axis_key_locations axis_key_size = do reallyEraseKeys = eraseKeys_ True eraseKeys = eraseKeys_ False +smartDrawKeys really drawSet eraseSet videoSurface font axis_key_locations axis_key_size = do + + let drawList = map (\ (_, n) -> unPitch n) $ Set.toList drawSet + let eraseList = map (\ (_, n) -> unPitch n) $ Set.toList eraseSet + + drawKeys drawList videoSurface font axis_key_locations axis_key_size + eraseKeys_ really eraseList videoSurface font axis_key_locations axis_key_size + eraseKeys_ really pitches videoSurface font axis_key_locations axis_key_size = do forM_ pitches $ \pitch -> do @@ -133,11 +141,10 @@ main = -- let chord = show $ map (\i->elemIndices i pitchIndex) $ pitchList midiKeysDown' -- textBand videoSurface videoClipRect (SDL.Rect 0 70 0 70) font chord let ignoreThese = Set.intersection midiKeysDown' midiKeysDown - let drawThese = pitchList $ Set.difference midiKeysDown' ignoreThese - let eraseThese = pitchList $ Set.difference midiKeysDown ignoreThese + let drawThese = Set.difference midiKeysDown' ignoreThese + let eraseThese = Set.difference midiKeysDown ignoreThese - drawKeys drawThese videoSurface font axis_key_locations axis_key_size - eraseKeys eraseThese videoSurface font axis_key_locations axis_key_size + smartDrawKeys False drawThese eraseThese videoSurface font axis_key_locations axis_key_size return () Control.Monad.when (keysDown' /= keysDown && keyDown SDL.SDLK_BACKSPACE keysDown') allKeysOFF -- cgit v1.2.3