csound-expression-5.4.0: library to make electronic music
Safe HaskellNone
LanguageHaskell2010

Csound.Air.Fm

Description

Tools to build Fm synthesis graphs

Example

f a = fmOut1 $ do
 x1 <- fmOsc 1
 x2 <- fmOsc 2
 x1 `fmod` [(a, x2)]
 return x1
Synopsis

Fm graph

type Fm a = State St a Source #

fmOsc' :: (Sig -> SE Sig) -> Sig -> Fm FmNode Source #

Creates fm node with generic wave.

fmOsc' wave modFreq

fmOsc :: Sig -> Fm FmNode Source #

Creates fm node with sine wave.

fmOsc modFreq

fmSig :: Sig -> Fm FmNode Source #

Creates fm node with signal generator (it's independent from the main frequency).

fmod :: FmNode -> [(Sig, FmNode)] -> Fm () Source #

fmOut :: Fm [(Sig, FmNode)] -> Sig -> SE [Sig] Source #

Renders Fm synth to function.

fmOut1 :: Fm FmNode -> Sig -> SE Sig Source #

Renders mono output.

fmOut2 :: Fm (FmNode, FmNode) -> Sig -> SE Sig2 Source #

Renders stereo output.

Simplified Fm graph

data FmSpec Source #

Constructors

FmSpec 

Fields

data FmGraph Source #

Constructors

FmGraph 

Fields

Specific graphs

Algorithms for DX7 fm synth

dx_1 :: FmGraph Source #

  +--+
  6  |
  +--+
  5
  |
2 4
| |
1 3
+---+

dx_2 :: FmGraph Source #

        6
        |
        5
  +--+  |
2  |  4
+--+  |
1     3
  +-----+

dx_3 :: FmGraph Source #

    +--+
3   6  |
|   +--+
2   5
| |
1   4
+---+

dx_4 :: FmGraph Source #

    +--+
  3 6  |
  | |  |
  2 5  |
  | |  |
  1 4  |
  | +--+
      +---+