
Hello all, in my recent attempts to work with ALSA.Sequencer, I frequently stumble across the problem that this library uses GHC.Word.Word8 (don't know where this comes from), but I am passing in plain Ints. Adding a fromIntegral solves this issue, but I end up with code like the following: type T = Int -- time type C = Int -- channel type N = Int -- note type V = Int -- velocity type L = Int -- LSB type M = Int -- MSB type P = Int -- program type X = Int -- something data DtzEvent = NoteOn C N V | NoteOff C N V | ProgChange C P | PitchBend C X | BankSelMsb C X | BankSelLsb C X ... playSong :: DtzEvents -> IO() playSong events = runContT (foo "128:0" 120 (map render events)) print where render (t,(NoteOn c n v)) = ((fromIntegral t), noteOn (fromIntegral c) (fromIntegral n) (fromIntegral v)) render (t,(NoteOff c n v)) = ((fromIntegral t), noteOff (fromIntegral c) (fromIntegral n) (fromIntegral v)) render (t,(ProgChange c p)) = ((fromIntegral t), progChange (fromIntegral c) (fromIntegral p)) render (t,(PitchBend c x)) = ((fromIntegral t), pitchBend (fromIntegral c) (fromIntegral x)) render (t,(BankSelMsb c x)) = ((fromIntegral t), bankSelMsb (fromIntegral c) (fromIntegral x)) render (t,(BankSelLsb c x)) = ((fromIntegral t), bankSelLsb (fromIntegral c) (fromIntegral x)) The last piece looks pretty ugly. Is there a way to avoid this?