synthesizer-dimensional-0.8.1: Audio signal processing with static physical dimensions

Safe HaskellNone
LanguageHaskell2010

Synthesizer.Dimensional.Sample

Synopsis

Documentation

data T amp yv #

The constructor is only needed for arr, which is a kind of a hack.

Constructors

Cons amp yv 

Instances

C q yv => C AllpassCascadeGlobal (Parameter q) (T amp yv) (T amp yv) # 

Methods

process :: C u => T s u t (T s (T AllpassCascadeGlobal (RateDep s (Parameter q)), T amp yv) (T amp yv)) #

C q yv => C MoogLowpassGlobal (Parameter q) (T amp yv) (T amp yv) # 

Methods

process :: C u => T s u t (T s (T MoogLowpassGlobal (RateDep s (Parameter q)), T amp yv) (T amp yv)) #

C q yv => C UniversalGlobal (Parameter q) (T amp yv) (T amp (Result yv)) # 

Methods

process :: C u => T s u t (T s (T UniversalGlobal (RateDep s (Parameter q)), T amp yv) (T amp (Result yv))) #

(Storable q, Storable yv, C q yv) => C SecondOrderCascadeGlobal (Parameter q) (T amp yv) (T amp yv) # 

Methods

process :: C u => T s u t (T s (T SecondOrderCascadeGlobal (RateDep s (Parameter q)), T amp yv) (T amp yv)) #

C q yv => C FirstOrderGlobal (Parameter q) (T amp yv) (T amp (Result yv)) # 

Methods

process :: C u => T s u t (T s (T FirstOrderGlobal (RateDep s (Parameter q)), T amp yv) (T amp (Result yv))) #

C q yv => C AllpassPhaserGlobal (q, Parameter q) (T amp yv) (T amp yv) # 

Methods

process :: C u => T s u t (T s (T AllpassPhaserGlobal (RateDep s (q, Parameter q)), T amp yv) (T amp yv)) #

Inspect (T amp yv) # 

Methods

amplitude :: T amp yv -> Amplitude (T amp yv) #

displacement :: T amp yv -> Displacement (T amp yv) #

Build (T amp yv) # 

Methods

build :: Amplitude (T amp yv) -> Displacement (T amp yv) -> T amp yv #

type Displacement (T amp yv) # 
type Displacement (T amp yv) = yv
type Amplitude (T amp yv) # 
type Amplitude (T amp yv) = amp

cons :: C amp => amp -> yv -> T amp yv #

type Dimensional v y yv = T (Dimensional v y) yv #

type Numeric amp yv = T (Numeric amp) yv #

type Flat y = T (Flat y) y #

type Abstract y = T Abstract y #

type family Amplitude sample #

When you define additional instances, take care that displacements and amplitudes cannot be brought out of order!

Instances

type Amplitude (sample0, sample1) # 
type Amplitude (sample0, sample1) = (Amplitude sample0, Amplitude sample1)
type Amplitude (T amp yv) # 
type Amplitude (T amp yv) = amp
type Amplitude (sample0, sample1, sample2) # 
type Amplitude (sample0, sample1, sample2) = (Amplitude sample0, Amplitude sample1, Amplitude sample2)

type family Displacement sample #

Instances

type Displacement (sample0, sample1) # 
type Displacement (sample0, sample1) = (Displacement sample0, Displacement sample1)
type Displacement (T amp yv) # 
type Displacement (T amp yv) = yv
type Displacement (sample0, sample1, sample2) # 
type Displacement (sample0, sample1, sample2) = (Displacement sample0, Displacement sample1, Displacement sample2)

class Build sample where #

Minimal complete definition

build

Methods

build :: Amplitude sample -> Displacement sample -> sample #

Instances

(Build sample0, Build sample1) => Build (sample0, sample1) # 

Methods

build :: Amplitude (sample0, sample1) -> Displacement (sample0, sample1) -> (sample0, sample1) #

Build (T amp yv) # 

Methods

build :: Amplitude (T amp yv) -> Displacement (T amp yv) -> T amp yv #

(Build sample0, Build sample1, Build sample2) => Build (sample0, sample1, sample2) # 

Methods

build :: Amplitude (sample0, sample1, sample2) -> Displacement (sample0, sample1, sample2) -> (sample0, sample1, sample2) #

class Inspect sample where #

Minimal complete definition

amplitude, displacement

Methods

amplitude :: sample -> Amplitude sample #

displacement :: sample -> Displacement sample #

Instances

(Inspect sample0, Inspect sample1) => Inspect (sample0, sample1) # 

Methods

amplitude :: (sample0, sample1) -> Amplitude (sample0, sample1) #

displacement :: (sample0, sample1) -> Displacement (sample0, sample1) #

Inspect (T amp yv) # 

Methods

amplitude :: T amp yv -> Amplitude (T amp yv) #

displacement :: T amp yv -> Displacement (T amp yv) #

(Inspect sample0, Inspect sample1, Inspect sample2) => Inspect (sample0, sample1, sample2) # 

Methods

amplitude :: (sample0, sample1, sample2) -> Amplitude (sample0, sample1, sample2) #

displacement :: (sample0, sample1, sample2) -> Displacement (sample0, sample1, sample2) #