summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cady <d@jerkface.net>2014-01-21 11:21:14 -0500
committerAndrew Cady <d@jerkface.net>2014-01-21 11:21:14 -0500
commit272b838807ed437542fd8209bbe195ce2a5da9eb (patch)
tree049dca8dd3ea5e62b9c7236ce8125409b362a429
parent93180fbabcb9e0d178a732910320f9573995b16b (diff)
Pass through unknown MIDI events
This makes certain MIDI files sound billions of times better. It also ensures that program changes work (i.e., the right instrument plays). (I thought this was already being done, but it wasn't.)
-rw-r--r--AlsaSeq.hs7
1 files changed, 3 insertions, 4 deletions
diff --git a/AlsaSeq.hs b/AlsaSeq.hs
index 99e7c80..8fb5bd2 100644
--- a/AlsaSeq.hs
+++ b/AlsaSeq.hs
@@ -139,15 +139,14 @@ parseAlsaEvents h keysDown immediate = loop keysDown
139 return keysDown 139 return keysDown
140 else do 140 else do
141 ev <- Event.input h 141 ev <- Event.input h
142 immediate ev
142 case Event.body ev of 143 case Event.body ev of
143 Event.NoteEv Event.NoteOn n -> do 144 Event.NoteEv Event.NoteOn n ->
144 immediate ev
145 if (Event.unVelocity (Event.noteVelocity n) == 0) then 145 if (Event.unVelocity (Event.noteVelocity n) == 0) then
146 loop (Set.delete (Event.noteChannel n, Event.noteNote n) keysDown) 146 loop (Set.delete (Event.noteChannel n, Event.noteNote n) keysDown)
147 else 147 else
148 loop (Set.insert (Event.noteChannel n, Event.noteNote n) keysDown) 148 loop (Set.insert (Event.noteChannel n, Event.noteNote n) keysDown)
149 Event.NoteEv Event.NoteOff n -> do 149 Event.NoteEv Event.NoteOff n ->
150 immediate ev
151 loop (Set.delete (Event.noteChannel n, Event.noteNote n) keysDown) 150 loop (Set.delete (Event.noteChannel n, Event.noteNote n) keysDown)
152 _ -> loop keysDown 151 _ -> loop keysDown
153 152