!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop q r s t u v w x y z { | } ~  None)The IEEE byte representation of a float.  Inverse of . *The IEEE byte representation of a double.  Inverse of f64_i64. ATransform a haskell string into a C string (a null suffixed byte  string).  Inverse of . ATransform a haskell string to a pascal string (a length prefixed  byte string).  Inverse of . NoneEncode a signed 8-bit integer.  Encode a signed 16-bit integer.  Encode a signed 32-bit integer. #Encode an unsigned 16-bit integer.  Encode a signed 64-bit integer. #Encode an unsigned 64-bit integer. ,Encode a 32-bit IEEE floating point number. ,Encode a 64-bit IEEE floating point number. Encode an ASCII string. Decode a signed 8-bit integer.  Decode a signed 16-bit integer.  Decode a signed 32-bit integer. #Decode an unsigned 32-bit integer.  Decode a signed 64-bit integer. #Decode an unsigned 64-bit integer. ,Decode a 32-bit IEEE floating point number. ,Decode a 64-bit IEEE floating point number. Decode an ASCII string. Bundle header string. ?The number of bytes required to align an OSC value to the next  4-byte boundary. . map align [0::Int .. 7] == [0,3,2,1,0,3,2,1]      Safe-InferredReal valued variant of . Repeat action until predicate f is  when applied to  result. Repeat action until f does not give  when applied to  result. NoneUnix/Posix. epoch time in real-valued (fractional) form. NTP( time in real-valued (fractional) form. !,Type for integer (binary) representation of NTP time. "*Convert a real-valued NTP timestamp to an ! timestamp. # Convert an !+ timestamp to a real-valued NTP timestamp. $ Difference (in seconds) between NTP and UT epochs. - ntp_ut_epoch_diff / (24 * 60 * 60) == 25567 % Convert a  timestamp to an ! timestamp. &Convert Unix/Posix to NTP. 'Convert NTP to Unix/Posix. (Convert ! to Unix/Posix. )9Constant indicating a bundle to be executed immediately.  ntpr_to_ntpi immediately == 1 *!The time at 1970-01-01:00:00:00. +Convert  to Unix/Posix. ,Read current real-valued NTP timestamp. + do {ct <- fmap utc_to_ut T.getCurrentTime * ;pt <- fmap realToFrac T.getPOSIXTime % ;print (pt - ct,pt - ct < 1e-5)} -The .. limit (in seconds). Values larger than this 1 require a different thread delay mechanism, see 1. The ( value is the number of microseconds in  maxBound::Int. .BPause current thread for the indicated duration (in seconds), see  -. /Type restricted .. 0%Pause current thread until the given  , see  -. 1>Sleep current thread for the indicated duration (in seconds). / Divides long sleeps into parts smaller than -. 2%Sleep current thread until the given  . Divides long sleeps  into parts smaller than -.  !"#$%&'()*+,-./012 !"#$%&'()*+,-./012! "#$%&'()*+,-./012 !"#$%&'()*+,-./012None"3An OSC 3 is either a < or a 8. 8An OSC bundle. <An OSC message. @OSC address pattern. A$The basic elements of OSC messages. I#Type enumerating Datum categories. J8 constructor. It is an  if the < list is  empty. K< constructor. It is an  if the @  doesn'$t conform to the OSC specification. L4  J. M6  K. N-Single character identifier of an OSC datum. O Variant of . PGiven I attempt to parse A at . ' parse_datum 'i' "42" == Just (Int 42) 3 parse_datum 'f' "3.14159" == Just (Float 3.14159) 4 parse_datum 'd' "3.14159" == Just (Double 3.14159) 0 parse_datum 's' "\"pi\"" == Just (String "pi") 8 parse_datum 'b' "pi" == Just (Blob (B.pack [112,105])) > parse_datum 'm' "(0,144,60,90)" == Just (Midi (0,144,60,90)) QA as real number if ,  or , else . F map datum_real [Int 5,Float 5,String "5"] == [Just 5,Just 5,Nothing] RA  variant of Q. - map datum_real_err [Int 5,Float 5] == [5,5] SA as integral number if ,  or , else  . G map datum_int [Int 5,Float 5.5,String "5"] == [Just 5,Just 5,Nothing] TA  variant of S. . map datum_int_err [Int 5,Float 5.5] == [5,5] UA as  if  or D, else . I map datum_string [String "5",Blob (B.pack [53])] == [Just "5",Just "5"] VA  variant of U. C map datum_string_err [String "5",Blob (B.pack [53])] == ["5","5"] WDoes < have the specified @. XDo any of the <s at 8 have the specified  @. YDoes 3 have the specified @, ie.  W or X. ZThe   of 3 , if the 3 is a < this is  ). [Retrieve the set of < s from a 3. \If 3 is a < add ) timestamp, else . ]If 3 is a < or a 8 with an  immediate time & tag and with one element, return the <, else . ^Is 3 immediate, ie. a 8 with timestamp  ), or a plain Message. _ Variant of  for 3. `Pretty printer for  . aPretty printer for A. > map datumPP [Float 1.2,String "str",Midi (0,0x90,0x40,0x60)] bPretty printer for <. cPretty printer for 8. dPretty printer for 3. OSC 8#s can be ordered (time ascending). 33456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd2IAHGFEDCB@<=>?89:;36475JKLMNOPQRSTUVWXYZ[\]^_`abcd"3647589:;<=>?@AHGFEDCBIJKLMNOPQRSTUVWXYZ[\]^_`abcdNonee0Map a normalizing function over datum at an OSC <. f0Map a normalizing function over datum at an OSC 8. gCoerce Float to Double. h Coerce Int and Float to Double. i Coerce Float and Double to Int. efghiefghiefghiefghiNonejDecode an OSC <. kDecode an OSC 8. lDecode an OSC 3. A let b = B.pack [47,103,95,102,114,101,101,0,44,105,0,0,0,0,0,0] 0 in decodePacket b == Message "/g_free" [Int 0] jkljkljkl jklNone IIsolate an action to operating within a fixed block of bytes. The action @ is required to consume all the bytes that it is isolated to. 0Get a 32 biut integer in big-endian byte order. Get an aligned OSC string. (Get binary data prefixed by byte count. Get an OSC datum.  Get an OSC <. Get a sequence of OSC <"s, each one headed by its length. m Get an OSC 3. n-Decode an OSC packet from a lazy ByteString. A let b = L.pack [47,103,95,102,114,101,101,0,44,105,0,0,0,0,0,0] - in decodeOSC b == Message "/g_free" [Int 0] o/Decode an OSC packet from a strict ByteString. mnomnomno mno NonepEncode an OSC <. qEncode an OSC 8. rEncode an OSC 3. pqrpqrpqrpqr NonesBuilder monoid for an OSC 3. tEncode an OSC <. uEncode an OSC 8. vEncode an OSC 3 to a lazy . A let b = L.pack [47,103,95,102,114,101,101,0,44,105,0,0,0,0,0,0] / in encodeOSC (Message "/g_free" [Int 0]) == b w0Encode an Packet packet to a strict ByteString. stuvwstuvwstuvw stuvw NonexAn z and { pair over . y6Converting from and to binary packet representations. |z  6. }z  4. ~]  {. \  {. xyzDecode an OSC packet. {Encode an OSC packet. |}~xyz{|}~yz{x|}~ xyz{|}~ None?A type-class for values that can be translated to and from OSC  3s. z  .   {. Translation to 3. Translation from 3.  None1Abstract over the underlying transport protocol. Encode and send an OSC packet. "Receive and decode an OSC packet. Close an existing connection. Bracket OSC communication. Type restricted synonym for . Type restricted synonym for .  Variant of  that runs .  Variant of  that runs \.  Variant of  that runs ].  Variant of  that runs [.  Variant of  that implements an n second timeout.  Wait for a 3! where the supplied predicate is , ! discarding intervening packets.  Wait for a 3+ where the supplied function does not give  ", discarding intervening packets.  ^.  ], ie. an incoming < or  immediate mode 8 with one element. A  for variant using Y to match on  the @ of incoming Packets.  Variant on  that returns matching <.  Variant of  that runs ?. None$The UDP transport handle data type. 7Return the port number associated with the UDP socket. "Create and initialise UDP socket. Make a  connection. # let t = openUDP "127.0.0.1" 57110 4 in withTransport t (\fd -> recvT 0.5 fd >>= print) Trivial  server socket.   import Control.Concurrent  0 let {f fd = forever (recvMessage fd >>= print) ' ;t = udpServer "127.0.0.1" 57300} & in void (forkIO (withTransport t f)) # let t = openUDP "127.0.0.1" 57300 > in withTransport t (\fd -> sendMessage fd (message "/n" [])) +Send variant to send to specified address. 0Recv variant to collect message source address. None$The TCP transport handle data type. Make a  connection.  A trivial  OSC server. NoneTransport connection.  is  with a  constraint.  is the union of  and . Receiver monad. "Receive and decode an OSC packet. Sender monad. Encode and send an OSC packet. *Bracket Open Sound Control communication. Type restricted synonym for . Type restricted synonym for .  Variant of  that runs .  Variant of  that runs \.  Variant of  that runs ].  Variant of  that runs [.  Wait for a 3! where the supplied predicate is , ! discarding intervening packets.  Wait for a 3+ where the supplied function does not give  ", discarding intervening packets.  ^.  ], ie. an incoming < or  immediate mode 8 with one element. A  for variant using Y to match on  the @ of incoming Packets.  Variant on  that returns matching <.  Variant of  that runs ?. NoneV !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdxyz{|}~None{ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdxyz{|}~Nonew !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLLMNOOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~   ~ | }   WXYZ   hosc-0.13"Sound.OpenSoundControl.Coding.Cast"Sound.OpenSoundControl.Coding.ByteSound.OpenSoundControl.WaitSound.OpenSoundControl.TimeSound.OpenSoundControl.Type$Sound.OpenSoundControl.Coding.Coerce)Sound.OpenSoundControl.Coding.Decode.Base+Sound.OpenSoundControl.Coding.Decode.Binary)Sound.OpenSoundControl.Coding.Encode.Base,Sound.OpenSoundControl.Coding.Encode.BuilderSound.OpenSoundControl.CodingSound.OpenSoundControl.ClassSound.OSC.Transport.FDSound.OSC.Transport.FD.UDPSound.OSC.Transport.FD.TCPSound.OSC.Transport.MonadSound.OpenSoundControl Sound.OSC Sound.OSC.FDf32_w32w32_f32f64_w64w64_f64str_cstrcstr_strstr_pstrpstr_str encode_i8 encode_i16 encode_i32 encode_u32 encode_i64 encode_u64 encode_f32 encode_f64 encode_str decode_i8 decode_i16 decode_i32 decode_u32 decode_i64 decode_u64 decode_f32 decode_f64 decode_str bundleHeaderalign timeout_runtilPredicate untilMaybeUTTimeNTPi ntpr_to_ntpi ntpi_to_ntprntp_ut_epoch_diff ut_to_ntpi ut_to_ntpr ntpr_to_ut ntpi_to_ut immediatelyut_epoch utc_to_uttimepauseThreadLimit pauseThreadwaitpauseThreadUntil sleepThreadsleepThreadUntilPacket Packet_Bundle packetBundlePacket_Message packetMessageBundle bundleTimebundleMessagesMessagemessageAddress messageDatumAddress_PatternDatumMidi TimeStampBlobStringDoubleFloatInt Datum_Typebundlemessagep_bundle p_message datum_tag readMaybe parse_datum datum_realdatum_real_err datum_int datum_int_err datum_stringdatum_string_errmessage_has_addressbundle_has_addresspacket_has_address packetTimepacketMessagespacket_to_bundlepacket_to_messagepacket_is_immediate at_packettimePPdatumPP messagePPbundlePPpacketPPmessage_coerce bundle_coercef_to_dif_to_dfd_to_i decodeMessage decodeBundle decodePacket getPacketdecodePacket_strict encodeMessage encodeBundle encodePacket build_packetencodePacket_strictCoderCodingOSCtoPacket fromPacket encodeOSC decodeOSC TransportsendOSC recvPacketclose withTransport sendMessage sendBundlerecvOSC recvBundle recvMessage recvMessagesrecvPacketTimeout waitUntilwaitFor waitImmediate waitMessage waitAddress waitReply waitDatumUDP udpSocketudpPort udp_socketopenUDP udpServersendTorecvFromTCP tcpHandleopenTCP tcpServer' Connection DuplexOSCRecvOSCSendOSCbaseSystem.Timeouttimeoutghc-prim GHC.TypesTrue Data.MaybeNothing time-1.4.0.1Data.Time.Clock.UTCUTCTimeGHC.ErrerrorGHC.Base. Text.ReadreadfromJustid Data.Eithereither $fOrdBundlesizestorage decode_datumdecode_datum_seqdecode_message_seqb_takeb_dropisolate getInt32be get_string get_bytes get_datum get_messageget_message_seq get_bundle descriptorextend encode_datumencode_message_blobbytestring-0.10.0.0Data.ByteString.Lazy.Internal ByteStringpadding build_string build_bytes build_datum build_messagebuild_bundle_ntpi $fCoding[]$fCodingByteString$fCodingByteString0 $fOSCPacket $fOSCBundle $fOSCMessage$fTransportUDP$fTransportTCPtransformers-0.3.0.0Control.Monad.IO.ClassMonadIO$fTransportReaderT$fDuplexOSCReaderT$fRecvOSCReaderT$fSendOSCReaderTliftIO