import Sound.Alsa.Sequencer main :: IO () main = do putStrLn "Starting." h <- open default_seq_name open_input Block set_client_name h "HS1" putStrLn "Created sequencer." p1 <- create_simple_port h "one" (caps [cap_write,cap_subs_write]) type_midi_generic p2 <- create_simple_port h "two" (caps [cap_write,cap_subs_write]) type_midi_generic putStrLn "Created ports." let loop = do putStrLn "waiting for an event:" e <- event_input h print e loop loop delete_port h p1 delete_port h p2 putStrLn "Deleted ports." close h putStrLn "Closed sequencer." `alsa_catch` \e -> putStrLn ("Problem: " ++ exception_description e)