vivid 0.2.0.2 → 0.2.0.3
raw patch · 2 files changed
+45/−1 lines, 2 filesdep ~base
Dependency ranges changed: base
Files
- Vivid/OSC/Util.hs +43/−0
- vivid.cabal +2/−1
+ Vivid/OSC/Util.hs view
@@ -0,0 +1,43 @@+{-# OPTIONS_HADDOCK show-extensions #-}++{-# LANGUAGE NoRebindableSyntax #-}+{-# LANGUAGE NoIncoherentInstances #-}+{-# LANGUAGE NoMonomorphismRestriction #-}+{-# LANGUAGE NoUndecidableInstances #-}++module Vivid.OSC.Util (+ align+ , floatToWord+ , wordToFloat+ , doubleToWord+ , wordToDouble+ ) where++import Data.Bits ((.&.), complement, Bits)+import qualified Foreign as F+import System.IO.Unsafe (unsafePerformIO)++-- from hosc:+align :: (Num i,Bits i) => i -> i+{-# INLINE align #-}+align n = ((n + 3) .&. complement 3) - n+++-- from data-binary-ieee754:+floatToWord :: Float -> F.Word32+floatToWord = coercionThing++wordToFloat :: F.Word32 -> Float+wordToFloat = coercionThing++doubleToWord :: Double -> F.Word64+doubleToWord = coercionThing++wordToDouble :: F.Word64 -> Double+wordToDouble = coercionThing+++coercionThing :: (F.Storable a, F.Storable b) => a -> b+coercionThing x = unsafePerformIO $ F.alloca $ \buf -> do+ F.poke (F.castPtr buf) x+ F.peek buf
vivid.cabal view
@@ -1,5 +1,5 @@ name: vivid-version: 0.2.0.2+version: 0.2.0.3 synopsis: Sound synthesis with SuperCollider description: Music and sound synthesis with SuperCollider.@@ -60,6 +60,7 @@ , Vivid.Envelopes , Vivid.NoPlugins , Vivid.OSC+ , Vivid.OSC.Util , Vivid.Randomness , Vivid.SCServer , Vivid.SCServer.Connection