Copyright | (c) OleksandrZhabenko 2020 |
---|---|
License | MIT |
Stability | Experimental |
Safe Haskell | None |
Language | Haskell2010 |
Maintainer : olexandr543@yahoo.com
A program and a library to modify the amplitude of the sound representations for the Ukrainian language created by mmsyn7ukr package or somehow otherwise. Besides it can be used to adjust volume for the sequential "result*.wav" files.
Synopsis
- changeVolume :: Int -> FilePath -> IO ()
- specifyVol :: FilePath -> IO ()
- changeVol2 :: FilePath -> String -> Double -> IO ()
- changeVol3 :: FilePath -> (String, String) -> IO ()
- changeVol4 :: FilePath -> (String, String) -> IO ()
- adjustVolRes :: [String] -> IO ()
- soxE :: FilePath -> [String] -> IO ()
- fadeEnds :: FilePath -> IO ()
- fadeEndsMil2 :: FilePath -> IO ()
- fadeEndsMilN :: Int -> FilePath -> IO ()
- fadeEndsTMN :: Char -> Double -> Double -> FilePath -> IO ()
- fadeEndsTMB :: Char -> Double -> FilePath -> IO ()
- fadeWav002 :: IO ()
- fadeWavN :: Int -> IO ()
- wavToFlac :: String -> FilePath -> IO ()
- flacToWav :: String -> FilePath -> IO ()
- w2f :: FilePath -> FilePath
- f2w :: FilePath -> FilePath
- wOrf :: FilePath -> String
- cfw2wf :: FilePath -> FilePath
- efw2 :: FilePath -> String
- efw2vv :: FilePath -> String
Documentation
changeVolume :: Int -> FilePath -> IO () Source #
Function changeVolume
is used to change the amplitude of the sound.
For the proper proceeding you specify a String
, which consists of 4
digits (and it may be preceded by a symbol "-"). If the String
begins with the "-", then a sound amplitude decreases, otherwise
the amplitude increases. The level of increase / decrease is
determined by the magnitude of the absolute value of integer numbers.
The greater is the number -- the greater is the amplitude change.
The count begins with "0000" and ends with "9999" (the sign is not
taken into consideration). If there is less than 4 digits in a String
,
then the String
is equivalent to that one with the appropriate number
of zeroes preceding to fulfill to the 4 needed digits (for example,
"657" is equivalent to "0657", "-2" is equivalent to "-0002" etc.)
In such a case, for the String
s without the
initial sign "-" (the sound increases) an interval between the
maximum by modulus value of the amlitude (which is represented by the
parts of 1) and 1.0 is divided into 10 equal parts (starting a count
from 0) and then that one of them is selected, which has a number
determined by the first digit in the String
writing. Then (if specified
further) the interval between this amplitude value and a value,
which corresponds to the selection on the previous step the next
first digit in the writing (for example, after "4" -- "5",
after "7" -- "8" etc.), greater by 1 than the actually selected one,
is also divided again into 10 equal parts and that one is selected,
which corresponds to the number determined by the second digit in the
String writing (again beginning with "0" and ending with "9") and so on
until the 4th level. The greater exactness is not needed because our
hearing ability hardly distinguish such a subtle sound changes. If
the String
has as a first element the '-' Char
(the sound decreases),
then everything is analogously the same, but an interval between the
maximum by modulus amplitude value and 0.0 is divided into 10 equal parts
and so on. Int
parameter is used to control the informational output
(to get it, specify 1).
specifyVol :: FilePath -> IO () Source #
Function specifyVol
is used internally in the changeVolume
to get the String
and to apply the needed change.
changeVol2 :: FilePath -> String -> Double -> IO () Source #
Function changeVol2
is used internally in the specifyVol
in case of decreasing of the sound.
changeVol3 :: FilePath -> (String, String) -> IO () Source #
Function changeVol3
is used internally in the specifyVol
in case of working with the maximum amplitude.
changeVol4 :: FilePath -> (String, String) -> IO () Source #
Function changeVol4
is used internally in the specifyVol
in case of working with the minimum amplitude.
adjustVolRes :: [String] -> IO () Source #
Works with the "result*.wav" files in the current directory: it adjusts volume levels for the sequence of them starting from the first argument in a list and ending with the second one (if specified). If there is no first -- all such files are adjusted; if there is no second one -- the files are adjusted to the last one. Count starts at 0.
soxE :: FilePath -> [String] -> IO () Source #
Takes a filename to be applied a SoX chain of effects (or just one) as list of String
(the second argument). Produces the temporary
new file with the name ((name-of-the-file) ++ ("effects.wav" OR "effects.flac") -- the type is preserved), which then is removed.
The syntaxis is that every separate literal for SoX must be a new element in the list. Please, for more information, refer to SoX documentation.
Please, check by yourself whether you have enough permissions to read and write to the FilePath
-specified
file and to the containing it directory. The function is not intended to be used in otherwise cases.
fadeEnds :: FilePath -> IO () Source #
Applies "fade q" effect to both ends of the supported by SoX sound file FilePath
so that concatenating them consequently after such application
leads to no clipping. Otherwise, the clipping exists if not prevented by may be some other means. For more information, please, refer to the
SoX documentation.
fadeEndsMil2 :: FilePath -> IO () Source #
Applies "fade q" effect to both ends of the supported by SoX sound file FilePath
so that concatenating them consequently after such application
leads to no clipping. Otherwise, the clipping exists if not prevented by may be some other means. The duration of the changes are in 5 times
smaller than for fadeEnds
function and is equal to 0.002 sec. For more information, please, refer to the SoX documentation.
fadeEndsMilN :: Int -> FilePath -> IO () Source #
Applies "fade q" effect to both ends of the supported by SoX sound file FilePath
so that concatenating them consequently after such application
leads to no clipping. Otherwise, the clipping exists if not prevented by may be some other means. The duration of the changes are usually
smaller than for fadeEnds
function and is equal to 0.001 * n sec (where n is in range [1..10]).
For more information, please, refer to the SoX documentation.
fadeEndsTMN :: Char -> Double -> Double -> FilePath -> IO () Source #
Applies "fade" effect (the type is specified by the Char
argument, for more information, please, refer to the SoX documentation) to the both ends
of the sound with header (supported by SoX). The Double
arguments specify the percentages of the length of the sound that is faded-in and faded-out
respectively. Otherwise, the function returns an error.
fadeEndsTMB :: Char -> Double -> FilePath -> IO () Source #
Variant of the fadeEndsTMN
with the both equal percentages specified by the Double
argument. It must be in the range (0..50]. Otherwise, the function
returns error.
fadeWav002 :: IO () Source #
Using a new function fadeEndsMil2
fades the ends of the .wav files in the current directory.
fadeWavN :: Int -> IO () Source #
Using a new function fadeEndsMilN
fades the ends of the .wav files in the current directory. The first argument is the Int
argument
for the fadeEndsMilN
and is a number of milliseconds to be used for fading (usually from 1 to 10).
wavToFlac :: String -> FilePath -> IO () Source #
Converts WAV file to FLAC file using SoX (please, check before whether your installation supports FLAC files) using possible rate and bit depth
conversion accordingly to soxBasicParams
format. If the conversion is successful (ExitCode
is ExitSuccess
) then removes the primary file.
flacToWav :: String -> FilePath -> IO () Source #
Converts FLAC file to WAV file using SoX (please, check before whether your installation supports FLAC files) using possible rate and bit depth
conversion accordingly to soxBasicParams
format. If the conversion is successful (ExitCode
is ExitSuccess
) then removes the primary file.