synthesizer-core-0.8.2: Audio signal processing coded in Haskell: Low level part

Copyright(c) Henning Thielemann 2008
LicenseGPL
Maintainersynthesizer@henning-thielemann.de
Stabilityprovisional
Portabilityrequires multi-parameter type classes
Safe HaskellNone
LanguageHaskell2010

Synthesizer.Plain.Filter.Recursive.FirstOrderComplex

Description

First order lowpass and highpass with complex valued feedback. The complex feedback allows resonance. It is often called complex resonator.

Synopsis

Documentation

data Parameter a Source #

Instances

C a v => C a (Parameter v) Source # 
Show a => Show (Parameter a) Source # 

parameter :: C a => Pole a -> Parameter a Source #

The internal parameters are computed such that:

  • At the resonance frequency the filter amplifies by the factor resonance with no phase shift.
  • At resonance frequency plus half sample rate the filter amplifies by facter recip $ 2 - recip resonance with no phase shift, but you cannot observe this immediately, because it is outside the Nyquist band.

parameterFromPeakWidth :: C a => a -> Pole a -> Parameter a Source #

The internal parameters are computed such that:

  • At the resonance frequency the filter amplifies by the factor resonance with no phase shift.
  • At resonance frequency plus and minus band width the filter amplifies by facter 1 with a non-zero phase shift.

parameterFromPeakToDCRatio :: C a => Pole a -> Parameter a Source #

The internal parameters are computed such that:

  • At the resonance frequency the filter amplifies by the factor resonance with a non-zero phase shift.
  • The filter amplifies the direct current (frequency zero) by factor 1 with no phase shift.
  • The real component is a lowpass, the imaginary component is a highpass. You can interpolate between them using other complex projections.

step :: C a v => Parameter a -> v -> State (T v) (Result v) Source #

Universal filter: Computes high pass, band pass, low pass in one go

modifierInit :: (C a, C a v) => Initialized (T v) (T v) (Parameter a) v (Result v) Source #

modifier :: (C a, C a v) => Simple (T v) (Parameter a) v (Result v) Source #

causal :: (C a, C a v) => T (Parameter a, v) (Result v) Source #

runInit :: (C a, C a v) => T v -> T (Parameter a) -> T v -> T (Result v) Source #

run :: (C a, C a v) => T (Parameter a) -> T v -> T (Result v) Source #