-- | 'V.Vector' variants of "Sound.SC3.Common.Buffer". module Sound.SC3.Common.Buffer.Vector where import qualified Data.Vector as V {- vector -} import qualified Sound.SC3.Common.Buffer as C {- hsc3 -} -- | 'C.clipAt'. clipAt :: Int -> V.Vector a -> a clipAt ix c = let r = V.length c f = (V.!) c in if ix > r - 1 then f (r - 1) else f ix -- | 'C.blendAtBy' of 'clipAt'. -- -- > blendAt 0 (V.fromList [2,5,6]) == 2 -- > blendAt 0.4 (V.fromList [2,5,6]) == 3.2 -- > blendAt 2.1 (V.fromList [2,5,6]) == 6 blendAt :: RealFrac a => a -> V.Vector a -> a blendAt = C.blendAtBy clipAt -- | 'C.resamp1'. -- -- > resamp1 12 (V.fromList [1,2,3,4]) -- > resamp1 3 (V.fromList [1,2,3,4]) == V.fromList [1,2.5,4] resamp1 :: RealFrac n => Int -> V.Vector n -> V.Vector n resamp1 n c = let gen = C.resamp1_gen n (V.length c) clipAt c in V.generate n gen