{-# LANGUAGE BangPatterns, LambdaCase #-}
{-# OPTIONS_GHC -threaded #-}
module DobutokO.Sound (
overSoXSynthN
, overTones2
, overSoXSynth2
, overSoXSynthN2
, overSoXSynthN3
, overSoXSynthDN
, overSoXSynth2DN
, overSoXSynthNGen
, overSoXSynthNGen2
, overSoXSynthNGen3
, uniqOvertonesV
, uniqOverSoXSynth
, uniqOverSoXSynthN
, uniqOvertonesV2
, uniqOverSoXSynth2
, uniqOverSoXSynthN3
, uniqOverSoXSynthN4
, uniqOverSoXSynthNGen
, uniqOverSoXSynthNGen3
, uniqOverSoXSynthNGen4
, octaveUp
, octaveDown
, liftInOctave
, liftInOctaveV
, dviykyTA
, triykyTA
, chetvirkyTA
, p'yatirkyTA
, shistkyTA
, simkyTA
, visimkyTA
, dev'yatkyTA
, desyatkyTA
, odynadtsyatkyTA
, octavesTA
, overSoXSynthNGenE
, overSoXSynthNGen2E
, overSoXSynthNGen3E
, uniqOverSoXSynthNGenE
, uniqOverSoXSynthNGen3E
, uniqOverSoXSynthNGen4E
, signsFromString
, overSoXSynthN4G
, overSoXSynthN24G
, overSoXSynthN34G
, overSoXSynthNGenE4G
, overSoXSynthNGen2E4G
, overSoXSynthNGen3E4G
, uniqOverSoXSynthN4G
, uniqOverSoXSynthN34G
, uniqOverSoXSynthN44G
, uniqOverSoXSynthNGenE4G
, uniqOverSoXSynthNGen3E4G
, uniqOverSoXSynthNGen4E4G
, overSoXSynthN4GS
, overSoXSynthN24GS
, overSoXSynthN34GS
, overSoXSynthNGenE4GS
, overSoXSynthNGen2E4GS
, overSoXSynthNGen3E4GS
, uniqOverSoXSynthN4GS
, uniqOverSoXSynthN34GS
, uniqOverSoXSynthN44GS
, uniqOverSoXSynthNGenE4GS
, uniqOverSoXSynthNGen3E4GS
, uniqOverSoXSynthNGen4E4GS
, overSoXSynthN35G
, overSoXSynthNGen3E5G
, uniqOverSoXSynthN45G
, uniqOverSoXSynthNGen4E5G
, overSoXSynthN35GS
, overSoXSynthNGen3E5GS
, uniqOverSoXSynthN45GS
, uniqOverSoXSynthNGen4E5GS
, overSoXSynthNGen3E6G
, uniqOverSoXSynthNGen4E6G
, overSoXSynthNGen3E6GS
, overSoXSynthNGen3E6GSu
, uniqOverSoXSynthN46GSu
, uniqOverSoXSynthNGen4E6GS
, uniqOverSoXSynthNGen4E6GSu
, overSoXSynthNGenEPar
, overSoXSynthNGenE4GSPar
, overSoXSynthNGenE4GPar
, overSoXSynthNGen2EPar
, overSoXSynthNGen2E4GSPar
, overSoXSynthNGen2E4GPar
, overSoXSynthNGen3EPar
, overSoXSynthNGen3E4GSPar
, overSoXSynthNGen3E4GPar
, overSoXSynthNGen3E5GPar
, overSoXSynthNGen3E5GSPar
, overSoXSynthNGen3E6GPar
, overSoXSynthNGen3E6GSPar
, overSoXSynthNGen3E6GSuPar
, uniqOverSoXSynthNGenEPar
, uniqOverSoXSynthNGenE4GSPar
, uniqOverSoXSynthNGenE4GPar
, uniqOverSoXSynthNGen3EPar
, uniqOverSoXSynthNGen3E4GSPar
, uniqOverSoXSynthNGen3E4GPar
, uniqOverSoXSynthNGen4EPar
, uniqOverSoXSynthNGen4E4GSPar
, uniqOverSoXSynthNGen4E4GPar
, uniqOverSoXSynthNGen4E5GPar
, uniqOverSoXSynthNGen4E5GSPar
, uniqOverSoXSynthNGen4E6GPar
, uniqOverSoXSynthNGen4E6GSPar
, uniqOverSoXSynthNGen4E6GSuPar
) where
import CaseBi (getBFst')
import System.Exit (ExitCode(ExitSuccess))
import Numeric (showFFloat)
import Control.Exception (onException)
import System.Environment (getArgs)
import Data.List (isPrefixOf,sort,sortBy,nubBy)
import Data.Maybe (isJust,isNothing,fromJust,maybe)
import Data.Char (isDigit)
import qualified Data.Vector as V
import System.Process
import EndOfExe (showE)
import MMSyn7.Syllable
import MMSyn7s
import System.Directory
import SoXBasics
import Processing_mmsyn7ukr
import Melodics.Ukrainian (convertToProperUkrainian)
import DobutokO.Sound.Functional
dviykyTA :: NotePairs
dviykyTA = V.generate 107 (\i -> (V.unsafeIndex notes i, V.unsafeIndex notes (i + 1)))
triykyTA :: NotePairs
triykyTA = V.generate 106 (\i -> (V.unsafeIndex notes i, V.unsafeIndex notes (i + 2)))
chetvirkyTA :: NotePairs
chetvirkyTA = V.generate 105 (\i -> (V.unsafeIndex notes i, V.unsafeIndex notes (i + 3)))
p'yatirkyTA :: NotePairs
p'yatirkyTA = V.generate 104 (\i -> (V.unsafeIndex notes i, V.unsafeIndex notes (i + 4)))
shistkyTA :: NotePairs
shistkyTA = V.generate 103 (\i -> (V.unsafeIndex notes i, V.unsafeIndex notes (i + 5)))
simkyTA :: NotePairs
simkyTA = V.generate 102 (\i -> (V.unsafeIndex notes i, V.unsafeIndex notes (i + 6)))
visimkyTA :: NotePairs
visimkyTA = V.generate 101 (\i -> (V.unsafeIndex notes i, V.unsafeIndex notes (i + 7)))
dev'yatkyTA :: NotePairs
dev'yatkyTA = V.generate 100 (\i -> (V.unsafeIndex notes i, V.unsafeIndex notes (i + 8)))
desyatkyTA :: NotePairs
desyatkyTA = V.generate 99 (\i -> (V.unsafeIndex notes i, V.unsafeIndex notes (i + 9)))
odynadtsyatkyTA :: NotePairs
odynadtsyatkyTA = V.generate 98 (\i -> (V.unsafeIndex notes i, V.unsafeIndex notes (i + 10)))
octavesTA :: NotePairs
octavesTA = V.generate 97 (\i -> (V.unsafeIndex notes i, V.unsafeIndex notes (i + 11)))
octaveUp :: Double -> Double
octaveUp x = 2 * x
{-# INLINE octaveUp #-}
octaveDown :: Double -> Double
octaveDown x = x / 2
{-# INLINE octaveDown #-}
liftInOctave :: Int -> Double -> Maybe Double
liftInOctave n x
| compare n 0 == LT || compare n 8 == GT = Nothing
| compare (closestNote x) 24.4996 == GT =
case compare (fromJust . whichOctave $ x) n of
EQ -> Just (closestNote x)
LT -> let z = logBase 2.0 (V.unsafeIndex notes (n * 12) / closestNote x)
z1 = truncate z in
if abs (z - fromIntegral z1) > 0.999 || abs (z - fromIntegral z1) < 0.001
then Just (V.unsafeLast . V.iterateN (fromIntegral z1 + 1) octaveUp $ closestNote x)
else Just (V.unsafeLast . V.iterateN (fromIntegral z1 + 2) octaveUp $ closestNote x)
_ -> let z = logBase 2.0 (closestNote x / V.unsafeIndex notes (n * 12))
z1 = truncate z in
if abs (z - fromIntegral z1) > 0.999 || abs (z - fromIntegral z1) < 0.001
then Just (V.unsafeLast . V.iterateN (fromIntegral z1 + 2) octaveDown $ closestNote x)
else Just (V.unsafeLast . V.iterateN (fromIntegral z1 + 1) octaveDown $ closestNote x)
| otherwise = Nothing
liftInOctaveV :: Int -> V.Vector Double -> V.Vector Double
liftInOctaveV n = V.mapMaybe (liftInOctave n)
uniqOvertonesV :: Double -> String -> OvertonesO
uniqOvertonesV note xs =
let ys = uniquenessPeriods xs
z = sum ys
v = V.fromList . fmap (\y -> fromIntegral y / fromIntegral z) $ ys
z2 = V.length v
v2 = V.generate z2 (\i -> V.unsafeIndex v i / fromIntegral (i + 1)) in
V.takeWhile (\(!u,!z) -> compare u (V.unsafeIndex notes 107) /= GT && compare (abs z) 0.001 == GT) . V.unsafeSlice 1 (z2 - 1) .
V.zip (V.generate z2 (\i -> note * fromIntegral (i + 1))) $ v2
signsFromString :: Int -> String -> V.Vector Int
signsFromString n1 =
V.take n1 . V.fromList . concatMap (fmap (\case
Vowel _ -> 1
Voiced _ -> 1
VoicedP _ -> 1
Voiceless _ -> (-1)
VoicelessP _ -> (-1)
Sonorous _ -> (-1)
SonorousP _ -> (-1)
_ -> 0) . concatMap representProlonged) . syllablesUkrP . take (3 * n1) . cycle
overTones2 :: Double -> String -> OvertonesO
overTones2 note ts =
V.takeWhile (\(!w,!z) -> compare w (V.unsafeIndex notes 107) /= GT && compare (abs z) 0.001 == GT) . V.filter (\(_, t4) -> t4 /= 0.0) .
V.zip (V.generate 1024 (\i -> note * fromIntegral (i + 2))) $ (V.generate 1024 (\i -> fromIntegral (V.unsafeIndex (signsFromString 1024 ts)
(i + 1)) / fromIntegral ((i + 1) * (i + 1))))
uniqOvertonesV2 :: Double -> String -> String -> OvertonesO
uniqOvertonesV2 note xs ts =
let ys = uniquenessPeriods xs
z = sum ys
v = V.fromList . fmap (\y -> fromIntegral y / fromIntegral z) $ ys
z2 = V.length v
v2 = V.generate z2 (\i -> (V.unsafeIndex (V.map fromIntegral . signsFromString z2 $ ts) i) * V.unsafeIndex v i / fromIntegral (i + 1)) in
V.takeWhile (\(!u,!z) -> compare u (V.unsafeIndex notes 107) /= GT && compare (abs z) 0.001 == GT) . V.filter (\(_, t4) -> t4 /= 0.0) .
V.unsafeSlice 1 (z2 - 1) . V.zip (V.generate z2 (\i -> note * fromIntegral (i + 1))) $ v2
overSoXSynthDN :: Double -> String -> IO ()
overSoXSynthDN x = overSoXSynth2DN x 0.5
overSoXSynth2DN :: Double -> Double -> String -> IO ()
overSoXSynth2DN x y zs
| V.null . convertToProperUkrainian $ zs = overSoXSynth x
| otherwise = do
let note0 = closestNote x
note1 = dNote (V.unsafeIndex (intervalsFromString zs) 0) note0
v0 = overTones note0
v1 = maybe V.empty overTones note1
overSoXSynthHelp vec = V.imapM_ (\i (noteN, !amplN) -> readProcessWithExitCode (fromJust (showE "sox"))
["-r22050", "-n", "test0" ++ show (i + 2) ++ ".wav", "synth", showFFloat (Just 4) y "","sine", showFFloat (Just 4) noteN "",
"vol", showFFloat (Just 4) amplN ""] "") vec
overSoXSynthHelp2 vec = V.imapM_ (\i (noteN, !amplN) -> readProcessWithExitCode (fromJust (showE "sox"))
["-r22050", "-n", "test1" ++ show (i + 2) ++ ".wav", "synth", showFFloat (Just 4) y "","sine", showFFloat (Just 4) noteN "",
"vol", showFFloat (Just 4) amplN ""] "") vec
_ <- readProcessWithExitCode (fromJust (showE "sox")) ["-r22050", "-n", "testA.wav", "synth", showFFloat (Just 4) y "","sine",
showFFloat (Just 4) note0 "", "vol","0.5"] ""
if isNothing note1 then overSoXSynthHelp v0
else do
_ <- readProcessWithExitCode (fromJust (showE "sox")) ["-r22050", "-n", "testB.wav", "synth", showFFloat (Just 4) y "","sine",
showFFloat (Just 4) (fromJust note1) "", "vol","0.5"] ""
overSoXSynthHelp v0
overSoXSynthHelp2 v1
mixTest
overSoXSynth2 :: Double -> String -> IO ()
overSoXSynth2 x tts = do
let note0 = closestNote x
note1 = pureQuintNote note0
v0 = overTones2 note0 tts
v1 = overTones2 note1 tts
overSoXSynthHelp vec = V.imapM_ (\i (noteN, !amplN) -> readProcessWithExitCode (fromJust (showE "sox"))
["-r22050", "-n", "test0" ++ show (i + 2) ++ ".wav", "synth", "0.5","sine", showFFloat (Just 4) noteN "",
"vol", showFFloat (Just 4) amplN ""] "") vec
overSoXSynthHelp2 vec = V.imapM_ (\i (noteN, !amplN) -> readProcessWithExitCode (fromJust (showE "sox"))
["-r22050", "-n", "test1" ++ show (i + 2) ++ ".wav", "synth", "0.5","sine", showFFloat (Just 4) noteN "",
"vol", showFFloat (Just 4) amplN ""] "") vec
_ <- readProcessWithExitCode (fromJust (showE "sox")) ["-r22050", "-n", "test01.wav", "synth", "0.5","sine", showFFloat (Just 4) note0 "",
"synth", "0.5","sine", "mix", showFFloat (Just 4) note1 "", "vol","0.5"] ""
overSoXSynthHelp v0
overSoXSynthHelp2 v1
mixTest
overSoXSynthN :: Int -> Double -> Double -> String -> V.Vector Double -> IO ()
overSoXSynthN n ampL time3 zs = overSoXSynthN4G n ampL (str2DurationsDef n zs time3)
overSoXSynthN4G :: Int -> Double -> Durations -> V.Vector Double -> IO ()
overSoXSynthN4G n ampL v2 vec0
| V.all (== 0.0) v2 = putStrLn "You provided no valid durations data! "
| compare (abs ampL) 0.01 /= LT && compare (abs ampL) 1.0 /= GT =
let zeroN = numVZeroesPre vec0
v21 = V.filter (/=0.0) v2
m = V.length v2 in V.imapM_ (\j x -> do
let note0 = closestNote x
note1 = pureQuintNote note0
v0 = overTones note0
v1 = overTones note1
overSoXSynthHelpN vec = V.imapM_ (\i (noteN, !amplN) -> readProcessWithExitCode (fromJust (showE "sox"))
["-r22050", "-n", "test" ++ prependZeroes zeroN (show (i + 2)) ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "",
"sine", showFFloat (Just 4) noteN "", "vol", if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then showFFloat (Just 4) (amplN * ampL) "" else "0"] "") vec
overSoXSynthHelpN2 vec = V.imapM_ (\i (noteN, !amplN) -> readProcessWithExitCode (fromJust (showE "sox"))
["-r22050", "-n", "testQ" ++ prependZeroes zeroN (show (i + 2)) ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "",
"sine", showFFloat (Just 4) noteN "", "vol", if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then showFFloat (Just 4) (amplN * ampL) "" else "0"] "") vec
soxSynthHelpMain note01 note02 = readProcessWithExitCode (fromJust (showE "sox")) ["-r22050", "-n", "testA" ++ prependZeroes zeroN "1" ++
".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "","sine", showFFloat (Just 4) note01 "", "synth",
showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "","sine", "mix", showFFloat (Just 4) note02 "", "vol",if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT
then "0.5" else "0"] ""
soxSynthHelpMain note0 note1
overSoXSynthHelpN v0
overSoXSynthHelpN2 v1
mixTest2 zeroN j) vec0
| otherwise = let ampL1 = ampL - (fromIntegral . truncate $ ampL) in
if abs ampL1 < 0.01 then overSoXSynthN4G n 0.01 v2 vec0
else overSoXSynthN4G n ampL1 v2 vec0
overSoXSynthN4GS :: Int -> Double -> Double -> String -> V.Vector Double -> IO ()
overSoXSynthN4GS n ampL time3 zs = overSoXSynthN4G n ampL (str2Durations zs time3)
overSoXSynthN2 :: Int -> Double -> Double -> String -> String -> V.Vector Double -> IO ()
overSoXSynthN2 n ampL time3 zs = overSoXSynthN24G n ampL (str2DurationsDef n zs time3)
overSoXSynthN24G :: Int -> Double -> Durations -> String -> V.Vector Double -> IO ()
overSoXSynthN24G n ampL v2 tts vec0
| V.all (== 0.0) v2 = putStrLn "You provided no valid durations data! "
| compare (abs ampL) 0.01 /= LT && compare (abs ampL) 1.0 /= GT =
let v21 = V.filter (/= 0.0) v2
zeroN = numVZeroesPre vec0
m = V.length v21 in V.imapM_ (\j x -> do
let note0 = closestNote x
note1 = pureQuintNote note0
v0 = overTones2 note0 tts
v1 = overTones2 note1 tts
overSoXSynthHelpN vec = V.imapM_ (\i (noteN, !amplN) -> readProcessWithExitCode (fromJust (showE "sox"))
["-r22050", "-n", "test" ++ prependZeroes zeroN (show (i + 2)) ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "",
"sine",showFFloat (Just 4) noteN "", "vol", if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then showFFloat (Just 4) (amplN * ampL) "" else "0"] "") vec
overSoXSynthHelpN2 vec = V.imapM_ (\i (noteN, !amplN) -> readProcessWithExitCode (fromJust (showE "sox"))
["-r22050", "-n", "testQ" ++ prependZeroes zeroN (show (i + 2)) ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "",
"sine", showFFloat (Just 4) noteN "", "vol", if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then showFFloat (Just 4) (amplN * ampL) "" else "0"] "") vec
soxSynthHelpMain note01 note02 = readProcessWithExitCode (fromJust (showE "sox")) ["-r22050", "-n", "testA" ++ prependZeroes zeroN "1" ++
".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "","sine", showFFloat (Just 4) note01 "",
"synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "","sine", "mix", showFFloat (Just 4) note02 "", "vol",
if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then "0.5" else "0"] ""
soxSynthHelpMain note0 note1
overSoXSynthHelpN v0
overSoXSynthHelpN2 v1
mixTest2 zeroN j) vec0
| otherwise = let ampL1 = ampL - (fromIntegral . truncate $ ampL) in
if abs ampL1 < 0.01 then overSoXSynthN24G n 0.01 v2 tts vec0
else overSoXSynthN24G n ampL1 v2 tts vec0
overSoXSynthN24GS :: Int -> Double -> Double -> String -> String -> V.Vector Double -> IO ()
overSoXSynthN24GS n ampL time3 zs = overSoXSynthN24G n ampL (str2Durations zs time3)
overSoXSynthN3 :: Int -> Double -> Double -> Double -> String -> String -> String -> V.Vector Double -> IO ()
overSoXSynthN3 n ampL time3 dAmpl zs = overSoXSynthN34G n ampL dAmpl (str2DurationsDef n zs time3)
overSoXSynthN34G :: Int -> Double -> Double -> Durations -> String -> String -> V.Vector Double -> IO ()
overSoXSynthN34G n ampL dAmpl v2 tts vs vec0
| V.all (== 0.0) v2 = putStrLn "You provided no valid durations data! "
| compare (abs ampL) 0.01 /= LT && compare (abs ampL) 1.0 /= GT =
let v21 = V.filter (/= 0.0) v2
m = V.length v21
zeroN = numVZeroesPre vec0
v3 = intervalsFromString vs
l = length vs in V.imapM_ (\j x -> do
let note0 = closestNote x
note1 = dNote (V.unsafeIndex v3 (j `rem` l)) note0
v0 = overTones2 note0 tts
v1 = if isNothing note1 then V.empty
else overTones2 (fromJust note1) tts
overSoXSynthHelpN vec = V.imapM_ (\i (noteN, !amplN) -> readProcessWithExitCode (fromJust (showE "sox"))
["-r22050", "-n", "test" ++ prependZeroes zeroN (show (i + 2)) ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "",
"sine",showFFloat (Just 4) noteN "", "vol", if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then showFFloat (Just 4) (amplN * ampL) "" else "0"] "") vec
overSoXSynthHelpN2 vec = V.imapM_ (\i (noteN, !amplN) -> readProcessWithExitCode (fromJust (showE "sox"))
["-r22050", "-n", "testQ" ++ prependZeroes zeroN (show (i + 2)) ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "",
"sine", showFFloat (Just 4) noteN "", "vol", if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then showFFloat (Just 4) (if dAmpl * amplN * ampL > 1.0 then 1.0
else dAmpl * amplN * ampL) "" else "0"] "") vec
soxSynthHelpMain0 note01 = readProcessWithExitCode (fromJust (showE "sox")) ["-r22050", "-n", "testA" ++ prependZeroes zeroN "1" ++ ".wav",
"synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "","sine", showFFloat (Just 4) note01 "", "vol",
if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then "0.5" else "0"] ""
soxSynthHelpMain1 note02 = readProcessWithExitCode (fromJust (showE "sox")) ["-r22050", "-n", "testB" ++
prependZeroes zeroN "1" ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "","sine", showFFloat (Just 4) note02 "",
"vol", if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then showFFloat (Just 4) (if dAmpl > 0.5 then 0.5 else dAmpl / 2) "" else "0"] ""
if isNothing note1 then do { soxSynthHelpMain0 note0
; overSoXSynthHelpN v0 }
else do { soxSynthHelpMain0 note0
; soxSynthHelpMain1 (fromJust note1)
; overSoXSynthHelpN v0
; overSoXSynthHelpN2 v1}
paths0 <- listDirectory "."
let paths = sort . filter (isPrefixOf "test") $ paths0
_ <- readProcessWithExitCode (fromJust (showE "sox")) (["--combine", "mix"] ++ paths ++ ["result0" ++ prependZeroes zeroN (show j) ++ ".wav","vol","0.3"]) ""
mapM_ removeFile paths) vec0
| otherwise = let ampL1 = ampL - (fromIntegral . truncate $ ampL) in
if abs ampL1 < 0.01 then overSoXSynthN34G n 0.01 dAmpl v2 tts vs vec0
else overSoXSynthN34G n ampL1 dAmpl v2 tts vs vec0
overSoXSynthN35G :: Int -> Double -> Double -> Durations -> String -> Intervals -> V.Vector Double -> IO ()
overSoXSynthN35G n ampL dAmpl v2 tts v3 vec0
| V.all (== 0.0) v2 = putStrLn "You provided no valid durations data! "
| compare (abs ampL) 0.01 /= LT && compare (abs ampL) 1.0 /= GT =
let v21 = V.filter (/=0.0) v2
m = V.length v21
zeroN = numVZeroesPre vec0
l = V.length v3 in V.imapM_ (\j x -> do
let note0 = closestNote x
note1 = dNote (V.unsafeIndex v3 (j `rem` l)) note0
v0 = overTones2 note0 tts
v1 = if isNothing note1 then V.empty
else overTones2 (fromJust note1) tts
overSoXSynthHelpN vec = V.imapM_ (\i (noteN, !amplN) -> readProcessWithExitCode (fromJust (showE "sox"))
["-r22050", "-n", "test" ++ prependZeroes zeroN (show (i + 2)) ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "",
"sine",showFFloat (Just 4) noteN "", "vol", if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then showFFloat (Just 4) (amplN * ampL) "" else "0"] "") vec
overSoXSynthHelpN2 vec = V.imapM_ (\i (noteN, !amplN) -> readProcessWithExitCode (fromJust (showE "sox"))
["-r22050", "-n", "testQ" ++ prependZeroes zeroN (show (i + 2)) ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "",
"sine", showFFloat (Just 4) noteN "", "vol", if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then showFFloat (Just 4) (if dAmpl * amplN * ampL > 1.0 then 1.0
else dAmpl * amplN * ampL) "" else "0"] "") vec
soxSynthHelpMain0 note01 = readProcessWithExitCode (fromJust (showE "sox")) ["-r22050", "-n", "testA" ++ prependZeroes zeroN "1" ++ ".wav",
"synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "","sine", showFFloat (Just 4) note01 "", "vol",
if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then "0.5" else "0"] ""
soxSynthHelpMain1 note02 = readProcessWithExitCode (fromJust (showE "sox")) ["-r22050", "-n", "testB" ++
prependZeroes zeroN "1" ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "","sine", showFFloat (Just 4) note02 "",
"vol", if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then showFFloat (Just 4) (if dAmpl > 0.5 then 0.5 else dAmpl / 2) "" else "0"] ""
if isNothing note1 then do { soxSynthHelpMain0 note0
; overSoXSynthHelpN v0 }
else do { soxSynthHelpMain0 note0
; soxSynthHelpMain1 (fromJust note1)
; overSoXSynthHelpN v0
; overSoXSynthHelpN2 v1}
paths0 <- listDirectory "."
let paths = sort . filter (isPrefixOf "test") $ paths0
_ <- readProcessWithExitCode (fromJust (showE "sox")) (["--combine", "mix"] ++ paths ++ ["result0" ++ prependZeroes zeroN (show j) ++ ".wav","vol","0.3"]) ""
mapM_ removeFile paths) vec0
| otherwise = let ampL1 = ampL - (fromIntegral . truncate $ ampL) in
if abs ampL1 < 0.01 then overSoXSynthN35G n 0.01 dAmpl v2 tts v3 vec0
else overSoXSynthN35G n ampL1 dAmpl v2 tts v3 vec0
overSoXSynthN34GS :: Int -> Double -> Double -> Double -> String -> String -> String -> V.Vector Double -> IO ()
overSoXSynthN34GS n ampL time3 dAmpl zs = overSoXSynthN34G n ampL dAmpl (str2Durations zs time3)
overSoXSynthN35GS :: Int -> Double -> Double -> Double -> String -> String -> Intervals -> String -> V.Vector Double -> IO ()
overSoXSynthN35GS n ampL time3 dAmpl zs tts v3 vs = overSoXSynthN35G n ampL dAmpl (str2Durations zs time3) tts (intervalsFromStringG v3 vs)
overSoXSynthNGen :: FilePath -> Int -> Double -> Double -> String -> IO ()
overSoXSynthNGen file m = overSoXSynthNGenE file m 12
overSoXSynthNGenE :: FilePath -> Int -> Int -> Double -> Double -> String -> IO ()
overSoXSynthNGenE file m ku ampL time3 zs = do
n <- duration1000 file
nGenE4Gi n file m ku ampL (str2DurationsDef n zs time3)
overSoXSynthNGenEPar :: FilePath -> Params -> Double -> Double -> String -> IO ()
overSoXSynthNGenEPar file params ampL time3 zs = do
n <- duration1000 file
nGenE4GiPar n file params ampL (str2DurationsDef n zs time3)
overSoXSynthNGenE4GS :: FilePath -> Int -> Int -> Double -> Double -> String -> IO ()
overSoXSynthNGenE4GS file m ku ampL time3 zs = do
n <- duration1000 file
nGenE4Gi n file m ku ampL (str2Durations zs time3)
overSoXSynthNGenE4GSPar :: FilePath -> Params -> Double -> Double -> String -> IO ()
overSoXSynthNGenE4GSPar file params ampL time3 zs = do
n <- duration1000 file
nGenE4GiPar n file params ampL (str2Durations zs time3)
nGenE4Gi :: Int -> FilePath -> Int -> Int -> Double -> Durations -> IO ()
nGenE4Gi n file m ku ampL v2 = do
vecA <- freqsFromFile file n
let vecB = liftInEnkuV m ku . V.map fromIntegral . V.filter (/= (11440::Int)) $ vecA
overSoXSynthN4G n ampL v2 vecB
endFromResult
nGenE4GiPar :: Int -> FilePath -> Params -> Double -> Durations -> IO ()
nGenE4GiPar n file params ampL v2 = do
vecA <- freqsFromFile file n
let vecB = liftInParamsV params . V.map fromIntegral $ vecA
overSoXSynthN4G n ampL v2 vecB
endFromResult
overSoXSynthNGenE4G :: FilePath -> Int -> Int -> Double -> Durations -> IO ()
overSoXSynthNGenE4G file m ku ampL v2 = do
n <- duration1000 file
nGenE4Gi n file m ku ampL v2
overSoXSynthNGenE4GPar :: FilePath -> Params -> Double -> Durations -> IO ()
overSoXSynthNGenE4GPar file params ampL v2 = do
n <- duration1000 file
nGenE4GiPar n file params ampL v2
overSoXSynthNGen2 :: FilePath -> Int -> Double -> Double -> String -> String -> IO ()
overSoXSynthNGen2 file m = overSoXSynthNGen2E file m 12
overSoXSynthNGen2E :: FilePath -> Int -> Int -> Double -> Double -> String -> String -> IO ()
overSoXSynthNGen2E file m ku ampL time3 zs tts = do
n <- duration1000 file
nGen2E4Gi n file m ku ampL (str2DurationsDef n zs time3) tts
overSoXSynthNGen2EPar :: FilePath -> Params -> Double -> Double -> String -> String -> IO ()
overSoXSynthNGen2EPar file params ampL time3 zs tts = do
n <- duration1000 file
nGen2E4GiPar n file params ampL (str2DurationsDef n zs time3) tts
overSoXSynthNGen2E4GS :: FilePath -> Int -> Int -> Double -> Double -> String -> String -> IO ()
overSoXSynthNGen2E4GS file m ku ampL time3 zs tts = do
n <- duration1000 file
nGen2E4Gi n file m ku ampL (str2Durations zs time3) tts
overSoXSynthNGen2E4GSPar :: FilePath -> Params -> Double -> Double -> String -> String -> IO ()
overSoXSynthNGen2E4GSPar file params ampL time3 zs tts = do
n <- duration1000 file
nGen2E4GiPar n file params ampL (str2Durations zs time3) tts
nGen2E4Gi :: Int -> FilePath -> Int -> Int -> Double -> Durations -> String -> IO ()
nGen2E4Gi n file m ku ampL v2 tts = do
vecA <- freqsFromFile file n
let vecB = liftInEnkuV m ku . V.map fromIntegral . V.filter (/= (11440::Int)) $ vecA
overSoXSynthN24G n ampL v2 tts vecB
endFromResult
nGen2E4GiPar :: Int -> FilePath -> Params -> Double -> Durations -> String -> IO ()
nGen2E4GiPar n file params ampL v2 tts = do
vecA <- freqsFromFile file n
let vecB = liftInParamsV params . V.map fromIntegral $ vecA
overSoXSynthN24G n ampL v2 tts vecB
endFromResult
overSoXSynthNGen2E4G :: FilePath -> Int -> Int -> Double -> Durations -> String -> IO ()
overSoXSynthNGen2E4G file m ku ampL v2 tts = do
n <- duration1000 file
nGen2E4Gi n file m ku ampL v2 tts
overSoXSynthNGen2E4GPar :: FilePath -> Params -> Double -> Durations -> String -> IO ()
overSoXSynthNGen2E4GPar file params ampL v2 tts = do
n <- duration1000 file
nGen2E4GiPar n file params ampL v2 tts
overSoXSynthNGen3 :: FilePath -> Int -> Double -> Double -> Double -> String -> String -> String -> IO ()
overSoXSynthNGen3 file m = overSoXSynthNGen3E file m 12
overSoXSynthNGen3E :: FilePath -> Int -> Int -> Double -> Double -> Double -> String -> String -> String -> IO ()
overSoXSynthNGen3E file m ku ampL time3 dAmpl zs tts vs = do
n <- duration1000 file
nGen3E4Gi n file m ku ampL dAmpl (str2DurationsDef n zs time3) tts vs
overSoXSynthNGen3EPar :: FilePath -> Params -> Double -> Double -> Double -> String -> String -> String -> IO ()
overSoXSynthNGen3EPar file params ampL time3 dAmpl zs tts vs = do
n <- duration1000 file
nGen3E4GiPar n file params ampL dAmpl (str2DurationsDef n zs time3) tts vs
overSoXSynthNGen3E4GS :: FilePath -> Int -> Int -> Double -> Double -> Double -> String -> String -> String -> IO ()
overSoXSynthNGen3E4GS file m ku ampL time3 dAmpl zs tts vs = do
n <- duration1000 file
nGen3E4Gi n file m ku ampL dAmpl (str2Durations zs time3) tts vs
overSoXSynthNGen3E4GSPar :: FilePath -> Params -> Double -> Double -> Double -> String -> String -> String -> IO ()
overSoXSynthNGen3E4GSPar file params ampL time3 dAmpl zs tts vs = do
n <- duration1000 file
nGen3E4GiPar n file params ampL dAmpl (str2Durations zs time3) tts vs
nGen3E4Gi :: Int -> FilePath -> Int -> Int -> Double -> Double -> Durations -> String -> String -> IO ()
nGen3E4Gi n file m ku ampL dAmpl v2 tts vs = do
vecA <- freqsFromFile file n
let vecB = liftInEnkuV m ku . V.map fromIntegral . V.filter (/= (11440::Int)) $ vecA
overSoXSynthN34G n ampL dAmpl v2 tts vs vecB
endFromResult
nGen3E4GiPar :: Int -> FilePath -> Params -> Double -> Double -> Durations -> String -> String -> IO ()
nGen3E4GiPar n file params ampL dAmpl v2 tts vs = do
vecA <- freqsFromFile file n
let vecB = liftInParamsV params . V.map fromIntegral $ vecA
overSoXSynthN34G n ampL dAmpl v2 tts vs vecB
endFromResult
nGen3E5Gi :: Int -> FilePath -> Int -> Int -> Double -> Double -> Durations -> String -> Intervals -> IO ()
nGen3E5Gi n file m ku ampL dAmpl v2 tts v3 = do
vecA <- freqsFromFile file n
let vecB = liftInEnkuV m ku . V.map fromIntegral . V.filter (/= (11440::Int)) $ vecA
overSoXSynthN35G n ampL dAmpl v2 tts v3 vecB
endFromResult
nGen3E5GiPar :: Int -> FilePath -> Params -> Double -> Double -> Durations -> String -> Intervals -> IO ()
nGen3E5GiPar n file params ampL dAmpl v2 tts v3 = do
vecA <- freqsFromFile file n
let vecB = liftInParamsV params . V.map fromIntegral $ vecA
overSoXSynthN35G n ampL dAmpl v2 tts v3 vecB
endFromResult
overSoXSynthNGen3E4G :: FilePath -> Int -> Int -> Double -> Double -> Durations -> String -> String -> IO ()
overSoXSynthNGen3E4G file m ku ampL dAmpl v2 tts vs = do
n <- duration1000 file
nGen3E4Gi n file m ku ampL dAmpl v2 tts vs
overSoXSynthNGen3E4GPar :: FilePath -> Params -> Double -> Double -> Durations -> String -> String -> IO ()
overSoXSynthNGen3E4GPar file params ampL dAmpl v2 tts vs = do
n <- duration1000 file
nGen3E4GiPar n file params ampL dAmpl v2 tts vs
overSoXSynthNGen3E5G :: FilePath -> Int -> Int -> Double -> Double -> Durations -> String -> Intervals -> IO ()
overSoXSynthNGen3E5G file m ku ampL dAmpl v2 tts v3 = do
n <- duration1000 file
nGen3E5Gi n file m ku ampL dAmpl v2 tts v3
overSoXSynthNGen3E5GPar :: FilePath -> Params -> Double -> Double -> Durations -> String -> Intervals -> IO ()
overSoXSynthNGen3E5GPar file params ampL dAmpl v2 tts v3 = do
n <- duration1000 file
nGen3E5GiPar n file params ampL dAmpl v2 tts v3
overSoXSynthNGen3E5GS :: FilePath -> Int -> Int -> Double -> Double -> Double -> String -> String -> Intervals -> String -> IO ()
overSoXSynthNGen3E5GS file m ku ampL time3 dAmpl zs tts v3 vs = do
n <- duration1000 file
nGen3E5Gi n file m ku ampL dAmpl (str2Durations zs time3) tts (intervalsFromStringG v3 vs)
overSoXSynthNGen3E5GSPar :: FilePath -> Params -> Double -> Double -> Double -> String -> String -> Intervals -> String -> IO ()
overSoXSynthNGen3E5GSPar file params ampL time3 dAmpl zs tts v3 vs = do
n <- duration1000 file
nGen3E5GiPar n file params ampL dAmpl (str2Durations zs time3) tts (intervalsFromStringG v3 vs)
overSoXSynthNGen3E6G :: FilePath -> Int -> Int -> Double -> Double -> Durations -> String -> Intervals -> Strengths -> Double -> IO ()
overSoXSynthNGen3E6G file m ku ampL dAmpl v2 tts v3 v6 limV =
overSoXSynthNGen3E5G file m ku ampL dAmpl v2 tts v3 >> apply6G2 v6 "221w" "result" limV >> endFromResult
overSoXSynthNGen3E6GPar :: FilePath -> Params -> Double -> Double -> Durations -> String -> Intervals -> Strengths -> Double -> IO ()
overSoXSynthNGen3E6GPar file params ampL dAmpl v2 tts v3 v6 limV =
overSoXSynthNGen3E5GPar file params ampL dAmpl v2 tts v3 >> apply6G2 v6 "221w" "result" limV >> endFromResult
overSoXSynthNGen3E6GS :: FilePath -> Int -> Int -> Double -> Double -> Durations -> String -> Intervals -> String -> Double -> IO ()
overSoXSynthNGen3E6GS file m ku ampL dAmpl v2 tts v3 xxs limV = overSoXSynthNGen3E6G file m ku ampL dAmpl v2 tts v3 (str2Volume xxs) limV
overSoXSynthNGen3E6GSPar :: FilePath -> Params -> Double -> Double -> Durations -> String -> Intervals -> String -> Double -> IO ()
overSoXSynthNGen3E6GSPar file params ampL dAmpl v2 tts v3 xxs limV = overSoXSynthNGen3E6GPar file params ampL dAmpl v2 tts v3 (str2Volume xxs) limV
overSoXSynthNGen3E6GSu :: FilePath -> Int -> Int -> Double -> Double -> Double -> String -> Intervals -> String -> Double -> IO ()
overSoXSynthNGen3E6GSu file m ku ampL dAmpl time3 tts v3 xxs = overSoXSynthNGen3E6G file m ku ampL dAmpl (str2Durations xxs time3) tts v3 (str2Volume xxs)
overSoXSynthNGen3E6GSuPar :: FilePath -> Params -> Double -> Double -> Double -> String -> Intervals -> String -> Double -> IO ()
overSoXSynthNGen3E6GSuPar file params ampL dAmpl time3 tts v3 xxs = overSoXSynthNGen3E6GPar file params ampL dAmpl (str2Durations xxs time3) tts v3 (str2Volume xxs)
uniqOverSoXSynth :: Double -> String -> IO ()
uniqOverSoXSynth x wws = do
let note0 = closestNote x
note1 = pureQuintNote note0
v0 = uniqOvertonesV note0 wws
v1 = uniqOvertonesV note1 wws
_ <- readProcessWithExitCode (fromJust (showE "sox")) ["-r22050", "-n", "test-.wav", "synth", "0.5","sine", showFFloat (Just 4) note0 "",
"synth", "0.5","sine", "mix", showFFloat (Just 4) note1 "", "vol","0.5"] ""
uniqOverSoXSynthHelp v0
uniqOverSoXSynthHelp2 v1
mixTest
uniqOverSoXSynthHelp1 :: String -> OvertonesO -> IO ()
uniqOverSoXSynthHelp1 xs = V.imapM_ (\i (noteN, !amplN) -> readProcessWithExitCode (fromJust (showE "sox"))
["-r22050", "-n", xs ++ show (i + 2) ++ ".wav", "synth", "0.5","sine", showFFloat (Just 4) noteN "", "vol", showFFloat (Just 4) amplN ""] "")
uniqOverSoXSynthHelp :: OvertonesO -> IO ()
uniqOverSoXSynthHelp = uniqOverSoXSynthHelp1 "test0"
uniqOverSoXSynthHelp2 :: OvertonesO -> IO ()
uniqOverSoXSynthHelp2 = uniqOverSoXSynthHelp1 "test1"
uniqOverSoXSynth2 :: Double -> String -> String -> IO ()
uniqOverSoXSynth2 x wws tts = do
let note0 = closestNote x
note1 = pureQuintNote note0
v0 = uniqOvertonesV2 note0 wws tts
v1 = uniqOvertonesV2 note1 wws tts
_ <- readProcessWithExitCode (fromJust (showE "sox")) ["-r22050", "-n", "test-.wav", "synth", "0.5","sine", showFFloat (Just 4) note0 "", "synth",
"0.5","sine", "mix", showFFloat (Just 4) note1 "", "vol","0.5"] ""
uniqOverSoXSynthHelp v0
uniqOverSoXSynthHelp2 v1
mixTest
uniqOverSoXSynthN :: Int -> Double -> Double -> String -> String -> V.Vector Double -> IO ()
uniqOverSoXSynthN n ampL time3 zs = uniqOverSoXSynthN4G n ampL (str2DurationsDef n zs time3)
uniqOverSoXSynthN4GS :: Int -> Double -> Double -> String -> String -> V.Vector Double -> IO ()
uniqOverSoXSynthN4GS n ampL time3 zs = uniqOverSoXSynthN4G n ampL (str2Durations zs time3)
uniqOverSoXSynthN4G :: Int -> Double -> Durations -> String -> V.Vector Double -> IO ()
uniqOverSoXSynthN4G n ampL v2 wws vec0
| V.all (== 0.0) v2 = putStrLn "You provided no valid durations data! "
| compare (abs ampL) 0.01 /= LT && compare (abs ampL) 1.0 /= GT =
let v21 = V.filter (/= 0.0) v2
m = V.length v21
zeroN = numVZeroesPre vec0 in V.imapM_ (\j x -> do
let note0 = closestNote x
note1 = pureQuintNote note0
v0 = uniqOvertonesV note0 wws
v1 = uniqOvertonesV note1 wws
uniqOverSoXSynthHelpN = V.imapM_ (\i (noteN, !amplN) -> readProcessWithExitCode (fromJust (showE "sox"))
["-r22050", "-n", "test" ++ prependZeroes zeroN (show (i + 2)) ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "",
"sine", showFFloat (Just 4) noteN "", "vol", if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT
then showFFloat (Just 4) (amplN * ampL) "" else "0"] "")
uniqOverSoXSynthHelpN2 = V.imapM_ (\i (noteN, !amplN) -> readProcessWithExitCode (fromJust (showE "sox"))
["-r22050", "-n", "testQ" ++ prependZeroes zeroN (show (i + 2)) ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "",
"sine", showFFloat (Just 4) noteN "", "vol", if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT
then showFFloat (Just 4) (amplN * ampL) "" else "0"] "")
soxSynthHelpMain note01 note02 = readProcessWithExitCode (fromJust (showE "sox")) ["-r22050", "-n", "testA" ++
prependZeroes zeroN "1" ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "","sine", showFFloat (Just 4) note01 "", "synth", showFFloat (Just 4) (V.unsafeIndex v2 (j `rem` m)) "","sine", "mix", showFFloat (Just 4) note02 "", "vol",
if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then "0.5" else "0"] ""
soxSynthHelpMain note0 note1
uniqOverSoXSynthHelpN v0
uniqOverSoXSynthHelpN2 v1
mixTest2 zeroN j) vec0
| otherwise = let ampL1 = ampL - (fromIntegral . truncate $ ampL) in
if abs ampL1 < 0.01 then uniqOverSoXSynthN4G n 0.01 v2 wws vec0
else uniqOverSoXSynthN4G n ampL1 v2 wws vec0
uniqOverSoXSynthN3 :: Int -> Double -> Double -> String -> String -> String -> V.Vector Double -> IO ()
uniqOverSoXSynthN3 n ampL time3 zs = uniqOverSoXSynthN34G n ampL (str2DurationsDef n zs time3)
uniqOverSoXSynthN34GS :: Int -> Double -> Double -> String -> String -> String -> V.Vector Double -> IO ()
uniqOverSoXSynthN34GS n ampL time3 zs = uniqOverSoXSynthN34G n ampL (str2Durations zs time3)
uniqOverSoXSynthN34G :: Int -> Double -> Durations -> String -> String -> V.Vector Double -> IO ()
uniqOverSoXSynthN34G n ampL v2 wws tts vec0
| V.all (== 0.0) v2 = putStrLn "You provided no valid durations data! "
| compare (abs ampL) 0.01 /= LT && compare (abs ampL) 1.0 /= GT =
let v21 = V.filter (/=0.0) v2
m = V.length v2
zeroN = numVZeroesPre vec0 in V.imapM_ (\j x -> do
let note0 = closestNote x
note1 = pureQuintNote note0
v0 = uniqOvertonesV2 note0 wws tts
v1 = uniqOvertonesV2 note1 wws tts
uniqOverSoXSynthHelpN vec = V.imapM_ (\i (noteN, !amplN) -> readProcessWithExitCode (fromJust (showE "sox"))
["-r22050", "-n", "test" ++ prependZeroes zeroN (show (i + 2)) ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "",
"sine", showFFloat (Just 4) noteN "", "vol", if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then showFFloat (Just 4) (amplN * ampL) "" else "0"] "") vec
uniqOverSoXSynthHelpN2 vec = V.imapM_ (\i (noteN, !amplN) -> readProcessWithExitCode (fromJust (showE "sox"))
["-r22050", "-n", "testQ" ++ prependZeroes zeroN (show (i + 2)) ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "",
"sine", showFFloat (Just 4) noteN "", "vol", if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then showFFloat (Just 4) (amplN * ampL) "" else "0"] "") vec
soxSynthHelpMain note01 note02 = readProcessWithExitCode (fromJust (showE "sox")) ["-r22050", "-n", "testA" ++
prependZeroes zeroN "1" ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "","sine", showFFloat (Just 4) note01 "",
"synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "","sine", "mix", showFFloat (Just 4) note02 "", "vol",
if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then "0.5" else "0"] ""
soxSynthHelpMain note0 note1
uniqOverSoXSynthHelpN v0
uniqOverSoXSynthHelpN2 v1
mixTest2 zeroN j) vec0
| otherwise = let ampL1 = ampL - (fromIntegral . truncate $ ampL) in
if abs ampL1 < 0.01 then uniqOverSoXSynthN34G n 0.01 v2 wws tts vec0
else uniqOverSoXSynthN34G n ampL1 v2 wws tts vec0
uniqOverSoXSynthN4 :: Int -> Double -> Double -> Double -> String -> String -> String -> String -> V.Vector Double -> IO ()
uniqOverSoXSynthN4 n ampL time3 dAmpl zs = uniqOverSoXSynthN44G n ampL dAmpl (str2DurationsDef n zs time3)
uniqOverSoXSynthN44GS :: Int -> Double -> Double -> Double -> String -> String -> String -> String -> V.Vector Double -> IO ()
uniqOverSoXSynthN44GS n ampL time3 dAmpl zs = uniqOverSoXSynthN44G n ampL dAmpl (str2Durations zs time3)
uniqOverSoXSynthN44G :: Int -> Double -> Double -> Durations -> String -> String -> String -> V.Vector Double -> IO ()
uniqOverSoXSynthN44G n ampL dAmpl v2 wws tts vs = uniqOverSoXSynthN45G n ampL dAmpl v2 wws tts (intervalsFromString vs)
uniqOverSoXSynthN45G :: Int -> Double -> Double -> Durations -> String -> String -> Intervals -> V.Vector Double -> IO ()
uniqOverSoXSynthN45G n ampL dAmpl v2 wws tts v3 vec0
| V.all (== 0.0) v2 = putStrLn "You provided no valid durations data! "
| compare (abs ampL) 0.01 /= LT && compare (abs ampL) 1.0 /= GT =
let v21 = V.filter (/=0.0) v2
m = V.length v2
zeroN = numVZeroesPre vec0
l = V.length v3 in V.imapM_ (\j x -> do
let note0 = closestNote x
note1 = dNote (V.unsafeIndex v3 (j `rem` l)) note0
v0 = uniqOvertonesV2 note0 wws tts
v1 = if isNothing note1 then V.empty
else uniqOvertonesV2 (fromJust note1) wws tts
uniqOverSoXSynthHelpN = V.imapM_ (\i (noteN, !amplN) -> readProcessWithExitCode (fromJust (showE "sox"))
["-r22050", "-n", "test" ++ prependZeroes zeroN (show (i + 2)) ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "",
"sine",showFFloat (Just 4) noteN "", "vol", if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then showFFloat (Just 4) (amplN * ampL) "" else "0"] "")
uniqOverSoXSynthHelpN2 = V.imapM_ (\i (noteN, amplN) -> readProcessWithExitCode (fromJust (showE "sox"))
["-r22050", "-n", "testQ" ++ prependZeroes zeroN (show (i + 2)) ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "",
"sine", showFFloat (Just 4) noteN "", "vol", if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then showFFloat (Just 4) (if dAmpl * amplN * ampL > 1.0 then 1.0
else dAmpl * amplN * ampL) "" else "0"] "")
soxSynthHelpMain0 note01 = readProcessWithExitCode (fromJust (showE "sox")) ["-r22050", "-n", "testA" ++
prependZeroes zeroN "1" ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "","sine", showFFloat (Just 4) note01 "",
"vol",if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then "0.5" else "0"] ""
soxSynthHelpMain1 note02 = readProcessWithExitCode (fromJust (showE "sox")) ["-r22050", "-n", "testB" ++
prependZeroes zeroN "1" ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "","sine", showFFloat (Just 4) note02 "",
"vol", if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then showFFloat (Just 4) (if dAmpl > 0.5 then 0.5 else dAmpl / 2) "" else "0"] ""
if isNothing note1 then do { soxSynthHelpMain0 note0
; uniqOverSoXSynthHelpN v0 }
else do { soxSynthHelpMain0 note0
; soxSynthHelpMain1 (fromJust note1)
; uniqOverSoXSynthHelpN v0
; uniqOverSoXSynthHelpN2 v1}
mixTest2 zeroN j) vec0
| otherwise = let ampL1 = ampL - (fromIntegral . truncate $ ampL) in
if abs ampL1 < 0.01 then uniqOverSoXSynthN45G n 0.01 dAmpl v2 wws tts v3 vec0
else uniqOverSoXSynthN45G n ampL1 dAmpl v2 wws tts v3 vec0
uniqOverSoXSynthN46G :: Int -> Double -> Double -> Durations -> String -> String -> Intervals -> V.Vector Double -> Strengths -> Double -> IO ()
uniqOverSoXSynthN46G n ampL dAmpl v2 wws tts v3 vec0 v6 limV
| V.all (== 0.0) v2 = putStrLn "You provided no valid durations data! "
| V.null v6 = putStrLn "You did not provide a volume adjustments vector! "
| compare (abs ampL) 0.01 /= LT && compare (abs ampL) 1.0 /= GT =
let v21 = V.filter (/=0.0) v2
m = V.length v2
zeroN = numVZeroesPre vec0
l = V.length v3 in V.imapM_ (\j x -> do
let note0 = closestNote x
note1 = dNote (V.unsafeIndex v3 (j `rem` l)) note0
v0 = uniqOvertonesV2 note0 wws tts
v1 = if isNothing note1 then V.empty
else uniqOvertonesV2 (fromJust note1) wws tts
uniqOverSoXSynthHelpN = V.imapM_ (\i (noteN, !amplN) -> readProcessWithExitCode (fromJust (showE "sox"))
["-r22050", "-n", "test" ++ prependZeroes zeroN (show (i + 2)) ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "",
"sine",showFFloat (Just 4) noteN "", "vol", if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then showFFloat (Just 4) (amplN * ampL) "" else "0"] "")
uniqOverSoXSynthHelpN2 = V.imapM_ (\i (noteN, amplN) -> readProcessWithExitCode (fromJust (showE "sox"))
["-r22050", "-n", "testQ" ++ prependZeroes zeroN (show (i + 2)) ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "",
"sine", showFFloat (Just 4) noteN "", "vol", if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then showFFloat (Just 4) (if dAmpl * amplN * ampL > 1.0 then 1.0
else dAmpl * amplN * ampL) "" else "0"] "")
soxSynthHelpMain0 note01 = readProcessWithExitCode (fromJust (showE "sox")) ["-r22050", "-n", "testA" ++
prependZeroes zeroN "1" ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "","sine", showFFloat (Just 4) note01 "",
"vol",if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then "0.5" else "0"] ""
soxSynthHelpMain1 note02 = readProcessWithExitCode (fromJust (showE "sox")) ["-r22050", "-n", "testB" ++
prependZeroes zeroN "1" ++ ".wav", "synth", showFFloat (Just 4) (abs (V.unsafeIndex v21 (j `rem` m))) "","sine", showFFloat (Just 4) note02 "",
"vol", if compare (V.unsafeIndex v21 (j `rem` m)) 0.0 == GT then showFFloat (Just 4) (if dAmpl > 0.5 then 0.5 else dAmpl / 2) "" else "0"] ""
if isNothing note1 then do { soxSynthHelpMain0 note0
; uniqOverSoXSynthHelpN v0 }
else do { soxSynthHelpMain0 note0
; soxSynthHelpMain1 (fromJust note1)
; uniqOverSoXSynthHelpN v0
; uniqOverSoXSynthHelpN2 v1}
mixTest2 zeroN j
apply6GSilentFile ("result" ++ prependZeroes zeroN (show j) ++ ".wav") limV (V.unsafeIndex v6 (j `rem` V.length v6))) vec0
| otherwise = let ampL1 = ampL - (fromIntegral . truncate $ ampL) in
if abs ampL1 < 0.01 then uniqOverSoXSynthN46G n 0.01 dAmpl v2 wws tts v3 vec0 v6 limV
else uniqOverSoXSynthN46G n ampL1 dAmpl v2 wws tts v3 vec0 v6 limV
uniqOverSoXSynthN45GS :: Int -> Double -> Double -> Double -> String -> String -> String -> Intervals -> String -> V.Vector Double -> IO ()
uniqOverSoXSynthN45GS n ampL time3 dAmpl zs wws tts v3 vs = uniqOverSoXSynthN45G n ampL dAmpl (str2Durations zs time3) wws tts (intervalsFromStringG v3 vs)
uniqOverSoXSynthN46GS :: Int -> Double -> Double -> Double -> String -> String -> String -> Intervals -> String -> V.Vector Double -> String ->
Double -> IO ()
uniqOverSoXSynthN46GS n ampL time3 dAmpl zs wws tts v3 vs vec0 xxs limV =
uniqOverSoXSynthN46G n ampL dAmpl (str2Durations zs time3) wws tts (intervalsFromStringG v3 vs) vec0 (str2Volume xxs) limV
uniqOverSoXSynthN46GSu :: Int -> Double -> Double -> Double -> String -> String -> Intervals -> String -> V.Vector Double -> String -> Double -> IO ()
uniqOverSoXSynthN46GSu n ampL time3 dAmpl wws tts v5 vs vec0 xxs limV =
uniqOverSoXSynthN46G n ampL dAmpl (str2Durations xxs time3) wws tts (intervalsFromStringG v5 vs) vec0 (str2Volume xxs) limV
uniqOverSoXSynthNGen :: FilePath -> Int -> Double -> Double -> String -> String -> IO ()
uniqOverSoXSynthNGen file m = uniqOverSoXSynthNGenE file m 12
uniqOverSoXSynthNGenE :: FilePath -> Int -> Int -> Double -> Double -> String -> String -> IO ()
uniqOverSoXSynthNGenE file m ku ampL time3 zs wws = do
n <- duration1000 file
unGenNE4Gi n file m ku ampL (str2DurationsDef n zs time3) wws
uniqOverSoXSynthNGenEPar :: FilePath -> Params -> Double -> Double -> String -> String -> IO ()
uniqOverSoXSynthNGenEPar file params ampL time3 zs wws = do
n <- duration1000 file
unGenNE4GiPar n file params ampL (str2DurationsDef n zs time3) wws
uniqOverSoXSynthNGenE4GS :: FilePath -> Int -> Int -> Double -> Double -> String -> String -> IO ()
uniqOverSoXSynthNGenE4GS file m ku ampL time3 zs wws = do
n <- duration1000 file
unGenNE4Gi n file m ku ampL (str2Durations zs time3) wws
uniqOverSoXSynthNGenE4GSPar :: FilePath -> Params -> Double -> Double -> String -> String -> IO ()
uniqOverSoXSynthNGenE4GSPar file params ampL time3 zs wws = do
n <- duration1000 file
unGenNE4GiPar n file params ampL (str2Durations zs time3) wws
unGenNE4Gi :: Int -> FilePath -> Int -> Int -> Double -> Durations -> String -> IO ()
unGenNE4Gi n file m ku ampL v2 wws = do
vecA <- freqsFromFile file n
let vecB = liftInEnkuV m ku . V.map fromIntegral . V.filter (/= (11440::Int)) $ vecA
uniqOverSoXSynthN4G n ampL v2 wws vecB
endFromResult
unGenNE4GiPar :: Int -> FilePath -> Params -> Double -> Durations -> String -> IO ()
unGenNE4GiPar n file params ampL v2 wws = do
vecA <- freqsFromFile file n
let vecB = liftInParamsV params . V.map fromIntegral $ vecA
uniqOverSoXSynthN4G n ampL v2 wws vecB
endFromResult
uniqOverSoXSynthNGenE4G :: FilePath -> Int -> Int -> Double -> Durations -> String -> IO ()
uniqOverSoXSynthNGenE4G file m ku ampL v2 wws = do
n <- duration1000 file
unGenNE4Gi n file m ku ampL v2 wws
uniqOverSoXSynthNGenE4GPar :: FilePath -> Params -> Double -> Durations -> String -> IO ()
uniqOverSoXSynthNGenE4GPar file params ampL v2 wws = do
n <- duration1000 file
unGenNE4GiPar n file params ampL v2 wws
uniqOverSoXSynthNGen3 :: FilePath -> Int -> Double -> Double -> String -> String -> String -> IO ()
uniqOverSoXSynthNGen3 file m = uniqOverSoXSynthNGen3E file m 12
uniqOverSoXSynthNGen3E :: FilePath -> Int -> Int -> Double -> Double -> String -> String -> String -> IO ()
uniqOverSoXSynthNGen3E file m ku ampL time3 zs wws tts = do
n <- duration1000 file
unGenN3E4Gi n file m ku ampL (str2DurationsDef n zs time3) wws tts
uniqOverSoXSynthNGen3EPar :: FilePath -> Params -> Double -> Double -> String -> String -> String -> IO ()
uniqOverSoXSynthNGen3EPar file params ampL time3 zs wws tts = do
n <- duration1000 file
unGenN3E4GiPar n file params ampL (str2DurationsDef n zs time3) wws tts
uniqOverSoXSynthNGen3E4GS :: FilePath -> Int -> Int -> Double -> Double -> String -> String -> String -> IO ()
uniqOverSoXSynthNGen3E4GS file m ku ampL time3 zs wws tts = do
n <- duration1000 file
unGenN3E4Gi n file m ku ampL (str2Durations zs time3) wws tts
uniqOverSoXSynthNGen3E4GSPar :: FilePath -> Params -> Double -> Double -> String -> String -> String -> IO ()
uniqOverSoXSynthNGen3E4GSPar file params ampL time3 zs wws tts = do
n <- duration1000 file
unGenN3E4GiPar n file params ampL (str2Durations zs time3) wws tts
unGenN3E4Gi :: Int -> FilePath -> Int -> Int -> Double -> Durations -> String -> String -> IO ()
unGenN3E4Gi n file m ku ampL v2 wws tts = do
vecA <- freqsFromFile file n
let vecB = liftInEnkuV m ku . V.map fromIntegral . V.filter (/= (11440::Int)) $ vecA
uniqOverSoXSynthN34G n ampL v2 wws tts vecB
endFromResult
unGenN3E4GiPar :: Int -> FilePath -> Params -> Double -> Durations -> String -> String -> IO ()
unGenN3E4GiPar n file params ampL v2 wws tts = do
vecA <- freqsFromFile file n
let vecB = liftInParamsV params . V.map fromIntegral $ vecA
uniqOverSoXSynthN34G n ampL v2 wws tts vecB
endFromResult
uniqOverSoXSynthNGen3E4G :: FilePath -> Int -> Int -> Double -> Durations -> String -> String -> IO ()
uniqOverSoXSynthNGen3E4G file m ku ampL v2 wws tts = do
n <- duration1000 file
unGenN3E4Gi n file m ku ampL v2 wws tts
uniqOverSoXSynthNGen3E4GPar :: FilePath -> Params -> Double -> Durations -> String -> String -> IO ()
uniqOverSoXSynthNGen3E4GPar file params ampL v2 wws tts = do
n <- duration1000 file
unGenN3E4GiPar n file params ampL v2 wws tts
uniqOverSoXSynthNGen4 :: FilePath -> Int -> Double -> Double -> Double -> String -> String -> String -> String -> IO ()
uniqOverSoXSynthNGen4 file m = uniqOverSoXSynthNGen4E file m 12
uniqOverSoXSynthNGen4E :: FilePath -> Int -> Int -> Double -> Double -> Double -> String -> String -> String -> String -> IO ()
uniqOverSoXSynthNGen4E file m ku ampL time3 dAmpl zs wws tts vs = do
n <- duration1000 file
unGenN4E4Gi n file m ku ampL dAmpl (str2DurationsDef n zs time3) wws tts vs
uniqOverSoXSynthNGen4EPar :: FilePath -> Params -> Double -> Double -> Double -> String -> String -> String -> String -> IO ()
uniqOverSoXSynthNGen4EPar file params ampL time3 dAmpl zs wws tts vs = do
n <- duration1000 file
unGenN4E4GiPar n file params ampL dAmpl (str2DurationsDef n zs time3) wws tts vs
uniqOverSoXSynthNGen4E4GS :: FilePath -> Int -> Int -> Double -> Double -> Double -> String -> String -> String -> String -> IO ()
uniqOverSoXSynthNGen4E4GS file m ku ampL time3 dAmpl zs wws tts vs = do
n <- duration1000 file
unGenN4E4Gi n file m ku ampL dAmpl (str2Durations zs time3) wws tts vs
uniqOverSoXSynthNGen4E4GSPar :: FilePath -> Params -> Double -> Double -> Double -> String -> String -> String -> String -> IO ()
uniqOverSoXSynthNGen4E4GSPar file params ampL time3 dAmpl zs wws tts vs = do
n <- duration1000 file
unGenN4E4GiPar n file params ampL dAmpl (str2Durations zs time3) wws tts vs
unGenN4E4Gi :: Int -> FilePath -> Int -> Int -> Double -> Double -> Durations -> String -> String -> String -> IO ()
unGenN4E4Gi n file m ku ampL dAmpl v2 wws tts vs = do
vecA <- freqsFromFile file n
let vecB = liftInEnkuV m ku . V.map fromIntegral . V.filter (/= (11440::Int)) $ vecA
uniqOverSoXSynthN44G n ampL dAmpl v2 wws tts vs vecB
endFromResult
unGenN4E4GiPar :: Int -> FilePath -> Params -> Double -> Double -> Durations -> String -> String -> String -> IO ()
unGenN4E4GiPar n file params ampL dAmpl v2 wws tts vs = do
vecA <- freqsFromFile file n
let vecB = liftInParamsV params . V.map fromIntegral $ vecA
uniqOverSoXSynthN44G n ampL dAmpl v2 wws tts vs vecB
endFromResult
unGenN4E5Gi :: Int -> FilePath -> Int -> Int -> Double -> Double -> Durations -> String -> String -> Intervals -> IO ()
unGenN4E5Gi n file m ku ampL dAmpl v2 wws tts v3 = do
vecA <- freqsFromFile file n
let vecB = liftInEnkuV m ku . V.map fromIntegral . V.filter (/= (11440::Int)) $ vecA
uniqOverSoXSynthN45G n ampL dAmpl v2 wws tts v3 vecB
endFromResult
unGenN4E5GiPar :: Int -> FilePath -> Params -> Double -> Double -> Durations -> String -> String -> Intervals -> IO ()
unGenN4E5GiPar n file params ampL dAmpl v2 wws tts v3 = do
vecA <- freqsFromFile file n
let vecB = liftInParamsV params . V.map fromIntegral $ vecA
uniqOverSoXSynthN45G n ampL dAmpl v2 wws tts v3 vecB
endFromResult
uniqOverSoXSynthNGen4E4G :: FilePath -> Int -> Int -> Double -> Double -> Durations -> String -> String -> String -> IO ()
uniqOverSoXSynthNGen4E4G file m ku ampL dAmpl v2 wws tts vs = do
n <- duration1000 file
unGenN4E4Gi n file m ku ampL dAmpl v2 wws tts vs
uniqOverSoXSynthNGen4E4GPar :: FilePath -> Params -> Double -> Double -> Durations -> String -> String -> String -> IO ()
uniqOverSoXSynthNGen4E4GPar file params ampL dAmpl v2 wws tts vs = do
n <- duration1000 file
unGenN4E4GiPar n file params ampL dAmpl v2 wws tts vs
uniqOverSoXSynthNGen4E5G :: FilePath -> Int -> Int -> Double -> Double -> Durations -> String -> String -> Intervals -> IO ()
uniqOverSoXSynthNGen4E5G file m ku ampL dAmpl v2 wws tts v3 = do
n <- duration1000 file
unGenN4E5Gi n file m ku ampL dAmpl v2 wws tts v3
uniqOverSoXSynthNGen4E5GPar :: FilePath -> Params -> Double -> Double -> Durations -> String -> String -> Intervals -> IO ()
uniqOverSoXSynthNGen4E5GPar file params ampL dAmpl v2 wws tts v3 = do
n <- duration1000 file
unGenN4E5GiPar n file params ampL dAmpl v2 wws tts v3
uniqOverSoXSynthNGen4E5GS :: FilePath -> Int -> Int -> Double -> Double -> Double -> String -> String -> String -> Intervals -> String -> IO ()
uniqOverSoXSynthNGen4E5GS file m ku ampL time3 dAmpl zs wws tts v3 vs = do
n <- duration1000 file
unGenN4E5Gi n file m ku ampL dAmpl (str2Durations zs time3) wws tts (intervalsFromStringG v3 vs)
uniqOverSoXSynthNGen4E5GSPar :: FilePath -> Params -> Double -> Double -> Double -> String -> String -> String -> Intervals -> String -> IO ()
uniqOverSoXSynthNGen4E5GSPar file params ampL time3 dAmpl zs wws tts v3 vs = do
n <- duration1000 file
unGenN4E5GiPar n file params ampL dAmpl (str2Durations zs time3) wws tts (intervalsFromStringG v3 vs)
uniqOverSoXSynthNGen4E6G :: FilePath -> Int -> Int -> Double -> Double -> Durations -> String -> String -> Intervals -> Strengths -> Double -> IO ()
uniqOverSoXSynthNGen4E6G file m ku ampL dAmpl v2 wws tts v3 v6 limV =
uniqOverSoXSynthNGen4E5G file m ku ampL dAmpl v2 wws tts v3 >> apply6G2 v6 "221w" "result" limV >> endFromResult
uniqOverSoXSynthNGen4E6GPar :: FilePath -> Params -> Double -> Double -> Durations -> String -> String -> Intervals -> Strengths -> Double -> IO ()
uniqOverSoXSynthNGen4E6GPar file params ampL dAmpl v2 wws tts v3 v6 limV =
uniqOverSoXSynthNGen4E5GPar file params ampL dAmpl v2 wws tts v3 >> apply6G2 v6 "221w" "result" limV >> endFromResult
uniqOverSoXSynthNGen4E6GS :: FilePath -> Int -> Int -> Double -> Double -> Double -> String -> String -> String -> Intervals -> String ->
String -> Double -> IO ()
uniqOverSoXSynthNGen4E6GS file m ku ampL time3 dAmpl zs wws tts v5 vs xxs limV =
uniqOverSoXSynthNGen4E6G file m ku ampL dAmpl (str2Durations zs time3) wws tts (intervalsFromStringG v5 vs) (str2Volume xxs) limV
uniqOverSoXSynthNGen4E6GSPar :: FilePath -> Params -> Double -> Double -> Double -> String -> String -> String -> Intervals -> String ->
String -> Double -> IO ()
uniqOverSoXSynthNGen4E6GSPar file params ampL time3 dAmpl zs wws tts v5 vs xxs limV =
uniqOverSoXSynthNGen4E6GPar file params ampL dAmpl (str2Durations zs time3) wws tts (intervalsFromStringG v5 vs) (str2Volume xxs) limV
uniqOverSoXSynthNGen4E6GSu :: FilePath -> Int -> Int -> Double -> Double -> Double -> String -> String -> Intervals -> String -> String -> Double -> IO ()
uniqOverSoXSynthNGen4E6GSu file m ku ampL time3 dAmpl wws tts v5 vs xxs limV =
uniqOverSoXSynthNGen4E6G file m ku ampL dAmpl (str2Durations xxs time3) wws tts (intervalsFromStringG v5 vs) (str2Volume xxs) limV
uniqOverSoXSynthNGen4E6GSuPar :: FilePath -> Params -> Double -> Double -> Double -> String -> String -> Intervals -> String -> String -> Double -> IO ()
uniqOverSoXSynthNGen4E6GSuPar file params ampL time3 dAmpl wws tts v5 vs xxs limV =
uniqOverSoXSynthNGen4E6GPar file params ampL dAmpl (str2Durations xxs time3) wws tts (intervalsFromStringG v5 vs) (str2Volume xxs) limV