From aa9473cbf49a148d764d82c73f998ae0de6c332a Mon Sep 17 00:00:00 2001 From: Maxim Lihachev Date: Thu, 29 Sep 2016 11:26:11 +0500 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D1=8E?= =?UTF-8?q?=D1=89=D0=B0=D1=8F=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8F=20aud?= =?UTF-8?q?ioread?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wave.hs | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/wave.hs b/wave.hs index 19beb3f..cd60ce3 100644 --- a/wave.hs +++ b/wave.hs @@ -1,15 +1,31 @@ -- Создан: Ср 28 сен 2016 10:18:53 --- Изменен: Чт 29 сен 2016 09:53:59 +-- Изменен: Чт 29 сен 2016 11:18:07 -import Data.List +import System.Environment import Data.WAVE +-- import Data.List -n = 48000 +--Выбор канала из пары +chL :: [a] -> a +chL pair = pair!!0 -chL (l:r) = l -chR (l:r) = r +chR :: [a] -> a +chR pair = pair!!1 +audioread :: String -> String -> [Char] -> IO () +audioread samples file ch = do + w <- getWAVEFile file + mapM_ print (map (sampleToDouble . channel) (take (read samples::Int) $ waveSamples w)) where + channel (xs) + | ch == ['R'] = chR xs + | ch == ['L'] = chL xs + | otherwise = chL xs + +main :: IO () main = do - w <- getWAVEFile "000.wav" - mapM_ print (map chL (take n $ waveSamples w)) + cmd <- getArgs + case cmd of + [samples, file, ch] -> audioread samples file ch + [samples, file] -> audioread samples file ['L'] + _ -> putStrLn "Usage: audioread [samples] [file.wav] [L/R]"