phonetic-languages-simplified-properties-array 0.8.1.0 → 0.9.0.0
raw patch · 4 files changed
+289/−24 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Phonetic.Languages.Array.Ukrainian.PropertiesFuncRepG2: procRhythmicity23FH :: Ord c => Double -> (Double -> c) -> [[[[UZPP2]]] -> [[Double]]] -> String -> Coeffs2 -> FuncRep2 String Double c
+ Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2: rhythmicity0FH :: ([[[UZPP2]]] -> [[Double]]) -> Double -> String -> Double
+ Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2: rhythmicity0H :: ([[[UZPP2]]] -> [[Double]]) -> String -> Double
+ Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2: rhythmicityGH :: ([[[UZPP2]]] -> [[Double]]) -> ([[Double]] -> Double) -> String -> Double
+ Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2: rhythmicityH :: Double -> String -> [[[[UZPP2]]] -> [[Double]]] -> Coeffs2 -> String -> Double
+ Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2: rhythmicityH' :: Double -> String -> [[[[UZPP2]]] -> [[Double]]] -> Coeffs2 -> String -> Double
+ Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2: rhythmicityKFH :: ([[[UZPP2]]] -> [[Double]]) -> Double -> Double -> Double -> String -> Double
+ Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2: rhythmicityKH :: ([[[UZPP2]]] -> [[Double]]) -> Double -> Double -> String -> Double
- Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2: rhythmicityG :: ([[[UZPP2]]] -> [[Double]]) -> ([[Double]] -> Double) -> String -> Double
+ Phonetic.Languages.Array.Ukrainian.PropertiesSyllablesG2: rhythmicityG :: ([[[UZPP2]]] -> [[Double]]) -> String -> [Double]
Files
- CHANGELOG.md +6/−1
- Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG2.hs +22/−1
- Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG2.hs +259/−20
- phonetic-languages-simplified-properties-array.cabal +2/−2
CHANGELOG.md view
@@ -59,5 +59,10 @@ ## 0.8.1.0 -- 2021-08-24 -* Eigth version. Switched to the new version of the phonetic-languages-rhythmicity that fixed the issues with+* Eigth version revised A. Switched to the new version of the phonetic-languages-rhythmicity that fixed the issues with custom user defined new polyrhythmicity choices.++## 0.9.0.0 -- 2021-09-18++* Ninth version. Added the new functions that allows the user to define and use his / her own syllableDurationsD+functions. They are used with the properties encoding string starting with "H".
Phonetic/Languages/Array/Ukrainian/PropertiesFuncRepG2.hs view
@@ -42,6 +42,8 @@ , procBoth4InvFF -- * Working with rhythmicity , procRhythmicity23F+ -- ** Working with rhythmicity that can be defined by the user+ , procRhythmicity23FH ) where #ifdef __GLASGOW_HASKELL__@@ -112,7 +114,7 @@ {-# INLINE procB2F #-} procB2FF- :: (Ord c) => Double + :: (Ord c) => Double -> (Double -> c) -> ([[[S.UZPP2]]] -> [[Double]]) -> Coeffs2@@ -169,6 +171,25 @@ -> FuncRep2 String Double c procRhythmicity23F k g choice coeffs = procRhythm23F g choice (rhythmicity k) coeffs {-# INLINE procRhythmicity23F #-}++procRhythm23FH+ :: (Ord c) => (Double -> c)+ -> String+ -> (String -> Double)+ -> Coeffs2+ -> FuncRep2 String Double c+procRhythm23FH h choice g coeffs = D g h+{-# INLINE procRhythm23FH #-}++procRhythmicity23FH+ :: (Ord c) => Double+ -> (Double -> c)+ -> [[[[S.UZPP2]]] -> [[Double]]]+ -> String+ -> Coeffs2+ -> FuncRep2 String Double c+procRhythmicity23FH k g syllableDurationsDs choice coeffs = procRhythm23FH g choice (rhythmicityH k choice syllableDurationsDs coeffs) coeffs+{-# INLINE procRhythmicity23FH #-} procBothF :: (Ord c) => (Double -> c)
Phonetic/Languages/Array/Ukrainian/PropertiesSyllablesG2.hs view
@@ -24,6 +24,11 @@ , sndCF , readCF -- * Rhythmicity properties (semi-empirical)+ -- ** General ones+ , rhythmicity0H+ , rhythmicity0FH+ , rhythmicityKH+ , rhythmicityKFH -- ** Simple one , rhythmicity0 , rhythmicity0F@@ -50,7 +55,10 @@ , rhythmicityKF4 -- * General , rhythmicityG+ , rhythmicityGH , rhythmicity+ , rhythmicityH+ , rhythmicityH' ) where #ifdef __GLASGOW_HASKELL__@@ -116,86 +124,114 @@ eval23KF k k2 k3 = evalRhythmicity23KF k k2 k3 . mconcat {-# INLINE eval23KF #-} -rhythmicityG :: ([[[UZPP2]]] -> [[Double]]) -> ([[Double]] -> Double) -> String -> Double-rhythmicityG f g xs+rhythmicityGH :: ([[[UZPP2]]] -> [[Double]]) -> ([[Double]] -> Double) -> String -> Double+rhythmicityGH f g xs | null xs = 0.0 | otherwise = g . f . createSyllablesUkrS $ xs-{-# INLINE rhythmicityG #-}+{-# INLINE rhythmicityGH #-} ------------------------------------------------------- +rhythmicity0H :: ([[[UZPP2]]] -> [[Double]]) -> String -> Double+rhythmicity0H f = rhythmicityGH f eval23+{-# INLINE rhythmicity0H #-}+ rhythmicity0 :: String -> Double-rhythmicity0 = rhythmicityG syllableDurationsD eval23+rhythmicity0 = rhythmicity0H syllableDurationsD {-# INLINE rhythmicity0 #-} rhythmicity02 :: String -> Double-rhythmicity02 = rhythmicityG syllableDurationsD2 eval23+rhythmicity02 = rhythmicity0H syllableDurationsD2 {-# INLINE rhythmicity02 #-} rhythmicity03 :: String -> Double-rhythmicity03 = rhythmicityG syllableDurationsD3 eval23+rhythmicity03 = rhythmicity0H syllableDurationsD3 {-# INLINE rhythmicity03 #-} rhythmicity04 :: String -> Double-rhythmicity04 = rhythmicityG syllableDurationsD4 eval23+rhythmicity04 = rhythmicity0H syllableDurationsD4 {-# INLINE rhythmicity04 #-} ------------------------------------------------------- +rhythmicityKH :: ([[[UZPP2]]] -> [[Double]]) -> Double -> Double -> String -> Double+rhythmicityKH f k2 k3 = rhythmicityGH f (eval23K k2 k3)+{-# INLINE rhythmicityKH #-}+ rhythmicityK :: Double -> Double -> String -> Double-rhythmicityK k2 k3 = rhythmicityG syllableDurationsD (eval23K k2 k3)+rhythmicityK k2 k3 = rhythmicityKH syllableDurationsD k2 k3 {-# INLINE rhythmicityK #-} rhythmicityK2 :: Double -> Double -> String -> Double-rhythmicityK2 k2 k3 = rhythmicityG syllableDurationsD2 (eval23K k2 k3)+rhythmicityK2 k2 k3 = rhythmicityKH syllableDurationsD2 k2 k3 {-# INLINE rhythmicityK2 #-} rhythmicityK3 :: Double -> Double -> String -> Double-rhythmicityK3 k2 k3 = rhythmicityG syllableDurationsD3 (eval23K k2 k3)+rhythmicityK3 k2 k3 = rhythmicityKH syllableDurationsD3 k2 k3 {-# INLINE rhythmicityK3 #-} rhythmicityK4 :: Double -> Double -> String -> Double-rhythmicityK4 k2 k3 = rhythmicityG syllableDurationsD4 (eval23K k2 k3)+rhythmicityK4 k2 k3 = rhythmicityKH syllableDurationsD4 k2 k3 {-# INLINE rhythmicityK4 #-} -------------------------------------------------------- +rhythmicity0FH :: ([[[UZPP2]]] -> [[Double]]) -> Double -> String -> Double+rhythmicity0FH f k = rhythmicityGH f (eval23F k)+{-# INLINE rhythmicity0FH #-}+ rhythmicity0F :: Double -> String -> Double-rhythmicity0F k = rhythmicityG syllableDurationsD (eval23F k)+rhythmicity0F k = rhythmicity0FH syllableDurationsD k {-# INLINE rhythmicity0F #-} rhythmicity02F :: Double -> String -> Double-rhythmicity02F k = rhythmicityG syllableDurationsD2 (eval23F k)+rhythmicity02F k = rhythmicity0FH syllableDurationsD2 k {-# INLINE rhythmicity02F #-} rhythmicity03F :: Double -> String -> Double-rhythmicity03F k = rhythmicityG syllableDurationsD3 (eval23F k)+rhythmicity03F k = rhythmicity0FH syllableDurationsD3 k {-# INLINE rhythmicity03F #-} rhythmicity04F :: Double -> String -> Double-rhythmicity04F k = rhythmicityG syllableDurationsD4 (eval23F k)+rhythmicity04F k = rhythmicity0FH syllableDurationsD4 k {-# INLINE rhythmicity04F #-} -------------------------------------------------------- +rhythmicityKFH :: ([[[UZPP2]]] -> [[Double]]) -> Double -> Double -> Double -> String -> Double+rhythmicityKFH f k k2 k3 = rhythmicityGH f (eval23KF k k2 k3)+{-# INLINE rhythmicityKFH #-}+ rhythmicityKF :: Double -> Double -> Double -> String -> Double-rhythmicityKF k k2 k3 = rhythmicityG syllableDurationsD (eval23KF k k2 k3)+rhythmicityKF k k2 k3 = rhythmicityKFH syllableDurationsD k k2 k3 {-# INLINE rhythmicityKF #-} rhythmicityKF2 :: Double -> Double -> Double -> String -> Double-rhythmicityKF2 k k2 k3 = rhythmicityG syllableDurationsD2 (eval23KF k k2 k3)+rhythmicityKF2 k k2 k3 = rhythmicityKFH syllableDurationsD2 k k2 k3 {-# INLINE rhythmicityKF2 #-} rhythmicityKF3 :: Double -> Double -> Double -> String -> Double-rhythmicityKF3 k k2 k3 = rhythmicityG syllableDurationsD3 (eval23KF k k2 k3)+rhythmicityKF3 k k2 k3 = rhythmicityKFH syllableDurationsD3 k k2 k3 {-# INLINE rhythmicityKF3 #-} rhythmicityKF4 :: Double -> Double -> Double -> String -> Double-rhythmicityKF4 k k2 k3 = rhythmicityG syllableDurationsD4 (eval23KF k k2 k3)+rhythmicityKF4 k k2 k3 = rhythmicityKFH syllableDurationsD4 k k2 k3 {-# INLINE rhythmicityKF4 #-} -------------------------------------------------------- +rhythmicityG+ :: ([[[UZPP2]]] -> [[Double]])-- ^ A function that specifies the syllables durations, analogue of (or one of) the+ -- syllableDurationsD functions from the @ukrainian-phonetics-basics-array@ package.+ -> String+ -> [Double]+rhythmicityG f xs+ | null xs = []+ | otherwise = mconcat . f . createSyllablesUkrS $ xs+{-# INLINE rhythmicityG #-}++--------------------------------------------------------+ rhythmicity :: Double -> String -> Coeffs2 -> String -> Double rhythmicity k choice CF0 = if | take 1 choice `elem` ["c","M","N"] || (take 1 choice >= "A" && take 1 choice <= "F") -> let just_probe = readRhythmicity choice in@@ -239,7 +275,7 @@ _ -> rhythmicity04 | otherwise -> rhythmicity04 | otherwise -> if- | take 1 choice == "b" || ((take 1 choice >= "d" && take 1 choice <= "v") || (take 1 choice >= "I" && take 1 choice <= "Z")) && (drop 2 . take 3 $ choice) >= "1" && (drop 2 . take 3 $ choice) <= "4" ->+ | (take 1 choice == "b" || ((take 1 choice >= "d" && take 1 choice <= "v") || (take 1 choice >= "I" && take 1 choice <= "Z"))) && (drop 2 . take 3 $ choice) >= "1" && (drop 2 . take 3 $ choice) <= "4" -> case take 1 choice of "b" -> g rhythmicityPolyWeightedLEF3 5 1 "d" -> g rhythmicityPolyWeightedLEF30 5 1@@ -367,3 +403,206 @@ parseChRhEndMaybe (P0 _) = Nothing parseChRhEndMaybe (P1 _ _ n) = Just n parseChRhEndMaybe (P2 _ _ _ n) = Just n++----------------------------------------------------------------++rhythmicityH+ :: Double+ -> String+ -> [[[[UZPP2]]] -> [[Double]]]+ -> Coeffs2+ -> String+ -> Double+rhythmicityH k choice syllableDurationsDs coeffs+ | take 1 choice == "H" = rhythmicityH' k (drop 1 choice) syllableDurationsDs coeffs+ | otherwise = rhythmicity k choice coeffs++rhythmicityH'+ :: Double+ -> String+ -> [[[[UZPP2]]] -> [[Double]]]+ -> Coeffs2+ -> String+ -> Double+rhythmicityH' k choice syllableDurationsDs CF0 = if+ | take 1 choice `elem` ["c","M","N"] || (take 1 choice >= "A" && take 1 choice <= "F") -> let just_probe = readRhythmicity choice in+ case just_probe of+ Just (P1 ch rh n) -> rhythmicityABC 1.0 2.0 0.125 ch rh . rhythmicityG (helperHF4 n syllableDurationsDs)+ Just (P2 ch rh r n) -> case take 1 choice of+ "A" -> rhythmicityPolyWeightedLEF2 1.0 r ch rh . rhythmicityG (helperHF4 n syllableDurationsDs)+ "D" -> rhythmicityPolyWeightedLF2 1.0 r ch rh . rhythmicityG (helperHF4 n syllableDurationsDs)+ "E" -> rhythmicityPolyWeightedLEF3 1.0 r ch rh . rhythmicityG (helperHF4 n syllableDurationsDs)+ "F" -> rhythmicityPolyWeightedLF3 1.0 r ch rh . rhythmicityG (helperHF4 n syllableDurationsDs)+ "B" -> rhythmicityPolyWeightedEF2 1.0 r ch rh . rhythmicityG (helperHF4 n syllableDurationsDs)+ "C" -> rhythmicityPolyWeightedF2 1.0 r ch rh . rhythmicityG (helperHF4 n syllableDurationsDs)+ "M" -> rhythmicityPolyWeightedEF3 1.0 r ch rh . rhythmicityG (helperHF4 n syllableDurationsDs)+ "N" -> rhythmicityPolyWeightedF3 1.0 r ch rh . rhythmicityG (helperHF4 n syllableDurationsDs)+ "c" -> rhythmicityPoly 1.0 r ch rh . rhythmicityG (helperHF4 n syllableDurationsDs)+ _ -> rhythmicity0H (helperHF4 1 syllableDurationsDs)+ | choice == "0y" -> rhythmicity0H (helperHF4 1 syllableDurationsDs)+ | take 1 choice == "0" && drop 2 (take 3 choice) == "y" ->+ let n2 = readMaybe (drop 1 . take 2 $ choice)::Maybe Int in+ case n2 of+ Just n3 -> rhythmicity0H (helperHF4 n3 syllableDurationsDs)+ Nothing -> rhythmicity0H (helperHF4 1 syllableDurationsDs)+ | choice == "0z" -> rhythmicity0FH (helperHF4 1 syllableDurationsDs) k+ | take 1 choice == "0" && drop 2 (take 3 choice) == "z" ->+ let n2 = readMaybe (drop 1 . take 2 $ choice)::Maybe Int in+ case n2 of+ Just n3 -> rhythmicity0FH (helperHF4 n3 syllableDurationsDs) k+ Nothing -> rhythmicity0FH (helperHF4 1 syllableDurationsDs) k+ | take 1 choice == "0" -> rhythmicity0H (helperHF4 1 syllableDurationsDs)+ | take 1 choice == "w" -> if+ | (drop 2 . take 3 $ choice) >= "1" && (drop 2 . take 3 $ choice) <= "4" ->+ case take 2 choice of+ "w0" -> wwF (drop 2 . take 3 $ choice) (Ch 1 1 4) (Rhythm 1 1 2)+ "w1" -> wwF (drop 2 . take 3 $ choice) (Ch 1 0 4) (Rhythm 2 1 1)+ "w2" -> wwF (drop 2 . take 3 $ choice) (Ch 0 1 4) (Rhythm 1 2 1)+ "w3" -> wwF (drop 2 . take 3 $ choice) (Ch 0 0 4) (Rhythm 1 1 2)+ _ -> rhythmicity0H (helperHF4 1 syllableDurationsDs)+ | otherwise -> rhythmicity0H (helperHF4 1 syllableDurationsDs)+ | take 1 choice == "x" -> if+ | (drop 2 . take 3 $ choice) >= "1" && (drop 2 . take 3 $ choice) <= "4" ->+ case take 2 choice of+ "x0" -> xxF (drop 2 . take 3 $ choice) (Ch 1 1 4) (Rhythm 1 1 2)+ "x1" -> xxF (drop 2 . take 3 $ choice) (Ch 1 0 4) (Rhythm 2 1 1)+ "x2" -> xxF (drop 2 . take 3 $ choice) (Ch 0 1 4) (Rhythm 1 2 1)+ "x3" -> xxF (drop 2 . take 3 $ choice) (Ch 0 0 4) (Rhythm 1 1 2)+ _ -> rhythmicity0H (helperHF4 1 syllableDurationsDs)+ | otherwise -> rhythmicity0H (helperHF4 1 syllableDurationsDs)+ | otherwise -> if+ | (take 1 choice == "b" || ((take 1 choice >= "d" && take 1 choice <= "v") || (take 1 choice >= "I" && take 1 choice <= "Z"))) && (drop 2 . take 3 $ choice) >= "1" && (drop 2 . take 3 $ choice) <= "9" ->+ case take 1 choice of+ "b" -> g rhythmicityPolyWeightedLEF3 5 1+ "d" -> g rhythmicityPolyWeightedLEF30 5 1+ "e" -> g rhythmicityPolyWeightedLEF3 6 2+ "f" -> g rhythmicityPolyWeightedLEF30 6 2+ "g" -> g rhythmicityPolyWeightedLEF2 5 1+ "h" -> g rhythmicityPolyWeightedLEF20 5 1+ "i" -> g rhythmicityPolyWeightedLEF2 6 2+ "j" -> g rhythmicityPolyWeightedLEF20 6 2+ "k" -> g rhythmicityPolyWeightedLF3 5 1+ "l" -> g rhythmicityPolyWeightedLF30 5 1+ "m" -> g rhythmicityPolyWeightedLF3 6 2+ "n" -> g rhythmicityPolyWeightedLF30 6 2+ "o" -> g rhythmicityPolyWeightedLF2 5 1+ "p" -> g rhythmicityPolyWeightedLF20 5 1+ "q" -> g rhythmicityPolyWeightedLF2 6 2+ "r" -> g rhythmicityPolyWeightedLF20 6 2+ "I" -> g rhythmicityPolyWeightedEF3 5 1+ "J" -> g rhythmicityPolyWeightedEF30 5 1+ "K" -> g rhythmicityPolyWeightedEF3 6 2+ "L" -> g rhythmicityPolyWeightedEF30 6 2+ "O" -> g rhythmicityPolyWeightedEF2 5 1+ "P" -> g rhythmicityPolyWeightedEF20 5 1+ "Q" -> g rhythmicityPolyWeightedEF2 6 2+ "R" -> g rhythmicityPolyWeightedEF20 6 2+ "W" -> g rhythmicityPolyWeightedF3 5 1+ "X" -> g rhythmicityPolyWeightedF30 5 1+ "Y" -> g rhythmicityPolyWeightedF3 6 2+ "Z" -> g rhythmicityPolyWeightedF30 6 2+ "U" -> g rhythmicityPolyWeightedF2 5 1+ "V" -> g rhythmicityPolyWeightedF20 5 1+ "S" -> g rhythmicityPolyWeightedF2 6 2+ "T" -> g rhythmicityPolyWeightedF20 6 2+ "u" -> g rhythmicityPoly 5 1+ "v" -> g rhythmicityPoly0 5 1+ "s" -> g rhythmicityPoly 6 2+ "t" -> g rhythmicityPoly0 6 2+ | otherwise -> rhythmicity0H+ (let ts = drop 2 . take 3 $ choice in+ case ts of { [] -> syllableDurationsD4 ; ks ->+ let q = readMaybe ks::Maybe Int in+ case q of {Just q' -> helperHF4 q' syllableDurationsDs; ~Nothing -> syllableDurationsD4 }})+ where h1 f ts xs m n = f 1.0 4 (PolyCh xs m) (PolyRhythm [1,2,1,n]) . mconcat .+ (case ts of { [] -> syllableDurationsD4 ; ks -> let q = readMaybe ks::Maybe Int in+ case q of {Just q' -> helperHF4 q' syllableDurationsDs; ~Nothing -> syllableDurationsD4 }}) .+ createSyllablesUkrS+ h2 f ts xs m n = f 1.0 4 (PolyCh xs m) (PolyRhythm [2,1,1,n]) . mconcat .+ (case ts of { [] -> syllableDurationsD4 ; ks -> let q = readMaybe ks::Maybe Int in+ case q of {Just q' -> helperHF4 q' syllableDurationsDs; ~Nothing -> syllableDurationsD4 }}) .+ createSyllablesUkrS+ g f m n+ | drop 1 (take 2 choice) == "0" = h1 f (drop 2 . take 3 $ choice) [True,True,True] m n+ | drop 1 (take 2 choice) == "1" = h1 f (drop 2 . take 3 $ choice) [True,True,False] m n+ | drop 1 (take 2 choice) == "2" = h1 f (drop 2 . take 3 $ choice) [True,False,True] m n+ | drop 1 (take 2 choice) == "3" = h1 f (drop 2 . take 3 $ choice) [True,False,False] m n+ | drop 1 (take 2 choice) == "4" = h2 f (drop 2 . take 3 $ choice) [True,True,True] m n+ | drop 1 (take 2 choice) == "5" = h2 f (drop 2 . take 3 $ choice) [True,True,False] m n+ | drop 1 (take 2 choice) == "6" = h2 f (drop 2 . take 3 $ choice) [True,False,True] m n+ | drop 1 (take 2 choice) == "7" = h2 f (drop 2 . take 3 $ choice) [True,False,False] m n+ | otherwise = rhythmicity0H (helperHF4 n syllableDurationsDs)+ w1F f ch rh = rhythmicityABC 1.0 2.0 0.125 ch rh . mconcat . f . createSyllablesUkrS+ wwF2 g2 xs =+ let n1 = readMaybe xs::Maybe Int in+ case n1 of+ Just n2 -> g2 (helperHF4 n2 syllableDurationsDs)+ Nothing -> g2 syllableDurationsD4+ x1F f ch rh = rhythmicityABC0 1.0 2.0 0.125 ch rh . mconcat . f . createSyllablesUkrS+ xxF = wwF2 x1F+ wwF = wwF2 w1F+ {-# INLINE w1F #-}+ {-# INLINE wwF2 #-}+ {-# INLINE x1F #-}+ {-# INLINE xxF #-}+ {-# INLINE wwF #-}+rhythmicityH' k choice syllableDurationsDs (CF2 x y) =+ case take 1 choice of+ "0" -> case choice of+ "0y" -> rhythmicityKH (helperHF4 1 syllableDurationsDs) (fromMaybe 1.0 x) (fromMaybe 1.0 y)+ "02y" -> rhythmicityKH (helperHF4 2 syllableDurationsDs) (fromMaybe 1.0 x) (fromMaybe 1.0 y)+ "03y" -> rhythmicityKH (helperHF4 3 syllableDurationsDs) (fromMaybe 1.0 x) (fromMaybe 1.0 y)+ "0z" -> rhythmicityKFH (helperHF4 1 syllableDurationsDs) k (fromMaybe 1.0 x) (fromMaybe 1.0 y)+ "02z" -> rhythmicityKFH (helperHF4 2 syllableDurationsDs) k (fromMaybe 1.0 x) (fromMaybe 1.0 y)+ "03z" -> rhythmicityKFH (helperHF4 3 syllableDurationsDs) k (fromMaybe 1.0 x) (fromMaybe 1.0 y)+ "04z" -> rhythmicityKFH (helperHF4 4 syllableDurationsDs) k (fromMaybe 1.0 x) (fromMaybe 1.0 y)+ _ -> rhythmicityKH (helperHF4 1 syllableDurationsDs) (fromMaybe 1.0 x) (fromMaybe 1.0 y)+ "w" -> if+ | (drop 2 . take 3 $ choice) >= "1" && (drop 2 . take 3 $ choice) <= "4" ->+ case take 2 choice of+ "w0" -> wwF (drop 2 . take 3 $ choice) (Ch 1 1 4) (Rhythm 1 1 2)+ "w1" -> wwF (drop 2 . take 3 $ choice) (Ch 1 0 4) (Rhythm 2 1 1)+ "w2" -> wwF (drop 2 . take 3 $ choice) (Ch 0 1 4) (Rhythm 1 2 1)+ "w3" -> wwF (drop 2 . take 3 $ choice) (Ch 0 0 4) (Rhythm 1 1 2)+ _ -> rhythmicity0H (helperHF4 1 syllableDurationsDs)+ | otherwise -> rhythmicity0H (helperHF4 1 syllableDurationsDs)+ where w1F f ch rh = rhythmicityABC 1.0 (fromMaybe 2.0 x) (fromMaybe 0.125 y) ch rh . mconcat . f . createSyllablesUkrS+ wwF xs =+ let n1 = readMaybe xs::Maybe Int in+ case n1 of+ Just n2 -> w1F (helperHF4 n2 syllableDurationsDs)+ Nothing -> w1F syllableDurationsD4+ {-# INLINE w1F #-}+ {-# INLINE wwF #-}+ "x" -> if+ | (drop 2 . take 3 $ choice) >= "1" && (drop 2 . take 3 $ choice) <= "4" ->+ case take 2 choice of+ "x0" -> xxF (drop 2 . take 3 $ choice) (Ch 1 1 4) (Rhythm 1 1 2)+ "x1" -> xxF (drop 2 . take 3 $ choice) (Ch 1 0 4) (Rhythm 2 1 1)+ "x2" -> xxF (drop 2 . take 3 $ choice) (Ch 0 1 4) (Rhythm 1 2 1)+ "x3" -> xxF (drop 2 . take 3 $ choice) (Ch 0 0 4) (Rhythm 1 1 2)+ _ -> rhythmicity0H (helperHF4 1 syllableDurationsDs)+ | otherwise -> rhythmicity0H (helperHF4 1 syllableDurationsDs)+ where x1F f ch rh = rhythmicityABC0 1.0 (fromMaybe 2.0 x) (fromMaybe 0.125 y) ch rh . mconcat . f . createSyllablesUkrS+ xxF xs =+ let n1 = readMaybe xs::Maybe Int in+ case n1 of+ Just n2 -> x1F (helperHF4 n2 syllableDurationsDs)+ Nothing -> x1F syllableDurationsD4+ {-# INLINE x1F #-}+ {-# INLINE xxF #-}+ _ -> if+ | ((take 1 choice >= "b" && take 1 choice <= "v") || (take 1 choice >= "A" && take 1 choice <= "Z" && take 1 choice `notElem` ["G","H"])) -> rhythmicityH' k choice syllableDurationsDs CF0+ | otherwise -> rhythmicityKH+ (let ts = drop 2 . take 3 $ choice in+ case ts of { [] -> syllableDurationsD4 ; ks ->+ let q = readMaybe ks::Maybe Int in+ case q of {Just q' -> helperHF4 q' syllableDurationsDs; ~Nothing -> syllableDurationsD4 }})+ (fromMaybe 1.0 x) (fromMaybe 1.0 y)+++helperHF4 :: Int -> [[[[UZPP2]]] -> [[Double]]] -> [[[UZPP2]]] -> [[Double]]+helperHF4 n xs+ | null xs = syllableDurationsD4+ | (n `rem` length xs) == 0 = head xs+ | otherwise = xs !! ((n `rem` length xs) - 1)
phonetic-languages-simplified-properties-array.cabal view
@@ -2,7 +2,7 @@ -- For further documentation, see http://haskell.org/cabal/users-guide/ name: phonetic-languages-simplified-properties-array-version: 0.8.1.0+version: 0.9.0.0 synopsis: A generalization of the uniqueness-periods-vector-properties package. description: Is a simplified version of the functionality of the former one. Uses lists and arrays as main processment data types. Uses Double whenever applicable. homepage: https://hackage.haskell.org/package/phonetic-languages-simplified-properties-array@@ -11,7 +11,7 @@ author: OleksandrZhabenko maintainer: olexandr543@yahoo.com copyright: Oleksandr Zhabenko-category: Language, Math+category: Language, Math, Game build-type: Simple extra-source-files: CHANGELOG.md cabal-version: >=1.10