summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cady <d@jerkface.net>2014-01-17 11:02:52 -0500
committerAndrew Cady <d@jerkface.net>2014-01-17 11:04:04 -0500
commit6a7389a5e257f52dc45c5251207868e68041b759 (patch)
treeb45654d35dc8965b44d90a0680f1594f675572f6
parent0693006606d8e14754effcce75787014433117d6 (diff)
save channel information in keysDown sets
-rw-r--r--AlsaSeq.hs10
1 files changed, 6 insertions, 4 deletions
diff --git a/AlsaSeq.hs b/AlsaSeq.hs
index cdb425f..d6e3816 100644
--- a/AlsaSeq.hs
+++ b/AlsaSeq.hs
@@ -40,8 +40,10 @@ showPitch x =
40 let (octave, pitch) = Haskore.Basic.Pitch.fromInt $ fromIntegral x 40 let (octave, pitch) = Haskore.Basic.Pitch.fromInt $ fromIntegral x
41 in Haskore.Basic.Pitch.classFormat pitch (show octave) 41 in Haskore.Basic.Pitch.classFormat pitch (show octave)
42 42
43-- TODO: don't filter percussion here.
43pitchWords set = map showPitch $ pitchList set 44pitchWords set = map showPitch $ pitchList set
44pitchList set = map Event.unPitch $ Set.toList set 45pitchList set = map Event.unPitch $ map (\ (c, n) -> n) $ filter (\ (Event.Channel c, n) -> c /= 20) $ Set.toList set
46pitchLists set = map (\ (c, n) -> (Event.unChannel c, Event.unPitch n)) $ filter (\ (Event.Channel c, n) -> c /= 20) $ Set.toList set
45 47
46prettyNote :: Event.Note -> String 48prettyNote :: Event.Note -> String
47prettyNote (Event.Note noteChannel noteNote noteVelocity noteOffVelocity noteDuration) = 49prettyNote (Event.Note noteChannel noteNote noteVelocity noteOffVelocity noteDuration) =
@@ -137,12 +139,12 @@ parseAlsaEvents h keysDown immediate = loop keysDown
137 Event.NoteEv Event.NoteOn n -> do 139 Event.NoteEv Event.NoteOn n -> do
138 immediate ev 140 immediate ev
139 if (Event.unVelocity (Event.noteVelocity n) == 0) then 141 if (Event.unVelocity (Event.noteVelocity n) == 0) then
140 loop (Set.delete (Event.noteNote n) keysDown) 142 loop (Set.delete (Event.noteChannel n, Event.noteNote n) keysDown)
141 else 143 else
142 loop (Set.insert (Event.noteNote n) keysDown) 144 loop (Set.insert (Event.noteChannel n, Event.noteNote n) keysDown)
143 Event.NoteEv Event.NoteOff n -> do 145 Event.NoteEv Event.NoteOff n -> do
144 immediate ev 146 immediate ev
145 loop (Set.delete (Event.noteNote n) keysDown) 147 loop (Set.delete (Event.noteChannel n, Event.noteNote n) keysDown)
146 _ -> loop keysDown 148 _ -> loop keysDown
147 149
148forwardNoteEvent h q publicAddr ev = do 150forwardNoteEvent h q publicAddr ev = do