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
LicenseMIT
Maintainerolexandr543@yahoo.com
StabilityExperimental
Safe HaskellNone
LanguageHaskell2010
ExtensionsBangPatterns

Composition.Sound.Uniq

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

Library and executable functions

For the unique for the String structure timbre

uniqOvertonesV :: Float -> String -> OvertonesO Source #

For the given frequency of the note it generates a list 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 ukrainian-phonetics-basic-array and uniqueness-periods packages) it produces the unique timbre.

uniqOverSoXSynth :: Float -> String -> IO () Source #

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 ukrainian-phonetics-basic-array package). The timbre for another given text usually differs, 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 intervals. The main component of the sound includes the lower pure quint, which can be in the same octave or in the one with the number lower by one. Please, check before executing whether there is no "x.wav", "test*", "result*" files in the current directory, because they can be overwritten.

uniqOverSoXSynthN :: Int -> Float -> Float -> String -> String -> [Float] -> IO () Source #

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 another given text usually differs, but can be the same. This gives an opportunity to practically and quickly synthesize differently sounding intervals. The first Float argument from the range [0.01..1.0] is used as a maximum amplitude for Overtones. If it is set to 1.0 the overTones amplitudes are just maximum ones, otherwise they are multiplied by the parameter and this results in their becoming more silent ones. The main component of the sound is in the given octave with a number given by Int parameter. Besides, another main component of the sound includes the lower pure quint, which can be in the same octave or in the one with the number lower by one. The second Float argument is a basic sound duration. The default one is 0.5 (second). Please, check before executing whether there is no "x.wav", "test*", "result*" files in the current directory, because they can be overwritten.

For the unique for the String structure timbre with different signs for harmonics coefficients

uniqOvertonesV2 :: Float -> String -> String -> OvertonesO Source #

For the given frequency of the note it generates a list of the tuples, each one of which contains the harmonics' frequency and amplitude. For every given first String argument structure of the uniqueness (see the documentation for ukrainian-phonetics-basic-array and uniqueness-periods packages) it produces the unique timbre. The second String is used to produce the signs for harmonics coefficients.

uniqOverSoXSynth2 :: Float -> String -> String -> IO () Source #

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 ukrainian-phonetics-basic-array package). The timbre for another given text usually differs, 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 intervals. The main component of the sound includes the lower pure quint, which can be in the same octave or in the one with the number lower by one. Please, check before executing whether there is no "x.wav", "test*", "result*" files in the current directory, because they can be overwritten. The second String argument is used to define signs for the harmonics coefficients for Overtones.

uniqOverSoXSynthN3 :: Int -> Float -> Float -> String -> String -> String -> [Float] -> IO () Source #

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 another given text usually differs, but can be the same. This gives an opportunity to practically and quickly synthesize differently sounding intervals. The first Float argument from the range [0.01..1.0] is used as a maximum amplitude for Overtones. If it is set to 1.0 the overTones amplitudes are just maximum ones, otherwise they are multiplied by the parameter and this results in their becoming more silent ones. The main component of the sound is in the given octave with a number given by Int parameter. Besides, another main component of the sound includes the lower pure quint, which can be in the same octave or in the one with the number lower by one. The second Float argument is a basic sound duration. The default one is 0.5 (second). Please, check before executing whether there is no "x.wav", "test*", "result*" files in the current directory, because they can be overwritten. The third String argument is used to define signs of the harmonics coefficients in the generated sounds.

uniqOverSoXSynthN4 :: Int -> Float -> Float -> Float -> String -> String -> String -> String -> [Float] -> IO () Source #

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 another given text usually differs, but can be the same. This gives an opportunity to practically and quickly synthesize differently sounding intervals. The first Float argument from the range [0.01..1.0] is used as a maximum amplitude for Overtones. If it is set to 1.0 the overTones amplitudes are just maximum ones, otherwise they are multiplied by the parameter and this results in their becoming more silent ones. The main component of the sound is in the given octave with a number given by Int parameter. Besides, another main component of the sound includes the lower pure quint, which can be in the same octave or in the one with the number lower by one. The second Float argument is a basic sound duration. The default one is 0.5 (second). Please, check before executing whether there is no "x.wav", "test*", "result*" files in the current directory, because they can be overwritten. The third String argument is used to define signs of the harmonics coefficients in the generated sounds. The fourth String argument is used to define the intervals for the notes if any. The third Float parameter basically is used to define in how many times the volume for the second lower note is less than the volume of the main note. If it is rather great, it can signal that the volume for the second note overTones are greater than for the main note obetones. The last one is experimental feature.

Use a file for information

uniqOverSoXSynthNGen :: FilePath -> Int -> Float -> Float -> String -> String -> IO () Source #

Similar to uniqOverSoXSynthN, but uses a sound file to obtain the information analogous to Array Int in the latter one. Besides, the function lifts the frequencies to the octave with the given by Int parameter number (better to use from the range [1..8]). The first Float argument from the range [0.01..1.0] is used as a maximum amplitude for Overtones. If it is set to 1.0 the overTones amplitudes are just the maximum ones, otherwise they are multiplied by the parameter and this results in their becoming more silent ones. The second Float argument is a basic sound duration. The default one is 0.5 (second). Please, check before executing whether there is no "x.wav", "test*", "result*" and "end.wav" files in the current directory, because they can be overwritten.

For better usage the FilePath should be a filepath for the .wav file.

uniqOverSoXSynthNGen3 :: FilePath -> Int -> Float -> Float -> String -> String -> String -> IO () Source #

Similar to uniqOverSoXSynthN, but uses a sound file to obtain the information analogous to Array Int in the latter one. Besides, the function lifts the frequencies to the octave with the given by Int parameter number (better to use from the range [1..8]). The first Float argument from the range [0.01..1.0] is used as a maximum amplitude for Overtones. If it is set to 1.0 the overTones amplitudes are just the maximum ones, otherwise they are multiplied by the parameter and this results in their becoming more silent ones. The second Float argument is a basic sound duration. The default one is 0.5 (second). Please, check before executing whether there is no "x.wav", "test*", "result*" and "end.wav" files in the current directory, because they can be overwritten.

For better usage the FilePath should be a filepath for the .wav file. The third String argument is used to define signs of the harmonics coefficients in the generated sounds.

uniqOverSoXSynthNGen4 :: FilePath -> Int -> Float -> Float -> Float -> String -> String -> String -> String -> IO () Source #

Similar to uniqOverSoXSynthN, but uses a sound file to obtain the information analogous to Array Int in the latter one. Besides, the function lifts the frequencies to the octave with the given by Int parameter number (better to use from the range [1..8]). The first Float argument from the range [0.01..1.0] is used as a maximum amplitude for Overtones. If it is set to 1.0 the overTones amplitudes are just the maximum ones, otherwise they are multiplied by the parameter and this results in their becoming more silent ones. The second Float argument is a basic sound duration. The default one is 0.5 (second). Please, check before executing whether there is no "x.wav", "test*", "result*" and "end.wav" files in the current directory, because they can be overwritten.

For better usage the FilePath should be a filepath for the .wav file. The third String argument is used to define signs of the harmonics coefficients in the generated sounds. The fourth String argument is used to define the intervals for the notes if any. The third Float parameter basically is used to define in how many times the volume for the second lower note is less than the volume of the main note. If it is rather great, it can signal that the volume for the second note overTones are greater than for the main note obetones. The last one is an experimental feature.

Extended generation using enky functionality

With usage of additional information in the Ukrainian text

uniqOverSoXSynthNGenE :: FilePath -> Int -> Int -> Float -> Float -> String -> String -> IO () Source #

Similar to uniqOverSoXSynthNGen, but uses additional second Int parameter. It defines, to which n-th elements set (see nkyT) belongs the obtained higher notes in the intervals. If that parameter equals to 12, then the function is practically equivalent to uniqOverSoXSynthNGen. To obtain its modifications, please, use 2, 3, 4, 6, or 9. Note that Int arguments are used by liftInEnku in that order so it returns a Maybe number (actually frequency) for the n-th elements set of notes (see nkyT). The second Int parameter defines that n.

uniqOverSoXSynthNGen3E :: FilePath -> Int -> Int -> Float -> Float -> String -> String -> String -> IO () Source #

Similar to uniqOverSoXSynthNGen3, but uses additional second Int parameter. It defines, to which n-th elements set (see nkyT) belongs the obtained higher notes in the intervals. If that parameter equals to 12, then the function is practically equivalent to uniqOverSoXSynthNGen3. To obtain its modifications, please, use 2, 3, 4, 6, or 9. Note that Int arguments are used by liftInEnku in that order so it returns a Maybe number (actually frequency) for the n-th elements set of notes (see nkyT). The second Int parameter defines that n.

uniqOverSoXSynthNGen4E :: FilePath -> Int -> Int -> Float -> Float -> Float -> String -> String -> String -> String -> IO () Source #

Similar to uniqOverSoXSynthNGen4, but uses additional second Int parameter. It defines, to which n-th elements set (see nkyT) belongs the obtained higher notes in the intervals. If that parameter equals to 12, then the function is practically equivalent to uniqOverSoXSynthNGen4. To obtain its modifications, please, use 2, 3, 4, 6, or 9. Note that Int arguments are used by liftInEnku in that order so it returns a Maybe number (actually frequency) for the n-th elements set of notes (see nkyT). The second Int parameter defines that n.

New 4G functions to work with Durations

uniqOverSoXSynthN4G :: Int -> Float -> Durations -> String -> [Float] -> IO () Source #

4G generalized variant of the uniqOverSoXSynthN where you specify your own Durations.

uniqOverSoXSynthN34G :: Int -> Float -> Durations -> String -> String -> [Float] -> IO () Source #

4G generalized variant of the uniqOverSoXSynthN3 where you specify your own Durations.

uniqOverSoXSynthN44G :: Int -> Float -> Float -> Durations -> String -> String -> String -> [Float] -> IO () Source #

4G generalized variant of the uniqOverSoXSynthN4 where you specify your own Durations.

uniqOverSoXSynthNGenE4G :: FilePath -> Int -> Int -> Float -> Durations -> String -> IO () Source #

4G genaralized version of the uniqOverSoXSynthNGenE where you provide your own Durations. Note that Int arguments are used by liftInEnku in that order so it returns a Maybe number (actually frequency) for the n-th elements set of notes (see nkyT). The second Int parameter defines that n.

uniqOverSoXSynthNGen3E4G :: FilePath -> Int -> Int -> Float -> Durations -> String -> String -> IO () Source #

4G genaralized version of the uniqOverSoXSynthNGen3E where you provide your own Durations. Note that Int arguments are used by liftInEnku in that order so it returns a Maybe number (actually frequency) for the n-th elements set of notes (see nkyT). The second Int parameter defines that n.

uniqOverSoXSynthNGen4E4G :: FilePath -> Int -> Int -> Float -> Float -> Durations -> String -> String -> String -> IO () Source #

4G genaralized version of the uniqOverSoXSynthNGen4E where you provide your own Durations. Note that Int arguments are used by liftInEnku in that order so it returns a Maybe number (actually frequency) for the n-th elements set of notes (see nkyT). The second Int parameter defines that n.

4G with speech-like composition

uniqOverSoXSynthN4GS :: Int -> Float -> Float -> String -> String -> [Float] -> IO () Source #

Variant of the uniqOverSoXSynthN4G function where Durations are obtained from the String using str2Durations function. Helps to create a speech-like composition.

uniqOverSoXSynthN34GS :: Int -> Float -> Float -> String -> String -> String -> [Float] -> IO () Source #

Variant of the uniqOverSoXSynthN34G where Durations are obtained from the String using str2Durations function. Helps to create a speech-like composition.

uniqOverSoXSynthN44GS :: Int -> Float -> Float -> Float -> String -> String -> String -> String -> [Float] -> IO () Source #

Variant of the uniqOverSoXSynthN44G where Durations are obtained from the String using str2Durations function. Helps to create a speech-like composition.

uniqOverSoXSynthNGenE4GS :: FilePath -> Int -> Int -> Float -> Float -> String -> String -> IO () Source #

Variant of the uniqOverSoXSynthNGenE4G where Durations are obtained from the String using str2Durations function. Helps to create a speech-like composition. Note that Int arguments are used by liftInEnku in that order so it returns a Maybe number (actually frequency) for the n-th elements set of notes (see nkyT). The second Int parameter defines that n.

uniqOverSoXSynthNGen3E4GS :: FilePath -> Int -> Int -> Float -> Float -> String -> String -> String -> IO () Source #

Variant of the uniqOverSoXSynthNGen3E4G where Durations are obtained from the String using str2Durations function. Helps to create a speech-like composition. Note that Int arguments are used by liftInEnku in that order so it returns a Maybe number (actually frequency) for the n-th elements set of notes (see nkyT). The second Int parameter defines that n.

uniqOverSoXSynthNGen4E4GS :: FilePath -> Int -> Int -> Float -> Float -> Float -> String -> String -> String -> String -> IO () Source #

Variant of the uniqOverSoXSynthNGen4E4G where Durations are obtained from the String using str2Durations function. Helps to create a speech-like composition. Note that Int arguments are used by liftInEnku in that order so it returns a Maybe number (actually frequency) for the n-th elements set of notes (see nkyT). The second Int parameter defines that n.

New 5G functions to work also with Intervals

uniqOverSoXSynthN45G :: Int -> Float -> Float -> Durations -> String -> String -> Intervals -> [Float] -> IO () Source #

5G generalized variant of the uniqOverSoXSynthN44G where you specify your own Intervals.

uniqOverSoXSynthNGen4E5G :: FilePath -> Int -> Int -> Float -> Float -> Durations -> String -> String -> Intervals -> IO () Source #

5G genaralized version of the uniqOverSoXSynthNGen4E where you provide your own Durations and Intervals. Note that Int arguments are used by liftInEnku in that order so it returns a Maybe number (actually frequency) for the n-th elements set of notes (see nkyT). The second Int parameter defines that n.

5G with obtained from the text arbitraty length Intervals

uniqOverSoXSynthN45GS :: Int -> Float -> Float -> Float -> String -> String -> String -> Intervals -> String -> [Float] -> IO () Source #

Variant of the uniqOverSoXSynthN45G where Intervals are obtained from the String using intervalsFromStringG function. Helps to create a speech-like composition.

uniqOverSoXSynthNGen4E5GS :: FilePath -> Int -> Int -> Float -> Float -> Float -> String -> String -> String -> Intervals -> String -> IO () Source #

Variant of the uniqOverSoXSynthNGen4E5G where Intervals are obtained from the String using intervalsFromStringG function. Helps to create a speech-like composition. Note that Int arguments are used by liftInEnku in that order so it returns a Maybe number (actually frequency) for the n-th elements set of notes (see nkyT). The second Int parameter defines that n.

New 6G function to work also with Strengths

uniqOverSoXSynthNGen4E6G :: FilePath -> Int -> Int -> Float -> Float -> Durations -> String -> String -> Intervals -> Strengths -> Float -> IO () Source #

6G generalized function for uniqOverSoXSynthNGen4E5G where you provide your own Strengths. Note that Int arguments are used by liftInEnku in that order so it returns a Maybe number (actually frequency) for the n-th elements set of notes (see nkyT). The second Int parameter defines that n.

6G with obtained from the text arbitrary length Strengths

uniqOverSoXSynthN46GS :: Int -> Float -> Float -> Float -> String -> String -> String -> Intervals -> String -> [Float] -> String -> Float -> IO () Source #

Variant of the uniqOverSoXSynthN46G where Strengths are obtained from the String using str2Volume function. Helps to create a speech-like composition.

uniqOverSoXSynthN46GSu :: Int -> Float -> Float -> Float -> String -> String -> Intervals -> String -> [Float] -> String -> Float -> IO () Source #

A variant of uniqOverSoXSynthN46GS where Strengths and Durations are obtained from the same Ukrainian text specified as the last String argument. The second Float argument is an average duration of the sounds in seconds. Note that Int arguments are used by liftInEnku in that order so it returns a Maybe number (actually frequency) for the n-th elements set of notes (see nkyT). The second Int parameter defines that n.

uniqOverSoXSynthNGen4E6GS :: FilePath -> Int -> Int -> Float -> Float -> Float -> String -> String -> String -> Intervals -> String -> String -> Float -> IO () Source #

A variant of uniqOverSoXSynthNGen4E6G where Strengths are obtained from a Ukrainian text specified as the last String argument. Note that Int arguments are used by liftInEnku in that order so it returns a Maybe number (actually frequency) for the n-th elements set of notes (see nkyT). The second Int parameter defines that n.

uniqOverSoXSynthNGen4E6GSu :: FilePath -> Int -> Int -> Float -> Float -> Float -> String -> String -> Intervals -> String -> String -> Float -> IO () Source #

A variant of uniqOverSoXSynthNGen4E6GS where Strengths and Durations are obtained from the same Ukrainian text specified as the last String argument. The second Float argument is an average duration of the sounds in seconds. Note that Int arguments are used by liftInEnku in that order so it returns a Maybe number (actually frequency) for the n-th elements set of notes (see nkyT). The second Int parameter defines that n.

With overtones obtained from the additional Ukrainian text

uniqOverSoXSynthNGenEPar :: FilePath -> Params -> Float -> Float -> String -> String -> IO () Source #

Generalized version of the uniqOverSoXSynthNGenE where instead of lifting with liftInEnkuV liftInParamsV is used. It allows e. g. to use some tonality. For more information, please, refer to filterInParams.

uniqOverSoXSynthNGenE4GSPar :: FilePath -> Params -> Float -> Float -> String -> String -> IO () Source #

Generalized version of the uniqOverSoXSynthNGenE4GS where instead of lifting with liftInEnkuV liftInParamsV is used. It allows e. g. to use some tonality. For more information, please, refer to filterInParams.

uniqOverSoXSynthNGenE4GPar :: FilePath -> Params -> Float -> Durations -> String -> IO () Source #

Generalized version of the uniqOverSoXSynthNGenE4G where instead of lifting with liftInEnkuV liftInParamsV is used. It allows e. g. to use some tonality. For more information, please, refer to filterInParams.

uniqOverSoXSynthNGen3EPar :: FilePath -> Params -> Float -> Float -> String -> String -> String -> IO () Source #

Generalized version of the uniqOverSoXSynthNGen3E where instead of lifting with liftInEnkuV liftInParamsV is used. It allows e. g. to use some tonality. For more information, please, refer to filterInParams.

uniqOverSoXSynthNGen3E4GSPar :: FilePath -> Params -> Float -> Float -> String -> String -> String -> IO () Source #

Generalized version of the uniqOverSoXSynthNGen3E4GS where instead of lifting with liftInEnkuV liftInParamsV is used. It allows e. g. to use some tonality. For more information, please, refer to filterInParams.

uniqOverSoXSynthNGen3E4GPar :: FilePath -> Params -> Float -> Durations -> String -> String -> IO () Source #

Generalized version of the uniqOverSoXSynthNGen3E4G where instead of lifting with liftInEnkuV liftInParamsV is used. It allows e. g. to use some tonality. For more information, please, refer to filterInParams.

uniqOverSoXSynthNGen4EPar :: FilePath -> Params -> Float -> Float -> Float -> String -> String -> String -> String -> IO () Source #

Generalized version of the uniqOverSoXSynthNGen4E where instead of lifting with liftInEnkuV liftInParamsV is used. It allows e. g. to use some tonality. For more information, please, refer to filterInParams.

uniqOverSoXSynthNGen4E4GSPar :: FilePath -> Params -> Float -> Float -> Float -> String -> String -> String -> String -> IO () Source #

Generalized version of the uniqOverSoXSynthNGen4E4GS where instead of lifting with liftInEnkuV liftInParamsV is used. It allows e. g. to use some tonality. For more information, please, refer to filterInParams.

uniqOverSoXSynthNGen4E4GPar :: FilePath -> Params -> Float -> Float -> Durations -> String -> String -> String -> IO () Source #

Generalized version of the uniqOverSoXSynthNGen4E4G where instead of lifting with liftInEnkuV liftInParamsV is used. It allows e. g. to use some tonality. For more information, please, refer to filterInParams.

uniqOverSoXSynthNGen4E5GPar :: FilePath -> Params -> Float -> Float -> Durations -> String -> String -> Intervals -> IO () Source #

Generalized version of the uniqOverSoXSynthNGen4E5G where instead of lifting with liftInEnkuV liftInParamsV is used. It allows e. g. to use some tonality. For more information, please, refer to filterInParams.

uniqOverSoXSynthNGen4E5GSPar :: FilePath -> Params -> Float -> Float -> Float -> String -> String -> String -> Intervals -> String -> IO () Source #

Generalized version of the uniqOverSoXSynthNGen4E5GS where instead of lifting with liftInEnkuV liftInParamsV is used. It allows e. g. to use some tonality. For more information, please, refer to filterInParams.

uniqOverSoXSynthNGen4E6GPar :: FilePath -> Params -> Float -> Float -> Durations -> String -> String -> Intervals -> Strengths -> Float -> IO () Source #

Generalized version of the uniqOverSoXSynthNGen4E6G where instead of lifting with liftInEnkuV liftInParamsV is used. It allows e. g. to use some tonality. For more information, please, refer to filterInParams.

uniqOverSoXSynthNGen4E6GSPar :: FilePath -> Params -> Float -> Float -> Float -> String -> String -> String -> Intervals -> String -> String -> Float -> IO () Source #

Generalized version of the uniqOverSoXSynthNGen4E6GS where instead of lifting with liftInEnkuV liftInParamsV is used. It allows e. g. to use some tonality. For more information, please, refer to filterInParams.

uniqOverSoXSynthNGen4E6GSuPar :: FilePath -> Params -> Float -> Float -> Float -> String -> String -> Intervals -> String -> String -> Float -> IO () Source #

Generalized version of the uniqOverSoXSynthNGen4E6GSu where instead of lifting with liftInEnkuV liftInParamsV is used. It allows e. g. to use some tonality. For more information, please, refer to filterInParams.