Copyright | (c) OleksandrZhabenko 2020 |
---|---|
License | MIT |
Stability | Experimental |
Safe Haskell | None |
Language | Haskell2010 |
Maintainer : olexandr543@yahoo.com
A program and a library to create experimental music from a mono audio and a Ukrainian text.
Synopsis
- oberSoXSynth2FDN :: (Double -> Vector (Double, Double)) -> Double -> Double -> String -> IO ()
- oberSoXSynth2FDN_B :: (Double -> Vector (Double, Double)) -> Double -> Double -> Double -> String -> IO ()
- oberSoXSynth2FDN_B2 :: (Double -> Vector (Double, Double)) -> Double -> Double -> Double -> String -> IO ()
Use additional function as a parameter
oberSoXSynth2FDN :: (Double -> Vector (Double, Double)) -> Double -> Double -> String -> IO () Source #
Similar to oberSoXSynth2DN
but instead of oberTones
function, it uses volatile function f::Double -> Vector (Double, Double)
with
somewhat sophisticated mechanism to normalize the resulting Vector
elements (Double, Double)
. The last one is experimental feature, so
it is your responsibility to provide a function so that it does not lead to clipping. In such a case, the result of application of the
convertToProperUkrainian
to the String
parameter must not be empty
.
Be aware that the result can be rather unpredictable (the program can even obtain segmentation fault) for not very suitable function. But for a lot of functions this works well.
oberSoXSynth2FDN_B :: (Double -> Vector (Double, Double)) -> Double -> Double -> Double -> String -> IO () Source #
Similar to oberSoXSynth2FDN
but you specify additional third Double
argument from range [0.1..10.0] that is a difference between neighbour frequencies
in Hz that is used to filter the frequencies that can cause beating because of close frequencies. If it is not in the range, then the function tries to
reposition its value to the range.
Be aware that the result can be rather unpredictable (the program can even obtain segmentation fault) for not very suitable function. But for a lot of functions this works well.
oberSoXSynth2FDN_B2 :: (Double -> Vector (Double, Double)) -> Double -> Double -> Double -> String -> IO () Source #
Similar to oberSoXSynth2FDN_B
but the function does not try to make real obertones, so the class of functions that it can use may be broader.
Be aware that the result can be rather unpredictable (the program can even obtain segmentation fault) for not very suitable function. But for a lot of functions this works well.