{-# OPTIONS_GHC -threaded #-}
module DobutokO.Sound.IntermediateF (
getFileRSizes
, getFileRSizesS
, getFileRSizesS2
, getFileRTuples
, listVDirectory
, isHighQ
, shouldBeReplaced
, indexesFromMrk
, playAndMark
, playAMrk
, pAnR1
, pAnR2
, pAnR_
, playAMrk2G
, pAnR12G
, pAnR22G
, pAnR_2G
, infoFromV
, internalConv
, ixFromRes
, ixInterv
, ixInterv2G
, thisOne
, playSeqAR
, playSeqARV
, playSeqARV2
, playCollect1Dec
, playCollectDec
, replaceWithHQs
, isOddAsElem
, maxLinV
, minLinV
, doubleLtoV
, filterToBnds
, getFileRSizes2G
, getFileRSizesS2G
, getFileRTuples2G
, listVDirectory2G
, listVDirectory3G
, playSeqAR2G
, playSeqARV2G
, playSeqARV22G
, playCollectDec2G
, replaceWithHQs2G
, soxBasicParams
, reverbE
, reverbWE
, reverb1E
, reverbW1E
, reverbE2C
, reverbWE2C
, reverb1E2C
, reverb1WE2C
, soxE1
, getSilenceF
, fadeAllE
, fadeAllEMilN
, soxE2C
, soxE12C
, recE
, rec1E
, playE
, f2w
, w2f
, cfw2wf
, efw2
, efw2vv
, wOrf
, wavToFlac
, flacToWav
, soxREw1
, soxRE1
, soxREA1
) where
import GHC.Arr
import Numeric (showFFloat)
import CaseBi.Arr (getBFst')
import Control.Monad (void)
import Control.Concurrent (myThreadId,forkIO,threadDelay,killThread)
import qualified Data.List as L (sort)
import Control.Exception (onException)
import Sound.Control.Exception.FinalException (FinalException (NotRecorded,ExecutableNotProperlyInstalled),catchEnd)
import Data.List (isPrefixOf,isSuffixOf,(\\),maximum,minimum)
import qualified Data.Vector as V
import System.Directory
import Sound.SoXBasics (playA, durationA)
import MMSyn7l
import EndOfExe2 (showE)
import System.Process (readProcessWithExitCode)
import Data.Maybe (fromJust,isJust)
import System.Exit (ExitCode (ExitSuccess))
import System.Info (os)
getFileRSizes :: IO (V.Vector Integer)
getFileRSizes :: IO (Vector Integer)
getFileRSizes = [Char] -> IO (Vector Integer)
getFileRSizes2G [Char]
"221w"
getFileRSizes2G :: String -> IO (V.Vector Integer)
getFileRSizes2G :: [Char] -> IO (Vector Integer)
getFileRSizes2G [Char]
ys = do
dirN <- [Char] -> IO [[Char]]
listDirectory [Char]
"."
let dirN1 = [[Char]] -> Vector [Char]
forall a. [a] -> Vector a
V.fromList ([[Char]] -> Vector [Char])
-> ([[Char]] -> [[Char]]) -> [[Char]] -> Vector [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[Char]] -> [[Char]]
forall a. Ord a => [a] -> [a]
L.sort ([[Char]] -> [[Char]])
-> ([[Char]] -> [[Char]]) -> [[Char]] -> [[Char]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Char] -> Bool) -> [[Char]] -> [[Char]]
forall a. (a -> Bool) -> [a] -> [a]
filter (\[Char]
s -> [Char] -> [Char] -> Bool
forall a. Eq a => [a] -> [a] -> Bool
isPrefixOf [Char]
"result" [Char]
s Bool -> Bool -> Bool
&& [Char] -> [Char] -> Bool
forall a. Eq a => [a] -> [a] -> Bool
isSuffixOf (if Int -> [Char] -> [Char]
forall a. Int -> [a] -> [a]
drop Int
3 [Char]
ys [Char] -> [Char] -> Bool
forall a. Eq a => a -> a -> Bool
== [Char]
"f" then [Char]
".flac" else [Char]
".wav") [Char]
s) ([[Char]] -> Vector [Char]) -> [[Char]] -> Vector [Char]
forall a b. (a -> b) -> a -> b
$ [[Char]]
dirN
V.mapM getFileSize dirN1
getFileRSizesS :: IO (V.Vector Int)
getFileRSizesS :: IO (Vector Int)
getFileRSizesS = [Char] -> IO (Vector Int)
getFileRSizesS2G [Char]
"221w"
getFileRSizesS2G :: String -> IO (V.Vector Int)
getFileRSizesS2G :: [Char] -> IO (Vector Int)
getFileRSizesS2G [Char]
ys = do
dirN0 <- [Char] -> IO [[Char]]
listDirectory [Char]
"."
let dirN2 = [[Char]] -> Vector [Char]
forall a. [a] -> Vector a
V.fromList ([[Char]] -> Vector [Char])
-> ([[Char]] -> [[Char]]) -> [[Char]] -> Vector [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[Char]] -> [[Char]]
forall a. Ord a => [a] -> [a]
L.sort ([[Char]] -> [[Char]])
-> ([[Char]] -> [[Char]]) -> [[Char]] -> [[Char]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Char] -> Bool) -> [[Char]] -> [[Char]]
forall a. (a -> Bool) -> [a] -> [a]
filter (\[Char]
s -> [Char] -> [Char] -> Bool
forall a. Eq a => [a] -> [a] -> Bool
isPrefixOf [Char]
"result" [Char]
s Bool -> Bool -> Bool
&& [Char] -> [Char] -> Bool
forall a. Eq a => [a] -> [a] -> Bool
isSuffixOf (if Int -> [Char] -> [Char]
forall a. Int -> [a] -> [a]
drop Int
3 [Char]
ys [Char] -> [Char] -> Bool
forall a. Eq a => a -> a -> Bool
== [Char]
"f" then [Char]
".flac" else [Char]
".wav") [Char]
s) ([[Char]] -> Vector [Char]) -> [[Char]] -> Vector [Char]
forall a b. (a -> b) -> a -> b
$ [[Char]]
dirN0
sizes1 <- V.mapM getFileSize dirN2
return . V.map fromIntegral $ sizes1
getFileRSizesS2 :: IO (V.Vector Int)
getFileRSizesS2 :: IO (Vector Int)
getFileRSizesS2 = IO (Vector Integer)
getFileRSizes IO (Vector Integer)
-> (Vector Integer -> IO (Vector Int)) -> IO (Vector Int)
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Vector Integer
s -> Vector Int -> IO (Vector Int)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Vector Int -> IO (Vector Int))
-> (Vector Integer -> Vector Int)
-> Vector Integer
-> IO (Vector Int)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Integer -> Int) -> Vector Integer -> Vector Int
forall a b. (a -> b) -> Vector a -> Vector b
V.map Integer -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Vector Integer -> IO (Vector Int))
-> Vector Integer -> IO (Vector Int)
forall a b. (a -> b) -> a -> b
$ Vector Integer
s
getFileRTuples :: IO (V.Vector (FilePath,Integer))
getFileRTuples :: IO (Vector ([Char], Integer))
getFileRTuples = [Char] -> IO (Vector ([Char], Integer))
getFileRTuples2G [Char]
"221w"
getFileRTuples2G :: String -> IO (V.Vector (FilePath,Integer))
getFileRTuples2G :: [Char] -> IO (Vector ([Char], Integer))
getFileRTuples2G [Char]
ys = do
dirN <- [Char] -> IO [[Char]]
listDirectory [Char]
"."
let dirN0 = [[Char]] -> [[Char]]
forall a. Ord a => [a] -> [a]
L.sort ([[Char]] -> [[Char]])
-> ([[Char]] -> [[Char]]) -> [[Char]] -> [[Char]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Char] -> Bool) -> [[Char]] -> [[Char]]
forall a. (a -> Bool) -> [a] -> [a]
filter (\[Char]
s -> [Char] -> [Char] -> Bool
forall a. Eq a => [a] -> [a] -> Bool
isPrefixOf [Char]
"result" [Char]
s Bool -> Bool -> Bool
&& [Char] -> [Char] -> Bool
forall a. Eq a => [a] -> [a] -> Bool
isSuffixOf (if Int -> [Char] -> [Char]
forall a. Int -> [a] -> [a]
drop Int
3 [Char]
ys [Char] -> [Char] -> Bool
forall a. Eq a => a -> a -> Bool
== [Char]
"f" then [Char]
".flac" else [Char]
".wav") [Char]
s) ([[Char]] -> [[Char]]) -> [[Char]] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [[Char]]
dirN
sizes0 <- mapM getFileSize dirN0
let tpls = [([Char], Integer)] -> Vector ([Char], Integer)
forall a. [a] -> Vector a
V.fromList ([([Char], Integer)] -> Vector ([Char], Integer))
-> ([Integer] -> [([Char], Integer)])
-> [Integer]
-> Vector ([Char], Integer)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[Char]] -> [Integer] -> [([Char], Integer)]
forall a b. [a] -> [b] -> [(a, b)]
zip [[Char]]
dirN0 ([Integer] -> Vector ([Char], Integer))
-> [Integer] -> Vector ([Char], Integer)
forall a b. (a -> b) -> a -> b
$ [Integer]
sizes0
return tpls
listVDirectory :: IO (V.Vector FilePath)
listVDirectory :: IO (Vector [Char])
listVDirectory = [Char] -> IO (Vector [Char])
listVDirectory2G [Char]
"221w"
listVDirectory2G :: String -> IO (V.Vector FilePath)
listVDirectory2G :: [Char] -> IO (Vector [Char])
listVDirectory2G [Char]
ys = do
dir0N <- [Char] -> IO [[Char]]
listDirectory [Char]
"."
let diNN = [[Char]] -> Vector [Char]
forall a. [a] -> Vector a
V.fromList ([[Char]] -> Vector [Char])
-> ([[Char]] -> [[Char]]) -> [[Char]] -> Vector [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[Char]] -> [[Char]]
forall a. Ord a => [a] -> [a]
L.sort ([[Char]] -> [[Char]])
-> ([[Char]] -> [[Char]]) -> [[Char]] -> [[Char]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Char] -> Bool) -> [[Char]] -> [[Char]]
forall a. (a -> Bool) -> [a] -> [a]
filter (\[Char]
s -> [Char] -> [Char] -> Bool
forall a. Eq a => [a] -> [a] -> Bool
isPrefixOf [Char]
"result" [Char]
s Bool -> Bool -> Bool
&& [Char] -> [Char] -> Bool
forall a. Eq a => [a] -> [a] -> Bool
isSuffixOf (if Int -> [Char] -> [Char]
forall a. Int -> [a] -> [a]
drop Int
3 [Char]
ys [Char] -> [Char] -> Bool
forall a. Eq a => a -> a -> Bool
== [Char]
"f" then [Char]
".flac" else [Char]
".wav") [Char]
s) ([[Char]] -> Vector [Char]) -> [[Char]] -> Vector [Char]
forall a b. (a -> b) -> a -> b
$ [[Char]]
dir0N
return diNN
listVDirectory3G :: String -> String -> IO (V.Vector FilePath)
listVDirectory3G :: [Char] -> [Char] -> IO (Vector [Char])
listVDirectory3G [Char]
ys [Char]
zs = do
dir0N <- [Char] -> IO [[Char]]
listDirectory [Char]
"."
let diNN = [[Char]] -> Vector [Char]
forall a. [a] -> Vector a
V.fromList ([[Char]] -> Vector [Char])
-> ([[Char]] -> [[Char]]) -> [[Char]] -> Vector [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[Char]] -> [[Char]]
forall a. Ord a => [a] -> [a]
L.sort ([[Char]] -> [[Char]])
-> ([[Char]] -> [[Char]]) -> [[Char]] -> [[Char]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Char] -> Bool) -> [[Char]] -> [[Char]]
forall a. (a -> Bool) -> [a] -> [a]
filter (\[Char]
s -> [Char] -> [Char] -> Bool
forall a. Eq a => [a] -> [a] -> Bool
isPrefixOf [Char]
zs [Char]
s Bool -> Bool -> Bool
&& [Char] -> [Char] -> Bool
forall a. Eq a => [a] -> [a] -> Bool
isSuffixOf (if Int -> [Char] -> [Char]
forall a. Int -> [a] -> [a]
drop Int
3 [Char]
ys [Char] -> [Char] -> Bool
forall a. Eq a => a -> a -> Bool
== [Char]
"f" then [Char]
".flac" else [Char]
".wav") [Char]
s) ([[Char]] -> Vector [Char]) -> [[Char]] -> Vector [Char]
forall a b. (a -> b) -> a -> b
$ [[Char]]
dir0N
return diNN
playAndMark :: V.Vector FilePath -> IO (V.Vector String)
playAndMark :: Vector [Char] -> IO (Vector [Char])
playAndMark Vector [Char]
vec
| Vector [Char] -> Bool
forall a. Vector a -> Bool
V.null Vector [Char]
vec = Vector [Char] -> IO (Vector [Char])
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Vector [Char]
forall a. Vector a
V.empty
| Bool
otherwise = (Int -> [Char] -> IO [Char]) -> Vector [Char] -> IO (Vector [Char])
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m (Vector b)
V.imapM (\Int
i [Char]
xs -> do
duration <- [Char] -> IO Float
durationA ([Char] -> IO Float) -> [Char] -> IO Float
forall a b. (a -> b) -> a -> b
$ Vector [Char] -> Int -> [Char]
forall a. Vector a -> Int -> a
V.unsafeIndex Vector [Char]
vec Int
i
putStrLn "Listen to the next sound, please. Please, do not enter anything while sound plays. "
forkIO $ do
myThread <- myThreadId
playA xs
killThread myThread
threadDelay (read (show $ truncate (duration * 1000000))::Int)
putStr "How do you mark the file that has just been played now -- if of high quality, print \"1\", if of low quality, print \"0\", "
putStrLn "if it is just accepted, press \'Enter\'. "
mark0 <- getLine
putStrLn "-----------------------------------------------------------------------------------------"
let mark = Int -> [Char] -> [Char]
forall a. Int -> [a] -> [a]
take Int
1 [Char]
mark0
case mark of
[Char]
"1" -> [Char] -> IO [Char]
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ([Char] -> IO [Char]) -> [Char] -> IO [Char]
forall a b. (a -> b) -> a -> b
$ Int -> [Char]
forall a. Show a => a -> [Char]
show Int
i [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"*" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
xs
[Char]
"0" -> [Char] -> IO [Char]
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ([Char] -> IO [Char]) -> [Char] -> IO [Char]
forall a b. (a -> b) -> a -> b
$ Int -> [Char]
forall a. Show a => a -> [Char]
show Int
i [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"**" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
xs
[Char]
_ -> [Char] -> IO [Char]
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return []) Vector [Char]
vec IO (Vector [Char])
-> (Vector [Char] -> IO (Vector [Char])) -> IO (Vector [Char])
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char] -> IO Bool) -> Vector [Char] -> IO (Vector [Char])
forall (m :: * -> *) a.
Monad m =>
(a -> m Bool) -> Vector a -> m (Vector a)
V.filterM (Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Bool -> IO Bool) -> ([Char] -> Bool) -> [Char] -> IO Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Bool -> Bool
not (Bool -> Bool) -> ([Char] -> Bool) -> [Char] -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Char] -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null)
playAMrk :: IO (V.Vector String)
playAMrk :: IO (Vector [Char])
playAMrk = [Char] -> IO (Vector [Char])
playAMrk2G [Char]
"221w"
playAMrk2G :: String -> IO (V.Vector String)
playAMrk2G :: [Char] -> IO (Vector [Char])
playAMrk2G [Char]
ys = [Char] -> IO (Vector [Char])
listVDirectory2G [Char]
ys IO (Vector [Char])
-> (Vector [Char] -> IO (Vector [Char])) -> IO (Vector [Char])
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Vector [Char] -> IO (Vector [Char])
playAndMark
shouldBeReplaced :: String -> Bool
shouldBeReplaced :: [Char] -> Bool
shouldBeReplaced (Char
x:Char
y:[Char]
xs)
| Char
x Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'*' Bool -> Bool -> Bool
&& Char
y Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'*' = Bool
True
| Bool
otherwise = [Char] -> Bool
shouldBeReplaced (Char
yChar -> [Char] -> [Char]
forall a. a -> [a] -> [a]
:[Char]
xs)
shouldBeReplaced [Char]
_ = Bool
False
isHighQ :: String -> Bool
isHighQ :: [Char] -> Bool
isHighQ [Char]
xs = ([Char] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length ([Char] -> Int) -> ([Char] -> [Char]) -> [Char] -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Bool) -> [Char] -> [Char]
forall a. (a -> Bool) -> [a] -> [a]
filter (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'*') ([Char] -> Int) -> [Char] -> Int
forall a b. (a -> b) -> a -> b
$ [Char]
xs) Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
1
indexesFromMrk :: String -> Int
indexesFromMrk :: [Char] -> Int
indexesFromMrk [Char]
xs = [Char] -> Int
forall a. Read a => [Char] -> a
read ((Char -> Bool) -> [Char] -> [Char]
forall a. (a -> Bool) -> [a] -> [a]
takeWhile (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
/= Char
'*') [Char]
xs)::Int
internalConv :: ([String],[String]) -> (V.Vector Int, V.Vector String)
internalConv :: ([[Char]], [[Char]]) -> (Vector Int, Vector [Char])
internalConv ([[Char]]
xss,[[Char]]
yss) = ([Int] -> Vector Int
forall a. [a] -> Vector a
V.fromList ([Int] -> Vector Int)
-> ([[Char]] -> [Int]) -> [[Char]] -> Vector Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Char] -> Int) -> [[Char]] -> [Int]
forall a b. (a -> b) -> [a] -> [b]
map [Char] -> Int
indexesFromMrk ([[Char]] -> Vector Int) -> [[Char]] -> Vector Int
forall a b. (a -> b) -> a -> b
$ [[Char]]
xss,[[Char]] -> Vector [Char]
forall a. [a] -> Vector a
V.fromList ([[Char]] -> Vector [Char])
-> ([[Char]] -> [[Char]]) -> [[Char]] -> Vector [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Char] -> [Char]) -> [[Char]] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map ((Char -> Bool) -> [Char] -> [Char]
forall a. (a -> Bool) -> [a] -> [a]
dropWhile (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'*')) ([[Char]] -> Vector [Char]) -> [[Char]] -> Vector [Char]
forall a b. (a -> b) -> a -> b
$ [[Char]]
yss)
ixFromRes :: String -> String
ixFromRes :: [Char] -> [Char]
ixFromRes [Char]
xs = ((Char -> Bool) -> [Char] -> [Char]
forall a. (a -> Bool) -> [a] -> [a]
takeWhile (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
/= Char
'.') [Char]
xs) [Char] -> [Char] -> [Char]
forall a. Eq a => [a] -> [a] -> [a]
\\ [Char]
"result"
ixInterv :: Int -> IO (Int, Int)
ixInterv :: Int -> IO (Int, Int)
ixInterv = [Char] -> Int -> IO (Int, Int)
ixInterv2G [Char]
"221w"
ixInterv2G :: String -> Int -> IO (Int, Int)
ixInterv2G :: [Char] -> Int -> IO (Int, Int)
ixInterv2G [Char]
ys Int
index0
| Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Int
index0 Int
0 Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
== Ordering
LT = do
dirV <- [Char] -> IO (Vector [Char])
listVDirectory2G [Char]
ys
let l1 = Vector [Char] -> Int
forall a. Vector a -> Int
V.length Vector [Char]
dirV
case compare l1 13 of
Ordering
LT -> (Int, Int) -> IO (Int, Int)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Int
0,Int
l1 Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1)
Ordering
_ -> (Int, Int) -> IO (Int, Int)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Int
0,Int
11)
| Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Int
index0 Int
7 Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
== Ordering
LT = do
dirV <- [Char] -> IO (Vector [Char])
listVDirectory2G [Char]
ys
let l1 = Vector [Char] -> Int
forall a. Vector a -> Int
V.length Vector [Char]
dirV
case compare index0 (l1 - 5) of
Ordering
GT -> (Int, Int) -> IO (Int, Int)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Int
0, Int
l1 Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1)
Ordering
_ -> (Int, Int) -> IO (Int, Int)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Int
0, Int
index0 Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
4)
| Bool
otherwise = do
dirV <- [Char] -> IO (Vector [Char])
listVDirectory2G [Char]
ys
let l1 = Vector [Char] -> Int
forall a. Vector a -> Int
V.length Vector [Char]
dirV
case compare l1 13 of
Ordering
LT -> (Int, Int) -> IO (Int, Int)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Int
0,Int
l1 Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1)
Ordering
_ ->
case Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Int
index0 (Int
l1 Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
5) of
Ordering
GT -> (Int, Int) -> IO (Int, Int)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Int
index0 Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
7, Int
l1 Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1)
Ordering
_ -> (Int, Int) -> IO (Int, Int)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Int
index0 Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
7, Int
index0 Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
4)
infoFromV :: V.Vector String -> [(V.Vector Int, V.Vector String)]
infoFromV :: Vector [Char] -> [(Vector Int, Vector [Char])]
infoFromV Vector [Char]
vec = (Vector [Char] -> (Vector Int, Vector [Char]))
-> [Vector [Char]] -> [(Vector Int, Vector [Char])]
forall a b. (a -> b) -> [a] -> [b]
map (([[Char]], [[Char]]) -> (Vector Int, Vector [Char])
internalConv (([[Char]], [[Char]]) -> (Vector Int, Vector [Char]))
-> (Vector [Char] -> ([[Char]], [[Char]]))
-> Vector [Char]
-> (Vector Int, Vector [Char])
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [([Char], [Char])] -> ([[Char]], [[Char]])
forall a b. [(a, b)] -> ([a], [b])
unzip ([([Char], [Char])] -> ([[Char]], [[Char]]))
-> (Vector [Char] -> [([Char], [Char])])
-> Vector [Char]
-> ([[Char]], [[Char]])
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector ([Char], [Char]) -> [([Char], [Char])]
forall a. Vector a -> [a]
V.toList (Vector ([Char], [Char]) -> [([Char], [Char])])
-> (Vector [Char] -> Vector ([Char], [Char]))
-> Vector [Char]
-> [([Char], [Char])]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Char] -> ([Char], [Char]))
-> Vector [Char] -> Vector ([Char], [Char])
forall a b. (a -> b) -> Vector a -> Vector b
V.map ((Char -> Bool) -> [Char] -> ([Char], [Char])
forall a. (a -> Bool) -> [a] -> ([a], [a])
break (Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
== Char
'*'))) [Vector [Char]
v1, Vector [Char]
v2]
where (Vector [Char]
v1, Vector [Char]
v2) = ([Char] -> Bool) -> Vector [Char] -> (Vector [Char], Vector [Char])
forall a. (a -> Bool) -> Vector a -> (Vector a, Vector a)
V.partition [Char] -> Bool
shouldBeReplaced Vector [Char]
vec
playSeqAR :: Int -> IO ()
playSeqAR :: Int -> IO ()
playSeqAR = [Char] -> Int -> IO ()
playSeqAR2G [Char]
"221w"
playSeqAR2G :: String -> Int -> IO ()
playSeqAR2G :: [Char] -> Int -> IO ()
playSeqAR2G [Char]
ys Int
index0 = do
(minBnd,maxBnd) <- [Char] -> Int -> IO (Int, Int)
ixInterv2G [Char]
ys Int
index0
dirV2 <- listVDirectory2G ys
mapM_ (playA . V.unsafeIndex dirV2) [minBnd..maxBnd]
playSeqARV :: V.Vector Int -> IO ()
playSeqARV :: Vector Int -> IO ()
playSeqARV = [Char] -> Vector Int -> IO ()
playSeqARV2G [Char]
"221w"
playSeqARV2G :: String -> V.Vector Int -> IO ()
playSeqARV2G :: [Char] -> Vector Int -> IO ()
playSeqARV2G [Char]
ys Vector Int
vec = do
dirV2 <- [Char] -> IO (Vector [Char])
listVDirectory2G [Char]
ys
V.mapM_ (playA . V.unsafeIndex dirV2) vec
playSeqARV2 :: V.Vector String -> IO ()
playSeqARV2 :: Vector [Char] -> IO ()
playSeqARV2 = [Char] -> Vector [Char] -> IO ()
playSeqARV22G [Char]
"221w"
playSeqARV22G :: String -> V.Vector String -> IO ()
playSeqARV22G :: [Char] -> Vector [Char] -> IO ()
playSeqARV22G [Char]
ys Vector [Char]
vec = do
let indexesHQs :: Vector Int
indexesHQs = (Vector Int, Vector [Char]) -> Vector Int
forall a b. (a, b) -> a
fst ((Vector Int, Vector [Char]) -> Vector Int)
-> (Vector [Char] -> (Vector Int, Vector [Char]))
-> Vector [Char]
-> Vector Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [(Vector Int, Vector [Char])] -> (Vector Int, Vector [Char])
forall a. HasCallStack => [a] -> a
last ([(Vector Int, Vector [Char])] -> (Vector Int, Vector [Char]))
-> (Vector [Char] -> [(Vector Int, Vector [Char])])
-> Vector [Char]
-> (Vector Int, Vector [Char])
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector [Char] -> [(Vector Int, Vector [Char])]
infoFromV (Vector [Char] -> Vector Int) -> Vector [Char] -> Vector Int
forall a b. (a -> b) -> a -> b
$ Vector [Char]
vec
[Char] -> Vector Int -> IO ()
playSeqARV2G [Char]
ys Vector Int
indexesHQs
playCollectDec :: V.Vector String -> IO (V.Vector Bool)
playCollectDec :: Vector [Char] -> IO (Vector Bool)
playCollectDec = [Char] -> Vector [Char] -> IO (Vector Bool)
playCollectDec2G [Char]
"221w"
playCollectDec2G :: String -> V.Vector String -> IO (V.Vector Bool)
playCollectDec2G :: [Char] -> Vector [Char] -> IO (Vector Bool)
playCollectDec2G [Char]
ys Vector [Char]
vec = do
dirV3 <- [Char] -> IO (Vector [Char])
listVDirectory2G [Char]
ys
let indexesHQs = (Vector Int, Vector [Char]) -> Vector Int
forall a b. (a, b) -> a
fst ((Vector Int, Vector [Char]) -> Vector Int)
-> (Vector [Char] -> (Vector Int, Vector [Char]))
-> Vector [Char]
-> Vector Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [(Vector Int, Vector [Char])] -> (Vector Int, Vector [Char])
forall a. HasCallStack => [a] -> a
last ([(Vector Int, Vector [Char])] -> (Vector Int, Vector [Char]))
-> (Vector [Char] -> [(Vector Int, Vector [Char])])
-> Vector [Char]
-> (Vector Int, Vector [Char])
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector [Char] -> [(Vector Int, Vector [Char])]
infoFromV (Vector [Char] -> Vector Int) -> Vector [Char] -> Vector Int
forall a b. (a -> b) -> a -> b
$ Vector [Char]
vec
V.mapM (playCollect1Dec dirV3) indexesHQs
replaceWithHQs :: FilePath -> V.Vector Bool -> V.Vector FilePath -> IO ()
replaceWithHQs :: [Char] -> Vector Bool -> Vector [Char] -> IO ()
replaceWithHQs = [Char] -> [Char] -> Vector Bool -> Vector [Char] -> IO ()
replaceWithHQs2G [Char]
"221w"
replaceWithHQs2G :: String -> FilePath -> V.Vector Bool -> V.Vector FilePath -> IO ()
replaceWithHQs2G :: [Char] -> [Char] -> Vector Bool -> Vector [Char] -> IO ()
replaceWithHQs2G [Char]
ys [Char]
file0 Vector Bool
vecBools Vector [Char]
stringHQs
| Vector Bool -> Int
forall a. Vector a -> Int
V.length Vector Bool
vecBools Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Vector [Char] -> Int
forall a. Vector a -> Int
V.length Vector [Char]
stringHQs =
case Vector [Char] -> Int
forall a. Vector a -> Int
V.length Vector [Char]
stringHQs of
Int
0 -> [Char] -> IO ()
putStrLn [Char]
"That's all!"
Int
1 | Vector Bool -> Int -> Bool
forall a. Vector a -> Int -> a
V.unsafeIndex Vector Bool
vecBools Int
0 -> do
[Char] -> [Char] -> IO ()
copyFile ([[Char]] -> [Char]
forall a. HasCallStack => [a] -> a
head ([[Char]] -> [Char])
-> (Vector [Char] -> [[Char]]) -> Vector [Char] -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector [Char] -> [[Char]]
forall a. Vector a -> [a]
V.toList (Vector [Char] -> [Char]) -> Vector [Char] -> [Char]
forall a b. (a -> b) -> a -> b
$ Vector [Char]
stringHQs) ([Char]
"resultI." [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ if Int -> [Char] -> [Char]
forall a. Int -> [a] -> [a]
drop Int
3 [Char]
ys [Char] -> [Char] -> Bool
forall a. Eq a => a -> a -> Bool
== [Char]
"f" then [Char]
"flac" else [Char]
"wav")
[Char] -> [Char] -> IO ()
renameFile ([Char]
"resultI." [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ if Int -> [Char] -> [Char]
forall a. Int -> [a] -> [a]
drop Int
3 [Char]
ys [Char] -> [Char] -> Bool
forall a. Eq a => a -> a -> Bool
== [Char]
"f" then [Char]
"flac" else [Char]
"wav") [Char]
file0
| Bool
otherwise -> [Char] -> IO ()
putStrLn [Char]
"Nothing has changed. "
Int
_ -> do
let yss :: [[Char]]
yss = Vector [Char] -> [[Char]]
forall a. Vector a -> [a]
V.toList (Vector [Char] -> [[Char]])
-> (Vector [Char] -> Vector [Char]) -> Vector [Char] -> [[Char]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int -> [Char] -> Bool) -> Vector [Char] -> Vector [Char]
forall a. (Int -> a -> Bool) -> Vector a -> Vector a
V.ifilter (\Int
i [Char]
_ -> Vector Bool -> Int -> Bool
forall a. Vector a -> Int -> a
V.unsafeIndex Vector Bool
vecBools Int
i) (Vector [Char] -> [[Char]]) -> Vector [Char] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ Vector [Char]
stringHQs
case [[Char]] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [[Char]]
yss of
Int
0 -> [Char] -> IO ()
putStrLn [Char]
"That's all!"
Int
1 -> [Char] -> [Char] -> IO ()
copyFile ([[Char]] -> [Char]
forall a. HasCallStack => [a] -> a
head [[Char]]
yss) [Char]
file0
Int
_ -> do
(_,_,herr) <- [Char] -> [[Char]] -> [Char] -> IO (ExitCode, [Char], [Char])
readProcessWithExitCode (Maybe [Char] -> [Char]
forall a. HasCallStack => Maybe a -> a
fromJust ([Char] -> Maybe [Char]
showE [Char]
"sox")) ([[Char]]
yss [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [Char] -> [[Char]] -> [[Char]]
soxBasicParams [Char]
ys [[Char]
"",[Char]
file0]) [Char]
""
putStrLn herr
| Bool
otherwise =
let stringHQ2s :: Vector [Char]
stringHQ2s = Int -> Vector [Char] -> Vector [Char]
forall a. Int -> Vector a -> Vector a
V.take (Int -> Int -> Int
forall a. Ord a => a -> a -> a
min (Vector Bool -> Int
forall a. Vector a -> Int
V.length Vector Bool
vecBools) (Vector [Char] -> Int
forall a. Vector a -> Int
V.length Vector [Char]
stringHQs)) Vector [Char]
stringHQs
vecBool2s :: Vector Bool
vecBool2s = Int -> Vector Bool -> Vector Bool
forall a. Int -> Vector a -> Vector a
V.take (Int -> Int -> Int
forall a. Ord a => a -> a -> a
min (Vector Bool -> Int
forall a. Vector a -> Int
V.length Vector Bool
vecBools) (Vector [Char] -> Int
forall a. Vector a -> Int
V.length Vector [Char]
stringHQs)) Vector Bool
vecBools in [Char] -> [Char] -> Vector Bool -> Vector [Char] -> IO ()
replaceWithHQs2G [Char]
ys [Char]
file0 Vector Bool
vecBool2s Vector [Char]
stringHQ2s
thisOne :: IO Bool
thisOne :: IO Bool
thisOne = do
[Char] -> IO ()
putStrLn [Char]
"Would you like to add this sound played just now to the sequence of sounds that will replace the needed one? "
yes <- IO [Char]
getLine
putStrLn "-----------------------------------------------------------------------"
return $ take 1 yes == "1"
playCollect1Dec :: V.Vector String -> Int -> IO Bool
playCollect1Dec :: Vector [Char] -> Int -> IO Bool
playCollect1Dec Vector [Char]
dirV2 Int
i
| Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Int
i Int
0 Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
LT Bool -> Bool -> Bool
&& Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Int
i (Vector [Char] -> Int
forall a. Vector a -> Int
V.length Vector [Char]
dirV2) Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT = do
[Char] -> IO ()
playA ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ Vector [Char] -> Int -> [Char]
forall a. Vector a -> Int -> a
V.unsafeIndex Vector [Char]
dirV2 Int
i
IO Bool
thisOne
| Bool
otherwise = [Char] -> IO Bool
forall a. HasCallStack => [Char] -> a
error [Char]
"DobutokO.Sound.IntermediateF.playCollect1Dec: wrong Int parameter! "
pAnR1 :: V.Vector String -> IO (V.Vector String)
pAnR1 :: Vector [Char] -> IO (Vector [Char])
pAnR1 = [Char] -> Vector [Char] -> IO (Vector [Char])
pAnR12G [Char]
"221w"
pAnR12G :: String -> V.Vector String -> IO (V.Vector String)
pAnR12G :: [Char] -> Vector [Char] -> IO (Vector [Char])
pAnR12G [Char]
ys Vector [Char]
vec
| Vector [Char] -> Bool
forall a. Vector a -> Bool
V.null Vector [Char]
vec = [Char] -> IO ()
putStrLn [Char]
"You have processed all the marked files! " IO () -> IO (Vector [Char]) -> IO (Vector [Char])
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Vector [Char] -> IO (Vector [Char])
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Vector [Char]
forall a. Vector a
V.empty
| Bool
otherwise = do
let [(Vector Int
indexes0,Vector [Char]
strings),(Vector Int
indexesHQ,Vector [Char]
stringHQs)] = Vector [Char] -> [(Vector Int, Vector [Char])]
infoFromV Vector [Char]
vec
[Char] -> IO ()
putStrLn [Char]
"Please, listen to the melody and remember what sound you would like to replace and the surrounding sounds. "
[Char] -> Int -> IO ()
playSeqAR2G [Char]
ys (Int -> IO ()) -> Int -> IO ()
forall a b. (a -> b) -> a -> b
$ Vector Int -> Int -> Int
forall a. Vector a -> Int -> a
V.unsafeIndex Vector Int
indexes0 Int
0
[Char] -> IO ()
putStrLn [Char]
"---------------------------------------------------------------"
[Char] -> IO ()
putStrLn [Char]
"Now, please, listen to a collection of sounds considered of higher quality which you can use to replace the needed one. "
vecBools <- [Char] -> Vector [Char] -> IO (Vector Bool)
playCollectDec2G [Char]
ys Vector [Char]
vec
replaceWithHQs2G ys (V.unsafeIndex strings 0) vecBools stringHQs
return $ V.map (\(Int
ix,[Char]
xs) -> Int -> [Char]
forall a. Show a => a -> [Char]
show Int
ix [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"**" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
xs) . V.zip (V.unsafeDrop 1 indexes0) $ (V.unsafeDrop 1 strings)
pAnR2 :: V.Vector String -> IO ()
pAnR2 :: Vector [Char] -> IO ()
pAnR2 = [Char] -> Vector [Char] -> IO ()
pAnR22G [Char]
"221w"
pAnR22G :: String -> V.Vector String -> IO ()
pAnR22G :: [Char] -> Vector [Char] -> IO ()
pAnR22G [Char]
ys Vector [Char]
vec
| Vector [Char] -> Bool
forall a. Vector a -> Bool
V.null Vector [Char]
vec = [Char] -> IO ()
putStrLn [Char]
"You have processed all the marked files! "
| Bool
otherwise = IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO a
onException ([Char] -> Vector [Char] -> IO (Vector [Char])
pAnR12G [Char]
ys Vector [Char]
vec IO (Vector [Char]) -> (Vector [Char] -> IO ()) -> IO ()
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= [Char] -> Vector [Char] -> IO ()
pAnR22G [Char]
ys) (() -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ())
pAnR_ :: IO ()
pAnR_ :: IO ()
pAnR_ = [Char] -> IO ()
pAnR_2G [Char]
"221w"
pAnR_2G :: String -> IO ()
pAnR_2G :: [Char] -> IO ()
pAnR_2G [Char]
ys = do
vec <- [Char] -> IO (Vector [Char])
playAMrk2G [Char]
ys
pAnR22G ys vec
reverbE :: FilePath -> [String] -> IO ()
reverbE :: [Char] -> [[Char]] -> IO ()
reverbE [Char]
file [[Char]]
arggs = do
(code,_,_) <- [Char] -> [[Char]] -> [Char] -> IO (ExitCode, [Char], [Char])
readProcessWithExitCode (Maybe [Char] -> [Char]
forall a. HasCallStack => Maybe a -> a
fromJust ([Char] -> Maybe [Char]
showE [Char]
"sox")) ([[Char]
file,[Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverb" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2 [Char]
file,[Char]
"reverb"] [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]]
arggs) [Char]
""
case code of
ExitCode
ExitSuccess -> [Char] -> [Char] -> IO ()
renameFile ([Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverb" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2 [Char]
file) [Char]
file
ExitCode
_ -> do
[Char] -> IO ()
removeFile ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverb" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2 [Char]
file
[Char] -> IO ()
putStrLn ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
"DobutokO.Sound.IntermediateF.reverbE \"" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"\" has not been successful. The file has not been changed at all. "
reverbE2C :: FilePath -> [String] -> IO ()
reverbE2C :: [Char] -> [[Char]] -> IO ()
reverbE2C [Char]
file [[Char]]
arggs = do
(code,_,_) <- [Char] -> [[Char]] -> [Char] -> IO (ExitCode, [Char], [Char])
readProcessWithExitCode (Maybe [Char] -> [Char]
forall a. HasCallStack => Maybe a -> a
fromJust ([Char] -> Maybe [Char]
showE [Char]
"sox")) ([[Char]
file,[Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverb" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2vv [Char]
file,[Char]
"reverb"] [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]]
arggs) [Char]
""
case code of
ExitCode
ExitSuccess -> do { [Char] -> [Char] -> IO ()
renameFile ([Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverb" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2vv [Char]
file) ([Char] -> [Char]
cfw2wf [Char]
file) ; [Char] -> IO ()
removeFile [Char]
file }
ExitCode
_ -> do { [Char] -> IO ()
removeFile ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverb" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2vv [Char]
file
; [Char] -> IO ()
putStrLn ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
"DobutokO.Sound.IntermediateF.reverbE2C \"" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"\" has not been successful. The file has not been changed at all. " }
reverb1E :: FilePath -> [String] -> IO ()
reverb1E :: [Char] -> [[Char]] -> IO ()
reverb1E [Char]
file [[Char]]
arggs = do
(code,_,_) <- [Char] -> [[Char]] -> [Char] -> IO (ExitCode, [Char], [Char])
readProcessWithExitCode (Maybe [Char] -> [Char]
forall a. HasCallStack => Maybe a -> a
fromJust ([Char] -> Maybe [Char]
showE [Char]
"sox")) ([[Char]
file,[Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverb1" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2 [Char]
file,[Char]
"reverb"] [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]]
arggs [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]
"channels",[Char]
"1"]) [Char]
""
case code of
ExitCode
ExitSuccess -> [Char] -> [Char] -> IO ()
renameFile ([Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverb1" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2 [Char]
file) [Char]
file
ExitCode
_ -> do
[Char] -> IO ()
removeFile ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverb1" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2 [Char]
file
[Char] -> IO ()
putStrLn ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
"DobutokO.Sound.IntermediateF.reverb1E \"" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"\" has not been successful. The file has not been changed at all. "
reverb1E2C :: FilePath -> [String] -> IO ()
reverb1E2C :: [Char] -> [[Char]] -> IO ()
reverb1E2C [Char]
file [[Char]]
arggs = do
(code,_,_) <- [Char] -> [[Char]] -> [Char] -> IO (ExitCode, [Char], [Char])
readProcessWithExitCode (Maybe [Char] -> [Char]
forall a. HasCallStack => Maybe a -> a
fromJust ([Char] -> Maybe [Char]
showE [Char]
"sox")) ([[Char]
file,[Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverb1" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2vv [Char]
file,[Char]
"reverb"] [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]]
arggs [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]
"channels",[Char]
"1"]) [Char]
""
case code of
ExitCode
ExitSuccess -> do { [Char] -> [Char] -> IO ()
renameFile ([Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverb1" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2vv [Char]
file) ([Char] -> [Char]
cfw2wf [Char]
file) ; [Char] -> IO ()
removeFile [Char]
file }
ExitCode
_ -> do
[Char] -> IO ()
removeFile ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverb1" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2vv [Char]
file
[Char] -> IO ()
putStrLn ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
"DobutokO.Sound.IntermediateF.reverb1E2C \"" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"\" has not been successful. The file has not been changed at all. "
reverbWE :: FilePath -> [String] -> IO ()
reverbWE :: [Char] -> [[Char]] -> IO ()
reverbWE [Char]
file [[Char]]
arggs = do
(code,_,_) <- [Char] -> [[Char]] -> [Char] -> IO (ExitCode, [Char], [Char])
readProcessWithExitCode (Maybe [Char] -> [Char]
forall a. HasCallStack => Maybe a -> a
fromJust ([Char] -> Maybe [Char]
showE [Char]
"sox")) ([[Char]
file,[Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverbW" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2 [Char]
file,[Char]
"reverb",[Char]
"-w"] [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]]
arggs) [Char]
""
case code of
ExitCode
ExitSuccess -> [Char] -> [Char] -> IO ()
renameFile ([Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverbW" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2 [Char]
file) [Char]
file
ExitCode
_ -> do
[Char] -> IO ()
removeFile ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverbW" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2 [Char]
file
[Char] -> IO ()
putStrLn ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
"DobutokO.Sound.IntermediateF.reverbWE \"" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"\" has not been successful. The file has not been changed at all. "
reverbWE2C :: FilePath -> [String] -> IO ()
reverbWE2C :: [Char] -> [[Char]] -> IO ()
reverbWE2C [Char]
file [[Char]]
arggs = do
(code,_,_) <- [Char] -> [[Char]] -> [Char] -> IO (ExitCode, [Char], [Char])
readProcessWithExitCode (Maybe [Char] -> [Char]
forall a. HasCallStack => Maybe a -> a
fromJust ([Char] -> Maybe [Char]
showE [Char]
"sox")) ([[Char]
file,[Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverbW" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2vv [Char]
file,[Char]
"reverb",[Char]
"-w"] [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]]
arggs) [Char]
""
case code of
ExitCode
ExitSuccess -> do { [Char] -> [Char] -> IO ()
renameFile ([Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverbW" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2vv [Char]
file) ([Char] -> [Char]
cfw2wf [Char]
file) ; [Char] -> IO ()
removeFile [Char]
file }
ExitCode
_ -> do { [Char] -> IO ()
removeFile ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverbW" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2vv [Char]
file
; [Char] -> IO ()
putStrLn ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
"DobutokO.Sound.IntermediateF.reverbWE2C \"" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"\" has not been successful. The file has not been changed at all. " }
reverbW1E :: FilePath -> [String] -> IO ()
reverbW1E :: [Char] -> [[Char]] -> IO ()
reverbW1E [Char]
file [[Char]]
arggs = do
(code,_,_) <- [Char] -> [[Char]] -> [Char] -> IO (ExitCode, [Char], [Char])
readProcessWithExitCode (Maybe [Char] -> [Char]
forall a. HasCallStack => Maybe a -> a
fromJust ([Char] -> Maybe [Char]
showE [Char]
"sox")) ([[Char]
file,[Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverbW1" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2 [Char]
file,[Char]
"reverb",[Char]
"-w"] [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]]
arggs [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]
"channels",[Char]
"1"]) [Char]
""
case code of
ExitCode
ExitSuccess -> [Char] -> [Char] -> IO ()
renameFile ([Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverbW1" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2 [Char]
file) [Char]
file
ExitCode
_ -> do
[Char] -> IO ()
removeFile ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverbW1" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2 [Char]
file
[Char] -> IO ()
putStrLn ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
"DobutokO.Sound.IntermediateF.reverbW1E \"" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"\" has not been successful. The file has not been changed at all. "
reverb1WE2C :: FilePath -> [String] -> IO ()
reverb1WE2C :: [Char] -> [[Char]] -> IO ()
reverb1WE2C [Char]
file [[Char]]
arggs = do
(code,_,_) <- [Char] -> [[Char]] -> [Char] -> IO (ExitCode, [Char], [Char])
readProcessWithExitCode (Maybe [Char] -> [Char]
forall a. HasCallStack => Maybe a -> a
fromJust ([Char] -> Maybe [Char]
showE [Char]
"sox")) ([[Char]
file,[Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverbW1" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2vv [Char]
file,[Char]
"reverb",[Char]
"-w"] [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]]
arggs [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]
"channels",[Char]
"1"]) [Char]
""
case code of
ExitCode
ExitSuccess -> do { [Char] -> [Char] -> IO ()
renameFile ([Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverbW1" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2vv [Char]
file) ([Char] -> [Char]
cfw2wf [Char]
file) ; [Char] -> IO ()
removeFile [Char]
file }
ExitCode
_ -> do
[Char] -> IO ()
removeFile ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"reverbW1" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2vv [Char]
file
[Char] -> IO ()
putStrLn ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
"DobutokO.Sound.IntermediateF.reverb1WE2C \"" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"\" has not been successful. The file has not been changed at all. "
soxBasicParams :: String -> [String] -> [String]
soxBasicParams :: [Char] -> [[Char]] -> [[Char]]
soxBasicParams [Char]
ys [[Char]]
xss
| [[Char]] -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null [[Char]]
xss = []
| Bool
otherwise =
let ([Char]
ts,[Char]
zs) = Int -> [Char] -> ([Char], [Char])
forall a. Int -> [a] -> ([a], [a])
splitAt Int
2 ([Char] -> ([Char], [Char]))
-> ([Char] -> [Char]) -> [Char] -> ([Char], [Char])
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Char] -> [Char]
forall a. HasCallStack => [a] -> [a]
init ([Char] -> ([Char], [Char])) -> [Char] -> ([Char], [Char])
forall a b. (a -> b) -> a -> b
$ [Char]
ys in (([Char], Array Int ([Char], [Char])) -> [Char] -> [Char]
forall a b. Ord a => (b, Array Int (a, b)) -> a -> b
getBFst' ([Char]
"-r22050",(Int, Int) -> [([Char], [Char])] -> Array Int ([Char], [Char])
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,Int
8) ([([Char], [Char])] -> Array Int ([Char], [Char]))
-> ([[Char]] -> [([Char], [Char])])
-> [[Char]]
-> Array Int ([Char], [Char])
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[Char]] -> [[Char]] -> [([Char], [Char])]
forall a b. [a] -> [b] -> [(a, b)]
zip [[Char]
"11",[Char]
"16", [Char]
"17", [Char]
"19", [Char]
"32", [Char]
"44", [Char]
"48", [Char]
"80", [Char]
"96"] ([[Char]] -> Array Int ([Char], [Char]))
-> [[Char]] -> Array Int ([Char], [Char])
forall a b. (a -> b) -> a -> b
$
[[Char]
"-r11025",[Char]
"-r16000",[Char]
"-r176400",[Char]
"-r192000",[Char]
"-r32000",[Char]
"-r44100",[Char]
"-r48000",[Char]
"-r8000",[Char]
"-r96000"]) [Char]
ts) [Char] -> [[Char]] -> [[Char]]
forall a. a -> [a] -> [a]
: (if [Char]
zs [Char] -> [Char] -> Bool
forall a. Eq a => a -> a -> Bool
== [Char]
"2" then [Char]
"-b24" else [Char]
"-b16") [Char] -> [[Char]] -> [[Char]]
forall a. a -> [a] -> [a]
:
((if Int -> [Char] -> [Char]
forall a. Int -> [a] -> [a]
drop Int
3 [Char]
ys [Char] -> [Char] -> Bool
forall a. Eq a => a -> a -> Bool
== [Char]
"f" then ([Char] -> [Char]) -> [[Char]] -> [[Char]]
forall a b. (a -> b) -> [a] -> [b]
map (\[Char]
xs -> if Int -> [Char] -> [Char]
forall a. Int -> [a] -> [a]
drop ([Char] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [Char]
xs Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
4) [Char]
xs [Char] -> [Char] -> Bool
forall a. Eq a => a -> a -> Bool
== [Char]
".wav" then Int -> [Char] -> [Char]
forall a. Int -> [a] -> [a]
take ([Char] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [Char]
xs Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
4) [Char]
xs [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
".flac" else [Char]
xs) else [[Char]] -> [[Char]]
forall a. a -> a
id) ([[Char]] -> [[Char]])
-> ([[Char]] -> [[Char]]) -> [[Char]] -> [[Char]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[Char]] -> [[Char]]
forall a. HasCallStack => [a] -> [a]
tail ([[Char]] -> [[Char]]) -> [[Char]] -> [[Char]]
forall a b. (a -> b) -> a -> b
$ [[Char]]
xss)
soxE2C :: FilePath -> [String] -> IO ()
soxE2C :: [Char] -> [[Char]] -> IO ()
soxE2C [Char]
file [[Char]]
arggs = do
(code,_,_) <- [Char] -> [[Char]] -> [Char] -> IO (ExitCode, [Char], [Char])
readProcessWithExitCode (Maybe [Char] -> [Char]
forall a. HasCallStack => Maybe a -> a
fromJust ([Char] -> Maybe [Char]
showE [Char]
"sox")) ([[Char]
file,[Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"effects" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2vv [Char]
file] [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]]
arggs) [Char]
""
case code of
ExitCode
ExitSuccess -> do { [Char] -> [Char] -> IO ()
renameFile ([Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"effects" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2vv [Char]
file) ([Char] -> [Char]
cfw2wf [Char]
file) ; [Char] -> IO ()
removeFile [Char]
file }
ExitCode
_ -> do
[Char] -> IO ()
removeFile ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"effects" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2vv [Char]
file
[Char] -> IO ()
putStrLn ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
"DobutokO.Sound.IntermediateF.soxE2C \"" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"\" has not been successful. The file has not been changed at all. "
soxE1 :: FilePath -> [String] -> IO ()
soxE1 :: [Char] -> [[Char]] -> IO ()
soxE1 [Char]
file [[Char]]
arggs = do
(code,_,_) <- [Char] -> [[Char]] -> [Char] -> IO (ExitCode, [Char], [Char])
readProcessWithExitCode (Maybe [Char] -> [Char]
forall a. HasCallStack => Maybe a -> a
fromJust ([Char] -> Maybe [Char]
showE [Char]
"sox")) ([[Char]
file,[Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"effects" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2 [Char]
file] [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]]
arggs [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]
"channels",[Char]
"1"]) [Char]
""
case code of
ExitCode
ExitSuccess -> [Char] -> [Char] -> IO ()
renameFile ([Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"effects" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2 [Char]
file) [Char]
file
ExitCode
_ -> do
[Char] -> IO ()
removeFile ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"effects" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2 [Char]
file
[Char] -> IO ()
putStrLn ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
"DobutokO.Sound.IntermediateF.soxE1 \"" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"\" has not been successful. The file has not been changed at all. "
soxE12C :: FilePath -> [String] -> IO ()
soxE12C :: [Char] -> [[Char]] -> IO ()
soxE12C [Char]
file [[Char]]
arggs = do
(code,_,_) <- [Char] -> [[Char]] -> [Char] -> IO (ExitCode, [Char], [Char])
readProcessWithExitCode (Maybe [Char] -> [Char]
forall a. HasCallStack => Maybe a -> a
fromJust ([Char] -> Maybe [Char]
showE [Char]
"sox")) ([[Char]
file,[Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"effects" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2vv [Char]
file] [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]]
arggs [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]
"channels",[Char]
"1"]) [Char]
""
case code of
ExitCode
ExitSuccess -> do { [Char] -> [Char] -> IO ()
renameFile ([Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"effects" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2vv [Char]
file) ([Char] -> [Char]
cfw2wf [Char]
file) ; [Char] -> IO ()
removeFile [Char]
file }
ExitCode
_ -> do
[Char] -> IO ()
removeFile ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"effects" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char] -> [Char]
efw2vv [Char]
file
[Char] -> IO ()
putStrLn ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
"DobutokO.Sound.IntermediateF.soxE12C \"" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
file [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
"\" has not been successful. The file has not been changed at all. "
recE :: FilePath -> [String] -> IO ()
recE :: [Char] -> [[Char]] -> IO ()
recE [Char]
file [[Char]]
arggs | Maybe [Char] -> Bool
forall a. Maybe a -> Bool
isJust ([Char] -> Maybe [Char]
showE [Char]
"sox") Bool -> Bool -> Bool
&& Int -> [Char] -> [Char]
forall a. Int -> [a] -> [a]
take Int
5 [Char]
os [Char] -> [Char] -> Bool
forall a. Eq a => a -> a -> Bool
== [Char]
"mingw" = do
(code, _, _) <- [Char] -> [[Char]] -> [Char] -> IO (ExitCode, [Char], [Char])
readProcessWithExitCode (Maybe [Char] -> [Char]
forall a. HasCallStack => Maybe a -> a
fromJust ([Char] -> Maybe [Char]
showE [Char]
"sox")) ([[Char]
"-t",[Char]
"waveaudio",[Char]
"-d", [Char]
file] [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]]
arggs)[Char]
""
if code /= ExitSuccess
then do
e0 <- doesFileExist file
if e0
then do
removeFile file
catchEnd (NotRecorded file)
else catchEnd (NotRecorded file)
else do
e1 <- doesFileExist file
if e1
then return ()
else catchEnd (NotRecorded file)
| Maybe [Char] -> Bool
forall a. Maybe a -> Bool
isJust ([Char] -> Maybe [Char]
showE [Char]
"rec") = do
(code, _, _) <- [Char] -> [[Char]] -> [Char] -> IO (ExitCode, [Char], [Char])
readProcessWithExitCode (Maybe [Char] -> [Char]
forall a. HasCallStack => Maybe a -> a
fromJust ([Char] -> Maybe [Char]
showE [Char]
"rec")) ([Char]
file[Char] -> [[Char]] -> [[Char]]
forall a. a -> [a] -> [a]
:[[Char]]
arggs) [Char]
""
if code /= ExitSuccess
then do
e0 <- doesFileExist file
if e0
then do
removeFile file
catchEnd (NotRecorded file)
else catchEnd (NotRecorded file)
else do
e1 <- doesFileExist file
if e1
then return ()
else catchEnd (NotRecorded file)
| Bool
otherwise = FinalException -> IO ()
catchEnd FinalException
ExecutableNotProperlyInstalled
rec1E :: FilePath -> [String] -> IO ()
rec1E :: [Char] -> [[Char]] -> IO ()
rec1E [Char]
file [[Char]]
arggs | Maybe [Char] -> Bool
forall a. Maybe a -> Bool
isJust ([Char] -> Maybe [Char]
showE [Char]
"sox") Bool -> Bool -> Bool
&& Int -> [Char] -> [Char]
forall a. Int -> [a] -> [a]
take Int
5 [Char]
os [Char] -> [Char] -> Bool
forall a. Eq a => a -> a -> Bool
== [Char]
"mingw" = do
(code, _, _) <- [Char] -> [[Char]] -> [Char] -> IO (ExitCode, [Char], [Char])
readProcessWithExitCode (Maybe [Char] -> [Char]
forall a. HasCallStack => Maybe a -> a
fromJust ([Char] -> Maybe [Char]
showE [Char]
"sox")) ([[Char]
"-t",[Char]
"waveaudio",[Char]
"-d", [Char]
file] [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]]
arggs [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]
"channels",[Char]
"1"])[Char]
""
if code /= ExitSuccess
then do
e0 <- doesFileExist file
if e0
then do
removeFile file
catchEnd (NotRecorded file)
else catchEnd (NotRecorded file)
else do
e1 <- doesFileExist file
if e1
then return ()
else catchEnd (NotRecorded file)
| Maybe [Char] -> Bool
forall a. Maybe a -> Bool
isJust ([Char] -> Maybe [Char]
showE [Char]
"rec") = do
(code, _, _) <- [Char] -> [[Char]] -> [Char] -> IO (ExitCode, [Char], [Char])
readProcessWithExitCode (Maybe [Char] -> [Char]
forall a. HasCallStack => Maybe a -> a
fromJust ([Char] -> Maybe [Char]
showE [Char]
"rec")) ([[Char]
file] [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]]
arggs [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]
"channels",[Char]
"1"]) [Char]
""
if code /= ExitSuccess
then do
e0 <- doesFileExist file
if e0
then do
removeFile file
catchEnd (NotRecorded file)
else catchEnd (NotRecorded file)
else do
e1 <- doesFileExist file
if e1
then return ()
else catchEnd (NotRecorded file)
| Bool
otherwise = FinalException -> IO ()
catchEnd FinalException
ExecutableNotProperlyInstalled
playE :: FilePath -> [String] -> IO ()
playE :: [Char] -> [[Char]] -> IO ()
playE [Char]
file [[Char]]
arggs | Int -> [Char] -> [Char]
forall a. Int -> [a] -> [a]
take Int
5 [Char]
os [Char] -> [Char] -> Bool
forall a. Eq a => a -> a -> Bool
== [Char]
"mingw" =
if Maybe [Char] -> Bool
forall a. Maybe a -> Bool
isJust ([Char] -> Maybe [Char]
showE [Char]
"sox")
then IO (ExitCode, [Char], [Char]) -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void ([Char] -> [[Char]] -> [Char] -> IO (ExitCode, [Char], [Char])
readProcessWithExitCode (Maybe [Char] -> [Char]
forall a. HasCallStack => Maybe a -> a
fromJust ([Char] -> Maybe [Char]
showE [Char]
"sox")) ([[Char]
file, [Char]
"-t", [Char]
"waveaudio", [Char]
"-d"] [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]]
arggs) [Char]
"")
else FinalException -> IO ()
catchEnd FinalException
ExecutableNotProperlyInstalled
| Bool
otherwise = if Maybe [Char] -> Bool
forall a. Maybe a -> Bool
isJust ([Char] -> Maybe [Char]
showE [Char]
"play")
then IO (ExitCode, [Char], [Char]) -> IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void ([Char] -> [[Char]] -> [Char] -> IO (ExitCode, [Char], [Char])
readProcessWithExitCode (Maybe [Char] -> [Char]
forall a. HasCallStack => Maybe a -> a
fromJust ([Char] -> Maybe [Char]
showE [Char]
"play")) ([[Char]
file] [[Char]] -> [[Char]] -> [[Char]]
forall a. [a] -> [a] -> [a]
++ [[Char]]
arggs) [Char]
"")
else FinalException -> IO ()
catchEnd FinalException
ExecutableNotProperlyInstalled
getSilenceF :: FilePath -> IO ()
getSilenceF :: [Char] -> IO ()
getSilenceF [Char]
file = [Char] -> [[Char]] -> IO ()
soxE [Char]
file [[Char]
"vol",[Char]
"0"]
fadeAllE :: String -> String -> IO ()
fadeAllE :: [Char] -> [Char] -> IO ()
fadeAllE [Char]
ys [Char]
zs = [Char] -> [Char] -> IO (Vector [Char])
listVDirectory3G [Char]
ys [Char]
zs IO (Vector [Char]) -> (Vector [Char] -> IO ()) -> IO ()
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char] -> IO ()) -> Vector [Char] -> IO ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> Vector a -> m ()
V.mapM_ [Char] -> IO ()
fadeEnds
fadeAllEMilN :: Int -> String -> String -> IO ()
fadeAllEMilN :: Int -> [Char] -> [Char] -> IO ()
fadeAllEMilN Int
n [Char]
ys [Char]
zs = [Char] -> [Char] -> IO (Vector [Char])
listVDirectory3G [Char]
ys [Char]
zs IO (Vector [Char]) -> (Vector [Char] -> IO ()) -> IO ()
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= ([Char] -> IO ()) -> Vector [Char] -> IO ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> Vector a -> m ()
V.mapM_ (Int -> [Char] -> IO ()
fadeEndsMilN Int
n)
isOddAsElem :: Eq a => a -> V.Vector [a] -> Bool
isOddAsElem :: forall a. Eq a => a -> Vector [a] -> Bool
isOddAsElem a
x Vector [a]
v
| Vector [a] -> Bool
forall a. Vector a -> Bool
V.null Vector [a]
v = Bool
False
| Bool
otherwise = (Vector Int -> Int
forall a. Vector a -> Int
V.length (Vector Int -> Int)
-> (Vector [a] -> Vector Int) -> Vector [a] -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([a] -> Bool) -> Vector [a] -> Vector Int
forall a. (a -> Bool) -> Vector a -> Vector Int
V.findIndices (a -> [a] -> Bool
forall a. Eq a => a -> [a] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem a
x) (Vector [a] -> Int) -> Vector [a] -> Int
forall a b. (a -> b) -> a -> b
$ Vector [a]
v) Int -> Int -> Int
forall a. Integral a => a -> a -> a
`rem` Int
2 Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
1
maxLinV :: Ord a => V.Vector [a] -> Maybe a
maxLinV :: forall a. Ord a => Vector [a] -> Maybe a
maxLinV Vector [a]
v
| ([a] -> Bool) -> Vector [a] -> Bool
forall a. (a -> Bool) -> Vector a -> Bool
V.all [a] -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null Vector [a]
v Bool -> Bool -> Bool
|| Vector [a] -> Bool
forall a. Vector a -> Bool
V.null Vector [a]
v = Maybe a
forall a. Maybe a
Nothing
| Bool
otherwise = a -> Maybe a
forall a. a -> Maybe a
Just (Vector a -> a
forall a. Ord a => Vector a -> a
V.maximum (Vector a -> a) -> (Vector [a] -> Vector a) -> Vector [a] -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([a] -> a) -> Vector [a] -> Vector a
forall a b. (a -> b) -> Vector a -> Vector b
V.map [a] -> a
forall a. Ord a => [a] -> a
forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a
maximum (Vector [a] -> Vector a)
-> (Vector [a] -> Vector [a]) -> Vector [a] -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([a] -> Bool) -> Vector [a] -> Vector [a]
forall a. (a -> Bool) -> Vector a -> Vector a
V.filter (Bool -> Bool
not (Bool -> Bool) -> ([a] -> Bool) -> [a] -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [a] -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null) (Vector [a] -> a) -> Vector [a] -> a
forall a b. (a -> b) -> a -> b
$ Vector [a]
v)
minLinV :: Ord a => V.Vector [a] -> Maybe a
minLinV :: forall a. Ord a => Vector [a] -> Maybe a
minLinV Vector [a]
v
| ([a] -> Bool) -> Vector [a] -> Bool
forall a. (a -> Bool) -> Vector a -> Bool
V.all [a] -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null Vector [a]
v Bool -> Bool -> Bool
|| Vector [a] -> Bool
forall a. Vector a -> Bool
V.null Vector [a]
v = Maybe a
forall a. Maybe a
Nothing
| Bool
otherwise = a -> Maybe a
forall a. a -> Maybe a
Just (Vector a -> a
forall a. Ord a => Vector a -> a
V.minimum (Vector a -> a) -> (Vector [a] -> Vector a) -> Vector [a] -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([a] -> a) -> Vector [a] -> Vector a
forall a b. (a -> b) -> Vector a -> Vector b
V.map [a] -> a
forall a. Ord a => [a] -> a
forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a
minimum (Vector [a] -> Vector a)
-> (Vector [a] -> Vector [a]) -> Vector [a] -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([a] -> Bool) -> Vector [a] -> Vector [a]
forall a. (a -> Bool) -> Vector a -> Vector a
V.filter (Bool -> Bool
not (Bool -> Bool) -> ([a] -> Bool) -> [a] -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [a] -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null) (Vector [a] -> a) -> Vector [a] -> a
forall a b. (a -> b) -> a -> b
$ Vector [a]
v)
doubleLtoV :: Ord a => [[a]] -> V.Vector a
doubleLtoV :: forall a. Ord a => [[a]] -> Vector a
doubleLtoV = [a] -> Vector a
forall a. [a] -> Vector a
V.fromList ([a] -> Vector a) -> ([[a]] -> [a]) -> [[a]] -> Vector a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [a] -> [a]
forall {a}. Eq a => [a] -> [a]
shortenL ([a] -> [a]) -> ([[a]] -> [a]) -> [[a]] -> [a]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [a] -> [a]
forall a. Ord a => [a] -> [a]
L.sort ([a] -> [a]) -> ([[a]] -> [a]) -> [[a]] -> [a]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [[a]] -> [a]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat
where shortenL :: [a] -> [a]
shortenL z1 :: [a]
z1@(a
z:[a]
_)
| [a] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length ((a -> Bool) -> [a] -> [a]
forall a. (a -> Bool) -> [a] -> [a]
takeWhile (a -> a -> Bool
forall a. Eq a => a -> a -> Bool
== a
z) [a]
z1) Int -> Int -> Int
forall a. Integral a => a -> a -> a
`rem` Int
2 Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
1 = a
za -> [a] -> [a]
forall a. a -> [a] -> [a]
:[a] -> [a]
shortenL ((a -> Bool) -> [a] -> [a]
forall a. (a -> Bool) -> [a] -> [a]
dropWhile (a -> a -> Bool
forall a. Eq a => a -> a -> Bool
== a
z) [a]
z1)
| Bool
otherwise = [a] -> [a]
shortenL ((a -> Bool) -> [a] -> [a]
forall a. (a -> Bool) -> [a] -> [a]
dropWhile (a -> a -> Bool
forall a. Eq a => a -> a -> Bool
== a
z) [a]
z1)
shortenL [a]
_ = []
filterToBnds :: Int -> Int -> [Int] -> [Int]
filterToBnds :: Int -> Int -> [Int] -> [Int]
filterToBnds Int
lbnd Int
hbnd = (Int -> Bool) -> [Int] -> [Int]
forall a. (a -> Bool) -> [a] -> [a]
filter (\Int
x -> Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Int
x Int
lbnd Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
LT Bool -> Bool -> Bool
&& Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Int
x Int
hbnd Ordering -> Ordering -> Bool
forall a. Eq a => a -> a -> Bool
/= Ordering
GT)
soxREw1 :: Int -> Int -> Int -> Int -> Int -> Int -> FilePath -> IO ()
soxREw1 :: Int -> Int -> Int -> Int -> Int -> Int -> [Char] -> IO ()
soxREw1 Int
reverberance Int
damping Int
roomscale Int
stereodepth Int
predelay Int
wetgain [Char]
file = do
durat <- [Char] -> IO Float
durationA [Char]
file
soxE file (concat [["channels", "2", "rate", "44100", "reverb", "-w"], map (\Int
n -> Int -> [Char]
forall a. Show a => a -> [Char]
show (Int -> Int
forall a. Num a => a -> a
abs Int
n Int -> Int -> Int
forall a. Integral a => a -> a -> a
`rem` Int
101)) [reverberance, damping, roomscale, stereodepth],
[show (abs predelay `rem` 501), show (abs wetgain `rem` 7), "trim", "0", showFFloat (Just 5) durat "", "reverse", "fade", "q", "0.002", "-0.0", "earwax"]])
soxRE1 :: Int -> Int -> Int -> Int -> Int -> Int -> FilePath -> IO ()
soxRE1 :: Int -> Int -> Int -> Int -> Int -> Int -> [Char] -> IO ()
soxRE1 Int
reverberance Int
damping Int
roomscale Int
stereodepth Int
predelay Int
wetgain [Char]
file = do
durat <- [Char] -> IO Float
durationA [Char]
file
soxE file (concat [["channels", "2", "rate", "44100", "reverb"], map (\Int
n -> Int -> [Char]
forall a. Show a => a -> [Char]
show (Int -> Int
forall a. Num a => a -> a
abs Int
n Int -> Int -> Int
forall a. Integral a => a -> a -> a
`rem` Int
101)) [reverberance, damping, roomscale, stereodepth],
[show (abs predelay `rem` 501), show (abs wetgain `rem` 7), "trim", "0", showFFloat (Just 5) durat "", "reverse", "fade", "q", "0.002", "-0.0", "earwax"]])
soxREA1 :: Int -> Int -> Int -> Int -> Int -> Int -> Int -> String -> String -> FilePath -> IO ()
soxREA1 :: Int
-> Int
-> Int
-> Int
-> Int
-> Int
-> Int
-> [Char]
-> [Char]
-> [Char]
-> IO ()
soxREA1 Int
reverberance Int
damping Int
roomscale Int
stereodepth Int
predelay Int
wetgain Int
reverb2 [Char]
ys [Char]
zs [Char]
file = do
dir0V <- [Char] -> [Char] -> IO (Vector [Char])
listVDirectory3G [Char]
ys [Char]
zs
V.mapM_ (soxREw1 reverberance damping roomscale stereodepth predelay wetgain) dir0V
(_,_,herr) <- readProcessWithExitCode (fromJust (showE "sox")) (concat [V.toList dir0V, [file, "reverb", show (abs reverb2 `rem` 101)]]) ""
print herr