h*~tq      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                        0.21 Safe-Inferred 9hoscType specialised hoscType specialised hoscType specialised .hoscType specialised hoscType specialised hoscType specialised hoscType specialised  hoscType specialised  hoscType specialised  hoscType specialised  hoscType specialised  hoscType specialised hoscType specialised hoscType specialised hoscType specialised hoscType specialised hoscType specialised hoscType specialised hoscType specialised hoscType specialised hoscType specialised hoscType specialised hoscType-specialised  of hoscType-specialised  of hoscType-specialised  of .hoscType-specialised  of .hoscType-specialised .hoscType-specialised .   Safe-InferredhoscType specialised  (big-endian).hoscType specialised  (big-endian).7encode_int16 0x0102 == ByteString.Lazy.pack [0x01,0x02]True hoscLittle-endian.:encode_int16_le 0x0102 == ByteString.Lazy.pack [0x02,0x01]True!hosc,Encode a signed 64-bit integer (big-endian)."hoscType specialised  (big-endian).#hoscType specialised  (big-endian).8encode_word16 0x0102 == ByteString.Lazy.pack [0x01,0x02]True$hoscLittle-endian.;encode_word16_le 0x0102 == ByteString.Lazy.pack [0x02,0x01]True%hoscType specialised .&hoscLittle-endian variant of %.'hosc"Encode an unsigned 64-bit integer.(hoscEncode a signed 8-bit integer.)hosc"Encode an un-signed 8-bit integer.*hosc#Encode an un-signed 16-bit integer./encode_u16 0x0102 == ByteString.Lazy.pack [1,2]True+hoscLittle-endian.2encode_u16_le 0x0102 == ByteString.Lazy.pack [2,1]True,hoscEncode a signed 16-bit integer.-hoscEncode a signed 32-bit integer..hosc"Encode an unsigned 32-bit integer..ByteString.Lazy.unpack (encode_u32 0x01020304) [1,2,3,4]/hoscLittle-endian.1ByteString.Lazy.unpack (encode_u32_le 0x01020304) [4,3,2,1]0hosc+Encode a 32-bit IEEE floating point number.)ByteString.Lazy.unpack (encode_f32 3.141) [64,73,6,37]1hoscLittle-endian variant of 0.,ByteString.Lazy.unpack (encode_f32_le 3.141) [37,6,73,64]2hosc+Encode a 64-bit IEEE floating point number.)ByteString.Lazy.unpack (encode_f64 3.141)[64,9,32,196,155,165,227,84]3hoscLittle-endian variant of 2.,ByteString.Lazy.unpack (encode_f64_le 3.141)[84,227,165,155,196,32,9,64]4hoscEncode an Ascii string (Ascii at Datum is an alias for a Char8 Bytetring).5hoscType specialised .6hoscLittle-endian variant of 5.7hoscType specialised .8hoscType specialised .9hoscLittle-endian variant of 8.:hoscType specialised .;hoscType specialised .<hosc"Decode an un-signed 8-bit integer.=hoscDecode a signed 8-bit integer.>hosc!Decode an unsigned 8-bit integer.?hoscLittle-endian variant of >.@hoscDecode a signed 16-bit integer.AhoscLittle-endian variant of @.BhoscDecode a signed 32-bit integer.decode_i32 (ByteString.Lazy.pack [0x00,0x00,0x03,0xe7]) == 0x03e7TrueChoscLittle-endian variant of B.decode_i32_le (ByteString.Lazy.pack [0xe7,0x03,0x00,0x00]) == 0x03e7TrueDhosc"Decode an unsigned 32-bit integer.9decode_u32 (ByteString.Lazy.pack [1,2,3,4]) == 0x01020304TrueEhosc$Little-endian variant of decode_u32.?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ Safe-InferredP`hosc(The IEEE byte representation of a float. f32_w32 pi 1078530011f32_w32 (-7913907.5) 340482544723 ^ 7 3404825447ahosc Inverse of `.w32_f32 1078530011 3.1415927w32_f32 (23 ^ 7) -7913907.5bhosc)The IEEE byte representation of a double. f64_w64 pi4614256656552045848f64_w64 1.6822072834e-314 3404825447chosc Inverse of b.w64_f64 46142566565520458483.141592653589793w64_f64 (23 ^ 7)1.6822072834e-314dhoscTransform a haskell string into a C string (a null suffixed byte string).ehosc Inverse of d.fhoscTransform a haskell string to a pascal string (a length prefixed byte string).ghosc Inverse of f.`abcdefg`abcdefg Safe-Inferred*!hhosc#The basic elements of Osc messages.yhoscA real-valued time stamp. For Osc proper this is an Ntp64 time in real-valued (fractional) form. For SuperCollider Nrt programs this is elapsed time since the start of the score. This is the primary form of timestamp used by hosc.zhosc9Four-byte midi message: port-id, status-byte, data, data.|hosc Type for " arrays, these are stored with an h length prefix.}hosc0Type for Ascii strings (strict Char8 ByteString)~hosc"Type enumerating Datum categories.hoscType-specialised pack.hoscType-specialised unpack.hoscType-specialised pack.hoscType-specialised pack.hoscType-specialised unpack.hoscType-specialised unpack.hoscType-specialised pack.hoscType-specialised unpack.hosc(List of required data types (tag, name).hosc'List of optional data types (tag,name).hosc"List of all data types (tag,name).hoscLookup name of type.hoscErroring variant.hosc,Single character identifier of an Osc datum.hoscType and name of h.hosch as  if Int32 or Int64..let d = [Int32 5,Int64 5,Float 5.5,Double 5.5]>map datum_integral d == [Just (5::Int),Just 5,Nothing,Nothing]Truehosch as - if Int32, Int64, Float, Double or TimeStamp.6let d = [Int32 5,Int64 5,Float 5,Double 5,TimeStamp 5]4mapMaybe datum_floating d == replicate 5 (5::Double)TruehoscType generalised h.&int32 (1::Int32) == int32 (1::Integer)True-d_int32 (int32 (maxBound::Int32)) == maxBoundTrue.int32 (((2::Int) ^ (64::Int))::Int) == Int32 0TruehoscType generalised Int64.&int64 (1::Int32) == int64 (1::Integer)True-d_int64 (int64 (maxBound::Int64)) == maxBoundTruehoscType generalised Float.#float (1::Int) == float (1::Double)TruefloatRange (undefined::Float) (-125,128):isInfinite (d_float (float (encodeFloat 1 256 :: Double)))TruehoscType generalised Double.%double (1::Int) == double (1::Double)Truedouble (encodeFloat 1 256 :: Double) == Double 1.157920892373162e77Truehoscm of pack.?string "string" == AsciiString (ByteString.Char8.pack "string")TruehoscFour-tuple variant of p  z.)midi (0,0,0,0) == Midi (MidiData 0 0 0 0)Truehosc| of .hosc0Message argument types are given by a signature.)signatureFor [Int32 1,Float 1,string "1"]",ifs"hosc-The descriptor is an Ascii encoded signature.7descriptor [Int32 1,Float 1,string "1"] == ascii ",ifs"TruehoscDescriptor tags are comma prefixed.3hxwvutsrqpomnjilkyz{|}~3~}|z{yhxwvutsrqpomnjilk Safe-Inferred1ahoscAn Osc  is either a  or a 'Bundle t'.hoscAn Osc bundle, a y and a sequence of s. The type parameter specifies the element type. Ordinarily this is Message, which does not allow recursion.hoscAn Osc message, an  and a sequence of h.hoscOsc address pattern. This is strictly an Ascii value, however it is very common to pattern match on addresses and matching on Data.ByteString.Char8 requires OverloadedStrings.hosc constructor. It is an  if the * doesn't conform to the Osc specification.hosc constructor. It is an  if the  list is empty.hosc of .hosc of .hoscConstant indicating a bundle to be executed immediately. It has the Ntp64 representation of 1.immediately == (1 / (2 ^ 32))TruehoscThe y of  , if the  is a  this is .hoscRetrieve the set of  s from a .hoscIf  is a  add  timestamp, else .hoscIf  is a  or a  with an  immediate+ time tag and with one element, return the , else .hoscIs  immediate, ie. a  with timestamp , or a plain Message.hosc Variant of  for .hoscDoes  have the specified .hoscDo any of the )s at 'Bundle Message' have the specified .hoscDoes  have the specified , ie.  or .hoscOsc "s can be ordered (time ascending).   Safe-Inferred7hosc Unix/Posix time in real-valued (fractional) form. The Unix/Posix epoch is January 1, 1970.hoscNtp' time in real-valued (fractional) form.hoscType for binary (integeral) representation of a 64-bit Ntp timestamp (ie. ntpi). The Ntp epoch is January 1, 1900. Ntp v4 also includes a 128-bit format, which is not used by Osc.hosc3Convert an NtpReal timestamp to an Ntp64 timestamp.ntpr_to_ntpi 00 fmap ntpr_to_ntpi timehosc Convert an * timestamp to a real-valued Ntp timestamp.ntpi_to_ntpr 00.0hosc Difference (in seconds) between Ntp and Posix epochs.%ntp_posix_epoch_diff / (24 * 60 * 60)25567.025567 `div` 36570hosc4Convert a PosixReal timestamp to an Ntp64 timestamp.hoscConvert  Unix/Posix to Ntp.hoscConvert Ntp to  Unix/Posix.hoscConvert  to  Unix/Posix.hoscConvert Time to .hoscConvert  to Time.hosc>The time at 1970-01-01:00:00:00 which is the Unix/Posix epoch.hoscConvert  to  Unix/Posix.hosc%utc_to_posix of Clock.getCurrentTime.hosc&realToFrac of Clock.Posix.getPOSIXTime get_ct = getCurrentTimeAsPosix get_pt = getPosixTimeAsPosix (ct,pt) <- get_ct >>= \t0 -> get_pt >>= \t1 -> return (t0,t1) print (pt - ct,pt - ct < 1e-5)hoscRead current real-valued Ntp timestamp. Safe-InferredD.!hosc&A character parser with no user state.hosc+Precision value for floating point numbers.hosc Variant of  that deletes trailing zeros.2map (showFloatWithPrecision (Just 4)) [1, 2.0, pi]["1.0","2.0","3.1416"]hoscHex encoded byte sequence.showBytes [0, 15, 16, 144, 255] "000f1090ff"hoscEscape whites space (space, tab, newline) and the escape character (backslash).map escapeString ["str", "str ", "st r", "s\tr", "s\\tr", "\nstr"]6["str","str\\ ","st\\ r","s\\\tr","s\\\\tr","\\\nstr"]hoscPrinter for Datum.let aDatumSeq = [Int32 1,Float 1.2,string "str",midi (0,0x90,0x40,0x60),blob [12,16], TimeStamp 100.0]"map (showDatum (Just 5)) aDatumSeq2["1","1.2","str","00904060","0c10","429496729600"]hoscPrinter for Message.let aMessage = Message "/addr" [Int32 1, Int64 2, Float 3, Double 4, string "five", blob [6, 7], midi (8, 9, 10, 11)]showMessage (Just 4) aMessage/"/addr ,ihfdsbm 1 2 3.0 4.0 five 0607 08090a0b"let aMessageSeq = [Message "/c_set" [Int32 1, Float 2.3], Message "/s_new" [string "sine", Int32 (-1), Int32 1, Int32 1]]&map (showMessage (Just 4)) aMessageSeq/["/c_set ,if 1 2.3","/s_new ,siii sine -1 1 1"]hoscPrinter for Bundlelet aBundle = Bundle 1 [Message "/c_set" [Int32 1, Float 2.3, Int64 4, Double 5.6], Message "/memset" [string "addr", blob [7, 8]]]showBundle (Just 4) aBundle"#bundle 4294967296 2 /c_set ,ifhd 1 2.3 4 5.6 /memset ,sb addr 0708"hoscPrinter for Packet.hosc$Run p then q, returning result of p.hoscp4 as lexeme, i.e. consuming any trailing white space.hosc.Any non-space character. Allow escaped space.hoscParser for string.hoscParser for Osc address.hoscParser for Osc signature.hoscParser for decimal digit.hosc Parser for non-negative integer.hoscParser for integer.hoscParser for non-negative float.hoscParser for non-negative float.hoscParser for hexadecimal digit.hosc Byte parser.hoscByte sequence parser.hosc Datum parser.hoscMessage parser.hoscBundle tag parser.hoscBundle parser.hoscPacket parser.hosc Run parser.hoscRun datum parser.!parseDatum 'i' "-1" == Int32 (-1)True%parseDatum 'f' "-2.3" == Float (-2.3)TruehoscRun message parser.let aMessageSeq = [Message "/c_set" [Int32 1, Float 2.3, Int64 4, Double 5.6], Message "/memset" [string "addr", blob [7, 8]]]map (parseMessage . showMessage (Just 4)) aMessageSeq == aMessageSeqTruehoscRun bundle parser.let aBundle = Bundle 1 [Message "/c_set" [Int32 1, Float 2.3, Int64 4, Double 5.6], Message "/memset" [string "addr", blob [7, 8]]]4parseBundle (showBundle (Just 4) aBundle) == aBundleTruehoscRun packet parser.let aPacket = Packet_Bundle (Bundle 1 [Message "/c_set" [Int32 1, Float 2.3, Int64 4, Double 5.6], Message "/memset" [string "addr", blob [7, 8]]])4parsePacket (showPacket (Just 4) aPacket) == aPacketTrue""  Safe-InferredGhosc*Generate a list of zero bytes for padding.hosc#Nul byte (0) and then zero padding.hoscBuilder for an Osc .hoscEncode an Osc .hoscEncode an Osc , ie.  of .8let m = [47,103,95,102,114,101,101,0,44,105,0,0,0,0,0,0]7encodeMessage (Message "/g_free" [Int32 0]) == L.pack mTruehoscEncode an Osc , ie.  of .8let m = [47,103,95,102,114,101,101,0,44,105,0,0,0,0,0,0]let b = [35,98,117,110,100,108,101,0,0,0,0,0,0,0,0,1,0,0,0,16] ++ mencodeBundle (Bundle immediately [Message "/g_free" [Int32 0]]) == L.pack bTruehoscEncode an Osc  to a strict .  Safe-InferredMhoscAlign byte string, if required.hosc Encode Osc h.MidiData: Bytes from MSB to LSB are: port id, status byte, data1, data2.encode_datum (blob [1, 2, 3, 4]) == B.pack [0, 0, 0, 4, 1, 2, 3, 4]True0encode_datum (Float 1) == B.pack [63, 128, 0, 0]True.encode_datum (Float 2) == B.pack [64, 0, 0, 0]True/encode_datum (Float 3) == B.pack [64, 64, 0, 0]True0encode_datum (Float 4) == B.pack [64, 128, 0, 0]True0encode_datum (Float 5) == B.pack [64, 160, 0, 0]True1encode_datum (Int32 65536) == B.pack [0, 1, 0, 0]True8encode_datum (Int32 (-65536)) == B.pack [255, 255, 0, 0]Truehosc Encode Osc .-blob_unpack (encodeMessage (Message "/x" []))[47,120,0,0,44,0,0,0]8blob_unpack (encodeMessage (Message "/y" [float 3.141]))"[47,121,0,0,44,102,0,0,64,73,6,37]let m = Message "/n_set" [int32 (-1), string "freq", float 440, string "amp", float 0.1]%let e = blob_unpack (encodeMessage m)length e40 take 20 e[47,110,95,115,101,116,0,0,44,105,115,102,115,102,0,0,255,255,255,255]hosc Encode Osc  as an Osc blob.hosc Encode Osc .blob_unpack (encodeBundle (Bundle immediately [Message "/x" []]))[35,98,117,110,100,108,101,0,0,0,0,0,0,0,0,1,0,0,0,8,47,120,0,0,44,0,0,0]let m = Message "/n_set" [int32 (-1), string "freq", float 440, string "amp", float 0.1]let b = Bundle 0.0 [m]$let e = blob_unpack (encodeBundle b)length e60  > take 20 e 435,98,117,110,100,108,101,0,0,0,0,0,0,0,0,0,0,0,0,40hosc Encode Osc .  Safe-InferredRhoscGet an aligned Osc string.hoscGet an aligned Osc string.hosc'Get binary data prefixed by byte count.hoscGet an Osc datum.hosc Get an Osc %, fail if type descriptor is invalid.hoscGet a sequence of Osc !s, each one headed by its length.hosc;Get a bundle. Fail if bundle header is not found in packet.hosc Get an Osc .hoscDecode an Osc  from a lazy ByteString.let b = ByteString.Lazy.pack [47,103,95,102,114,101,101,0,44,105,0,0,0,0,0,0].decodeMessage b == Message "/g_free" [Int32 0]TruehoscDecode an Osc  from a lazy ByteString.hosc!Run decoder and report any error.hosc,Decode an Osc packet from a lazy ByteString.let b = ByteString.Lazy.pack [47,103,95,102,114,101,101,0,44,105,0,0,0,0,0,0]>decodePacket b == Packet_Message (Message "/g_free" [Int32 0])Truehosc4Decode an Osc packet from a strict Char8 ByteString.hoscEither decode Osc message or return an error message. Prevents application halt for non-valid messagebundlepacket arrives.(let b = ByteString.Lazy.pack [1,2,3,2,1]decodePacketOr bLeft "not enough bytes"  Safe-InferredU| hosc%The plain byte count of an Osc value.hosc1The storage byte count (aligned) of an Osc value.hoscDecode an Osc datumhosc>Decode a sequence of Osc datum given a type descriptor string.hoscDecode an Osc .hosc:Decode a sequence of length prefixed (Int32) Osc messages.hoscDecode an Osc .hoscDecode an Osc .?let b = B.pack [47,103,95,102,114,101,101,0,44,105,0,0,0,0,0,0]>decodePacket b == Packet_Message (Message "/g_free" [Int32 0])Truehosc with  count.hosc with  count.  Safe-InferredVhoscGet the system time, epoch start of 1970 UTC, leap-seconds ignored. getSystemTime is typically much faster than getCurrentTime, however it is not available in Hugs.hoscSystem time with fractional part in microseconds (us) instead of nanoseconds (ns). Safe-InferredYShoscThe  pauseThread limit (in seconds). Values larger than this require a different thread delay mechanism, see  sleepThread/. The value is the number of microseconds in  maxBound::Int.hoscPause current thread for the indicated duration (in seconds), see .hosc/Pause current thread until the given time, see .hoscSleep current thread for the indicated duration (in seconds). Divides long sleeps into parts smaller than .hoscSleep current thread until the given time. Divides long sleeps into parts smaller than . Safe-InferredY Safe-InferredZxhoscRepeat action until predicate f is  when applied to result.hoscRepeat action until f does not give  when applied to result. Safe-Inferred^hosc0Abstract over the underlying transport protocol.hoscEncode and send an Osc packet.hosc!Receive and decode an Osc packet.hosc(Receive and either decode an Osc packet.hoscClose an existing connection.hoscBracket Osc communication.hosc of .hosc of .hosc Variant of  that runs .hosc Variant of  that runs .hoscErroring variant.hosc Variant of  that runs .hosc Wait for a ! where the supplied predicate is !, discarding intervening packets.hosc Wait for a + where the supplied function does not give !, discarding intervening packets.hosc .hosc , ie. an incoming  or immediate mode  with one element.hoscA  for variant using  to match on the  of incoming Packets.hosc Variant on  that returns matching .hosc Variant of  that runs . Safe-Inferrede>hoscTransport connection.hosc is  with a  constraint.hosc is the union of  and .hoscReceiver monad.hosc!Receive and decode an Osc packet.hosc Sender monad.hoscEncode and send an Osc packet.hosc)Bracket Open Sound Control communication.hosc of .hoscType restricted synonym for sendOsc.hoscType restricted synonym for sendOsc.hosc Variant of  that runs packet_to_bundle.hosc Variant of  that runs packet_to_message.hoscErroring variant.hosc Variant of  that runs packetMessages.hosc Wait for a Packet! where the supplied predicate is !, discarding intervening packets.hosc Wait for a Packet+ where the supplied function does not give !, discarding intervening packets.hosc packet_is_immediate.hosc packet_to_message, ie. an incoming Message or immediate mode Bundle with one element.hoscA  for variant using packet_has_address to match on the Address_Pattern of incoming Packets.hosc Variant on  that returns matching Message.hosc Variant of  that runs  messageDatum.hosc over ReaderT.hosc over ReaderT.hosc over ReaderT.hosc over ReaderT. Safe-Inferredihosc#The Udp transport handle data type.hosc6Return the port number associated with the Udp socket.hoscSend data over Udp using .hoscSend data over Udp using .hoscSend packet over Udp.hoscReceive packet over Udp.hosc Close Udp.hoscBracket Udp communication.hosc!Create and initialise Udp socket.hoscSet option, ie.  or .hosc Get option.hoscMake a  connection.hoscTrivial  server socket. import Control.Concurrent let u0 = udpServer "127.0.0.1" 57300 t0 <- forkIO (Fd.withTransport u0 (\fd -> forever (Fd.recvMessage fd >>= print >> print "Received message, continuing"))) killThread t0 let u1 = openUdp "127.0.0.1" 57300 Fd.withTransport u1 (\fd -> Fd.sendMessage fd (Packet.message "/n" []))hosc Variant of ' that doesn't require the host address.hosc-Send to specified address using 'C.sendAllTo.hosc/Recv variant to collect message source address.hosc is an instance of . Safe-Inferredm~ hosc#The Tcp transport handle data type.hoscSend data over Tcp.hoscSend packet over Tcp.hoscReceive packet over Tcp.hosc Close Tcp.hoscBracket Tcp communication.hosc!Create and initialise Tcp socket.hoscConvert  to .hoscCreate and initialise Tcp.hoscMake a  connection. import Sound.Osc.Datum import Sound.Osc.Time let t = openTcp "127.0.0.1" 57110 let m1 = Packet.message "/dumpOsc" [Int32 1] let m2 = Packet.message "/g_new" [Int32 1] Fd.withTransport t (\fd -> let f = Fd.sendMessage fd in f m1 >> pauseThread 0.25 >> f m2)hosc connection at s and run f.hosc A trivial  Osc server.hosc is an instance of  Transport. Safe-InferrednhoscSockethoscSocket addresshosc Port numberhoscHostnamehoscProtocol, either Udp or TcphoscOpen socket at addresshosc is an instance of .   Safe-Inferredohosc Variant of + where time is given in fractional seconds.hosc Variant of  that implements an n second . Safe-Inferredohklijnmopqrstuvwxy~}|z{ Safe-Inferredphklijnmopqrstuvwxy~}|z{ Safe-Inferredrhklijnmopqrstuvwxy~}|z{hklijnmopqrstuvwxy~}|z{ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                          hosc-0.21-CFrMfHYvo4iDyGbioQvax5 Sound.OscSound.Osc.Coding.ConvertSound.Osc.Coding.ByteSound.Osc.Coding.CastSound.Osc.DatumSound.Osc.PacketSound.Osc.TimeSound.Osc.TextSound.Osc.Coding.Encode.BuilderSound.Osc.Coding.Encode.BaseSound.Osc.Coding.Decode.BinarySound.Osc.Coding.Decode.BaseSound.Osc.Time.SystemSound.Osc.Time.ThreadSound.Osc.Time.Thread.MonadIOSound.Osc.WaitSound.Osc.Transport.FdSound.Osc.Transport.MonadSound.Osc.Transport.Fd.UdpSound.Osc.Transport.Fd.TcpSound.Osc.Transport.Fd.SocketSound.Osc.Time.TimeouthoscSound.Osc.Core Sound.Osc.FdbaseControl.Monad.IO.ClassMonadIOliftIO int_to_word8 int_to_word32 int_to_word16 int_to_int8 int_to_int16 int_to_int32 int_to_int64 int8_to_int int16_to_int int32_to_int int64_to_int word8_to_int word16_to_int word32_to_intword16_to_word32word32_to_word16word32_to_int32word32_to_int64word64_to_int64int64_to_int32int64_to_word32word64_to_double word8_to_enumword16_to_enum enum_to_word8enum_to_word16 word8_to_char char_to_word8 encode_int8 encode_int16encode_int16_le encode_int64 encode_word8 encode_word16encode_word16_le encode_word32encode_word32_le encode_word64 encode_i8 encode_u8 encode_u16 encode_u16_le encode_i16 encode_i32 encode_u32 encode_u32_le encode_f32 encode_f32_le encode_f64 encode_f64_le encode_ascii decode_word16decode_word16_le decode_int16 decode_word32decode_word32_le decode_int64 decode_word64 decode_u8 decode_i8 decode_u16 decode_u16_le decode_i16 decode_i16_le decode_i32 decode_i32_le decode_u32 decode_u32_le decode_f32 decode_f32_le decode_f64 decode_ascii read_decode read_word32read_word32_le write_word32write_word32_leread_i8read_i16read_i32 read_i32_leread_u32 read_u32_le write_u32 write_u32_leread_f32 read_f32_le read_pstrbundleHeader_strict bundleHeaderalignisLittleEndianbyteStringSwap32BitWordsbyteString32BitNetworkOrderf32_w32w32_f32f64_w64w64_f64str_cstrcstr_strstr_pstrpstr_strDatumInt32Int64FloatDouble AsciiStringBlob TimeStampMidid_int32d_int64d_floatd_doubled_ascii_stringd_blob d_timestampd_midiTimeMidiDataAscii DatumTypeasciiascii_to_string blob_pack blob_pack_int blob_unpackblob_unpack_int midi_pack midi_pack_intmidi_unpack_intosc_types_requiredosc_types_optional osc_types osc_type_nameosc_type_name_err datum_tagdatum_type_namedatum_integraldatum_floatingint32int64floatdoublestringmidiblob signatureFor descriptordescriptor_tags $fOrdDatum $fEqDatum $fReadDatum $fShowDatum $fOrdMidiData $fEqMidiData$fShowMidiData$fReadMidiDataPacketPacketOfPacket_Message Packet_Bundle packetMessage packetBundleBundleBundleOf bundleTimebundleMessagesMessagemessageAddress messageDatumAddress_PatternmessagemessageSignaturemessageDescriptorbundlep_bundle p_message immediately packetTimepacketMessagespacket_to_bundlepacket_to_messagepacket_is_immediate at_packetmessage_has_addressbundle_has_addresspacket_has_address $fOrdBundleOf $fEqPacketOf$fReadPacketOf$fShowPacketOf $fEqBundleOf$fReadBundleOf$fShowBundleOf $fOrdMessage $fEqMessage $fReadMessage $fShowMessage PosixRealNtpRealNtp64 ntpr_to_ntpi ntpi_to_ntprntp_posix_epoch_diff posix_to_ntpi posix_to_ntpr ntpr_to_posix ntpi_to_posixntpr_to_posixtimeposixtime_to_ntpr posix_epoch utc_to_posixgetCurrentTimeAsPosixgetPosixTimeAsPosix currentTimeP FpPrecisionshowFloatWithPrecision showBytes escapeString showDatum showMessage showBundle showPacket>>~lexemeP stringCharPstringP oscAddressP oscSignaturePdigitPallowNegativePnonNegativeIntegerPintegerPnonNegativeFloatPfloatP hexdigitPbytePbyteSeqPdatumPmessageP bundleTagPbundlePpacketPrunP parseDatum parseMessage parseBundle parsePacket build_packet encodePacket encodeMessage encodeBundleencodePacket_strictextend encode_datumencode_message_blob get_packet decodeMessage decodeBundle decodePacketdecodePacket_strictdecodeMessageOrdecodeBundleOrdecodePacketOrgetSystemTimeAsNtpRealgetSystemTimeInMicrosecondspauseThreadLimitpauseThreadForpauseThreadUntilTimesleepThreadForsleepThreadUntilTimetime pauseThreadwaitpauseThreadUntil sleepThreadsleepThreadUntiluntilPredicate untilMaybe Transport sendPacket recvPacket recvPacketOrclose withTransport sendMessage sendBundle recvBundle recvMessagerecvMessage_err recvMessages waitUntilwaitFor waitImmediate waitMessage waitAddress waitReply waitDatum Connection DuplexOscRecvOscSendOscwithTransport_$fSendOscReaderT$fRecvOscReaderT$fDuplexOscReaderT$fTransportReaderTUdp udpSocketudpPort udp_send_dataudp_sendAll_dataudp_send_packetudp_recv_packetudp_recv_packet_or udp_closewith_udp udp_socket set_udp_opt get_udp_optopenUdp udpServer udp_serversendTorecvFrom$fTransportUdpTcp tcpHandle tcp_send_datatcp_send_packettcp_recv_packettcp_recv_packet_or tcp_closewith_tcp tcp_socket socket_to_tcp tcp_handleopenTcp tcp_server_f tcp_server$fTransportTcp OscSocket OscUdpSocket OscTcpSocketOscSocketAddressOscPort OscHostname OscProtocol openOscSocket$fTransportOscSocket$fEqOscProtocol$fReadOscProtocol$fShowOscProtocol timeout_rrecvPacketTimeoutGHC.Real fromIntegralGHC.EnumtoEnumfromEnumbinary-0.8.9.1 Data.Binaryencodedecodebytestring-0.11.5.2Data.ByteString.LazyhPuthGetData.ByteString.Internal.Type ByteStringGHC.WordWord8Integral GHC.FloatFloatingGHC.Base.GHC.Errerrorid GHC.MaybeNothing Data.Eithereither time-1.12.2"Data.Time.Clock.Internal.POSIXTime POSIXTime Data.Time.Clock.Internal.UTCTimeUTCTimeNumeric showFFloatpaddingnul_and_padding get_string get_ascii get_bytes get_datum get_messageget_message_seq get_bundle runDecodersizestorage decode_datumdecode_datum_seqdecode_message_seqb_taketakeghc-prim GHC.TypesIntb_dropdropTrue Data.Functorvoid&network-3.2.7.0-AmdlM1SgMLbB028zdeDbX6Network.Socket.ByteString.IOsendsendAllNetwork.Socket.Options Broadcast RecvTimeOutNetwork.Socket.TypesSocketNetwork.Socket.SockAddracceptSystem.Timeouttimeout