Safe Haskell | None |
---|---|
Language | Haskell2010 |
Wonderful echoes from morpheus. Granular synthesis for morphing between waveforms. It's a simplification of partikkel opcode for the case of morphing.
Synopsis
- type WaveAmp = Sig
- type WaveKey = Sig
- type MorphWave = (Tab, WaveAmp, WaveKey, Pointer)
- data MorphSpec = MorphSpec {}
- data GrainDensity = GrainDensity {}
- data GrainEnv = GrainEnv {}
- morpheus :: MorphSpec -> [MorphWave] -> Sig -> SE Sig2
- morphSnd1 :: MorphSpec -> [(String, WaveAmp, WaveKey)] -> Sig -> SE Sig2
- morphSnd :: MorphSpec -> [(String, WaveAmp, WaveKey)] -> Sig -> SE Sig2
- pairToSquare :: (Sig, Sig) -> (Sig, Sig, Sig, Sig)
- morpheusOsc :: MorphSpec -> (D, Tab) -> Sig -> SE Sig2
- morpheusOsc2 :: MorphSpec -> D -> [(Sig, Tab)] -> (Sig, Sig) -> Sig -> SE Sig2
Documentation
Specification of morphing synth. It has the default instance and the values in its records has default instances too
data GrainDensity Source #
Density of the grain stream.
rate
is how many grains per second is generatedsize
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
Instances
Default GrainDensity Source # | |
Defined in Csound.Air.Granular.Morpheus def :: GrainDensity # |
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
GrainEnv | |
|
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.