algorithmic-composition-basic-0.1.1.0: Helps to create experimental music from a file (or its part) and a Ukrainian text.
Copyright (c) OleksandrZhabenko 2020-2021 MIT olexandr543@yahoo.com Experimental None Haskell2010

Composition.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.

Synopsis

# Working with OvertonesO and function f

maybeFFromStrVec :: Int -> Float -> String -> Maybe (Float, Float -> [(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 -> [Float] Source #

Gets multiplication coefficients for f::Float -> [(Float,Float)] from the maybeFFromStrVec with the same arguments.

Experimental show for f::Float -> [(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)]))"