{-# OPTIONS_GHC -threaded #-}
module Composition.Sound.Complex (
testSoundGen2G
, soundGen3G
, soundGen3G_O
, soundGen3G_O2
, soundGen3G_O2G
, testSoundGen2GMN
, soundGen3GMN
, soundGen3G_OMN
, soundGen3G_O2MN
, soundGen3G_O2GMN
, h1
, h2
, soundGen3G_OPar
, soundGen3G_O2Par
, soundGen3G_O2GPar
, soundGen3G_OMNPar
, soundGen3G_O2MNPar
, soundGen3G_O2GMNPar
, h2Params
) where
import Numeric
import Data.Maybe (fromJust,fromMaybe)
import GHC.Arr
import System.Process
import EndOfExe
import System.Directory
import GHC.Int (Int64)
import Composition.Sound.Keyboard
import Composition.Sound.Functional.Params
import Composition.Sound.Functional.Basics
import Composition.Sound.Functional.Elements
testSoundGen2G :: FilePath -> Float -> String -> IO ()
testSoundGen2G :: FilePath -> Float -> FilePath -> IO ()
testSoundGen2G = Int64 -> Int64 -> FilePath -> Float -> FilePath -> IO ()
testSoundGen2GMN (-Int64
1) (-Int64
1)
{-# INLINE testSoundGen2G #-}
testSoundGen2GMN :: Int64 -> Int64 -> FilePath -> Float -> String -> IO ()
testSoundGen2GMN :: Int64 -> Int64 -> FilePath -> Float -> FilePath -> IO ()
testSoundGen2GMN Int64
m Int64
n1 FilePath
file Float
y FilePath
zs = do
[(Int, Int)]
vecA0 <- ([Int] -> [(Int, Int)]) -> IO [Int] -> IO [(Int, Int)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((Int -> (Int, Int)) -> [Int] -> [(Int, Int)]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> Int -> (Int, Int)
forall a. Integral a => a -> a -> (a, a)
`quotRem` Int
108)) ((if Int64
m Int64 -> Int64 -> Bool
forall a. Eq a => a -> a -> Bool
== (-Int64
1) Bool -> Bool -> Bool
&& Int64
n1 Int64 -> Int64 -> Bool
forall a. Eq a => a -> a -> Bool
== (-Int64
1) then FilePath -> IO [Int]
readFileDoubles else Int64 -> Int64 -> FilePath -> IO [Int]
readFileDoublesMN Int64
m Int64
n1) FilePath
file)
let n :: Int
n = [(Int, Int)] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [(Int, Int)]
vecA0
arr0 :: Array Int (Int, Int)
arr0 = (\[(Int, Int)]
rs -> (Int, Int) -> [(Int, Int)] -> Array Int (Int, Int)
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,[(Int, Int)] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [(Int, Int)]
rs Int -> Int -> Int
forall a. Num a => a -> a -> a
-Int
1) [(Int, Int)]
rs) [(Int, Int)]
vecA0
freq0 :: Int -> Float
freq0 Int
j = Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes ((Int, Int) -> Int
forall a b. (a, b) -> b
snd ((Int, Int) -> Int) -> (Int -> (Int, Int)) -> Int -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Array Int (Int, Int) -> Int -> (Int, Int)
forall i e. Array i e -> Int -> e
unsafeAt Array Int (Int, Int)
arr0 (Int -> Int) -> Int -> Int
forall a b. (a -> b) -> a -> b
$ Int
j Int -> Int -> Int
forall a. Integral a => a -> a -> a
`rem` Int
n)
f0 :: a -> [(a, b)]
f0 a
t = [(a
0.05763181818181818 a -> a -> a
forall a. Num a => a -> a -> a
* a
t, b
0.3598),(a
1.112159090909091 a -> a -> a
forall a. Num a => a -> a -> a
* a
t, b
0.4588962),(a
2 a -> a -> a
forall a. Num a => a -> a -> a
* a
t, b
0.6853),(a
3 a -> a -> a
forall a. Num a => a -> a -> a
* a
t, b
0.268),(a
4 a -> a -> a
forall a. Num a => a -> a -> a
* a
t, b
0.6823),(a
5 a -> a -> a
forall a. Num a => a -> a -> a
* a
t, b
0.53)]
fA1 :: Int -> Float -> OvertonesO
fA1 Int
j = (Float, Float)
-> (Float -> OvertonesO)
-> ((Float, Float) -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> Float
-> OvertonesO
fAddFElem (Int -> Float
freq0 (Int
j Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1),Float
0.5) Float -> OvertonesO
forall a b. (Fractional a, Fractional b) => a -> [(a, b)]
f0 (Float, Float) -> Float -> (Float -> OvertonesO) -> OvertonesO
gAdd04
fR1 :: Int -> Float -> OvertonesO
fR1 Int
j = (Float, Float)
-> (Float -> OvertonesO)
-> ((Float, Float) -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> Float
-> OvertonesO
fRemoveFElem (Int -> Float
freq0 (Int
j Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1),Float
0.5) Float -> OvertonesO
forall a b. (Fractional a, Fractional b) => a -> [(a, b)]
f0 (Float, Float) -> Float -> (Float -> OvertonesO) -> OvertonesO
gRem03
vecB :: [(Float, Float -> OvertonesO)]
vecB = ((Int, (Int, Int)) -> (Float, Float -> OvertonesO))
-> [(Int, (Int, Int))] -> [(Float, Float -> OvertonesO)]
forall a b. (a -> b) -> [a] -> [b]
map (\(Int
j, (Int, Int)
r) -> (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes ((Int, Int) -> Int
forall a b. (a, b) -> b
snd (Int, Int)
r),
case (Int, Int) -> Int
forall a b. (a, b) -> a
fst (Int, Int)
r of
Int
0 -> Float -> OvertonesO
forall a b. (Fractional a, Fractional b) => a -> [(a, b)]
f0
Int
1 -> Int -> Float -> OvertonesO
fA1 Int
j
Int
2 -> Int -> Float -> OvertonesO
fA1 Int
j
Int
3 -> Int -> Float -> OvertonesO
fA1 Int
j
Int
4 -> Int -> Float -> OvertonesO
fA1 Int
j
Int
_ -> Int -> Float -> OvertonesO
fR1 Int
j)) ([(Int, (Int, Int))] -> [(Float, Float -> OvertonesO)])
-> ([(Int, Int)] -> [(Int, (Int, Int))])
-> [(Int, Int)]
-> [(Float, Float -> OvertonesO)]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Int] -> [(Int, Int)] -> [(Int, (Int, Int))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Int
0..] ([(Int, Int)] -> [(Float, Float -> OvertonesO)])
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)]
forall a b. (a -> b) -> a -> b
$ [(Int, Int)]
vecA0
v2 :: Array Int Float
v2 = Int -> FilePath -> Float -> Array Int Float
str2DurationsDef Int
n FilePath
zs Float
y
l2 :: Int
l2 = Array Int Float -> Int
forall i e. Array i e -> Int
numElements Array Int Float
v2
zeroN :: Int
zeroN = [(Float, Float -> OvertonesO)] -> Int
forall a. [a] -> Int
numVZeroesPre [(Float, Float -> OvertonesO)]
vecB in ((Int, (Float, Float -> OvertonesO)) -> IO ())
-> [(Int, (Float, Float -> OvertonesO))] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (\(Int
j, (Float
x,Float -> OvertonesO
k)) -> do
(Float -> OvertonesO) -> (Float, Float) -> IO ()
h1 (\Float
_ -> Float -> OvertonesO
k (Float
1.1 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Int -> Float
freq0 Int
j)) (Float
x, (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
v2 (Int
j Int -> Int -> Int
forall a. Integral a => a -> a -> a
`rem` Int
l2)))
FilePath -> FilePath -> IO ()
renameFile (FilePath
"result.wav") (FilePath -> IO ()) -> FilePath -> IO ()
forall a b. (a -> b) -> a -> b
$ FilePath
"result0" FilePath -> FilePath -> FilePath
forall a. [a] -> [a] -> [a]
++ Int -> FilePath -> FilePath
prependZeroes Int
zeroN (Int -> FilePath
forall a. Show a => a -> FilePath
show (Int
j Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1)) FilePath -> FilePath -> FilePath
forall a. [a] -> [a] -> [a]
++ FilePath
".wav") ([(Int, (Float, Float -> OvertonesO))] -> IO ())
-> ([(Float, Float -> OvertonesO)]
-> [(Int, (Float, Float -> OvertonesO))])
-> [(Float, Float -> OvertonesO)]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Int]
-> [(Float, Float -> OvertonesO)]
-> [(Int, (Float, Float -> OvertonesO))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Int
0..] ([(Float, Float -> OvertonesO)] -> IO ())
-> [(Float, Float -> OvertonesO)] -> IO ()
forall a b. (a -> b) -> a -> b
$ [(Float, Float -> OvertonesO)]
vecB
IO ()
endFromResult
soundGen3G :: FilePath -> Float -> String -> ((Float,Float) -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> ((Float,Float) -> Float -> (Float -> OvertonesO) -> OvertonesO) -> (Float -> OvertonesO) -> IO ()
soundGen3G :: FilePath
-> Float
-> FilePath
-> ((Float, Float) -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> ((Float, Float) -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (Float -> OvertonesO)
-> IO ()
soundGen3G = Int64
-> Int64
-> FilePath
-> Float
-> FilePath
-> ((Float, Float) -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> ((Float, Float) -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (Float -> OvertonesO)
-> IO ()
soundGen3GMN (-Int64
1) (-Int64
1)
{-# INLINE soundGen3G #-}
soundGen3GMN :: Int64 -> Int64 -> FilePath -> Float -> String -> ((Float,Float) -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> ((Float,Float) -> Float -> (Float -> OvertonesO) -> OvertonesO) -> (Float -> OvertonesO) -> IO ()
soundGen3GMN :: Int64
-> Int64
-> FilePath
-> Float
-> FilePath
-> ((Float, Float) -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> ((Float, Float) -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (Float -> OvertonesO)
-> IO ()
soundGen3GMN Int64
m Int64
n1 FilePath
file Float
y FilePath
zs (Float, Float) -> Float -> (Float -> OvertonesO) -> OvertonesO
gAdd (Float, Float) -> Float -> (Float -> OvertonesO) -> OvertonesO
gRem Float -> OvertonesO
f0 = do
[(Int, Int)]
vecA0 <- ([Int] -> [(Int, Int)]) -> IO [Int] -> IO [(Int, Int)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((Int -> (Int, Int)) -> [Int] -> [(Int, Int)]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> Int -> (Int, Int)
forall a. Integral a => a -> a -> (a, a)
`quotRem` Int
108)) ((if Int64
m Int64 -> Int64 -> Bool
forall a. Eq a => a -> a -> Bool
== (-Int64
1) Bool -> Bool -> Bool
&& Int64
n1 Int64 -> Int64 -> Bool
forall a. Eq a => a -> a -> Bool
== (-Int64
1) then FilePath -> IO [Int]
readFileDoubles else Int64 -> Int64 -> FilePath -> IO [Int]
readFileDoublesMN Int64
m Int64
n1) FilePath
file)
let arr2 :: Array Int (Int, Int)
arr2 = (\[(Int, Int)]
rs -> (Int, Int) -> [(Int, Int)] -> Array Int (Int, Int)
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,[(Int, Int)] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [(Int, Int)]
rs Int -> Int -> Int
forall a. Num a => a -> a -> a
-Int
1) [(Int, Int)]
rs) [(Int, Int)]
vecA0
n :: Int
n = Array Int (Int, Int) -> Int
forall i e. Array i e -> Int
numElements Array Int (Int, Int)
arr2
freq0 :: Int -> Float
freq0 Int
j = Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes ((Int, Int) -> Int
forall a b. (a, b) -> b
snd ((Int, Int) -> Int) -> (Int -> (Int, Int)) -> Int -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Array Int (Int, Int) -> Int -> (Int, Int)
forall i e. Array i e -> Int -> e
unsafeAt Array Int (Int, Int)
arr2 (Int -> Int) -> Int -> Int
forall a b. (a -> b) -> a -> b
$ Int
j Int -> Int -> Int
forall a. Integral a => a -> a -> a
`rem` Int
n)
fA1 :: Int -> Float -> OvertonesO
fA1 Int
j = (Float, Float)
-> (Float -> OvertonesO)
-> ((Float, Float) -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> Float
-> OvertonesO
fAddFElem (Int -> Float
freq0 (Int
j Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1),Float
0.5) Float -> OvertonesO
f0 (Float, Float) -> Float -> (Float -> OvertonesO) -> OvertonesO
gAdd
fR1 :: Int -> Float -> OvertonesO
fR1 Int
j = (Float, Float)
-> (Float -> OvertonesO)
-> ((Float, Float) -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> Float
-> OvertonesO
fRemoveFElem (Int -> Float
freq0 (Int
j Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1),Float
0.5) Float -> OvertonesO
f0 (Float, Float) -> Float -> (Float -> OvertonesO) -> OvertonesO
gRem
vecB :: [(Float, Float -> OvertonesO)]
vecB = ((Int, (Int, Int)) -> (Float, Float -> OvertonesO))
-> [(Int, (Int, Int))] -> [(Float, Float -> OvertonesO)]
forall a b. (a -> b) -> [a] -> [b]
map (\(Int
j, (Int, Int)
r) -> (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes ((Int, Int) -> Int
forall a b. (a, b) -> b
snd (Int, Int)
r),
case (Int, Int) -> Int
forall a b. (a, b) -> a
fst (Int, Int)
r of
Int
0 -> Float -> OvertonesO
f0
Int
1 -> Int -> Float -> OvertonesO
fA1 Int
j
Int
2 -> Int -> Float -> OvertonesO
fA1 Int
j
Int
3 -> Int -> Float -> OvertonesO
fA1 Int
j
Int
4 -> Int -> Float -> OvertonesO
fA1 Int
j
Int
_ -> Int -> Float -> OvertonesO
fR1 Int
j)) ([(Int, (Int, Int))] -> [(Float, Float -> OvertonesO)])
-> ([(Int, Int)] -> [(Int, (Int, Int))])
-> [(Int, Int)]
-> [(Float, Float -> OvertonesO)]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Int] -> [(Int, Int)] -> [(Int, (Int, Int))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Int
0..] ([(Int, Int)] -> [(Float, Float -> OvertonesO)])
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)]
forall a b. (a -> b) -> a -> b
$ [(Int, Int)]
vecA0
zeroN :: Int
zeroN = [(Float, Float -> OvertonesO)] -> Int
forall a. [a] -> Int
numVZeroesPre [(Float, Float -> OvertonesO)]
vecB
l2 :: Int
l2 = Array Int Float -> Int
forall i e. Array i e -> Int
numElements Array Int Float
v2
v2 :: Array Int Float
v2 = Int -> FilePath -> Float -> Array Int Float
str2DurationsDef Int
n FilePath
zs Float
y in ((Int, (Float, Float -> OvertonesO)) -> IO ())
-> [(Int, (Float, Float -> OvertonesO))] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (\(Int
j, (Float
x,Float -> OvertonesO
k)) -> do
(Float -> OvertonesO) -> (Float, Float) -> IO ()
h1 (\Float
_ -> Float -> OvertonesO
k (Float
1.1 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Int -> Float
freq0 Int
j)) (Float
x, (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
v2 (Int
j Int -> Int -> Int
forall a. Integral a => a -> a -> a
`rem` Int
l2)))
FilePath -> FilePath -> IO ()
renameFile (FilePath
"result.wav") (FilePath -> IO ()) -> FilePath -> IO ()
forall a b. (a -> b) -> a -> b
$ FilePath
"result0" FilePath -> FilePath -> FilePath
forall a. [a] -> [a] -> [a]
++ Int -> FilePath -> FilePath
prependZeroes Int
zeroN (Int -> FilePath
forall a. Show a => a -> FilePath
show (Int
j Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1)) FilePath -> FilePath -> FilePath
forall a. [a] -> [a] -> [a]
++ FilePath
".wav") ([(Int, (Float, Float -> OvertonesO))] -> IO ())
-> ([(Float, Float -> OvertonesO)]
-> [(Int, (Float, Float -> OvertonesO))])
-> [(Float, Float -> OvertonesO)]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Int]
-> [(Float, Float -> OvertonesO)]
-> [(Int, (Float, Float -> OvertonesO))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Int
0..] ([(Float, Float -> OvertonesO)] -> IO ())
-> [(Float, Float -> OvertonesO)] -> IO ()
forall a b. (a -> b) -> a -> b
$ [(Float, Float -> OvertonesO)]
vecB
IO ()
endFromResult
soundGen3G_O :: Int -> Int -> Float -> FilePath -> Float -> String -> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO) -> (Int -> OvertonesO) -> (OvertonesO -> OvertonesO) ->
(Float -> OvertonesO) -> IO ()
soundGen3G_O :: Int
-> Int
-> Float
-> FilePath
-> Float
-> FilePath
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (Int -> OvertonesO)
-> (OvertonesO -> OvertonesO)
-> (Float -> OvertonesO)
-> IO ()
soundGen3G_O = Int64
-> Int64
-> Int
-> Int
-> Float
-> FilePath
-> Float
-> FilePath
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (Int -> OvertonesO)
-> (OvertonesO -> OvertonesO)
-> (Float -> OvertonesO)
-> IO ()
soundGen3G_OMN (-Int64
1) (-Int64
1)
{-# INLINE soundGen3G_O #-}
soundGen3G_OPar :: Params -> Float -> FilePath -> Float -> String -> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO) -> (Int -> OvertonesO) -> (OvertonesO -> OvertonesO) ->
(Float -> OvertonesO) -> IO ()
soundGen3G_OPar :: Params
-> Float
-> FilePath
-> Float
-> FilePath
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (Int -> OvertonesO)
-> (OvertonesO -> OvertonesO)
-> (Float -> OvertonesO)
-> IO ()
soundGen3G_OPar = Int64
-> Int64
-> Params
-> Float
-> FilePath
-> Float
-> FilePath
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (Int -> OvertonesO)
-> (OvertonesO -> OvertonesO)
-> (Float -> OvertonesO)
-> IO ()
soundGen3G_OMNPar (-Int64
1) (-Int64
1)
{-# INLINE soundGen3G_OPar #-}
soundGen3G_OMN :: Int64 -> Int64 -> Int -> Int -> Float -> FilePath -> Float -> String -> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO) -> (Int -> OvertonesO) -> (OvertonesO -> OvertonesO) ->
(Float -> OvertonesO) -> IO ()
soundGen3G_OMN :: Int64
-> Int64
-> Int
-> Int
-> Float
-> FilePath
-> Float
-> FilePath
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (Int -> OvertonesO)
-> (OvertonesO -> OvertonesO)
-> (Float -> OvertonesO)
-> IO ()
soundGen3G_OMN Int64
m1 Int64
n1 Int
m Int
ku Float
freq1 FilePath
file Float
y FilePath
zs OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO
gAdds OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO
gRems Int -> OvertonesO
freq0 OvertonesO -> OvertonesO
proj Float -> OvertonesO
f0 = do
[(Int, Int)]
vecA0 <- ([Int] -> [(Int, Int)]) -> IO [Int] -> IO [(Int, Int)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((Int -> (Int, Int)) -> [Int] -> [(Int, Int)]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> Int -> (Int, Int)
forall a. Integral a => a -> a -> (a, a)
`quotRem` Int
108)) ((if Int64
m1 Int64 -> Int64 -> Bool
forall a. Eq a => a -> a -> Bool
== (-Int64
1) Bool -> Bool -> Bool
&& Int64
n1 Int64 -> Int64 -> Bool
forall a. Eq a => a -> a -> Bool
== (-Int64
1) then FilePath -> IO [Int]
readFileDoubles else Int64 -> Int64 -> FilePath -> IO [Int]
readFileDoublesMN Int64
m1 Int64
n1) FilePath
file)
let arr2 :: Array Int (Int, Int)
arr2 = (\[(Int, Int)]
rs -> (Int, Int) -> [(Int, Int)] -> Array Int (Int, Int)
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,[(Int, Int)] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [(Int, Int)]
rs Int -> Int -> Int
forall a. Num a => a -> a -> a
-Int
1) [(Int, Int)]
rs) [(Int, Int)]
vecA0
n :: Int
n = Array Int (Int, Int) -> Int
forall i e. Array i e -> Int
numElements Array Int (Int, Int)
arr2
fA1 :: Int -> Float -> OvertonesO
fA1 Int
j = OvertonesO
-> (Float -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> Float
-> OvertonesO
fAddFElems (OvertonesO -> OvertonesO
proj (OvertonesO -> OvertonesO)
-> (Int -> OvertonesO) -> Int -> OvertonesO
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> OvertonesO
freq0 (Int -> OvertonesO) -> Int -> OvertonesO
forall a b. (a -> b) -> a -> b
$ Int
j) Float -> OvertonesO
f0 OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO
gAdds
fR1 :: Int -> Float -> OvertonesO
fR1 Int
j = OvertonesO
-> (Float -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> Float
-> OvertonesO
fRemoveFElems (OvertonesO -> OvertonesO
proj (OvertonesO -> OvertonesO)
-> (Int -> OvertonesO) -> Int -> OvertonesO
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> OvertonesO
freq0 (Int -> OvertonesO) -> Int -> OvertonesO
forall a b. (a -> b) -> a -> b
$ Int
j) Float -> OvertonesO
f0 OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO
gRems
vecB :: [(Float, Float -> OvertonesO)]
vecB = ((Int, (Int, Int)) -> (Float, Float -> OvertonesO))
-> [(Int, (Int, Int))] -> [(Float, Float -> OvertonesO)]
forall a b. (a -> b) -> [a] -> [b]
map (\(Int
j, (Int, Int)
r) -> (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes ((Int, Int) -> Int
forall a b. (a, b) -> b
snd (Int, Int)
r),
case (Int, Int) -> Int
forall a b. (a, b) -> a
fst (Int, Int)
r of
Int
0 -> Float -> OvertonesO
f0
Int
1 -> Int -> Float -> OvertonesO
fA1 Int
j
Int
2 -> Int -> Float -> OvertonesO
fA1 Int
j
Int
3 -> Int -> Float -> OvertonesO
fA1 Int
j
Int
4 -> Int -> Float -> OvertonesO
fA1 Int
j
Int
_ -> Int -> Float -> OvertonesO
fR1 Int
j)) ([(Int, (Int, Int))] -> [(Float, Float -> OvertonesO)])
-> ([(Int, Int)] -> [(Int, (Int, Int))])
-> [(Int, Int)]
-> [(Float, Float -> OvertonesO)]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Int] -> [(Int, Int)] -> [(Int, (Int, Int))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Int
0..] ([(Int, Int)] -> [(Float, Float -> OvertonesO)])
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)]
forall a b. (a -> b) -> a -> b
$ [(Int, Int)]
vecA0
zeroN :: Int
zeroN = [(Float, Float -> OvertonesO)] -> Int
forall a. [a] -> Int
numVZeroesPre [(Float, Float -> OvertonesO)]
vecB
v2 :: Array Int Float
v2 = Int -> FilePath -> Float -> Array Int Float
str2DurationsDef Int
n FilePath
zs Float
y
l2 :: Int
l2 = Array Int Float -> Int
forall i e. Array i e -> Int
numElements Array Int Float
v2 in ((Int, (Float, Float -> OvertonesO)) -> IO ())
-> [(Int, (Float, Float -> OvertonesO))] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (\(Int
j, (Float
x,Float -> OvertonesO
k)) -> do
OvertonesO -> (Float, Float) -> Int -> Int -> Float -> IO ()
h2 (Float -> OvertonesO
k Float
x) (Float
x, (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
v2 (Int
j Int -> Int -> Int
forall a. Integral a => a -> a -> a
`rem` Int
l2))) Int
m Int
ku Float
freq1
FilePath -> FilePath -> IO ()
renameFile (FilePath
"result.wav") (FilePath -> IO ()) -> FilePath -> IO ()
forall a b. (a -> b) -> a -> b
$ FilePath
"result0" FilePath -> FilePath -> FilePath
forall a. [a] -> [a] -> [a]
++ Int -> FilePath -> FilePath
prependZeroes Int
zeroN (Int -> FilePath
forall a. Show a => a -> FilePath
show (Int
j Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1)) FilePath -> FilePath -> FilePath
forall a. [a] -> [a] -> [a]
++ FilePath
".wav") ([(Int, (Float, Float -> OvertonesO))] -> IO ())
-> ([(Float, Float -> OvertonesO)]
-> [(Int, (Float, Float -> OvertonesO))])
-> [(Float, Float -> OvertonesO)]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Int]
-> [(Float, Float -> OvertonesO)]
-> [(Int, (Float, Float -> OvertonesO))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Int
0..] ([(Float, Float -> OvertonesO)] -> IO ())
-> [(Float, Float -> OvertonesO)] -> IO ()
forall a b. (a -> b) -> a -> b
$ [(Float, Float -> OvertonesO)]
vecB
IO ()
endFromResult
soundGen3G_OMNPar :: Int64 -> Int64 -> Params -> Float -> FilePath -> Float -> String -> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO) -> (Int -> OvertonesO) -> (OvertonesO -> OvertonesO) ->
(Float -> OvertonesO) -> IO ()
soundGen3G_OMNPar :: Int64
-> Int64
-> Params
-> Float
-> FilePath
-> Float
-> FilePath
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (Int -> OvertonesO)
-> (OvertonesO -> OvertonesO)
-> (Float -> OvertonesO)
-> IO ()
soundGen3G_OMNPar Int64
m1 Int64
n1 Params
params Float
freq1 FilePath
file Float
y FilePath
zs OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO
gAdds OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO
gRems Int -> OvertonesO
freq0 OvertonesO -> OvertonesO
proj Float -> OvertonesO
f0 = do
[(Int, Int)]
vecA0 <- ([Int] -> [(Int, Int)]) -> IO [Int] -> IO [(Int, Int)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((Int -> (Int, Int)) -> [Int] -> [(Int, Int)]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> Int -> (Int, Int)
forall a. Integral a => a -> a -> (a, a)
`quotRem` Int
108)) ((if Int64
m1 Int64 -> Int64 -> Bool
forall a. Eq a => a -> a -> Bool
== (-Int64
1) Bool -> Bool -> Bool
&& Int64
n1 Int64 -> Int64 -> Bool
forall a. Eq a => a -> a -> Bool
== (-Int64
1) then FilePath -> IO [Int]
readFileDoubles else Int64 -> Int64 -> FilePath -> IO [Int]
readFileDoublesMN Int64
m1 Int64
n1) FilePath
file)
let arr2 :: Array Int (Int, Int)
arr2 = (\[(Int, Int)]
rs -> (Int, Int) -> [(Int, Int)] -> Array Int (Int, Int)
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,[(Int, Int)] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [(Int, Int)]
rs Int -> Int -> Int
forall a. Num a => a -> a -> a
-Int
1) [(Int, Int)]
rs) [(Int, Int)]
vecA0
n :: Int
n = Array Int (Int, Int) -> Int
forall i e. Array i e -> Int
numElements Array Int (Int, Int)
arr2
fA1 :: Int -> Float -> OvertonesO
fA1 Int
j = OvertonesO
-> (Float -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> Float
-> OvertonesO
fAddFElems (OvertonesO -> OvertonesO
proj (OvertonesO -> OvertonesO)
-> (Int -> OvertonesO) -> Int -> OvertonesO
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> OvertonesO
freq0 (Int -> OvertonesO) -> Int -> OvertonesO
forall a b. (a -> b) -> a -> b
$ Int
j) Float -> OvertonesO
f0 OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO
gAdds
fR1 :: Int -> Float -> OvertonesO
fR1 Int
j = OvertonesO
-> (Float -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> Float
-> OvertonesO
fRemoveFElems (OvertonesO -> OvertonesO
proj (OvertonesO -> OvertonesO)
-> (Int -> OvertonesO) -> Int -> OvertonesO
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> OvertonesO
freq0 (Int -> OvertonesO) -> Int -> OvertonesO
forall a b. (a -> b) -> a -> b
$ Int
j) Float -> OvertonesO
f0 OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO
gRems
vecB :: [(Float, Float -> OvertonesO)]
vecB = ((Int, (Int, Int)) -> (Float, Float -> OvertonesO))
-> [(Int, (Int, Int))] -> [(Float, Float -> OvertonesO)]
forall a b. (a -> b) -> [a] -> [b]
map (\(Int
j, (Int, Int)
r) -> (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes ((Int, Int) -> Int
forall a b. (a, b) -> b
snd (Int, Int)
r),
case (Int, Int) -> Int
forall a b. (a, b) -> a
fst (Int, Int)
r of
Int
0 -> Float -> OvertonesO
f0
Int
1 -> Int -> Float -> OvertonesO
fA1 Int
j
Int
2 -> Int -> Float -> OvertonesO
fA1 Int
j
Int
3 -> Int -> Float -> OvertonesO
fA1 Int
j
Int
4 -> Int -> Float -> OvertonesO
fA1 Int
j
Int
_ -> Int -> Float -> OvertonesO
fR1 Int
j)) ([(Int, (Int, Int))] -> [(Float, Float -> OvertonesO)])
-> ([(Int, Int)] -> [(Int, (Int, Int))])
-> [(Int, Int)]
-> [(Float, Float -> OvertonesO)]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Int] -> [(Int, Int)] -> [(Int, (Int, Int))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Int
0..] ([(Int, Int)] -> [(Float, Float -> OvertonesO)])
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)]
forall a b. (a -> b) -> a -> b
$ [(Int, Int)]
vecA0
zeroN :: Int
zeroN = [(Float, Float -> OvertonesO)] -> Int
forall a. [a] -> Int
numVZeroesPre [(Float, Float -> OvertonesO)]
vecB
v2 :: Array Int Float
v2 = Int -> FilePath -> Float -> Array Int Float
str2DurationsDef Int
n FilePath
zs Float
y
l2 :: Int
l2 = Array Int Float -> Int
forall i e. Array i e -> Int
numElements Array Int Float
v2 in ((Int, (Float, Float -> OvertonesO)) -> IO ())
-> [(Int, (Float, Float -> OvertonesO))] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (\(Int
j, (Float
x,Float -> OvertonesO
k)) -> do
OvertonesO -> (Float, Float) -> Params -> Float -> IO ()
h2Params (Float -> OvertonesO
k Float
x) (Float
x, (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
v2 (Int
j Int -> Int -> Int
forall a. Integral a => a -> a -> a
`rem` Int
l2))) Params
params Float
freq1
FilePath -> FilePath -> IO ()
renameFile (FilePath
"result.wav") (FilePath -> IO ()) -> FilePath -> IO ()
forall a b. (a -> b) -> a -> b
$ FilePath
"result0" FilePath -> FilePath -> FilePath
forall a. [a] -> [a] -> [a]
++ Int -> FilePath -> FilePath
prependZeroes Int
zeroN (Int -> FilePath
forall a. Show a => a -> FilePath
show (Int
j Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1)) FilePath -> FilePath -> FilePath
forall a. [a] -> [a] -> [a]
++ FilePath
".wav") ([(Int, (Float, Float -> OvertonesO))] -> IO ())
-> ([(Float, Float -> OvertonesO)]
-> [(Int, (Float, Float -> OvertonesO))])
-> [(Float, Float -> OvertonesO)]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Int]
-> [(Float, Float -> OvertonesO)]
-> [(Int, (Float, Float -> OvertonesO))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Int
0..] ([(Float, Float -> OvertonesO)] -> IO ())
-> [(Float, Float -> OvertonesO)] -> IO ()
forall a b. (a -> b) -> a -> b
$ [(Float, Float -> OvertonesO)]
vecB
IO ()
endFromResult
soundGen3G_O2 :: ((Float -> OvertonesO,Int -> Float -> OvertonesO,Int -> Float -> OvertonesO) -> [(Int,Int)] ->
[(Float,Float -> OvertonesO)]) -> Int -> Int -> Float -> FilePath -> Float -> String ->
(OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO) -> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO) ->
(Int -> OvertonesO) -> (OvertonesO -> OvertonesO) -> (Float -> OvertonesO) -> IO ()
soundGen3G_O2 :: ((Float -> OvertonesO, Int -> Float -> OvertonesO,
Int -> Float -> OvertonesO)
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)])
-> Int
-> Int
-> Float
-> FilePath
-> Float
-> FilePath
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (Int -> OvertonesO)
-> (OvertonesO -> OvertonesO)
-> (Float -> OvertonesO)
-> IO ()
soundGen3G_O2 = Int64
-> Int64
-> ((Float -> OvertonesO, Int -> Float -> OvertonesO,
Int -> Float -> OvertonesO)
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)])
-> Int
-> Int
-> Float
-> FilePath
-> Float
-> FilePath
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (Int -> OvertonesO)
-> (OvertonesO -> OvertonesO)
-> (Float -> OvertonesO)
-> IO ()
soundGen3G_O2MN (-Int64
1) (-Int64
1)
{-# INLINE soundGen3G_O2 #-}
soundGen3G_O2Par :: ((Float -> OvertonesO,Int -> Float -> OvertonesO,Int -> Float -> OvertonesO) -> [(Int,Int)] ->
[(Float,Float -> OvertonesO)]) -> Params -> Float -> FilePath -> Float -> String ->
(OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO) -> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO) ->
(Int -> OvertonesO) -> (OvertonesO -> OvertonesO) -> (Float -> OvertonesO) -> IO ()
soundGen3G_O2Par :: ((Float -> OvertonesO, Int -> Float -> OvertonesO,
Int -> Float -> OvertonesO)
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)])
-> Params
-> Float
-> FilePath
-> Float
-> FilePath
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (Int -> OvertonesO)
-> (OvertonesO -> OvertonesO)
-> (Float -> OvertonesO)
-> IO ()
soundGen3G_O2Par = Int64
-> Int64
-> ((Float -> OvertonesO, Int -> Float -> OvertonesO,
Int -> Float -> OvertonesO)
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)])
-> Params
-> Float
-> FilePath
-> Float
-> FilePath
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (Int -> OvertonesO)
-> (OvertonesO -> OvertonesO)
-> (Float -> OvertonesO)
-> IO ()
soundGen3G_O2MNPar (-Int64
1) (-Int64
1)
{-# INLINE soundGen3G_O2Par #-}
soundGen3G_O2MN :: Int64 -> Int64 -> ((Float -> OvertonesO,Int -> Float -> OvertonesO,Int -> Float -> OvertonesO) -> [(Int,Int)] ->
[(Float,Float -> OvertonesO)]) -> Int -> Int -> Float -> FilePath -> Float -> String ->
(OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO) -> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO) ->
(Int -> OvertonesO) -> (OvertonesO -> OvertonesO) -> (Float -> OvertonesO) -> IO ()
soundGen3G_O2MN :: Int64
-> Int64
-> ((Float -> OvertonesO, Int -> Float -> OvertonesO,
Int -> Float -> OvertonesO)
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)])
-> Int
-> Int
-> Float
-> FilePath
-> Float
-> FilePath
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (Int -> OvertonesO)
-> (OvertonesO -> OvertonesO)
-> (Float -> OvertonesO)
-> IO ()
soundGen3G_O2MN Int64
m1 Int64
n1 (Float -> OvertonesO, Int -> Float -> OvertonesO,
Int -> Float -> OvertonesO)
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)]
conversionFII Int
m Int
ku Float
freq1 FilePath
file Float
y FilePath
zs OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO
gAdds OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO
gRems Int -> OvertonesO
freq0 OvertonesO -> OvertonesO
proj Float -> OvertonesO
f0 = do
[(Int, Int)]
vecA0 <- ([Int] -> [(Int, Int)]) -> IO [Int] -> IO [(Int, Int)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((Int -> (Int, Int)) -> [Int] -> [(Int, Int)]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> Int -> (Int, Int)
forall a. Integral a => a -> a -> (a, a)
`quotRem` Int
108)) ((if Int64
m1 Int64 -> Int64 -> Bool
forall a. Eq a => a -> a -> Bool
== (-Int64
1) Bool -> Bool -> Bool
&& Int64
n1 Int64 -> Int64 -> Bool
forall a. Eq a => a -> a -> Bool
== (-Int64
1) then FilePath -> IO [Int]
readFileDoubles else Int64 -> Int64 -> FilePath -> IO [Int]
readFileDoublesMN Int64
m1 Int64
n1) FilePath
file)
let arr2 :: Array Int (Int, Int)
arr2 = (\[(Int, Int)]
rs -> (Int, Int) -> [(Int, Int)] -> Array Int (Int, Int)
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,[(Int, Int)] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [(Int, Int)]
rs Int -> Int -> Int
forall a. Num a => a -> a -> a
-Int
1) [(Int, Int)]
rs) [(Int, Int)]
vecA0
n :: Int
n = Array Int (Int, Int) -> Int
forall i e. Array i e -> Int
numElements Array Int (Int, Int)
arr2
fA1 :: Int -> Float -> OvertonesO
fA1 Int
j = OvertonesO
-> (Float -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> Float
-> OvertonesO
fAddFElems (OvertonesO -> OvertonesO
proj (OvertonesO -> OvertonesO)
-> (Int -> OvertonesO) -> Int -> OvertonesO
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> OvertonesO
freq0 (Int -> OvertonesO) -> Int -> OvertonesO
forall a b. (a -> b) -> a -> b
$ Int
j) Float -> OvertonesO
f0 OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO
gAdds
fR1 :: Int -> Float -> OvertonesO
fR1 Int
j = OvertonesO
-> (Float -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> Float
-> OvertonesO
fRemoveFElems (OvertonesO -> OvertonesO
proj (OvertonesO -> OvertonesO)
-> (Int -> OvertonesO) -> Int -> OvertonesO
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> OvertonesO
freq0 (Int -> OvertonesO) -> Int -> OvertonesO
forall a b. (a -> b) -> a -> b
$ Int
j) Float -> OvertonesO
f0 OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO
gRems
vecB :: [(Float, Float -> OvertonesO)]
vecB = (Float -> OvertonesO, Int -> Float -> OvertonesO,
Int -> Float -> OvertonesO)
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)]
conversionFII (Float -> OvertonesO
f0,Int -> Float -> OvertonesO
fA1,Int -> Float -> OvertonesO
fR1) [(Int, Int)]
vecA0
zeroN :: Int
zeroN = [(Float, Float -> OvertonesO)] -> Int
forall a. [a] -> Int
numVZeroesPre [(Float, Float -> OvertonesO)]
vecB
v2 :: Array Int Float
v2 = Int -> FilePath -> Float -> Array Int Float
str2DurationsDef Int
n FilePath
zs Float
y
l2 :: Int
l2 = Array Int Float -> Int
forall i e. Array i e -> Int
numElements Array Int Float
v2 in ((Int, (Float, Float -> OvertonesO)) -> IO ())
-> [(Int, (Float, Float -> OvertonesO))] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (\(Int
j, (Float
x,Float -> OvertonesO
k)) -> do
OvertonesO -> (Float, Float) -> Int -> Int -> Float -> IO ()
h2 (Float -> OvertonesO
k Float
x) (Float
x, (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
v2 (Int
j Int -> Int -> Int
forall a. Integral a => a -> a -> a
`rem` Int
l2))) Int
m Int
ku Float
freq1
FilePath -> FilePath -> IO ()
renameFile (FilePath
"result.wav") (FilePath -> IO ()) -> FilePath -> IO ()
forall a b. (a -> b) -> a -> b
$ FilePath
"result0" FilePath -> FilePath -> FilePath
forall a. [a] -> [a] -> [a]
++ Int -> FilePath -> FilePath
prependZeroes Int
zeroN (Int -> FilePath
forall a. Show a => a -> FilePath
show (Int
j Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1)) FilePath -> FilePath -> FilePath
forall a. [a] -> [a] -> [a]
++ FilePath
".wav") ([(Int, (Float, Float -> OvertonesO))] -> IO ())
-> ([(Float, Float -> OvertonesO)]
-> [(Int, (Float, Float -> OvertonesO))])
-> [(Float, Float -> OvertonesO)]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Int]
-> [(Float, Float -> OvertonesO)]
-> [(Int, (Float, Float -> OvertonesO))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Int
0..] ([(Float, Float -> OvertonesO)] -> IO ())
-> [(Float, Float -> OvertonesO)] -> IO ()
forall a b. (a -> b) -> a -> b
$ [(Float, Float -> OvertonesO)]
vecB
IO ()
endFromResult
soundGen3G_O2MNPar :: Int64 -> Int64 -> ((Float -> OvertonesO,Int -> Float -> OvertonesO,Int -> Float -> OvertonesO) -> [(Int,Int)] -> [(Float,Float -> OvertonesO)]) -> Params -> Float -> FilePath -> Float -> String ->
(OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO) -> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO) ->
(Int -> OvertonesO) -> (OvertonesO -> OvertonesO) -> (Float -> OvertonesO) -> IO ()
soundGen3G_O2MNPar :: Int64
-> Int64
-> ((Float -> OvertonesO, Int -> Float -> OvertonesO,
Int -> Float -> OvertonesO)
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)])
-> Params
-> Float
-> FilePath
-> Float
-> FilePath
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> (Int -> OvertonesO)
-> (OvertonesO -> OvertonesO)
-> (Float -> OvertonesO)
-> IO ()
soundGen3G_O2MNPar Int64
m1 Int64
n1 (Float -> OvertonesO, Int -> Float -> OvertonesO,
Int -> Float -> OvertonesO)
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)]
conversionFII Params
params Float
freq1 FilePath
file Float
y FilePath
zs OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO
gAdds OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO
gRems Int -> OvertonesO
freq0 OvertonesO -> OvertonesO
proj Float -> OvertonesO
f0 = do
[(Int, Int)]
vecA0 <- ([Int] -> [(Int, Int)]) -> IO [Int] -> IO [(Int, Int)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((Int -> (Int, Int)) -> [Int] -> [(Int, Int)]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> Int -> (Int, Int)
forall a. Integral a => a -> a -> (a, a)
`quotRem` Int
108)) ((if Int64
m1 Int64 -> Int64 -> Bool
forall a. Eq a => a -> a -> Bool
== (-Int64
1) Bool -> Bool -> Bool
&& Int64
n1 Int64 -> Int64 -> Bool
forall a. Eq a => a -> a -> Bool
== (-Int64
1) then FilePath -> IO [Int]
readFileDoubles else Int64 -> Int64 -> FilePath -> IO [Int]
readFileDoublesMN Int64
m1 Int64
n1) FilePath
file)
let arr2 :: Array Int (Int, Int)
arr2 = (\[(Int, Int)]
rs -> (Int, Int) -> [(Int, Int)] -> Array Int (Int, Int)
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,[(Int, Int)] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [(Int, Int)]
rs Int -> Int -> Int
forall a. Num a => a -> a -> a
-Int
1) [(Int, Int)]
rs) [(Int, Int)]
vecA0
n :: Int
n = Array Int (Int, Int) -> Int
forall i e. Array i e -> Int
numElements Array Int (Int, Int)
arr2
fA1 :: Int -> Float -> OvertonesO
fA1 Int
j = OvertonesO
-> (Float -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> Float
-> OvertonesO
fAddFElems (OvertonesO -> OvertonesO
proj (OvertonesO -> OvertonesO)
-> (Int -> OvertonesO) -> Int -> OvertonesO
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> OvertonesO
freq0 (Int -> OvertonesO) -> Int -> OvertonesO
forall a b. (a -> b) -> a -> b
$ Int
j) Float -> OvertonesO
f0 OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO
gAdds
fR1 :: Int -> Float -> OvertonesO
fR1 Int
j = OvertonesO
-> (Float -> OvertonesO)
-> (OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO)
-> Float
-> OvertonesO
fRemoveFElems (OvertonesO -> OvertonesO
proj (OvertonesO -> OvertonesO)
-> (Int -> OvertonesO) -> Int -> OvertonesO
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> OvertonesO
freq0 (Int -> OvertonesO) -> Int -> OvertonesO
forall a b. (a -> b) -> a -> b
$ Int
j) Float -> OvertonesO
f0 OvertonesO -> Float -> (Float -> OvertonesO) -> OvertonesO
gRems
vecB :: [(Float, Float -> OvertonesO)]
vecB = (Float -> OvertonesO, Int -> Float -> OvertonesO,
Int -> Float -> OvertonesO)
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)]
conversionFII (Float -> OvertonesO
f0,Int -> Float -> OvertonesO
fA1,Int -> Float -> OvertonesO
fR1) [(Int, Int)]
vecA0
zeroN :: Int
zeroN = [(Float, Float -> OvertonesO)] -> Int
forall a. [a] -> Int
numVZeroesPre [(Float, Float -> OvertonesO)]
vecB
v2 :: Array Int Float
v2 = Int -> FilePath -> Float -> Array Int Float
str2DurationsDef Int
n FilePath
zs Float
y
l2 :: Int
l2 = Array Int Float -> Int
forall i e. Array i e -> Int
numElements Array Int Float
v2 in ((Int, (Float, Float -> OvertonesO)) -> IO ())
-> [(Int, (Float, Float -> OvertonesO))] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (\(Int
j, (Float
x,Float -> OvertonesO
k)) -> do
OvertonesO -> (Float, Float) -> Params -> Float -> IO ()
h2Params (Float -> OvertonesO
k Float
x) (Float
x, (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
v2 (Int
j Int -> Int -> Int
forall a. Integral a => a -> a -> a
`rem` Int
l2))) Params
params Float
freq1
FilePath -> FilePath -> IO ()
renameFile (FilePath
"result.wav") (FilePath -> IO ()) -> FilePath -> IO ()
forall a b. (a -> b) -> a -> b
$ FilePath
"result0" FilePath -> FilePath -> FilePath
forall a. [a] -> [a] -> [a]
++ Int -> FilePath -> FilePath
prependZeroes Int
zeroN (Int -> FilePath
forall a. Show a => a -> FilePath
show (Int
j Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1)) FilePath -> FilePath -> FilePath
forall a. [a] -> [a] -> [a]
++ FilePath
".wav") ([(Int, (Float, Float -> OvertonesO))] -> IO ())
-> ([(Float, Float -> OvertonesO)]
-> [(Int, (Float, Float -> OvertonesO))])
-> [(Float, Float -> OvertonesO)]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Int]
-> [(Float, Float -> OvertonesO)]
-> [(Int, (Float, Float -> OvertonesO))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Int
0..] ([(Float, Float -> OvertonesO)] -> IO ())
-> [(Float, Float -> OvertonesO)] -> IO ()
forall a b. (a -> b) -> a -> b
$ [(Float, Float -> OvertonesO)]
vecB
IO ()
endFromResult
soundGen3G_O2G :: (([(Float -> OvertonesO)],[(Int -> Float -> OvertonesO)],[(Int -> Float -> OvertonesO)]) -> [(Int,Int)] ->
[(Float,Float -> OvertonesO)]) -> [(Float -> OvertonesO)] -> [(Int -> Float -> OvertonesO)] -> [(Int -> Float -> OvertonesO)] ->
Int -> Int -> Float -> FilePath -> Float -> String -> IO ()
soundGen3G_O2G :: (([Float -> OvertonesO], [Int -> Float -> OvertonesO],
[Int -> Float -> OvertonesO])
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)])
-> [Float -> OvertonesO]
-> [Int -> Float -> OvertonesO]
-> [Int -> Float -> OvertonesO]
-> Int
-> Int
-> Float
-> FilePath
-> Float
-> FilePath
-> IO ()
soundGen3G_O2G = Int64
-> Int64
-> (([Float -> OvertonesO], [Int -> Float -> OvertonesO],
[Int -> Float -> OvertonesO])
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)])
-> [Float -> OvertonesO]
-> [Int -> Float -> OvertonesO]
-> [Int -> Float -> OvertonesO]
-> Int
-> Int
-> Float
-> FilePath
-> Float
-> FilePath
-> IO ()
soundGen3G_O2GMN (-Int64
1) (-Int64
1)
{-# INLINE soundGen3G_O2G #-}
soundGen3G_O2GPar :: (([(Float -> OvertonesO)],[(Int -> Float -> OvertonesO)],[(Int -> Float -> OvertonesO)]) -> [(Int,Int)] ->
[(Float,Float -> OvertonesO)]) -> [(Float -> OvertonesO)] -> [(Int -> Float -> OvertonesO)] -> [(Int -> Float -> OvertonesO)] ->
Params -> Float -> FilePath -> Float -> String -> IO ()
soundGen3G_O2GPar :: (([Float -> OvertonesO], [Int -> Float -> OvertonesO],
[Int -> Float -> OvertonesO])
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)])
-> [Float -> OvertonesO]
-> [Int -> Float -> OvertonesO]
-> [Int -> Float -> OvertonesO]
-> Params
-> Float
-> FilePath
-> Float
-> FilePath
-> IO ()
soundGen3G_O2GPar = Int64
-> Int64
-> (([Float -> OvertonesO], [Int -> Float -> OvertonesO],
[Int -> Float -> OvertonesO])
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)])
-> [Float -> OvertonesO]
-> [Int -> Float -> OvertonesO]
-> [Int -> Float -> OvertonesO]
-> Params
-> Float
-> FilePath
-> Float
-> FilePath
-> IO ()
soundGen3G_O2GMNPar (-Int64
1) (-Int64
1)
{-# INLINE soundGen3G_O2GPar #-}
soundGen3G_O2GMN :: Int64 -> Int64 -> (([(Float -> OvertonesO)],[(Int -> Float -> OvertonesO)],[(Int -> Float -> OvertonesO)]) -> [(Int,Int)] ->
[(Float,Float -> OvertonesO)]) -> [(Float -> OvertonesO)] -> [(Int -> Float -> OvertonesO)] -> [(Int -> Float -> OvertonesO)] ->
Int -> Int -> Float -> FilePath -> Float -> String -> IO ()
soundGen3G_O2GMN :: Int64
-> Int64
-> (([Float -> OvertonesO], [Int -> Float -> OvertonesO],
[Int -> Float -> OvertonesO])
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)])
-> [Float -> OvertonesO]
-> [Int -> Float -> OvertonesO]
-> [Int -> Float -> OvertonesO]
-> Int
-> Int
-> Float
-> FilePath
-> Float
-> FilePath
-> IO ()
soundGen3G_O2GMN Int64
m1 Int64
n1 ([Float -> OvertonesO], [Int -> Float -> OvertonesO],
[Int -> Float -> OvertonesO])
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)]
conversionFII [Float -> OvertonesO]
vf [Int -> Float -> OvertonesO]
vfA [Int -> Float -> OvertonesO]
vfR Int
m Int
ku Float
freq1 FilePath
file Float
y FilePath
zs = do
[(Int, Int)]
vecA0 <- ([Int] -> [(Int, Int)]) -> IO [Int] -> IO [(Int, Int)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((Int -> (Int, Int)) -> [Int] -> [(Int, Int)]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> Int -> (Int, Int)
forall a. Integral a => a -> a -> (a, a)
`quotRem` Int
108)) ((if Int64
m1 Int64 -> Int64 -> Bool
forall a. Eq a => a -> a -> Bool
== (-Int64
1) Bool -> Bool -> Bool
&& Int64
n1 Int64 -> Int64 -> Bool
forall a. Eq a => a -> a -> Bool
== (-Int64
1) then FilePath -> IO [Int]
readFileDoubles else Int64 -> Int64 -> FilePath -> IO [Int]
readFileDoublesMN Int64
m1 Int64
n1) FilePath
file)
let n :: Int
n = [(Int, Int)] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [(Int, Int)]
vecA0
vecB :: [(Float, Float -> OvertonesO)]
vecB = ([Float -> OvertonesO], [Int -> Float -> OvertonesO],
[Int -> Float -> OvertonesO])
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)]
conversionFII ([Float -> OvertonesO]
vf,[Int -> Float -> OvertonesO]
vfA,[Int -> Float -> OvertonesO]
vfR) [(Int, Int)]
vecA0
zeroN :: Int
zeroN = [(Float, Float -> OvertonesO)] -> Int
forall a. [a] -> Int
numVZeroesPre [(Float, Float -> OvertonesO)]
vecB
v2 :: Array Int Float
v2 = Int -> FilePath -> Float -> Array Int Float
str2DurationsDef Int
n FilePath
zs Float
y
l2 :: Int
l2 = Array Int Float -> Int
forall i e. Array i e -> Int
numElements Array Int Float
v2 in ((Int, (Float, Float -> OvertonesO)) -> IO ())
-> [(Int, (Float, Float -> OvertonesO))] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (\(Int
j, (Float
x,Float -> OvertonesO
k)) -> do
OvertonesO -> (Float, Float) -> Int -> Int -> Float -> IO ()
h2 (Float -> OvertonesO
k Float
x) (Float
x, (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
v2 (Int
j Int -> Int -> Int
forall a. Integral a => a -> a -> a
`rem` Int
l2))) Int
m Int
ku Float
freq1
FilePath -> FilePath -> IO ()
renameFile (FilePath
"result.wav") (FilePath -> IO ()) -> FilePath -> IO ()
forall a b. (a -> b) -> a -> b
$ FilePath
"result0" FilePath -> FilePath -> FilePath
forall a. [a] -> [a] -> [a]
++ Int -> FilePath -> FilePath
prependZeroes Int
zeroN (Int -> FilePath
forall a. Show a => a -> FilePath
show (Int
j Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1)) FilePath -> FilePath -> FilePath
forall a. [a] -> [a] -> [a]
++ FilePath
".wav") ([(Int, (Float, Float -> OvertonesO))] -> IO ())
-> ([(Float, Float -> OvertonesO)]
-> [(Int, (Float, Float -> OvertonesO))])
-> [(Float, Float -> OvertonesO)]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Int]
-> [(Float, Float -> OvertonesO)]
-> [(Int, (Float, Float -> OvertonesO))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Int
0..] ([(Float, Float -> OvertonesO)] -> IO ())
-> [(Float, Float -> OvertonesO)] -> IO ()
forall a b. (a -> b) -> a -> b
$ [(Float, Float -> OvertonesO)]
vecB
IO ()
endFromResult
soundGen3G_O2GMNPar :: Int64 -> Int64 -> (([(Float -> OvertonesO)],[(Int -> Float -> OvertonesO)],[(Int -> Float -> OvertonesO)]) -> [(Int,Int)] ->
[(Float,Float -> OvertonesO)]) -> [(Float -> OvertonesO)] -> [(Int -> Float -> OvertonesO)] -> [(Int -> Float -> OvertonesO)] ->
Params -> Float -> FilePath -> Float -> String -> IO ()
soundGen3G_O2GMNPar :: Int64
-> Int64
-> (([Float -> OvertonesO], [Int -> Float -> OvertonesO],
[Int -> Float -> OvertonesO])
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)])
-> [Float -> OvertonesO]
-> [Int -> Float -> OvertonesO]
-> [Int -> Float -> OvertonesO]
-> Params
-> Float
-> FilePath
-> Float
-> FilePath
-> IO ()
soundGen3G_O2GMNPar Int64
m1 Int64
n1 ([Float -> OvertonesO], [Int -> Float -> OvertonesO],
[Int -> Float -> OvertonesO])
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)]
conversionFII [Float -> OvertonesO]
vf [Int -> Float -> OvertonesO]
vfA [Int -> Float -> OvertonesO]
vfR Params
params Float
freq1 FilePath
file Float
y FilePath
zs = do
[(Int, Int)]
vecA0 <- ([Int] -> [(Int, Int)]) -> IO [Int] -> IO [(Int, Int)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((Int -> (Int, Int)) -> [Int] -> [(Int, Int)]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> Int -> (Int, Int)
forall a. Integral a => a -> a -> (a, a)
`quotRem` Int
108)) ((if Int64
m1 Int64 -> Int64 -> Bool
forall a. Eq a => a -> a -> Bool
== (-Int64
1) Bool -> Bool -> Bool
&& Int64
n1 Int64 -> Int64 -> Bool
forall a. Eq a => a -> a -> Bool
== (-Int64
1) then FilePath -> IO [Int]
readFileDoubles else Int64 -> Int64 -> FilePath -> IO [Int]
readFileDoublesMN Int64
m1 Int64
n1) FilePath
file)
let n :: Int
n = [(Int, Int)] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [(Int, Int)]
vecA0
vecB :: [(Float, Float -> OvertonesO)]
vecB = ([Float -> OvertonesO], [Int -> Float -> OvertonesO],
[Int -> Float -> OvertonesO])
-> [(Int, Int)] -> [(Float, Float -> OvertonesO)]
conversionFII ([Float -> OvertonesO]
vf,[Int -> Float -> OvertonesO]
vfA,[Int -> Float -> OvertonesO]
vfR) [(Int, Int)]
vecA0
zeroN :: Int
zeroN = [(Float, Float -> OvertonesO)] -> Int
forall a. [a] -> Int
numVZeroesPre [(Float, Float -> OvertonesO)]
vecB
v2 :: Array Int Float
v2 = Int -> FilePath -> Float -> Array Int Float
str2DurationsDef Int
n FilePath
zs Float
y
l2 :: Int
l2 = Array Int Float -> Int
forall i e. Array i e -> Int
numElements Array Int Float
v2 in ((Int, (Float, Float -> OvertonesO)) -> IO ())
-> [(Int, (Float, Float -> OvertonesO))] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (\(Int
j, (Float
x,Float -> OvertonesO
k)) -> do
OvertonesO -> (Float, Float) -> Params -> Float -> IO ()
h2Params (Float -> OvertonesO
k Float
x) (Float
x, (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
v2 (Int
j Int -> Int -> Int
forall a. Integral a => a -> a -> a
`rem` Int
l2))) Params
params Float
freq1
FilePath -> FilePath -> IO ()
renameFile (FilePath
"result.wav") (FilePath -> IO ()) -> FilePath -> IO ()
forall a b. (a -> b) -> a -> b
$ FilePath
"result0" FilePath -> FilePath -> FilePath
forall a. [a] -> [a] -> [a]
++ Int -> FilePath -> FilePath
prependZeroes Int
zeroN (Int -> FilePath
forall a. Show a => a -> FilePath
show (Int
j Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1)) FilePath -> FilePath -> FilePath
forall a. [a] -> [a] -> [a]
++ FilePath
".wav") ([(Int, (Float, Float -> OvertonesO))] -> IO ())
-> ([(Float, Float -> OvertonesO)]
-> [(Int, (Float, Float -> OvertonesO))])
-> [(Float, Float -> OvertonesO)]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Int]
-> [(Float, Float -> OvertonesO)]
-> [(Int, (Float, Float -> OvertonesO))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Int
0..] ([(Float, Float -> OvertonesO)] -> IO ())
-> [(Float, Float -> OvertonesO)] -> IO ()
forall a b. (a -> b) -> a -> b
$ [(Float, Float -> OvertonesO)]
vecB
IO ()
endFromResult
h1 :: (Float -> OvertonesO) -> (Float, Float) -> IO ()
h1 :: (Float -> OvertonesO) -> (Float, Float) -> IO ()
h1 Float -> OvertonesO
f (Float
x, Float
y) = do
let note0 :: Float
note0 = Float -> Float
closestNote (if Float
x Float -> Float -> Bool
forall a. Eq a => a -> a -> Bool
/= Float
0.0 then Float -> Float
forall a. Num a => a -> a
abs Float
x else Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes Int
0)
v0 :: OvertonesO
v0 = Float -> OvertonesO
f Float
note0
ts :: FilePath
ts = Maybe Int -> Float -> FilePath -> FilePath
forall a. RealFloat a => Maybe Int -> a -> FilePath -> FilePath
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) (Float -> Float
forall a. Num a => a -> a
abs Float
y) FilePath
""
case Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Float
y Float
0.0 of
Ordering
GT -> do
(ExitCode
_,FilePath
_,FilePath
herr) <- FilePath
-> [FilePath] -> FilePath -> IO (ExitCode, FilePath, FilePath)
readProcessWithExitCode (Maybe FilePath -> FilePath
forall a. HasCallStack => Maybe a -> a
fromJust (FilePath -> Maybe FilePath
showE FilePath
"sox")) [FilePath
"-r22050", FilePath
"-n", FilePath
"testA.wav", FilePath
"synth", FilePath
ts,FilePath
"sine",Maybe Int -> Float -> FilePath -> FilePath
forall a. RealFloat a => Maybe Int -> a -> FilePath -> FilePath
showFFloat Maybe Int
forall a. Maybe a
Nothing Float
note0 FilePath
""] FilePath
""
FilePath -> IO ()
forall a. Show a => a -> IO ()
print FilePath
herr
let ll :: Int
ll = OvertonesO -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length OvertonesO
v0
OvertonesO -> Int -> FilePath -> Array Int Float -> IO ()
partialTest_k1G OvertonesO
v0 Int
0 FilePath
ts ((Int, Int) -> [Float] -> Array Int Float
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,Int
ll Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1) ([Float] -> Array Int Float)
-> (Float -> [Float]) -> Float -> Array Int Float
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Float -> [Float]
forall a. Int -> a -> [a]
replicate Int
ll (Float -> Array Int Float) -> Float -> Array Int Float
forall a b. (a -> b) -> a -> b
$ Float
0.0)
IO ()
mixTest
Ordering
LT -> FilePath
-> [FilePath] -> FilePath -> IO (ExitCode, FilePath, FilePath)
readProcessWithExitCode (Maybe FilePath -> FilePath
forall a. HasCallStack => Maybe a -> a
fromJust (FilePath -> Maybe FilePath
showE FilePath
"sox")) [FilePath
"-r22050", FilePath
"-n", FilePath
"result.wav", FilePath
"synth", FilePath
ts,FilePath
"sine",Maybe Int -> Float -> FilePath -> FilePath
forall a. RealFloat a => Maybe Int -> a -> FilePath -> FilePath
showFFloat Maybe Int
forall a. Maybe a
Nothing Float
note0 FilePath
"",FilePath
"vol",FilePath
"0"] FilePath
"" IO (ExitCode, FilePath, FilePath)
-> ((ExitCode, FilePath, FilePath) -> IO ()) -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
\(ExitCode
_,FilePath
_,FilePath
herr) -> FilePath -> IO ()
putStr FilePath
herr
Ordering
_ -> FilePath -> IO ()
putStrLn FilePath
"Zero length of the sound! "
h2 :: OvertonesO -> (Float, Float) -> Int -> Int -> Float -> IO ()
h2 :: OvertonesO -> (Float, Float) -> Int -> Int -> Float -> IO ()
h2 OvertonesO
v (Float
x, Float
y) Int
m Int
ku Float
freq1 = do
let note0 :: Float
note0 = Float -> Maybe Float -> Float
forall a. a -> Maybe a -> a
fromMaybe Float
freq1 (Maybe Float -> Float) -> (Float -> Maybe Float) -> Float -> Float
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Int -> Float -> Maybe Float
liftInEnku Int
m Int
ku (Float -> Maybe Float) -> (Float -> Float) -> Float -> Maybe Float
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Float -> Float
closestNote (Float -> Float) -> Float -> Float
forall a b. (a -> b) -> a -> b
$ (if Float
x Float -> Float -> Bool
forall a. Eq a => a -> a -> Bool
/= Float
0.0 then Float -> Float
forall a. Num a => a -> a
abs Float
x else Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes Int
0)
ts :: FilePath
ts = Maybe Int -> Float -> FilePath -> FilePath
forall a. RealFloat a => Maybe Int -> a -> FilePath -> FilePath
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) (Float -> Float
forall a. Num a => a -> a
abs Float
y) FilePath
""
case Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Float
y Float
0.0 of
Ordering
GT -> do
(ExitCode
_,FilePath
_,FilePath
herr) <- FilePath
-> [FilePath] -> FilePath -> IO (ExitCode, FilePath, FilePath)
readProcessWithExitCode (Maybe FilePath -> FilePath
forall a. HasCallStack => Maybe a -> a
fromJust (FilePath -> Maybe FilePath
showE FilePath
"sox")) [FilePath
"-r22050", FilePath
"-n", FilePath
"testA.wav", FilePath
"synth", FilePath
ts,FilePath
"sine",Maybe Int -> Float -> FilePath -> FilePath
forall a. RealFloat a => Maybe Int -> a -> FilePath -> FilePath
showFFloat Maybe Int
forall a. Maybe a
Nothing Float
note0 FilePath
""] FilePath
""
FilePath -> IO ()
forall a. Show a => a -> IO ()
print FilePath
herr
let ll :: Int
ll = OvertonesO -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length OvertonesO
v
OvertonesO -> Int -> FilePath -> Array Int Float -> IO ()
partialTest_k1G OvertonesO
v Int
0 FilePath
ts ((Int, Int) -> [Float] -> Array Int Float
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,Int
ll Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1) ([Float] -> Array Int Float)
-> (Float -> [Float]) -> Float -> Array Int Float
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Float -> [Float]
forall a. Int -> a -> [a]
replicate Int
ll (Float -> Array Int Float) -> Float -> Array Int Float
forall a b. (a -> b) -> a -> b
$ Float
0.0)
IO ()
mixTest
Ordering
LT -> FilePath
-> [FilePath] -> FilePath -> IO (ExitCode, FilePath, FilePath)
readProcessWithExitCode (Maybe FilePath -> FilePath
forall a. HasCallStack => Maybe a -> a
fromJust (FilePath -> Maybe FilePath
showE FilePath
"sox")) [FilePath
"-r22050", FilePath
"-n", FilePath
"result.wav", FilePath
"synth", FilePath
ts,FilePath
"sine",Maybe Int -> Float -> FilePath -> FilePath
forall a. RealFloat a => Maybe Int -> a -> FilePath -> FilePath
showFFloat Maybe Int
forall a. Maybe a
Nothing Float
note0 FilePath
"",FilePath
"vol",FilePath
"0"] FilePath
"" IO (ExitCode, FilePath, FilePath)
-> ((ExitCode, FilePath, FilePath) -> IO ()) -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
\(ExitCode
_,FilePath
_,FilePath
herr) -> FilePath -> IO ()
putStr FilePath
herr
Ordering
_ -> FilePath -> IO ()
putStrLn FilePath
"Zero length of the sound! "
h2Params :: OvertonesO -> (Float, Float) -> Params -> Float -> IO ()
h2Params :: OvertonesO -> (Float, Float) -> Params -> Float -> IO ()
h2Params OvertonesO
v (Float
x, Float
y) Params
params Float
freq1 = do
let note01 :: Float
note01 = (Float -> Params -> Float) -> Params -> Float -> Float
forall a b c. (a -> b -> c) -> b -> a -> c
flip Float -> Params -> Float
liftInParams Params
params (if Float
x Float -> Float -> Bool
forall a. Eq a => a -> a -> Bool
/= Float
0.0 then Float -> Float
forall a. Num a => a -> a
abs Float
x else Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes Int
0)
ts :: FilePath
ts = Maybe Int -> Float -> FilePath -> FilePath
forall a. RealFloat a => Maybe Int -> a -> FilePath -> FilePath
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) (Float -> Float
forall a. Num a => a -> a
abs Float
y) FilePath
""
note0 :: Float
note0 = if Float
note01 Float -> Float -> Bool
forall a. Eq a => a -> a -> Bool
== Float
11440.0 then Float
freq1 else Float
note01
case Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Float
y Float
0.0 of
Ordering
GT -> do
(ExitCode
_,FilePath
_,FilePath
herr) <- FilePath
-> [FilePath] -> FilePath -> IO (ExitCode, FilePath, FilePath)
readProcessWithExitCode (Maybe FilePath -> FilePath
forall a. HasCallStack => Maybe a -> a
fromJust (FilePath -> Maybe FilePath
showE FilePath
"sox")) [FilePath
"-r22050", FilePath
"-n", FilePath
"testA.wav", FilePath
"synth", FilePath
ts,FilePath
"sine",Maybe Int -> Float -> FilePath -> FilePath
forall a. RealFloat a => Maybe Int -> a -> FilePath -> FilePath
showFFloat Maybe Int
forall a. Maybe a
Nothing Float
note0 FilePath
""] FilePath
""
FilePath -> IO ()
forall a. Show a => a -> IO ()
print FilePath
herr
let ll :: Int
ll = OvertonesO -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length OvertonesO
v
OvertonesO -> Int -> FilePath -> Array Int Float -> IO ()
partialTest_k1G OvertonesO
v Int
0 FilePath
ts ((Int, Int) -> [Float] -> Array Int Float
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,Int
ll Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1) ([Float] -> Array Int Float)
-> (Float -> [Float]) -> Float -> Array Int Float
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Float -> [Float]
forall a. Int -> a -> [a]
replicate Int
ll (Float -> Array Int Float) -> Float -> Array Int Float
forall a b. (a -> b) -> a -> b
$ Float
0.0)
IO ()
mixTest
Ordering
LT -> FilePath
-> [FilePath] -> FilePath -> IO (ExitCode, FilePath, FilePath)
readProcessWithExitCode (Maybe FilePath -> FilePath
forall a. HasCallStack => Maybe a -> a
fromJust (FilePath -> Maybe FilePath
showE FilePath
"sox")) [FilePath
"-r22050", FilePath
"-n", FilePath
"result.wav", FilePath
"synth", FilePath
ts,FilePath
"sine",Maybe Int -> Float -> FilePath -> FilePath
forall a. RealFloat a => Maybe Int -> a -> FilePath -> FilePath
showFFloat Maybe Int
forall a. Maybe a
Nothing Float
note0 FilePath
"",FilePath
"vol",FilePath
"0"] FilePath
"" IO (ExitCode, FilePath, FilePath)
-> ((ExitCode, FilePath, FilePath) -> IO ()) -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=
\(ExitCode
_,FilePath
_,FilePath
herr) -> FilePath -> IO ()
putStr FilePath
herr
Ordering
_ -> FilePath -> IO ()
putStrLn FilePath
"Zero length of the sound! "