{-# OPTIONS_GHC -threaded #-}
{-# LANGUAGE CPP #-}
{-# OPTIONS_HADDOCK show-extensions #-}
module Composition.Sound.Faded (
overChangeVolGNC
, overChangeVolGN
, overChangeVolG
, overChangeVolGC
, overChangeVolGF
, overChangeVol
, overChangeVolC
, overChangeVolF
, overChangeVolGCN
, overChangeVolGFN
, overChangeVolN
, overChangeVolCN
, overChangeVolFN
, mixGTest
, mixGTestN
, basicFN
, basicF
, basicFC
, basicF2
, basicF2C
, basicFCN
, basicF2N
, basicF2CN
, moreFNC
, moreFN
, moreFCN
, reverbFix
, endingWF
, charFadeType
, argString
, freqChange
, sameConst
) where
#ifdef __GLASGOW_HASKELL__
#if __GLASGOW_HASKELL__>=710
/* code that applies only to GHC 7.10.* and higher versions */
import GHC.Base (mconcat)
#endif
#endif
import System.Exit (ExitCode (ExitSuccess))
import Data.List (isPrefixOf,isSuffixOf)
import Data.Maybe (fromJust)
import System.Process
import EndOfExe (showE)
import MMSyn7l (fadeEndsTMB,fadeEndsTMN)
import Numeric (showFFloat)
import System.Directory
import Composition.Sound.Functional.Basics
import Composition.Sound.IntermediateF (soxBasicParams)
import Data.DoubleZip (evalSndFV)
#ifdef __GLASGOW_HASKELL__
#if __GLASGOW_HASKELL__==708
/* code that applies only to GHC 7.8.* */
mconcat = concat
#endif
#endif
overChangeVolG :: String -> String -> Int -> Float -> Float -> Float -> Float -> ((Float,Float), (Float,Float)) -> IO ()
overChangeVolG :: String
-> String
-> Int
-> Float
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolG = String
-> String
-> String
-> Int
-> Float
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolGN String
"test"
{-# INLINE overChangeVolG #-}
overChangeVolGN :: FilePath -> String -> String -> Int -> Float -> Float -> Float -> Float -> ((Float,Float), (Float,Float)) -> IO ()
overChangeVolGN :: String
-> String
-> String
-> Int
-> Float
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolGN String
filestart String
ys String
cs Int
j Float
freq1 Float
freq2 Float
x0 Float
xdelta ((Float
t0,Float
v0), (Float
t1,Float
v1))
| Float
x0 Float -> Float -> Bool
forall a. Eq a => a -> a -> Bool
/= Float
0 Bool -> Bool -> Bool
&& Float -> Float
forall a. Num a => a -> a
abs Float
x0 Float -> Float -> Bool
forall a. Ord a => a -> a -> Bool
<= Float
1.0 Bool -> Bool -> Bool
&& Float
freq1 Float -> Float -> Bool
forall a. Ord a => a -> a -> Bool
> Float
16 Bool -> Bool -> Bool
&& Float
freq1 Float -> Float -> Bool
forall a. Ord a => a -> a -> Bool
< Float
20000 =
case Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float
v1 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
v0) Float
0 of
Ordering
GT -> do
(ExitCode
code1,String
_,String
herr1) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) (String -> [String] -> [String]
soxBasicParams String
ys [String
"",String
"-n",String
"test1.wav",String
"synth",
Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing (if Float
t1 Float -> Float -> Bool
forall a. Eq a => a -> a -> Bool
== Float
t0 then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
"", String
"sine", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) Float
freq1 (String -> Float -> Float -> String
freqChange (Int -> ShowS
forall a. Int -> [a] -> [a]
drop Int
1 String
cs) Float
freq2 Float
freq1), String
"fade",
Char -> String
charFadeType (if String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
cs then Char
'l' else String -> Char
forall a. [a] -> a
head String
cs)] [String] -> [String] -> [String]
forall a. [a] -> [a] -> [a]
++
if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare ((Float
v1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v0) Float -> Float -> Float
forall a. Num a => a -> a -> a
* (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
0 Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
LT then [Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing (if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
""]
else [String
"0", String
"-0.0", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing (if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
"", String
"vol",
Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) (Float -> Float
forall a. Num a => a -> a
signum Float
v1 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float -> Float
forall a. Num a => a -> a
abs (Float
v1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v0)) String
""]) String
""
if ExitCode
code1 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
/= ExitCode
ExitSuccess then String -> IO ()
forall a. HasCallStack => String -> a
error (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ String
"Composition.Sound.Faded.overChangeVolGN: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
herr1
else do
(ExitCode
code2,String
_,String
herr2) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) (String -> [String] -> [String]
soxBasicParams String
ys [String
"",String
"-n",String
"test0.wav",String
"synth",
Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing (if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
"", String
"sine",
Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) Float
freq1 (String -> Float -> Float -> String
freqChange (Int -> ShowS
forall a. Int -> [a] -> [a]
drop Int
1 String
cs) Float
freq2 Float
freq1), String
"vol", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) (Float -> Float -> Float
forall a. Ord a => a -> a -> a
min Float
v0 Float
v1) String
""]) String
""
if ExitCode
code2 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
== ExitCode
ExitSuccess
then do
(ExitCode
code3,String
_,String
herr3) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) [String
"-m",String
"test0" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys,String
"test1" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys, (String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++
Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
j) String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys, String
"vol", String
"2"] String
""
if ExitCode
code3 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
== ExitCode
ExitSuccess
then String -> IO ()
removeFile (String
"test0" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> String -> IO ()
removeFile (String
"test1" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys)
else String -> IO ()
forall a. HasCallStack => String -> a
error (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ String
"Composition.Sound.Faded.overChangeVolGN: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
herr3
else String -> IO ()
forall a. Show a => a -> IO ()
print String
herr2 IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> String -> IO ()
forall a. HasCallStack => String -> a
error String
"Composition.Sound.Faded.overChangeVolGN: Operation not successful. "
Ordering
LT -> do
String
-> String
-> String
-> Int
-> Float
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolGN String
filestart String
ys String
cs Int
j Float
freq1 ((Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
freq2 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
freq1) Float -> Float -> Float
forall a. Fractional a => a -> a -> a
/ (Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1)) Float
x0 Float
xdelta ((Float
t0,Float
v0), ((Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
t0) Float -> Float -> Float
forall a. Fractional a => a -> a -> a
/ (Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1),Float
0)) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
String -> String -> IO ()
renameFile ((String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
j) String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys) (String
"temp00" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys)
(ExitCode
code0,String
_,String
herr) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) [String
"temp00" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys,String
"temp0" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys, String
"fade", String
"h", String
"0", String
"-0.0",
Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
6) ((Float -> Float -> Float
forall a. Ord a => a -> a -> a
max Float
freq1 Float
freq2) Float -> Float -> Float
forall a. Floating a => a -> a -> a
** (-Float
1.0)) String
""] String
""
if ExitCode
code0 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
/= ExitCode
ExitSuccess then String -> IO ()
forall a. HasCallStack => String -> a
error (ShowS
forall a. Show a => a -> String
show String
herr)
else do
String
-> String
-> String
-> Int
-> Float
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolGN String
filestart String
ys String
cs Int
j ((Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
freq2 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
freq1) Float -> Float -> Float
forall a. Fractional a => a -> a -> a
/ (Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1)) Float
freq2 Float
x0 Float
xdelta (((Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
t0) Float -> Float -> Float
forall a. Fractional a => a -> a -> a
/ (Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1),Float
0), (Float
t1,Float
v1)) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
String -> String -> IO ()
renameFile ((String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
j) String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys) (String
"temp1" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys)
(ExitCode
code1,String
_,String
herr1) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) [String
"temp0" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys,String
"temp1" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys, (String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++
Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
j) String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys] String
""
if ExitCode
code1 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
== ExitCode
ExitSuccess then String -> IO ()
removeFile (String
"temp0" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> String -> IO ()
removeFile (String
"temp1" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> String -> IO ()
removeFile (String
"temp00" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys)
else String -> IO ()
forall a. HasCallStack => String -> a
error (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ String
"Composition.Sound.Faded.overChangeVolGN: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
herr1
Ordering
_ ->
case Float
v1 of
Float
0 ->
if Float
v0 Float -> Float -> Bool
forall a. Eq a => a -> a -> Bool
== Float
0
then do
(ExitCode
code1,String
_,String
herr1) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) (String -> [String] -> [String]
soxBasicParams String
ys [String
"",String
"-n",(String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
j) String -> ShowS
forall a. [a] -> [a] -> [a]
++
String
".wav",String
"delay", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing (if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
"", String
"trim", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing
(if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
""]) String
""
if ExitCode
code1 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
/= ExitCode
ExitSuccess then String -> IO ()
forall a. HasCallStack => String -> a
error (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ String
"Composition.Sound.Faded.overChangeVolGN: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
herr1
else () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
else do
(ExitCode
code1,String
_,String
herr1) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) (String -> [String] -> [String]
soxBasicParams String
ys [String
"",String
"-n",(String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
j) String -> ShowS
forall a. [a] -> [a] -> [a]
++
String
".wav",String
"synth", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing (if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
"", String
"sine",
Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) Float
freq1 (String -> Float -> Float -> String
freqChange (Int -> ShowS
forall a. Int -> [a] -> [a]
drop Int
1 String
cs) Float
freq2 Float
freq1), String
"fade", Char -> String
charFadeType (if String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
cs then Char
'l' else String -> Char
forall a. [a] -> a
head String
cs)] [String] -> [String] -> [String]
forall a. [a] -> [a] -> [a]
++
if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Float
t0 Float
t1 Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
== Ordering
GT then [Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing
(if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
""] else [String
"0", String
"-0.0", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing
(if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
"", String
"vol", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) Float
v0 String
""]) String
""
if ExitCode
code1 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
/= ExitCode
ExitSuccess then String -> IO ()
forall a. HasCallStack => String -> a
error (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ String
"Composition.Sound.Faded.overChangeVolGN: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
herr1
else () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
Float
_ -> do
(ExitCode
code1,String
_,String
herr1) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) (String -> [String] -> [String]
soxBasicParams String
ys [String
"",String
"-n",(String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
j) String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
".wav",
String
"synth", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing (if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
"", String
"sine",
Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) Float
freq1 (String -> Float -> Float -> String
freqChange (Int -> ShowS
forall a. Int -> [a] -> [a]
drop Int
1 String
cs) Float
freq2 Float
freq1), String
"fade", Char -> String
charFadeType (if String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
cs then Char
'l' else String -> Char
forall a. [a] -> a
head String
cs)] [String] -> [String] -> [String]
forall a. [a] -> [a] -> [a]
++
if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Float
t1 Float
t0 Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
== Ordering
GT
then [Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing (if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0
else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
""] else [String
"0", String
"-0.0", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing (if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
"",
String
"vol", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) Float
v1 String
""]) String
""
if ExitCode
code1 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
/= ExitCode
ExitSuccess then String -> IO ()
forall a. HasCallStack => String -> a
error (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ String
"Composition.Sound.Faded.overChangeVolGN: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
herr1
else () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
| Bool
otherwise = String -> IO ()
forall a. HasCallStack => String -> a
error String
"Composition.Sound.Faded.overChangeVolGN: sound for these conditions is not defined. "
freqChange :: String -> Float -> Float -> String
freqChange :: String -> Float -> Float -> String
freqChange String
xs Float
freq Float
freq1
| Float
freq Float -> Float -> Bool
forall a. Ord a => a -> a -> Bool
>= Float
16 Bool -> Bool -> Bool
&& Float
freq Float -> Float -> Bool
forall a. Ord a => a -> a -> Bool
<= Float
20000 = if Float
freq Float -> Float -> Bool
forall a. Eq a => a -> a -> Bool
/= Float
freq1 then
case String
xs of
String
"l" -> Char
':'Char -> ShowS
forall a. a -> [a] -> [a]
:Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) Float
freq String
""
String
"s" -> Char
'+'Char -> ShowS
forall a. a -> [a] -> [a]
:Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) Float
freq String
""
String
"e" -> Char
'/'Char -> ShowS
forall a. a -> [a] -> [a]
:Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) Float
freq String
""
String
_ -> Char
'-'Char -> ShowS
forall a. a -> [a] -> [a]
:Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) Float
freq String
""
else String
""
| Bool
otherwise = ShowS
forall a. HasCallStack => String -> a
error String
"Composition.Sound.Faded.freqChange: undefined for this value of the frequency (the first Float argument). "
overChangeVol :: String -> Char -> Int -> Float -> Float -> Float -> ((Float,Float), (Float,Float)) -> IO ()
overChangeVol :: String
-> Char
-> Int
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVol String
ys Char
c Int
j Float
freq1 = String
-> String
-> String
-> Int
-> Float
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolGN String
"test" String
ys [Char
c] Int
j Float
freq1 Float
freq1
{-# INLINE overChangeVol #-}
overChangeVolN :: FilePath -> String -> Char -> Int -> Float -> Float -> Float -> ((Float,Float), (Float,Float)) -> IO ()
overChangeVolN :: String
-> String
-> Char
-> Int
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolN String
filestart String
ys Char
c Int
j Float
freq1 = String
-> String
-> String
-> Int
-> Float
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolGN String
filestart String
ys [Char
c] Int
j Float
freq1 Float
freq1
{-# INLINE overChangeVolN #-}
overChangeVolC :: String -> Char -> Int -> Float -> Float -> Float -> (Float,Float) -> (Float,Float) -> IO ()
overChangeVolC :: String
-> Char
-> Int
-> Float
-> Float
-> Float
-> (Float, Float)
-> (Float, Float)
-> IO ()
overChangeVolC String
ys Char
c Int
j Float
freq Float
x0 Float
xdelta (Float, Float)
w1 = String
-> Char
-> Int
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVol String
ys Char
c Int
j Float
freq Float
x0 Float
xdelta (((Float, Float), (Float, Float)) -> IO ())
-> ((Float, Float) -> ((Float, Float), (Float, Float)))
-> (Float, Float)
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (,) (Float, Float)
w1
{-# INLINE overChangeVolC #-}
overChangeVolCN :: FilePath -> String -> Char -> Int -> Float -> Float -> Float -> (Float,Float) -> (Float,Float) -> IO ()
overChangeVolCN :: String
-> String
-> Char
-> Int
-> Float
-> Float
-> Float
-> (Float, Float)
-> (Float, Float)
-> IO ()
overChangeVolCN String
filestart String
ys Char
c Int
j Float
freq Float
x0 Float
xdelta (Float, Float)
w1 = String
-> String
-> Char
-> Int
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolN String
filestart String
ys Char
c Int
j Float
freq Float
x0 Float
xdelta (((Float, Float), (Float, Float)) -> IO ())
-> ((Float, Float) -> ((Float, Float), (Float, Float)))
-> (Float, Float)
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (,) (Float, Float)
w1
{-# INLINE overChangeVolCN #-}
overChangeVolGC :: String -> String -> Int -> Float -> Float -> Float -> Float -> (Float,Float) -> (Float,Float) -> IO ()
overChangeVolGC :: String
-> String
-> Int
-> Float
-> Float
-> Float
-> Float
-> (Float, Float)
-> (Float, Float)
-> IO ()
overChangeVolGC String
ys String
cs Int
j Float
freq1 Float
freq2 Float
x0 Float
xdelta (Float, Float)
w1 = String
-> String
-> Int
-> Float
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolG String
ys String
cs Int
j Float
freq1 Float
freq2 Float
x0 Float
xdelta (((Float, Float), (Float, Float)) -> IO ())
-> ((Float, Float) -> ((Float, Float), (Float, Float)))
-> (Float, Float)
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (,) (Float, Float)
w1
{-# INLINE overChangeVolGC #-}
overChangeVolGCN :: FilePath -> String -> String -> Int -> Float -> Float -> Float -> Float -> (Float,Float) -> (Float,Float) -> IO ()
overChangeVolGCN :: String
-> String
-> String
-> Int
-> Float
-> Float
-> Float
-> Float
-> (Float, Float)
-> (Float, Float)
-> IO ()
overChangeVolGCN String
filestart String
ys String
cs Int
j Float
freq1 Float
freq2 Float
x0 Float
xdelta (Float, Float)
w1 = String
-> String
-> String
-> Int
-> Float
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolGN String
filestart String
ys String
cs Int
j Float
freq1 Float
freq2 Float
x0 Float
xdelta (((Float, Float), (Float, Float)) -> IO ())
-> ((Float, Float) -> ((Float, Float), (Float, Float)))
-> (Float, Float)
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (,) (Float, Float)
w1
{-# INLINE overChangeVolGCN #-}
overChangeVolF :: String -> Char -> Int -> Float -> Float -> (Float,Float) -> (Float,Float) -> Float -> IO ()
overChangeVolF :: String
-> Char
-> Int
-> Float
-> Float
-> (Float, Float)
-> (Float, Float)
-> Float
-> IO ()
overChangeVolF String
ys Char
c Int
j Float
x0 Float
xdelta (Float, Float)
w1 (Float, Float)
w2 Float
freq = String
-> Char
-> Int
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVol String
ys Char
c Int
j Float
freq Float
x0 Float
xdelta ((Float, Float)
w1,(Float, Float)
w2)
{-# INLINE overChangeVolF #-}
overChangeVolFN :: FilePath -> String -> Char -> Int -> Float -> Float -> (Float,Float) -> (Float,Float) -> Float -> IO ()
overChangeVolFN :: String
-> String
-> Char
-> Int
-> Float
-> Float
-> (Float, Float)
-> (Float, Float)
-> Float
-> IO ()
overChangeVolFN String
filestart String
ys Char
c Int
j Float
x0 Float
xdelta (Float, Float)
w1 (Float, Float)
w2 Float
freq = String
-> String
-> Char
-> Int
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolN String
filestart String
ys Char
c Int
j Float
freq Float
x0 Float
xdelta ((Float, Float)
w1,(Float, Float)
w2)
{-# INLINE overChangeVolFN #-}
overChangeVolGF :: String -> String -> Int -> Float -> Float -> (Float,Float) -> (Float,Float) -> Float -> Float -> IO ()
overChangeVolGF :: String
-> String
-> Int
-> Float
-> Float
-> (Float, Float)
-> (Float, Float)
-> Float
-> Float
-> IO ()
overChangeVolGF String
ys String
cs Int
j Float
x0 Float
xdelta (Float, Float)
w1 (Float, Float)
w2 Float
freq1 Float
freq2 = String
-> String
-> Int
-> Float
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolG String
ys String
cs Int
j Float
freq1 Float
freq2 Float
x0 Float
xdelta ((Float, Float)
w1,(Float, Float)
w2)
{-# INLINE overChangeVolGF #-}
overChangeVolGFN :: FilePath -> String -> String -> Int -> Float -> Float -> (Float,Float) -> (Float,Float) -> Float -> Float -> IO ()
overChangeVolGFN :: String
-> String
-> String
-> Int
-> Float
-> Float
-> (Float, Float)
-> (Float, Float)
-> Float
-> Float
-> IO ()
overChangeVolGFN String
filestart String
ys String
cs Int
j Float
x0 Float
xdelta (Float, Float)
w1 (Float, Float)
w2 Float
freq1 Float
freq2 = String
-> String
-> String
-> Int
-> Float
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolGN String
filestart String
ys String
cs Int
j Float
freq1 Float
freq2 Float
x0 Float
xdelta ((Float, Float)
w1,(Float, Float)
w2)
{-# INLINE overChangeVolGFN #-}
endingWF :: String -> String
endingWF :: ShowS
endingWF String
ys
| Bool -> Bool
not (String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
ys) = if String -> Char
forall a. [a] -> a
last String
ys Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'f' then String
".flac" else String
".wav"
| Bool
otherwise = String
".wav"
charFadeType :: Char -> String
charFadeType :: Char -> String
charFadeType Char
c =
case Char
c of
Char
'h' -> String
"h"
Char
'p' -> String
"p"
Char
't' -> String
"t"
Char
_ -> String
"l"
mixGTest :: String -> IO ()
mixGTest :: String -> IO ()
mixGTest String
ys = do
[String]
dir <- String -> IO [String]
listDirectory String
"."
(ExitCode
code1,String
_,String
herr1) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) ([[String]] -> [String]
forall a. Monoid a => [a] -> a
mconcat [[String
"-m"], (String -> Bool) -> [String] -> [String]
forall a. (a -> Bool) -> [a] -> [a]
filter (\String
xs -> String
"testG" String -> String -> Bool
forall a. Eq a => [a] -> [a] -> Bool
`isPrefixOf` String
xs Bool -> Bool -> Bool
&&
ShowS
endingWF String
ys String -> String -> Bool
forall a. Eq a => [a] -> [a] -> Bool
`isSuffixOf` String
xs) [String]
dir, [String
"resultG" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys]]) String
""
if ExitCode
code1 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
/= ExitCode
ExitSuccess then String -> IO ()
forall a. HasCallStack => String -> a
error (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ String
"Composition.Sound.Faded.mixGTest: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
herr1
else (String -> IO ()) -> [String] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ String -> IO ()
removeFile ([String] -> IO ()) -> ([String] -> [String]) -> [String] -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (String -> Bool) -> [String] -> [String]
forall a. (a -> Bool) -> [a] -> [a]
filter (\String
xs -> String
"testG" String -> String -> Bool
forall a. Eq a => [a] -> [a] -> Bool
`isPrefixOf` String
xs Bool -> Bool -> Bool
&& ShowS
endingWF String
ys String -> String -> Bool
forall a. Eq a => [a] -> [a] -> Bool
`isSuffixOf` String
xs) ([String] -> IO ()) -> [String] -> IO ()
forall a b. (a -> b) -> a -> b
$ [String]
dir
mixGTestN :: FilePath -> String -> IO ()
mixGTestN :: String -> String -> IO ()
mixGTestN String
filestart String
ys = do
[String]
dir <- String -> IO [String]
listDirectory String
"."
(ExitCode
code1,String
_,String
herr1) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) ([[String]] -> [String]
forall a. Monoid a => [a] -> a
mconcat [[String
"-m"], (String -> Bool) -> [String] -> [String]
forall a. (a -> Bool) -> [a] -> [a]
filter (\String
xs -> (String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> String -> Bool
forall a. Eq a => [a] -> [a] -> Bool
`isPrefixOf` String
xs Bool -> Bool -> Bool
&&
ShowS
endingWF String
ys String -> String -> Bool
forall a. Eq a => [a] -> [a] -> Bool
`isSuffixOf` String
xs) [String]
dir, [String
"resultG" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys]]) String
""
if ExitCode
code1 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
/= ExitCode
ExitSuccess then String -> IO ()
forall a. HasCallStack => String -> a
error (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ String
"Composition.Sound.Faded.mixGTestN: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
herr1
else (String -> IO ()) -> [String] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ String -> IO ()
removeFile ([String] -> IO ()) -> ([String] -> [String]) -> [String] -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (String -> Bool) -> [String] -> [String]
forall a. (a -> Bool) -> [a] -> [a]
filter (\String
xs -> (String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> String -> Bool
forall a. Eq a => [a] -> [a] -> Bool
`isPrefixOf` String
xs Bool -> Bool -> Bool
&& ShowS
endingWF String
ys String -> String -> Bool
forall a. Eq a => [a] -> [a] -> Bool
`isSuffixOf` String
xs) ([String] -> IO ()) -> [String] -> IO ()
forall a b. (a -> b) -> a -> b
$ [String]
dir
basicF :: String -> String -> Float -> Float -> Float -> Float -> (Float -> Float) -> [Float] -> IO ()
basicF :: String
-> String
-> Float
-> Float
-> Float
-> Float
-> (Float -> Float)
-> [Float]
-> IO ()
basicF String
ys String
x2s Float
freq Float
x0 Float
xdelta Float
per Float -> Float
f [Float]
v = do
let (String
xs1,String
xs2) = Int -> String -> (String, String)
forall a. Int -> [a] -> ([a], [a])
splitAt Int
1 String
x2s
c1 :: Char
c1
| String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
xs1 = Char
'l'
| Bool
otherwise = String -> Char
forall a. [a] -> a
head String
xs1
c2 :: Char
c2
| String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
xs2 = Char
'l'
| Bool
otherwise = String -> Char
forall a. [a] -> a
head String
xs2
[((Float, Float), (Float, Float))]
v1 <- (Float -> Float)
-> [Float] -> IO [((Float, Float), (Float, Float))]
forall b a.
(Fractional b, Ord b, Eq a) =>
(a -> b) -> [a] -> IO [((a, b), (a, b))]
evalSndFV Float -> Float
f [Float]
v
((Int, ((Float, Float), (Float, Float))) -> IO ())
-> [(Int, ((Float, Float), (Float, Float)))] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (\(Int
i, ((Float, Float), (Float, Float))
x) -> do
String
-> Char
-> Int
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVol String
ys Char
c1 Int
i Float
freq Float
x0 Float
xdelta ((Float, Float), (Float, Float))
x
Char -> Float -> String -> IO ()
fadeEndsTMB Char
c2 Float
per (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ String
"testG" String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
i) String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys) ([(Int, ((Float, Float), (Float, Float)))] -> IO ())
-> ([((Float, Float), (Float, Float))]
-> [(Int, ((Float, Float), (Float, Float)))])
-> [((Float, Float), (Float, Float))]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Int]
-> [((Float, Float), (Float, Float))]
-> [(Int, ((Float, Float), (Float, Float)))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Int
0..] ([((Float, Float), (Float, Float))] -> IO ())
-> [((Float, Float), (Float, Float))] -> IO ()
forall a b. (a -> b) -> a -> b
$ [((Float, Float), (Float, Float))]
v1
basicFN :: FilePath -> String -> String -> Float -> Float -> Float -> Float -> (Float -> Float) -> [Float] -> IO ()
basicFN :: String
-> String
-> String
-> Float
-> Float
-> Float
-> Float
-> (Float -> Float)
-> [Float]
-> IO ()
basicFN String
filestart String
ys String
x2s Float
freq Float
x0 Float
xdelta Float
per Float -> Float
f [Float]
v = do
let (String
xs1,String
xs2) = Int -> String -> (String, String)
forall a. Int -> [a] -> ([a], [a])
splitAt Int
1 String
x2s
c1 :: Char
c1
| String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
xs1 = Char
'l'
| Bool
otherwise = String -> Char
forall a. [a] -> a
head String
xs1
c2 :: Char
c2
| String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
xs2 = Char
'l'
| Bool
otherwise = String -> Char
forall a. [a] -> a
head String
xs2
[((Float, Float), (Float, Float))]
v1 <- (Float -> Float)
-> [Float] -> IO [((Float, Float), (Float, Float))]
forall b a.
(Fractional b, Ord b, Eq a) =>
(a -> b) -> [a] -> IO [((a, b), (a, b))]
evalSndFV Float -> Float
f [Float]
v
((Int, ((Float, Float), (Float, Float))) -> IO ())
-> [(Int, ((Float, Float), (Float, Float)))] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (\(Int
i, ((Float, Float), (Float, Float))
x) -> do
String
-> String
-> String
-> Int
-> Float
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolGN String
filestart String
ys [Char
c1] Int
i Float
freq Float
freq Float
x0 Float
xdelta ((Float, Float), (Float, Float))
x
Char -> Float -> String -> IO ()
fadeEndsTMB Char
c2 Float
per (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ (String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
i) String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys) ([(Int, ((Float, Float), (Float, Float)))] -> IO ())
-> ([((Float, Float), (Float, Float))]
-> [(Int, ((Float, Float), (Float, Float)))])
-> [((Float, Float), (Float, Float))]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Int]
-> [((Float, Float), (Float, Float))]
-> [(Int, ((Float, Float), (Float, Float)))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Int
0..] ([((Float, Float), (Float, Float))] -> IO ())
-> [((Float, Float), (Float, Float))] -> IO ()
forall a b. (a -> b) -> a -> b
$ [((Float, Float), (Float, Float))]
v1
argString :: String -> (String,String)
argString :: String -> (String, String)
argString String
xs = (Int -> ShowS
forall a. Int -> [a] -> [a]
take Int
4 String
xs,Int -> ShowS
forall a. Int -> [a] -> [a]
take Int
2 ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> ShowS
forall a. Int -> [a] -> [a]
drop Int
4 ShowS -> ShowS
forall a b. (a -> b) -> a -> b
$ String
xs)
{-# INLINE argString #-}
basicFC :: String -> Float -> Float -> Float -> Float -> (Float -> Float) -> [Float] -> IO ()
basicFC :: String
-> Float
-> Float
-> Float
-> Float
-> (Float -> Float)
-> [Float]
-> IO ()
basicFC = String
-> String
-> Float
-> Float
-> Float
-> Float
-> (Float -> Float)
-> [Float]
-> IO ()
basicFCN String
"test"
{-# INLINE basicFC #-}
basicFCN :: FilePath -> String -> Float -> Float -> Float -> Float -> (Float -> Float) -> [Float] -> IO ()
basicFCN :: String
-> String
-> Float
-> Float
-> Float
-> Float
-> (Float -> Float)
-> [Float]
-> IO ()
basicFCN String
filestart String
xs Float
freq Float
x0 Float
xdelta Float
per Float -> Float
f [Float]
v = let (String
ys,String
x2s) = String -> (String, String)
argString String
xs in String
-> String
-> String
-> Float
-> Float
-> Float
-> Float
-> (Float -> Float)
-> [Float]
-> IO ()
basicFN String
filestart String
ys String
x2s Float
freq Float
x0 Float
xdelta Float
per Float -> Float
f [Float]
v
{-# INLINE basicFCN #-}
basicF2 :: String -> String -> Float -> Float -> Float -> Float -> Float -> (Float -> Float) -> [Float] -> IO ()
basicF2 :: String
-> String
-> Float
-> Float
-> Float
-> Float
-> Float
-> (Float -> Float)
-> [Float]
-> IO ()
basicF2 = String
-> String
-> String
-> Float
-> Float
-> Float
-> Float
-> Float
-> (Float -> Float)
-> [Float]
-> IO ()
basicF2N String
"test"
{-# INLINE basicF2 #-}
basicF2N :: FilePath -> String -> String -> Float -> Float -> Float -> Float -> Float -> (Float -> Float) -> [Float] -> IO ()
basicF2N :: String
-> String
-> String
-> Float
-> Float
-> Float
-> Float
-> Float
-> (Float -> Float)
-> [Float]
-> IO ()
basicF2N String
filestart String
ys String
x2s Float
freq Float
x0 Float
xdelta Float
per1 Float
per2 Float -> Float
f [Float]
v = do
let (String
xs1,String
xs2) = Int -> String -> (String, String)
forall a. Int -> [a] -> ([a], [a])
splitAt Int
1 String
x2s
c1 :: Char
c1
| String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
xs1 = Char
'l'
| Bool
otherwise = String -> Char
forall a. [a] -> a
head String
xs1
c2 :: Char
c2
| String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
xs2 = Char
'l'
| Bool
otherwise = String -> Char
forall a. [a] -> a
head String
xs2
[((Float, Float), (Float, Float))]
v1 <- (Float -> Float)
-> [Float] -> IO [((Float, Float), (Float, Float))]
forall b a.
(Fractional b, Ord b, Eq a) =>
(a -> b) -> [a] -> IO [((a, b), (a, b))]
evalSndFV Float -> Float
f [Float]
v
((Int, ((Float, Float), (Float, Float))) -> IO ())
-> [(Int, ((Float, Float), (Float, Float)))] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (\(Int
i, ((Float, Float), (Float, Float))
x) -> do
String
-> String
-> Char
-> Int
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolN String
filestart String
ys Char
c1 Int
i Float
freq Float
x0 Float
xdelta ((Float, Float), (Float, Float))
x
Char -> Float -> Float -> String -> IO ()
fadeEndsTMN Char
c2 Float
per1 Float
per2 (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ (String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
i) String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys) ([(Int, ((Float, Float), (Float, Float)))] -> IO ())
-> ([((Float, Float), (Float, Float))]
-> [(Int, ((Float, Float), (Float, Float)))])
-> [((Float, Float), (Float, Float))]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Int]
-> [((Float, Float), (Float, Float))]
-> [(Int, ((Float, Float), (Float, Float)))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Int
0..] ([((Float, Float), (Float, Float))] -> IO ())
-> [((Float, Float), (Float, Float))] -> IO ()
forall a b. (a -> b) -> a -> b
$ [((Float, Float), (Float, Float))]
v1
basicF2C :: String -> Float -> Float -> Float -> Float -> Float -> (Float -> Float) -> [Float] -> IO ()
basicF2C :: String
-> Float
-> Float
-> Float
-> Float
-> Float
-> (Float -> Float)
-> [Float]
-> IO ()
basicF2C = String
-> String
-> Float
-> Float
-> Float
-> Float
-> Float
-> (Float -> Float)
-> [Float]
-> IO ()
basicF2CN String
"test"
{-# INLINE basicF2C #-}
basicF2CN :: FilePath -> String -> Float -> Float -> Float -> Float -> Float -> (Float -> Float) -> [Float] -> IO ()
basicF2CN :: String
-> String
-> Float
-> Float
-> Float
-> Float
-> Float
-> (Float -> Float)
-> [Float]
-> IO ()
basicF2CN String
filestart String
xs Float
freq Float
x0 Float
xdelta Float
per1 Float
per2 Float -> Float
f [Float]
v = let (String
ys,String
x2s) = String -> (String, String)
argString String
xs in String
-> String
-> String
-> Float
-> Float
-> Float
-> Float
-> Float
-> (Float -> Float)
-> [Float]
-> IO ()
basicF2N String
filestart String
ys String
x2s Float
freq Float
x0 Float
xdelta Float
per1 Float
per2 Float -> Float
f [Float]
v
{-# INLINE basicF2CN #-}
moreFN :: FilePath -> String -> String -> Float -> Float -> Float -> Float -> Float -> (Float -> Float) -> [Float] -> IO ()
moreFN :: String
-> String
-> String
-> Float
-> Float
-> Float
-> Float
-> Float
-> (Float -> Float)
-> [Float]
-> IO ()
moreFN String
filestart String
ys String
x2s Float
freq1 Float
freq2 Float
x0 Float
xdelta Float
per Float -> Float
f [Float]
v = do
let (String
xs1,String
xs2) = Int -> String -> (String, String)
forall a. Int -> [a] -> ([a], [a])
splitAt Int
1 String
x2s
c1 :: Char
c1
| String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
xs1 = Char
'l'
| Bool
otherwise = String -> Char
forall a. [a] -> a
head String
xs1
c2 :: Char
c2
| String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
xs2 = Char
'l'
| Bool
otherwise = String -> Char
forall a. [a] -> a
head String
xs2
[((Float, Float), (Float, Float))]
v1 <- (Float -> Float)
-> [Float] -> IO [((Float, Float), (Float, Float))]
forall b a.
(Fractional b, Ord b, Eq a) =>
(a -> b) -> [a] -> IO [((a, b), (a, b))]
evalSndFV Float -> Float
f [Float]
v
((Int, ((Float, Float), (Float, Float))) -> IO ())
-> [(Int, ((Float, Float), (Float, Float)))] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (\(Int
i, ((Float, Float), (Float, Float))
x) -> do
String
-> String
-> String
-> Int
-> Float
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolGN String
filestart String
ys [Char
c1] Int
i Float
freq1 Float
freq2 Float
x0 Float
xdelta ((Float, Float), (Float, Float))
x
Char -> Float -> String -> IO ()
fadeEndsTMB Char
c2 Float
per (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ (String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
i) String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys) ([(Int, ((Float, Float), (Float, Float)))] -> IO ())
-> ([((Float, Float), (Float, Float))]
-> [(Int, ((Float, Float), (Float, Float)))])
-> [((Float, Float), (Float, Float))]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Int]
-> [((Float, Float), (Float, Float))]
-> [(Int, ((Float, Float), (Float, Float)))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Int
0..] ([((Float, Float), (Float, Float))] -> IO ())
-> [((Float, Float), (Float, Float))] -> IO ()
forall a b. (a -> b) -> a -> b
$ [((Float, Float), (Float, Float))]
v1
moreFCN :: FilePath -> String -> Float -> Float -> Float -> Float -> Float -> (Float -> Float) -> [Float] -> IO ()
moreFCN :: String
-> String
-> Float
-> Float
-> Float
-> Float
-> Float
-> (Float -> Float)
-> [Float]
-> IO ()
moreFCN String
filestart String
xs Float
freq1 Float
freq2 Float
x0 Float
xdelta Float
per Float -> Float
f [Float]
v = let (String
ys,String
x2s) = String -> (String, String)
argString String
xs in String
-> String
-> String
-> Float
-> Float
-> Float
-> Float
-> Float
-> (Float -> Float)
-> [Float]
-> IO ()
moreFN String
filestart String
ys String
x2s Float
freq1 Float
freq2 Float
x0 Float
xdelta Float
per Float -> Float
f [Float]
v
{-# INLINE moreFCN #-}
sameConst :: Int -> Float
sameConst :: Int -> Float
sameConst Int
i
| Int
i Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
0 = Float
0.1 Float -> Float -> Float
forall a. Num a => a -> a -> a
* (Float
7.0 Float -> Float -> Float
forall a. Num a => a -> a -> a
+ Float
forall a. Floating a => a
pi)
| Bool
otherwise = Float
10.0 Float -> Float -> Float
forall a. Fractional a => a -> a -> a
/ (Float
7.0 Float -> Float -> Float
forall a. Num a => a -> a -> a
+ Float
forall a. Floating a => a
pi)
{-# INLINE sameConst #-}
overChangeVolGNC :: String -> FilePath -> String -> String -> Int -> Float -> Float -> Float -> Float -> ((Float,Float), (Float,Float)) -> IO ()
overChangeVolGNC :: String
-> String
-> String
-> String
-> Int
-> Float
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolGNC String
check String
filestart String
ys String
cs Int
j Float
freq1 Float
freq2 Float
x0 Float
xdelta ((Float
t0,Float
v0), (Float
t1,Float
v1))
| Float
x0 Float -> Float -> Bool
forall a. Eq a => a -> a -> Bool
/= Float
0 Bool -> Bool -> Bool
&& Float -> Float
forall a. Num a => a -> a
abs Float
x0 Float -> Float -> Bool
forall a. Ord a => a -> a -> Bool
<= Float
1.0 Bool -> Bool -> Bool
&& Float
freq1 Float -> Float -> Bool
forall a. Ord a => a -> a -> Bool
> Float
16 Bool -> Bool -> Bool
&& Float
freq1 Float -> Float -> Bool
forall a. Ord a => a -> a -> Bool
< Float
20000 =
case Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float
v1 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
v0) Float
0 of
Ordering
GT -> do
(ExitCode
code1,String
_,String
herr1) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) (String -> [String] -> [String]
soxBasicParams String
ys [String
"",String
"-n",String
"test1.wav",String
"synth",
Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing (if Float
t1 Float -> Float -> Bool
forall a. Eq a => a -> a -> Bool
== Float
t0 then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
"", String
"sine", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) Float
freq1 (String -> Float -> Float -> String
freqChange (Int -> ShowS
forall a. Int -> [a] -> [a]
drop Int
1 String
cs) Float
freq2 Float
freq1), String
"fade",
Char -> String
charFadeType (if String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
cs then Char
'l' else String -> Char
forall a. [a] -> a
head String
cs)] [String] -> [String] -> [String]
forall a. [a] -> [a] -> [a]
++
if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare ((Float
v1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v0) Float -> Float -> Float
forall a. Num a => a -> a -> a
* (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
0 Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
LT then [Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing (if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
""]
else [String
"0", String
"-0.0", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing (if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
"", String
"vol",
Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) (Float -> Float
forall a. Num a => a -> a
signum Float
v1 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float -> Float
forall a. Num a => a -> a
abs (Float
v1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v0)) String
""]) String
""
if ExitCode
code1 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
/= ExitCode
ExitSuccess then String -> IO ()
forall a. HasCallStack => String -> a
error (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ String
"Composition.Sound.Faded.overChangeVolGNC: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
herr1
else do
(ExitCode
code2,String
_,String
herr2) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) (String -> [String] -> [String]
soxBasicParams String
ys [String
"",String
"-n",String
"test0.wav",String
"synth",
Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing (if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
"", String
"sine",
Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) Float
freq1 (String -> Float -> Float -> String
freqChange (Int -> ShowS
forall a. Int -> [a] -> [a]
drop Int
1 String
cs) Float
freq2 Float
freq1), String
"vol", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) (Float -> Float -> Float
forall a. Ord a => a -> a -> a
min Float
v0 Float
v1) String
""]) String
""
if ExitCode
code2 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
== ExitCode
ExitSuccess
then do
(ExitCode
code3,String
_,String
herr3) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) [String
"-m",String
"test0" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys,String
"test1" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys, (String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++
Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
j) String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys, String
"vol", String
"2"] String
""
if ExitCode
code3 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
== ExitCode
ExitSuccess
then String -> IO ()
removeFile (String
"test0" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> String -> IO ()
removeFile (String
"test1" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys)
else String -> IO ()
forall a. HasCallStack => String -> a
error (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ String
"Composition.Sound.Faded.overChangeVolGNC: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
herr3
else String -> IO ()
forall a. Show a => a -> IO ()
print String
herr2 IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> String -> IO ()
forall a. HasCallStack => String -> a
error String
"Composition.Sound.Faded.overChangeVolGNC: Operation not successful. "
Ordering
LT ->
case String
check of
String
"simple" -> do
String
-> String
-> String
-> String
-> Int
-> Float
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolGNC String
check String
filestart String
ys String
cs Int
j Float
freq1 ((Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
freq2 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
freq1) Float -> Float -> Float
forall a. Fractional a => a -> a -> a
/ (Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1)) Float
x0 Float
xdelta ((Float
t0,Float
v0), ((Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
t0) Float -> Float -> Float
forall a. Fractional a => a -> a -> a
/ (Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1),Float
0)) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
String -> String -> IO ()
renameFile ((String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
j) String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys) (String
"temp00" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys)
(ExitCode
code0,String
_,String
herr) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) [String
"temp00" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys,String
"temp0" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys, String
"fade", String
"h", String
"0", String
"-0.0",
Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
6) ((Float -> Float -> Float
forall a. Ord a => a -> a -> a
max Float
freq1 Float
freq2) Float -> Float -> Float
forall a. Floating a => a -> a -> a
** (-Float
1.0)) String
""] String
""
if ExitCode
code0 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
/= ExitCode
ExitSuccess then String -> IO ()
forall a. HasCallStack => String -> a
error (ShowS
forall a. Show a => a -> String
show String
herr)
else do
String
-> String
-> String
-> String
-> Int
-> Float
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolGNC String
check String
filestart String
ys String
cs Int
j ((Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
freq2 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
freq1) Float -> Float -> Float
forall a. Fractional a => a -> a -> a
/ (Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1)) Float
freq2 Float
x0 Float
xdelta (((Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
t0) Float -> Float -> Float
forall a. Fractional a => a -> a -> a
/ (Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1),Float
0), (Float
t1,Float
v1)) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
String -> String -> IO ()
renameFile ((String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
j) String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys) (String
"temp1" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys)
(ExitCode
code1,String
_,String
herr1) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) [String
"temp0" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys,String
"temp1" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys, (String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++
Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
j) String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys] String
""
if ExitCode
code1 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
== ExitCode
ExitSuccess then String -> IO ()
removeFile (String
"temp0" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> String -> IO ()
removeFile (String
"temp1" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> String -> IO ()
removeFile (String
"temp00" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys)
else String -> IO ()
forall a. HasCallStack => String -> a
error (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ String
"Composition.Sound.Faded.overChangeVolGNC: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
herr1
String
"silent" -> do
(ExitCode
code0,String
_,String
herr) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) (String -> [String] -> [String]
soxBasicParams String
ys [String
"",String
"-n",String
"temp0" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys,String
"trim", String
"0",
Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
6) (Float -> Float
forall a. Num a => a -> a
abs (Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
* (Float
t0 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t1) Float -> Float -> Float
forall a. Fractional a => a -> a -> a
/ (Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1))) String
"",String
"vol",String
"0"]) String
""
if ExitCode
code0 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
/= ExitCode
ExitSuccess then String -> IO ()
forall a. HasCallStack => String -> a
error (ShowS
forall a. Show a => a -> String
show String
herr)
else do
String
-> String
-> String
-> String
-> Int
-> Float
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolGNC String
check String
filestart String
ys String
cs Int
j ((Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
freq2 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
freq1) Float -> Float -> Float
forall a. Fractional a => a -> a -> a
/ (Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1)) Float
freq2 Float
x0 Float
xdelta (((Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
t0) Float -> Float -> Float
forall a. Fractional a => a -> a -> a
/ (Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1),Float
0), (Float
t1,Float
v1)) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
String -> String -> IO ()
renameFile ((String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
j) String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys) (String
"temp1" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys)
(ExitCode
code1,String
_,String
herr1) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) [String
"temp0" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys,String
"temp1" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys, (String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++
Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
j) String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys] String
""
if ExitCode
code1 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
== ExitCode
ExitSuccess then String -> IO ()
removeFile (String
"temp0" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> String -> IO ()
removeFile (String
"temp1" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys)
else String -> IO ()
forall a. HasCallStack => String -> a
error (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ String
"Composition.Sound.Faded.overChangeVolGNC: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
herr1
String
_ -> do
(ExitCode
code0,String
_,String
herr) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) (String -> [String] -> [String]
soxBasicParams String
ys [String
"",String
"-n",String
"temp0" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys,String
"trim", String
"0",
Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
6) (Float -> Float
forall a. Num a => a -> a
abs (Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
* (Float
t0 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t1) Float -> Float -> Float
forall a. Fractional a => a -> a -> a
/ (Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1))) String
"",String
"vol",String
"0"]) String
""
if ExitCode
code0 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
/= ExitCode
ExitSuccess then String -> IO ()
forall a. HasCallStack => String -> a
error (ShowS
forall a. Show a => a -> String
show String
herr)
else do
String
-> String
-> String
-> String
-> Int
-> Float
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolGNC String
check String
filestart String
ys String
cs Int
j ((Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
freq2 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
freq1) Float -> Float -> Float
forall a. Fractional a => a -> a -> a
/ (Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1)) Float
freq2 Float
x0 Float
xdelta (((Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1 Float -> Float -> Float
forall a. Num a => a -> a -> a
* Float
t0) Float -> Float -> Float
forall a. Fractional a => a -> a -> a
/ (Float
v0 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
v1),Float
0), (Float
t1,Float
v1)) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
String -> String -> IO ()
renameFile ((String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
j) String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys) (String
"temp1" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys)
(ExitCode
code1,String
_,String
herr1) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) [String
"temp0" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys,String
"temp1" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys, (String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++
Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
j) String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys,String
"reverb",String
"-w",String
"1",String
"1",String
"10",String
"gain",String
"-n",String
"gain",String
"-9"] String
""
if ExitCode
code1 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
== ExitCode
ExitSuccess then String -> IO ()
removeFile (String
"temp0" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> String -> IO ()
removeFile (String
"temp1" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys)
else String -> IO ()
forall a. HasCallStack => String -> a
error (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ String
"Composition.Sound.Faded.overChangeVolGNC: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
herr1
Ordering
_ ->
case Float
v1 of
Float
0 ->
if Float
v0 Float -> Float -> Bool
forall a. Eq a => a -> a -> Bool
== Float
0
then do
(ExitCode
code1,String
_,String
herr1) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) (String -> [String] -> [String]
soxBasicParams String
ys [String
"",String
"-n",(String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
j) String -> ShowS
forall a. [a] -> [a] -> [a]
++
String
".wav",String
"delay", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing (if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
"", String
"trim", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing
(if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
""]) String
""
if ExitCode
code1 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
/= ExitCode
ExitSuccess then String -> IO ()
forall a. HasCallStack => String -> a
error (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ String
"Composition.Sound.Faded.overChangeVolGNC: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
herr1
else () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
else do
(ExitCode
code1,String
_,String
herr1) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) (String -> [String] -> [String]
soxBasicParams String
ys [String
"",String
"-n",(String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
j) String -> ShowS
forall a. [a] -> [a] -> [a]
++
String
".wav",String
"synth", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing (if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
"", String
"sine",
Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) Float
freq1 (String -> Float -> Float -> String
freqChange (Int -> ShowS
forall a. Int -> [a] -> [a]
drop Int
1 String
cs) Float
freq2 Float
freq1), String
"fade", Char -> String
charFadeType (if String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
cs then Char
'l' else String -> Char
forall a. [a] -> a
head String
cs)] [String] -> [String] -> [String]
forall a. [a] -> [a] -> [a]
++
if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Float
t0 Float
t1 Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
== Ordering
GT then [Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing
(if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
""] else [String
"0", String
"-0.0", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing
(if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
"", String
"vol", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) Float
v0 String
""]) String
""
if ExitCode
code1 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
/= ExitCode
ExitSuccess then String -> IO ()
forall a. HasCallStack => String -> a
error (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ String
"Composition.Sound.Faded.overChangeVolGNC: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
herr1
else () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
Float
_ -> do
(ExitCode
code1,String
_,String
herr1) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) (String -> [String] -> [String]
soxBasicParams String
ys [String
"",String
"-n",(String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
j) String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
".wav",
String
"synth", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing (if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
"", String
"sine",
Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) Float
freq1 (String -> Float -> Float -> String
freqChange (Int -> ShowS
forall a. Int -> [a] -> [a]
drop Int
1 String
cs) Float
freq2 Float
freq1), String
"fade", Char -> String
charFadeType (if String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
cs then Char
'l' else String -> Char
forall a. [a] -> a
head String
cs)] [String] -> [String] -> [String]
forall a. [a] -> [a] -> [a]
++
if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Float
t1 Float
t0 Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
== Ordering
GT
then [Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing (if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0
else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
""] else [String
"0", String
"-0.0", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat Maybe Int
forall a. Maybe a
Nothing (if Float -> Float -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) Float
xdelta Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT then Float -> Float
forall a. Num a => a -> a
abs Float
x0 else Float -> Float
forall a. Num a => a -> a
abs (Float
t1 Float -> Float -> Float
forall a. Num a => a -> a -> a
- Float
t0)) String
"",
String
"vol", Maybe Int -> Float -> ShowS
forall a. RealFloat a => Maybe Int -> a -> ShowS
showFFloat (Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4) Float
v1 String
""]) String
""
if ExitCode
code1 ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
/= ExitCode
ExitSuccess then String -> IO ()
forall a. HasCallStack => String -> a
error (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ String
"Composition.Sound.Faded.overChangeVolGNC: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
herr1
else () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
| Bool
otherwise = String -> IO ()
forall a. HasCallStack => String -> a
error String
"Composition.Sound.Faded.overChangeVolGNC: sound for these conditions is not defined. "
moreFNC :: String -> FilePath -> String -> String -> Float -> Float -> Float -> Float -> Float -> (Float -> Float) -> [Float] -> IO ()
moreFNC :: String
-> String
-> String
-> String
-> Float
-> Float
-> Float
-> Float
-> Float
-> (Float -> Float)
-> [Float]
-> IO ()
moreFNC String
check String
filestart String
ys String
x2s Float
freq1 Float
freq2 Float
x0 Float
xdelta Float
per Float -> Float
f [Float]
v = do
let (String
xs1,String
xs2) = Int -> String -> (String, String)
forall a. Int -> [a] -> ([a], [a])
splitAt Int
1 String
x2s
c1 :: Char
c1
| String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
xs1 = Char
'l'
| Bool
otherwise = String -> Char
forall a. [a] -> a
head String
xs1
c2 :: Char
c2
| String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
xs2 = Char
'l'
| Bool
otherwise = String -> Char
forall a. [a] -> a
head String
xs2
[((Float, Float), (Float, Float))]
v1 <- (Float -> Float)
-> [Float] -> IO [((Float, Float), (Float, Float))]
forall b a.
(Fractional b, Ord b, Eq a) =>
(a -> b) -> [a] -> IO [((a, b), (a, b))]
evalSndFV Float -> Float
f [Float]
v
((Int, ((Float, Float), (Float, Float))) -> IO ())
-> [(Int, ((Float, Float), (Float, Float)))] -> IO ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (\(Int
i, ((Float, Float), (Float, Float))
x) -> do
String
-> String
-> String
-> String
-> Int
-> Float
-> Float
-> Float
-> Float
-> ((Float, Float), (Float, Float))
-> IO ()
overChangeVolGNC String
check String
filestart String
ys [Char
c1] Int
i Float
freq1 Float
freq2 Float
x0 Float
xdelta ((Float, Float), (Float, Float))
x
Char -> Float -> String -> IO ()
fadeEndsTMB Char
c2 Float
per (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ (String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
i) String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys
String -> IO ()
reverbFix (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ (String
filestart String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"G") String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> ShowS
prependZeroes Int
6 (Int -> String
forall a. Show a => a -> String
show Int
i) String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
endingWF String
ys) ([(Int, ((Float, Float), (Float, Float)))] -> IO ())
-> ([((Float, Float), (Float, Float))]
-> [(Int, ((Float, Float), (Float, Float)))])
-> [((Float, Float), (Float, Float))]
-> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Int]
-> [((Float, Float), (Float, Float))]
-> [(Int, ((Float, Float), (Float, Float)))]
forall a b. [a] -> [b] -> [(a, b)]
zip [Int
0..] ([((Float, Float), (Float, Float))] -> IO ())
-> [((Float, Float), (Float, Float))] -> IO ()
forall a b. (a -> b) -> a -> b
$ [((Float, Float), (Float, Float))]
v1
reverbFix :: FilePath -> IO ()
reverbFix :: String -> IO ()
reverbFix String
file = do
(ExitCode
code,String
_,String
herr) <- String -> [String] -> String -> IO (ExitCode, String, String)
readProcessWithExitCode (Maybe String -> String
forall a. HasCallStack => Maybe a -> a
fromJust (String -> Maybe String
showE String
"sox")) [String
file,String
"temp" String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
file,String
"reverb",String
"-w",String
"10", String
"1", String
"100"] String
""
if ExitCode
code ExitCode -> ExitCode -> Bool
forall a. Eq a => a -> a -> Bool
/= ExitCode
ExitSuccess then do
Bool
exi <- String -> IO Bool
doesFileExist (String -> IO Bool) -> String -> IO Bool
forall a b. (a -> b) -> a -> b
$ String
"temp" String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
file
if Bool
exi then String -> IO ()
removeFile (String
"temp" String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
file) IO () -> IO () -> IO ()
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> String -> IO ()
forall a. HasCallStack => String -> a
error (String
"Composition.Sound.Faded.reverbFix: Operation on the file" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
file String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" was unsucessful " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
herr)
else String -> IO ()
forall a. HasCallStack => String -> a
error (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ String
"Composition.Sound.Faded.reverbFix: Operation on the file" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
forall a. Show a => a -> String
show String
file String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" was unsucessful " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
herr
else String -> String -> IO ()
renameFile (String
"temp" String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
file) String
file