{-# OPTIONS_HADDOCK show-extensions #-} -- | -- Module : Phladiprelio.Ukrainian.PropertiesSyllablesG201 -- Copyright : (c) Oleksandr Zhabenko 2020-2023 -- License : MIT -- Stability : Experimental -- Maintainer : oleksandr.zhabenko@yahoo.com -- -- Generalization and extension of the functionality of the DobutokO.Poetry.Norms -- and DobutokO.Poetry.Norms.Extended modules -- from the @dobutokO-poetry@ package. Uses syllables information. -- Instead of the vector-related, uses just arrays. {-# LANGUAGE NoImplicitPrelude, BangPatterns, MultiWayIf #-} module Phladiprelio.Ukrainian.PropertiesSyllablesG201 ( -- * Extended rhythmicity properties -- ** Rhythmicity properties (semi-empirical) -- *** General ones rhythmicity0HTup , rhythmicity0FHTup , rhythmicityKHTup , rhythmicityKFHTup -- *** Simple one , rhythmicity0Tup , rhythmicity0FTup -- *** With weight coefficients , rhythmicityKTup , rhythmicityKFTup -- ** Rhythmicity properties from generated with r-glpk-phonetic-languages-ukrainian-durations package (since 0.2.0.0 version) -- *** Simple one , rhythmicity02Tup , rhythmicity02FTup -- *** With weight coefficients , rhythmicityK2Tup , rhythmicityKF2Tup -- ** NEW Rhythmicity properties from generated with r-glpk-phonetic-languages-ukrainian-durations package -- *** Simple ones , rhythmicity03Tup , rhythmicity03FTup , rhythmicity04Tup , rhythmicity04FTup -- *** With weight coefficients , rhythmicityK3Tup , rhythmicityKF3Tup , rhythmicityK4Tup , rhythmicityKF4Tup -- ** General , rhythmicityGTup ) where import GHC.Base import Phladiprelio.Ukrainian.Common import Phladiprelio.Ukrainian.SyllableDouble import Phladiprelio.Ukrainian.Melodics (Sound8,FlowSound) import Phladiprelio.Ukrainian.Syllable import Phladiprelio.Ukrainian.PropertiesSyllablesG2Common import GHC.Arr (Array) import GHC.Int (Int8) import Phladiprelio.Ukrainian.Emphasis import Phladiprelio.Rhythmicity.Factor rhythmicityGTup :: ([[[Sound8]]] -> [[Double]])-- ^ A function that specifies the syllables durations, analogue of (or one of) the -- syllableDurationsD functions from the @ukrainian-phonetics-basics-array@ package. -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Int8) -> Array Int (Int8, FlowSound -> Sound8) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int (Int8, [Int8]) -> Array Int (Char,Int8) -> Array Int (Int8,[Int8]) -> Array Int (Char, Bool) -> Array Int (Char, Bool) -> Array Int (Int8,Bool) -> ReadyForConstructionUkr -> [Double] rhythmicityGTup f tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 (Str xs@(_:_)) = mconcat . f . createSyllablesUkrSTup tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 $ xs rhythmicityGTup f tup1 tup2 tup3 tup4 tup5 tup6 tup7 tup8 tup9 tup10 tup11 tup12 tup13 tup14 tup15 tup16 tup17 (FSL xsss@(_:_)) = mconcat . f $ xsss rhythmicityGTup _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ = [] {-# INLINE rhythmicityGTup #-} ----------------------------------------------------- rhythmicity0HTup :: ([[[Sound8]]] -> [[Double]]) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Int8) -> Array Int (Int8, FlowSound -> Sound8) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int (Int8, [Int8]) -> Array Int (Char,Int8) -> Array Int (Int8,[Int8]) -> Array Int (Char, Bool) -> Array Int (Char, Bool) -> Array Int (Int8,Bool) -> ReadyForConstructionUkr -> Double rhythmicity0HTup f = rhythmicityGHTup f eval23 {-# INLINE rhythmicity0HTup #-} rhythmicity0HNTup n = rhythmicity0HTup (case n of 1 -> syllableDurationsD 2 -> syllableDurationsD2 3 -> syllableDurationsD3 _ -> syllableDurationsD4) {-# INLINE rhythmicity0HNTup #-} rhythmicity0Tup :: Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Int8) -> Array Int (Int8, FlowSound -> Sound8) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int (Int8, [Int8]) -> Array Int (Char,Int8) -> Array Int (Int8,[Int8]) -> Array Int (Char, Bool) -> Array Int (Char, Bool) -> Array Int (Int8,Bool) -> ReadyForConstructionUkr -> Double rhythmicity0Tup = rhythmicity0HNTup 1 {-# INLINE rhythmicity0Tup #-} rhythmicity02Tup :: Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Int8) -> Array Int (Int8, FlowSound -> Sound8) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int (Int8, [Int8]) -> Array Int (Char,Int8) -> Array Int (Int8,[Int8]) -> Array Int (Char, Bool) -> Array Int (Char, Bool) -> Array Int (Int8,Bool) -> ReadyForConstructionUkr -> Double rhythmicity02Tup = rhythmicity0HNTup 3 {-# INLINE rhythmicity02Tup #-} rhythmicity03Tup :: Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Int8) -> Array Int (Int8, FlowSound -> Sound8) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int (Int8, [Int8]) -> Array Int (Char,Int8) -> Array Int (Int8,[Int8]) -> Array Int (Char, Bool) -> Array Int (Char, Bool) -> Array Int (Int8,Bool) -> ReadyForConstructionUkr -> Double rhythmicity03Tup = rhythmicity0HNTup 3 {-# INLINE rhythmicity03Tup #-} rhythmicity04Tup :: Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Int8) -> Array Int (Int8, FlowSound -> Sound8) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int (Int8, [Int8]) -> Array Int (Char,Int8) -> Array Int (Int8,[Int8]) -> Array Int (Char, Bool) -> Array Int (Char, Bool) -> Array Int (Int8,Bool) -> ReadyForConstructionUkr -> Double rhythmicity04Tup = rhythmicity0HNTup 4 {-# INLINE rhythmicity04Tup #-} ------------------------------------------------------- rhythmicityKHTup :: ([[[Sound8]]] -> [[Double]]) -> Double -> Double -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Int8) -> Array Int (Int8, FlowSound -> Sound8) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int (Int8, [Int8]) -> Array Int (Char,Int8) -> Array Int (Int8,[Int8]) -> Array Int (Char, Bool) -> Array Int (Char, Bool) -> Array Int (Int8,Bool) -> ReadyForConstructionUkr -> Double rhythmicityKHTup f k2 k3 = rhythmicityGHTup f (eval23K k2 k3) {-# INLINE rhythmicityKHTup #-} rhythmicityKHNTup n = rhythmicityKHTup (case n of 1 -> syllableDurationsD 2 -> syllableDurationsD2 3 -> syllableDurationsD3 _ -> syllableDurationsD4) {-# INLINE rhythmicityKHNTup #-} rhythmicityKTup :: Double -> Double -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Int8) -> Array Int (Int8, FlowSound -> Sound8) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int (Int8, [Int8]) -> Array Int (Char,Int8) -> Array Int (Int8,[Int8]) -> Array Int (Char, Bool) -> Array Int (Char, Bool) -> Array Int (Int8,Bool) -> ReadyForConstructionUkr -> Double rhythmicityKTup = rhythmicityKHNTup 1 {-# INLINE rhythmicityKTup #-} rhythmicityK2Tup :: Double -> Double -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Int8) -> Array Int (Int8, FlowSound -> Sound8) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int (Int8, [Int8]) -> Array Int (Char,Int8) -> Array Int (Int8,[Int8]) -> Array Int (Char, Bool) -> Array Int (Char, Bool) -> Array Int (Int8,Bool) -> ReadyForConstructionUkr -> Double rhythmicityK2Tup = rhythmicityKHNTup 2 {-# INLINE rhythmicityK2Tup #-} rhythmicityK3Tup :: Double -> Double -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Int8) -> Array Int (Int8, FlowSound -> Sound8) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int (Int8, [Int8]) -> Array Int (Char,Int8) -> Array Int (Int8,[Int8]) -> Array Int (Char, Bool) -> Array Int (Char, Bool) -> Array Int (Int8,Bool) -> ReadyForConstructionUkr -> Double rhythmicityK3Tup = rhythmicityKHNTup 3 {-# INLINE rhythmicityK3Tup #-} rhythmicityK4Tup :: Double -> Double -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Int8) -> Array Int (Int8, FlowSound -> Sound8) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int (Int8, [Int8]) -> Array Int (Char,Int8) -> Array Int (Int8,[Int8]) -> Array Int (Char, Bool) -> Array Int (Char, Bool) -> Array Int (Int8,Bool) -> ReadyForConstructionUkr -> Double rhythmicityK4Tup = rhythmicityKHNTup 4 {-# INLINE rhythmicityK4Tup #-} -------------------------------------------------------- rhythmicity0FHTup :: ([[[Sound8]]] -> [[Double]]) -> Factors -> Double -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Int8) -> Array Int (Int8, FlowSound -> Sound8) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int (Int8, [Int8]) -> Array Int (Char,Int8) -> Array Int (Int8,[Int8]) -> Array Int (Char, Bool) -> Array Int (Char, Bool) -> Array Int (Int8,Bool) -> ReadyForConstructionUkr -> Double rhythmicity0FHTup f ff k = rhythmicityGHTup f (eval23F ff k) {-# INLINE rhythmicity0FHTup #-} rhythmicity0FHNTup n = rhythmicity0FHTup (case n of 1 -> syllableDurationsD 2 -> syllableDurationsD2 3 -> syllableDurationsD3 _ -> syllableDurationsD4) {-# INLINE rhythmicity0FHNTup #-} rhythmicity0FTup :: Factors -> Double -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Int8) -> Array Int (Int8, FlowSound -> Sound8) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int (Int8, [Int8]) -> Array Int (Char,Int8) -> Array Int (Int8,[Int8]) -> Array Int (Char, Bool) -> Array Int (Char, Bool) -> Array Int (Int8,Bool) -> ReadyForConstructionUkr -> Double rhythmicity0FTup = rhythmicity0FHNTup 1 {-# INLINE rhythmicity0FTup #-} rhythmicity02FTup :: Factors -> Double -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Int8) -> Array Int (Int8, FlowSound -> Sound8) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int (Int8, [Int8]) -> Array Int (Char,Int8) -> Array Int (Int8,[Int8]) -> Array Int (Char, Bool) -> Array Int (Char, Bool) -> Array Int (Int8,Bool) -> ReadyForConstructionUkr -> Double rhythmicity02FTup = rhythmicity0FHNTup 2 {-# INLINE rhythmicity02FTup #-} rhythmicity03FTup :: Factors -> Double -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Int8) -> Array Int (Int8, FlowSound -> Sound8) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int (Int8, [Int8]) -> Array Int (Char,Int8) -> Array Int (Int8,[Int8]) -> Array Int (Char, Bool) -> Array Int (Char, Bool) -> Array Int (Int8,Bool) -> ReadyForConstructionUkr -> Double rhythmicity03FTup = rhythmicity0FHNTup 3 {-# INLINE rhythmicity03FTup #-} rhythmicity04FTup :: Factors -> Double -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Int8) -> Array Int (Int8, FlowSound -> Sound8) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int (Int8, [Int8]) -> Array Int (Char,Int8) -> Array Int (Int8,[Int8]) -> Array Int (Char, Bool) -> Array Int (Char, Bool) -> Array Int (Int8,Bool) -> ReadyForConstructionUkr -> Double rhythmicity04FTup = rhythmicity0FHNTup 4 {-# INLINE rhythmicity04FTup #-} -------------------------------------------------------- rhythmicityKFHTup ::([[[Sound8]]] -> [[Double]]) -> Factors -> Double -> Double -> Double -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Int8) -> Array Int (Int8, FlowSound -> Sound8) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int (Int8, [Int8]) -> Array Int (Char,Int8) -> Array Int (Int8,[Int8]) -> Array Int (Char, Bool) -> Array Int (Char, Bool) -> Array Int (Int8,Bool) -> ReadyForConstructionUkr -> Double rhythmicityKFHTup f ff k k2 k3 = rhythmicityGHTup f (eval23KF ff k k2 k3) {-# INLINE rhythmicityKFHTup #-} rhythmicityKFHNTup n = rhythmicityKFHTup (case n of 1 -> syllableDurationsD 2 -> syllableDurationsD2 3 -> syllableDurationsD3 _ -> syllableDurationsD4) {-# INLINE rhythmicityKFHNTup #-} rhythmicityKFTup :: Factors -> Double -> Double -> Double -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Int8) -> Array Int (Int8, FlowSound -> Sound8) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int (Int8, [Int8]) -> Array Int (Char,Int8) -> Array Int (Int8,[Int8]) -> Array Int (Char, Bool) -> Array Int (Char, Bool) -> Array Int (Int8,Bool) -> ReadyForConstructionUkr -> Double rhythmicityKFTup = rhythmicityKFHNTup 1 {-# INLINE rhythmicityKFTup #-} rhythmicityKF2Tup :: Factors -> Double -> Double -> Double -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Int8) -> Array Int (Int8, FlowSound -> Sound8) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int (Int8, [Int8]) -> Array Int (Char,Int8) -> Array Int (Int8,[Int8]) -> Array Int (Char, Bool) -> Array Int (Char, Bool) -> Array Int (Int8,Bool) -> ReadyForConstructionUkr -> Double rhythmicityKF2Tup = rhythmicityKFHNTup 2 {-# INLINE rhythmicityKF2Tup #-} rhythmicityKF3Tup :: Factors -> Double -> Double -> Double -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Int8) -> Array Int (Int8, FlowSound -> Sound8) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int (Int8, [Int8]) -> Array Int (Char,Int8) -> Array Int (Int8,[Int8]) -> Array Int (Char, Bool) -> Array Int (Char, Bool) -> Array Int (Int8,Bool) -> ReadyForConstructionUkr -> Double rhythmicityKF3Tup = rhythmicityKFHNTup 1 {-# INLINE rhythmicityKF3Tup #-} rhythmicityKF4Tup :: Factors -> Double -> Double -> Double -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Int8) -> Array Int (Int8, FlowSound -> Sound8) -> Array Int (Int8, Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int ([Int8], Bool) -> Array Int (Int8, [Int8]) -> Array Int (Char,Int8) -> Array Int (Int8,[Int8]) -> Array Int (Char, Bool) -> Array Int (Char, Bool) -> Array Int (Int8,Bool) -> ReadyForConstructionUkr -> Double rhythmicityKF4Tup = rhythmicityKFHNTup 1 {-# INLINE rhythmicityKF4Tup #-}