diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -17,7 +17,7 @@
 -- Inspired by: https://mail.haskell.org/pipermail/beginners/2011-October/008649.html
 -}
 
--- | The function creates a raw PCM sound file with bitrate 22050 Hz 1 mono channel 16-bit signed-integer encoding
+-- | The function creates a raw .ul sound file with bitrate 22050 Hz 1 mono channel
 -- and tries to automatically convert it to the .wav, .ogg, or .flac file with the same parameters specified by the first command line argument
 -- (for more details see: 'genControl' function) using the system binary SoX (this is done for one circle of running, afterwards it is repeated
 -- with the same command line arguments. To stop execution, please, interrupt the program e. g. with Ctrl + C on many Unix platforms).
@@ -26,10 +26,18 @@
 --
 -- If SoX binaries are not installed properly, the program makes ending informational message for the user.
 --
--- The command line argument is described in more details in the documentation for the 'Melodics.Ukrainian.nSymbols' function.
+-- The first command line argument is the 'UkrainianLControl.Arr.genControl' specification.
 --
+-- The second command line argument (if specified) must be in the form \"+O\" and then if specified denotes that
+-- the program cycle runs only once and exits after creating the single converted sound file. If specified, then
+-- the program reads not the line of the input, but the contents and, therefore, it can use multiline contents (e. g., poetry).
+--
+-- The third command line argument is the filepath to the file with the Ukrainian text that instead of the user
+-- input provided otherwise into the prompting line on the terminal is read to be converted.
+--
 -- The best comression ratio is with the .ogg files, but they lose some quality so be careful if you need it.
 main :: IO ()
 main = do
-  zs <- fmap (concat . take 1) getArgs
-  circle zs
+  [zs,ts,file] <- fmap (take 3) getArgs
+  let onepass = if ts == "+O" then True else False
+  circle zs onepass file
diff --git a/Melodics/Executable/Arr.hs b/Melodics/Executable/Arr.hs
--- a/Melodics/Executable/Arr.hs
+++ b/Melodics/Executable/Arr.hs
@@ -15,6 +15,7 @@
   , workWithInput
   , rawToSoundFile
   , printInfoF
+  , printEnding
   , recFileName
 )
 where
@@ -26,26 +27,32 @@
 import System.Directory (removeFile)
 import Control.Exception (onException)
 import EndOfExe (showE)
-import Melodics.Ukrainian.Arr (appendS16LEFile, convertToProperUkrainian)
+import Melodics.Ukrainian.Arr (appendULFile, convertToProperUkrainian)
 import UkrainianLControl.Arr
 
 -- | Is used to repeat the cycle of creation of the sound files in the current directory for the @mmsyn6ukr@  executable.
-circle :: String -> IO ()
-circle zs = onException (mapM_ (workWithInput zs) [1..]) (do
-    putStr "Notice, there was (may be) CmdLineArgument exception. To avoid it, please, specify the command line argument (if needed) in the form \"ABC\""
-    putStr " where A is either a letter \'f\', \'o\', \'w\' or a digit and B and C are both digits! The exception (may be) arose from "
-    putStrLn $ "the command line arguments " ++ show zs ++ ". Please, check also whether the SoX was installed with the support for needed codec.")
+circle :: String -> Bool -> FilePath -> IO ()
+circle zs onepass file
+ | onepass = onException (workWithInput zs True file 1) (printEnding zs)
+ | otherwise = onException (mapM_ (workWithInput zs False file) [1..]) (printEnding zs)
 
+printEnding :: String -> IO ()
+printEnding xs = do
+  putStr "Notice, there was (may be) CmdLineArgument exception. To avoid it, please, specify the command line argument (if needed) in the form \"ABC\""
+  putStr " where A is either a letter \'f\', \'o\', \'w\' or a digit and B and C are both digits! The exception (may be) arose from "
+  putStrLn $ "the command line arguments " ++ show xs ++ ". Please, check also whether the SoX was installed with the support for needed codec"
+{-# INLINE printEnding #-}
+
 -- | Interactively creates sound files in the current directory for the Ukrainian text input. Is used internally in the 'circle'
-workWithInput :: String -> Int -> IO ()
-workWithInput zs _ = do
-  [nameSF,ys] <- nameAndControl zs [1,2]
-  withBinaryFile (nameSF ++ ".ul") AppendMode (appendS16LEFile (convertToProperUkrainian ys))
-  putStrLn "The .ul file was created by the program. If there is SoX installed then it will run further. "
-  let ts = showE "sox"
-  if isJust ts
-    then rawToSoundFile zs nameSF (fromJust ts)
-    else printInfoF
+workWithInput :: String -> Bool -> FilePath -> Int -> IO ()
+workWithInput zs onepass file _ = do
+ [nameSF,ys] <- if null file then nameAndControl zs onepass file [1,2] else nameAndControl zs onepass file [1,3]
+ withBinaryFile (nameSF ++ ".ul") AppendMode (appendULFile (convertToProperUkrainian (if onepass then unwords . words $ ys else ys)))
+ putStrLn "The .ul file was created by the program. If there is SoX installed then it will run further. "
+ let ts = showE "sox"
+ if isJust ts
+   then rawToSoundFile zs nameSF (fromJust ts)
+   else printInfoF
 
 -- | Is used to retriev the user-defined file name for the record.
 recFileName :: IO String
@@ -55,19 +62,20 @@
   let nameSF = filter (\x -> not (isSpace x) && not (isControl x) && x /= '}') nameOfSoundFile
   return nameSF
 
-getCtrl :: String -> IO String
-getCtrl zs = do
-  xs <- getLine
+getCtrl :: String -> Bool -> IO String
+getCtrl zs onepass = do
+  xs <- if onepass then getLine else getContents
   let ys = take (nSymbols . fst . genControl $ zs) xs
   return ys
 
-recFNAndCtrl :: String -> Int -> IO String
-recFNAndCtrl zs n
-  | odd n = recFileName
-  | otherwise = getCtrl zs
+recFNAndCtrl :: String -> Bool -> FilePath -> Int -> IO String
+recFNAndCtrl zs onepass file n
+  | n == 1 = recFileName
+  | n == 3 = readFile file
+  | otherwise = getCtrl zs onepass
 
-nameAndControl :: String -> [Int] -> IO [String]
-nameAndControl zs = mapM (recFNAndCtrl zs)
+nameAndControl :: String -> Bool -> FilePath -> [Int] -> IO [String]
+nameAndControl zs onepass file = mapM (recFNAndCtrl zs onepass file)
 
 -- | Converts RAW sound to the sound file of the needed format in the current directory accordingly to the 'genControl' for the first 'String' argument.
 -- Is used internally in the 'workWithInput'.
diff --git a/Melodics/Ukrainian/Arr.hs b/Melodics/Ukrainian/Arr.hs
--- a/Melodics/Ukrainian/Arr.hs
+++ b/Melodics/Ukrainian/Arr.hs
@@ -12,13 +12,11 @@
 --
 
 module Melodics.Ukrainian.Arr (
-  appendS16LEFile
+  appendULFile
   , convertToProperUkrainian
   , isUkrainian
 ) where
 
---import qualified Data.Vector.Unboxed as V
---import qualified Data.Vector as VB
 import qualified Data.ByteString.Char8 as B
 import System.IO
 import CaseBi.Arr
@@ -32,8 +30,8 @@
 -}
 
 -- | The function that actually produces a .raw file. The mapping table is given in the @Map.txt@ file.
-appendS16LEFile ::  [String] -> Handle -> IO ()
-appendS16LEFile xss hdl | not (null xss) =
+appendULFile ::  [String] -> Handle -> IO ()
+appendULFile xss hdl | not (null xss) =
   do
     dataFileList <- mapM getDataFileName
       ["-.ul", "0.ul", "1.ul", "A.ul", "B.ul", "C.ul", "D.ul", "E.ul", "F.ul", "G.ul", "H.ul",
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -18,3 +18,8 @@
 the Ukrainian writing system. Electronic resource](https://arxiv.org/ftp/arxiv/papers/0802/0802.4198.pdf)
 
 Uses the ukrainian-phonetics-basic-array package.
+
+Since the 0.2.0.0 version supports the reading from the file and multiline input.
+For more information on that, please, refer to the documentation for the 
+Main module.
+
diff --git a/UkrainianLControl/Arr.hs b/UkrainianLControl/Arr.hs
--- a/UkrainianLControl/Arr.hs
+++ b/UkrainianLControl/Arr.hs
@@ -16,7 +16,6 @@
 ) where
 
 import Data.Char (isDigit)
---import qualified Data.Vector as V (generate)
 import CaseBi.Arr
 
 -- | Function that converts the first digit in the command line argument (starting the argument or being the second one after the letter character) given,
diff --git a/mmsyn6ukr-array.cabal b/mmsyn6ukr-array.cabal
--- a/mmsyn6ukr-array.cabal
+++ b/mmsyn6ukr-array.cabal
@@ -2,9 +2,9 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                mmsyn6ukr-array
-version:             0.1.1.0
+version:             0.2.0.0
 synopsis:            A musical instrument synthesizer or a tool for Ukrainian language listening
-description:         A program can be used as a musical instrument synthesizer or for Ukrainian speech synthesis especially for poets and writers. Uses arrays and .ul RAW sound file formats and SoX inside.
+description:         A program can be used as a musical instrument synthesizer or for Ukrainian speech synthesis especially for poets and writers. Uses arrays and .ul RAW sound file formats and SoX inside. Since the 0.2.0.0 version it supports reading from the file and multiline input.
 homepage:            https://hackage.haskell.org/package/mmsyn6ukr
 license:             MIT
 license-file:        LICENSE
@@ -18,8 +18,8 @@
 cabal-version:       >=1.10
 
 library
-  exposed-modules:     Paths_mmsyn6ukr_array, Melodics.Ukrainian.Arr, Melodics.Executable.Arr, UkrainianLControl.Arr, MMSyn6Ukr.Show7s.Arr
-  other-modules:       Main
+  exposed-modules:     Main, Paths_mmsyn6ukr_array, Melodics.Ukrainian.Arr, Melodics.Executable.Arr, UkrainianLControl.Arr, MMSyn6Ukr.Show7s.Arr
+  other-modules:       
   other-extensions:    BangPatterns
   build-depends:       base >=4.8 && <4.15, process >=1.4 && <1.9, mmsyn3 >=0.1.5.0 && <1, directory >= 1 && < 1.5, bytestring >=0.10 && <0.13, mmsyn2-array >=0.1.1 && <1, mmsyn5 >=0.5 && <1, ukrainian-phonetics-basic-array >=0.1.1 && <1
   -- hs-source-dirs:
