Copyright | (c) OleksandrZhabenko 2020 2024 |
---|---|
License | MIT |
Maintainer | oleksandr.zhabenko@yahoo.com |
Stability | Experimental |
Safe Haskell | None |
Language | Haskell2010 |
DobutokO.Sound.FunctionF
Description
Helps to create experimental music from a file (or its part) and a Ukrainian text. It can also generate a timbre for the notes. Uses SoX inside.
Working with OvertonesO and function f
maybeFFromStrVec :: Int -> Float -> String -> Maybe (Float, Float -> Vector (Float, Float)) Source #
Gets a function f::Float -> OvertonesO
that can be used further. Has two variants with usage of closestNote
(Int
argument is greater than 0)v
and without it (Int
argument is less than 0). For both cases String
must be in a form list of tuples of pairs of Float
to get somewhat
reasonable result. The function f
can be shown using a special printing function showFFromStrVec
. It is a simplest multiplicative (somewhat
acoustically and musically reasonable) form for the function that can provide such a result that fits into the given data.
let (y,f1) = fromJust (maybeFFromStrVec 1 3583.9783 "[(25.368,0.2486356),(37.259,0.6464867),(486.153,0.374618646),(789.563,0.463486461)]") in (y,f1 3583.9783) (3520.0,[(25.829079975681818,0.2486356),(37.936206670369316,0.6464867),(494.9891484317899,0.374618646),(803.9138234326421,0.463486461)]) let (y,f1) = fromJust (maybeFFromStrVec (-1) 3583.9783 "[(25.368,0.2486356),(37.259,0.6464867),(486.153,0.374618646),(789.563,0.463486461)]") in (y,f1 3583.9783) (3583.9783,[(25.368,0.2486356),(37.259,0.6464867),(486.153,0.374618646),(789.563,0.463486461)])
fVecCoefs :: Int -> Float -> String -> Vector Float Source #
Gets multiplication coefficients for f::Float -> Vector (Float,Float)
from the maybeFFromStrVec
with the same arguments.
showFFromStrVec :: Int -> Float -> String -> String Source #
Experimental show
for f::Float -> Vector (Float,Float)
that is used only for visualisation. It is correct only with maybeFFromStrVec
or
equivalent function. Because the shape of the f
is known the function can be defined.
showFFromStrVec (-1) 440 "[(25.358,0.3598),(489.35,0.4588962),(795.35,0.6853)]" "(440.00,(\t -> <(0.05763181818181818 * t, 0.3598),(1.112159090909091 * t, 0.4588962),(1.8076136363636364 * t, 0.6853)>))"