csound-expression-5.2.1: library to make electronic music

Safe HaskellNone
LanguageHaskell98

Csound.Air.Hvs

Description

Hyper vectorial synthesis

Synopsis

Documentation

type HvsSnapshot = [Double] Source #

Hvs vector

type HvsMatrix1 = [HvsSnapshot] Source #

1D matrix

type HvsMatrix2 = [HvsMatrix1] Source #

2D matrix (grid of vecotrs)

type HvsMatrix3 = [HvsMatrix2] Source #

3D matrix (cube of vectors)

hvs1 :: HvsMatrix1 -> Sig -> SE [Sig] Source #

One dimensional Hyper vectorial synthesis. We can provide a list of vectors (of lists but the same length for all items is assumed) and a signal that ranges from 0 to 1. It interpolates between vectors in the list. As a result we get a n interpolated vector. It's a list but the actual length equals to the length of input vectors.

An example. We can set the center frequency and resonance of the filter with the single parameter:

let f = hvs1 [[100, 0.1], [300, 0.1], [600, 0.5], [800, 0.9]]
 dac $ lift1 (\x -> fmap (\[cps, q] -> mlp cps q (saw 110)) $ f x) (uknob 0.5)

Notice the exact pattern match with the list in the argument of the lambda function:

\[cps, q] -> mlp cps q (saw 110)) $ f x

It's determined by the length of the items in the input list.

hvs2 :: HvsMatrix2 -> Sig2 -> SE [Sig] Source #

Two dimensional Hyper vectorial synthesis. Now we provide a list of lists of vectors. The length of all vectors should be the same but there is no limit for the number! So that's how we can control a lot of parameters with pair of signals. The input 2D atrix is the grid of samples. It finds the closest four points in the grid and interpolates between them (it's a weighted sum).

hvs2 matrix (x, y)

The usage is the same as in the case of hvs1. An example:

g = hvs2 [[[100, 0.1, 0.3], [800, 0.1, 0.5], [1400, 0.1, 0.8]], 
		  [[100, 0.5, 0.3], [800, 0.5, 0.5], [1400, 0.5, 0.8]], 
		  [[100, 0.8, 0.3], [800, 0.8, 0.5], [1400, 0.8, 0.8]]]

main = dac $ do
	(g1, kx) <- uknob 0.5
	(g2, ky) <- uknob 0.5
	[cfq, q, w] <- g (kx, ky)
	panel $ hor [g1, g2]
	at (mlp cfq q) $ fmap (cfd w (saw 110)) (white)

hvs3 :: HvsMatrix3 -> Sig3 -> SE [Sig] Source #

The three dimensional

Csound functions

csdHvs1 :: Sig -> D -> D -> Tab -> Tab -> Tab -> SE () Source #

Allows one-dimensional Hyper Vectorial Synthesis (HVS) controlled by externally-updated k-variables.

hvs1 allows one-dimensional Hyper Vectorial Synthesis (HVS) controlled by externally-updated k-variables.

 hvs1  kx, inumParms, inumPointsX, iOutTab, iPositionsTab, iSnapTab [, iConfigTab]

csound doc: http://www.csounds.com/manual/html/hvs1.html

csdHvs2 :: Sig -> Sig -> D -> D -> D -> Tab -> Tab -> Tab -> SE () Source #

Allows two-dimensional Hyper Vectorial Synthesis (HVS) controlled by externally-updated k-variables.

hvs2 allows two-dimensional Hyper Vectorial Synthesis (HVS) controlled by externally-updated k-variables.

 hvs2  kx, ky, inumParms, inumPointsX, inumPointsY, iOutTab, iPositionsTab, iSnapTab [, iConfigTab]

csound doc: http://www.csounds.com/manual/html/hvs2.html

csdHvs3 :: Sig -> Sig -> Sig -> D -> D -> D -> D -> Tab -> Tab -> Tab -> SE () Source #

Allows three-dimensional Hyper Vectorial Synthesis (HVS) controlled by externally-updated k-variables.

hvs3 allows three-dimensional Hyper Vectorial Synthesis (HVS) controlled by externally-updated k-variables.

 hvs3  kx, ky, kz, inumParms, inumPointsX, inumPointsY, inumPointsZ, iOutTab, iPositionsTab, iSnapTab [, iConfigTab]

csound doc: http://www.csounds.com/manual/html/hvs3.html