hsc3-0.3: Sound/SC3/Server/NRT.hs
module Sound.SC3.Server.NRT ( encodeNRT
, writeNRT ) where
import qualified Data.ByteString.Lazy as B
import Sound.OpenSoundControl
-- | Encode and prefix with encoded length.
oscWithSize :: OSC -> B.ByteString
oscWithSize o = B.append l b
where b = encodeOSCNTP o
l = encode_i32 (fromIntegral (B.length b))
-- | Encode a list of OSC bundles as an NRT score.
encodeNRT :: [OSC] -> B.ByteString
encodeNRT s = B.concat (map oscWithSize s)
-- | Write an list of OSC bundles as an NRT score.
writeNRT :: FilePath -> [OSC] -> IO ()
writeNRT fn s = B.writeFile fn (encodeNRT s)