-- |
-- Module      :  DobutokO.Sound.ToRange
-- Copyright   :  (c) OleksandrZhabenko 2020
-- License     :  MIT
-- Stability   :  Experimental
-- Maintainer  :  olexandr543@yahoo.com
--
-- Helps to create experimental music. 
-- Auxiliary module to re-position the number to the needed range.
-- 

{-# OPTIONS_GHC -threaded #-}

module DobutokO.Sound.ToRange where

toRange :: Float -> Float -> Float
toRange :: Float -> Float -> Float
toRange Float
range Float
x 
 | Float
range Float -> Float -> Bool
forall a. Eq a => a -> a -> Bool
/= Float
0.0 = (Float
x Float -> Float -> Float
forall a. Fractional a => a -> a -> a
/ Float
range Float -> Float -> Float
forall a. Num a => a -> a -> a
- Integer -> Float
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Float -> Integer
forall a b. (RealFrac a, Integral b) => a -> b
truncate (Float
x Float -> Float -> Float
forall a. Fractional a => a -> a -> a
/ Float
range))) Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
range
 | Bool
otherwise = [Char] -> Float
forall a. HasCallStack => [Char] -> a
error [Char]
"DobutokO.Sound.ToRange.toRange: Zero range. "