module Sound.File.Encode (interleave,encode) where
import qualified Data.ByteString.Lazy as B
import Data.List
import Sound.OSC.Coding.Byte
import Sound.File.Encoding
interleave :: [[a]] -> [a]
interleave = concat . transpose
encodef32 :: (Real n,Floating n) => [[n]] -> B.ByteString
encodef32 = B.concat . map (encode_f32 . realToFrac) . interleave
encodef64 :: (Real n,Floating n) => [[n]] -> B.ByteString
encodef64 = B.concat . map (encode_f64 . realToFrac) . interleave
encode :: (Real n,Floating n) => Encoding -> [[n]] -> B.ByteString
encode enc d =
case enc of
Float -> encodef32 d
Double -> encodef64 d
_ -> error "hsc3-sf: encode"