-- |
-- Module      :  Composition.Sound.Extended
-- Copyright   :  (c) OleksandrZhabenko 2020-2021
-- License     :  MIT
-- Stability   :  Experimental
-- Maintainer  :  olexandr543@yahoo.com
--
-- 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.

{-# OPTIONS_GHC -threaded #-}

module Composition.Sound.Extended (
  -- * Even more extended
  dviykyTA
  , triykyTA
  , chetvirkyTA
  , p'yatirkyTA
  , shistkyTA
  , simkyTA
  , visimkyTA
  , dev'yatkyTA
  , desyatkyTA
  , odynadtsyatkyTA
  , octavesTA
) where

--import qualified Data.Vector as V
import GHC.Arr
import Composition.Sound.Functional.Basics (NotePairs,notes)

dviykyTA :: NotePairs
dviykyTA :: NotePairs
dviykyTA = (Int -> (Float, Float)) -> Array Int Int -> NotePairs
forall a b i. (a -> b) -> Array i a -> Array i b
amap (\Int
i -> (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes Int
i, Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1))) (Array Int Int -> NotePairs)
-> ([Int] -> Array Int Int) -> [Int] -> NotePairs
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int, Int) -> [Int] -> Array Int Int
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,Int
106) ([Int] -> NotePairs) -> [Int] -> NotePairs
forall a b. (a -> b) -> a -> b
$ [Int
0..Int
106]

triykyTA :: NotePairs
triykyTA :: NotePairs
triykyTA = (Int -> (Float, Float)) -> Array Int Int -> NotePairs
forall a b i. (a -> b) -> Array i a -> Array i b
amap (\Int
i -> (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes Int
i, Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
2))) (Array Int Int -> NotePairs)
-> ([Int] -> Array Int Int) -> [Int] -> NotePairs
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int, Int) -> [Int] -> Array Int Int
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,Int
105) ([Int] -> NotePairs) -> [Int] -> NotePairs
forall a b. (a -> b) -> a -> b
$ [Int
0..Int
105]

chetvirkyTA :: NotePairs
chetvirkyTA :: NotePairs
chetvirkyTA = (Int -> (Float, Float)) -> Array Int Int -> NotePairs
forall a b i. (a -> b) -> Array i a -> Array i b
amap (\Int
i -> (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes Int
i, Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
3))) (Array Int Int -> NotePairs)
-> ([Int] -> Array Int Int) -> [Int] -> NotePairs
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int, Int) -> [Int] -> Array Int Int
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,Int
104) ([Int] -> NotePairs) -> [Int] -> NotePairs
forall a b. (a -> b) -> a -> b
$ [Int
0..Int
104]

p'yatirkyTA :: NotePairs
p'yatirkyTA :: NotePairs
p'yatirkyTA = (Int -> (Float, Float)) -> Array Int Int -> NotePairs
forall a b i. (a -> b) -> Array i a -> Array i b
amap (\Int
i -> (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes Int
i, Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
4))) (Array Int Int -> NotePairs)
-> ([Int] -> Array Int Int) -> [Int] -> NotePairs
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int, Int) -> [Int] -> Array Int Int
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,Int
103) ([Int] -> NotePairs) -> [Int] -> NotePairs
forall a b. (a -> b) -> a -> b
$ [Int
0..Int
103]

shistkyTA :: NotePairs
shistkyTA :: NotePairs
shistkyTA = (Int -> (Float, Float)) -> Array Int Int -> NotePairs
forall a b i. (a -> b) -> Array i a -> Array i b
amap (\Int
i -> (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes Int
i, Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
5))) (Array Int Int -> NotePairs)
-> ([Int] -> Array Int Int) -> [Int] -> NotePairs
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int, Int) -> [Int] -> Array Int Int
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,Int
102) ([Int] -> NotePairs) -> [Int] -> NotePairs
forall a b. (a -> b) -> a -> b
$ [Int
0..Int
102]

simkyTA :: NotePairs
simkyTA :: NotePairs
simkyTA = (Int -> (Float, Float)) -> Array Int Int -> NotePairs
forall a b i. (a -> b) -> Array i a -> Array i b
amap (\Int
i -> (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes Int
i, Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
6))) (Array Int Int -> NotePairs)
-> ([Int] -> Array Int Int) -> [Int] -> NotePairs
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int, Int) -> [Int] -> Array Int Int
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,Int
101) ([Int] -> NotePairs) -> [Int] -> NotePairs
forall a b. (a -> b) -> a -> b
$ [Int
0..Int
101]

visimkyTA :: NotePairs
visimkyTA :: NotePairs
visimkyTA = (Int -> (Float, Float)) -> Array Int Int -> NotePairs
forall a b i. (a -> b) -> Array i a -> Array i b
amap (\Int
i -> (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes Int
i, Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
7))) (Array Int Int -> NotePairs)
-> ([Int] -> Array Int Int) -> [Int] -> NotePairs
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int, Int) -> [Int] -> Array Int Int
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,Int
100) ([Int] -> NotePairs) -> [Int] -> NotePairs
forall a b. (a -> b) -> a -> b
$ [Int
0..Int
100]

dev'yatkyTA :: NotePairs
dev'yatkyTA :: NotePairs
dev'yatkyTA = (Int -> (Float, Float)) -> Array Int Int -> NotePairs
forall a b i. (a -> b) -> Array i a -> Array i b
amap (\Int
i -> (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes Int
i, Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
8))) (Array Int Int -> NotePairs)
-> ([Int] -> Array Int Int) -> [Int] -> NotePairs
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int, Int) -> [Int] -> Array Int Int
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,Int
99) ([Int] -> NotePairs) -> [Int] -> NotePairs
forall a b. (a -> b) -> a -> b
$ [Int
0..Int
99]

desyatkyTA :: NotePairs
desyatkyTA :: NotePairs
desyatkyTA = (Int -> (Float, Float)) -> Array Int Int -> NotePairs
forall a b i. (a -> b) -> Array i a -> Array i b
amap (\Int
i -> (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes Int
i, Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
9))) (Array Int Int -> NotePairs)
-> ([Int] -> Array Int Int) -> [Int] -> NotePairs
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int, Int) -> [Int] -> Array Int Int
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,Int
98) ([Int] -> NotePairs) -> [Int] -> NotePairs
forall a b. (a -> b) -> a -> b
$ [Int
0..Int
98]

odynadtsyatkyTA  :: NotePairs
odynadtsyatkyTA :: NotePairs
odynadtsyatkyTA = (Int -> (Float, Float)) -> Array Int Int -> NotePairs
forall a b i. (a -> b) -> Array i a -> Array i b
amap (\Int
i -> (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes Int
i, Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
10))) (Array Int Int -> NotePairs)
-> ([Int] -> Array Int Int) -> [Int] -> NotePairs
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int, Int) -> [Int] -> Array Int Int
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,Int
97) ([Int] -> NotePairs) -> [Int] -> NotePairs
forall a b. (a -> b) -> a -> b
$ [Int
0..Int
97]

octavesTA :: NotePairs
octavesTA :: NotePairs
octavesTA = (Int -> (Float, Float)) -> Array Int Int -> NotePairs
forall a b i. (a -> b) -> Array i a -> Array i b
amap (\Int
i -> (Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes Int
i, Array Int Float -> Int -> Float
forall i e. Array i e -> Int -> e
unsafeAt Array Int Float
notes (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
11))) (Array Int Int -> NotePairs)
-> ([Int] -> Array Int Int) -> [Int] -> NotePairs
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int, Int) -> [Int] -> Array Int Int
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (Int
0,Int
96) ([Int] -> NotePairs) -> [Int] -> NotePairs
forall a b. (a -> b) -> a -> b
$ [Int
0..Int
96]

--------------------------------------------------------------------------------------------------------------------------