csound-expression-5.1.0: library to make electronic music

Safe HaskellNone
LanguageHaskell98

Csound.Air.Granular.Morpheus

Contents

Description

Wonderful echoes from morpheus. Granular synthesis for morphing between waveforms. It's a simplification of partikkel opcode for the case of morphing.

Synopsis

Documentation

data MorphSpec Source #

Specification of morphing synth. It has the default instance and the values in its records has default instances too

Instances

data GrainDensity Source #

Density of the grain stream.

  • rate is how many grains per second is generated
  • size is the size of each grain in milliseconds (it's good to set it relative to grain rate)
  • skip skip is a skip ratio (0 to 1). It's the probability of grain skip. Zero means no skip and 1 means every grain is left out.

see docs for Csound partikkel opcode for more detailed information http://www.csounds.com/manual/html/partikkel.html

Constructors

GrainDensity 

Fields

data GrainEnv Source #

Parameters for grain envelope.

  • attShape -- table that contains shape of the attack.
  • decShape -- table that contains shape of the decay
  • sustRatio -- how big is sustain phase relative to attack and decay
  • attack to decay ration -- relative amount of attack decay ration. 0.5 means attack equals decay.

see docs for Csound partikkel opcode for more detailed information http://www.csounds.com/manual/html/partikkel.html

Instances

morpheus :: MorphSpec -> [MorphWave] -> Sig -> SE Sig2 Source #

Synth that is based on partikkel. It allows easy morphing between unlimited number of waves. While partikkel allows only 4 waves to be used. We can use as many as we like. Internally the list is split on groups 4 elements or less in each and one partikkel is applied to each group. Many parameters of partikel were simplified to get the good defaults for sound morphing behavior.

morpheus spec waves frequencyScale
  • spec -- contains many misc parameters
  • waves list can contain up to four wave tables to read grains from.
  • frequencyScale -- scaling factor for frequency. 1 means playing at the original frequency, 2 rises the pitch by octave. We can use negative values to play the grains in reverse.

Sound files

morphSnd1 :: MorphSpec -> [(String, WaveAmp, WaveKey)] -> Sig -> SE Sig2 Source #

Morpheus synth for mono-audio files. The first cell in each tripple is occupied by file name. The rest arguments are the same as for morpheus.

morphSnd :: MorphSpec -> [(String, WaveAmp, WaveKey)] -> Sig -> SE Sig2 Source #

Morpheus synth for stereo-audio files. The first cell in each tripple is occupied by file name. The rest arguments are the same as for morpheus.

Amplitude modes

pairToSquare :: (Sig, Sig) -> (Sig, Sig, Sig, Sig) Source #

Creates four control signals out two signals. The control signals are encoded by the position of the point on XY-plane. The four resulting signals are derived from the proximity of the point to four squares of the ((0, 1), (0, 1)) square. It can be useful to control the morpheus with XY-pad controller.

Oscillators

morpheusOsc :: MorphSpec -> (D, Tab) -> Sig -> SE Sig2 Source #

Morpheus oscillator.

morpheusOsc spec (baseFrequency, table) cps

baseFrequency is the frequency of the sample contained in the table. With oscillator we can read the table on different frequencies.

morpheusOsc2 :: MorphSpec -> D -> [(Sig, Tab)] -> (Sig, Sig) -> Sig -> SE Sig2 Source #

Morpheus oscillator. We control the four tables with pair of control signals (see the function pairToSquare).

morpheusOsc2 spec baseFrequency waves (x, y) cps = ...