-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | A program and a library to create experimental music from a mono audio and a Ukrainian text
--
-- It can also create a timbre for the notes
@package dobutokO2
@version 0.1.0.0
-- | Maintainer : olexandr543@yahoo.com
--
-- A program and a library to create experimental music from the mono
-- audio and a Ukrainian text.
module DobutokO.Sound
-- | Function that actually makes processing in the dobutokO2
-- executable.
dobutokO2 :: IO ()
-- | Function records and process the sound data needed to generate the
-- "end.wav" file in the dobutokO2 function.
recAndProcess :: String -> Int -> IO String
-- | For the given frequency of the note it generates a Vector of
-- the tuples, each one of which contains the harmonics' frequency and
-- amplitude.
oberTones :: Double -> Vector (Double, Double)
-- | For the given frequency it generates a musical sound with a timbre.
oberSoXSynth :: Double -> IO ()
-- | Function to create a melody for the given arguments. String is
-- used to provide a rhythm.
oberSoXSynthN :: Int -> String -> Vector Double -> IO ()
-- | Similar to oberSoXSynthN, but uses a sound file to obtain the
-- information analogous to Vector in the latter one.
oberSoXSynthNGen :: FilePath -> String -> IO ()
-- | For the given frequency of the note it generates a Vector of
-- the tuples, each one of which contains the harmonics' frequency and
-- amplitude. For every given String structure of the uniqueness
-- (see the documentation for mmsyn7s package and its MMSyn7.Syllable
-- module) it produces the unique timbre.
uniqOberTonesV :: Double -> String -> Vector (Double, Double)
-- | For the given frequency and a Ukrainian text it generates a musical
-- sound with the timbre obtained from the Ukrainian text (see the
-- documentation for mmsyn7s package). The timbre for the
-- another given text usually is another one, but can be the same. The
-- last one is only if the uniqueness structure and length are the same
-- for both String. Otherwise, they differs. This gives an
-- opportunity to practically and quickly synthesize differently sounding
-- notes.
uniqOberSoXSynth :: Double -> String -> IO ()
-- | Function to create a melody for the given arguments. The first
-- String is used to provide a rhythm. The second one -- to
-- provide a timbre. The timbre for the another given text usually is
-- another one, but can be the same. This gives an opportunity to
-- practically and quickly synthesize differently sounding notes.
uniqOberSoXSynthN :: Int -> String -> String -> Vector Double -> IO ()
-- | Similar to uniqOberSoXSynthN, but uses a sound file to obtain
-- the information analogous to Vector in the latter one.
uniqOberSoXSynthNGen :: FilePath -> String -> String -> IO ()
-- | Vector of musical notes in Hz.
notes :: Vector Double
-- | Function returns either a nearest two musical notes if note is higher
-- than C0 and lower than B8 or a nearest note duplicated in a tuple.
neighbourNotes :: Double -> Vector Double -> (Double, Double)
-- | Returns the closest note to the given frequency in Hz.
closestNote :: Double -> Double
-- | Returns a pure quint lower than the given note.
pureQuintNote :: Double -> Double
-- | Function is used to generate a rhythm of the resulting file from the
-- Ukrainian text and number of sounds in the syllables or words without
-- vowels.
syllableStr :: Int -> String -> [Int]
-- | Additional function to prepend zeroes to the given String. The
-- number of them are just that one to fulfill the length to the given
-- Int parameter.
prependZeroes :: Int -> String -> String
nOfZeroesLog :: Int -> Maybe Int
numVZeroesPre :: Vector a -> Int
-- | Maintainer : olexandr543@yahoo.com
--
-- A program and a library to create experimental music from the mono
-- audio and a Ukrainian text.
module Main
main :: IO ()