-- 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 ()