import qualified Sound.Alsa.Sequencer as ALSA import Sound.Alsa.Sequencer ( port_unknown, set_client_name, get_client_id, client_broadcast, Addr(Addr), addr_client, addr_port, Event(Event), event_output_direct, ev_high_priority, ev_tag, ev_queue, ev_timestamp, ev_source, ev_dest, ev_data, queue_direct, TimeStamp(TickTime), EventData(NoteEv), NoteEv(NoteOn), simple_note, alsa_catch, exception_description, ) main :: IO () main = (do putStrLn "Starting." ALSA.with ALSA.default_seq_name ALSA.Block $ \h -> do set_client_name (h :: ALSA.SndSeq ALSA.OutputMode) "HS3" putStrLn "Created sequencer." x <- get_client_id h putStrLn ("My id is: " ++ show x) let me = Addr { addr_client = x, addr_port = port_unknown } -- tgt_addr <- parse_address h "HS1:255" let tgt_addr = Addr client_broadcast port_unknown print tgt_addr getChar event_output_direct h (e1 me tgt_addr) getChar return ()) `alsa_catch` \e -> putStrLn ("Problem: " ++ exception_description e) e1 :: Addr -> Addr -> Event e1 from to = Event { ev_high_priority = False , ev_tag = 0 , ev_queue = queue_direct , ev_timestamp = TickTime 0 , ev_source = from , ev_dest = to , ev_data = NoteEv NoteOn (simple_note 0 60 100) }