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

Portabilityrequires multi-parameter type classes



Comb filters, useful for emphasis of tones with harmonics and for repeated echos.



karplusStrong :: (C t, C t y, Write sig y) => Parameter t -> sig y -> sig ySource

The most simple version of the Karplus-Strong algorithm which is suitable to simulate a plucked string. It is similar to the runProc function.

run :: (C t y, Write sig y) => Int -> t -> sig y -> sig ySource

Infinitely many equi-delayed exponentially decaying echos. The echos are clipped to the input length. We think it is easier (and simpler to do efficiently) to pad the input with zeros or whatever instead of cutting the result according to the input length.

runMulti :: (C t, C t y, Write sig y) => [Int] -> t -> sig y -> sig ySource

Echos of different delays. Chunk size must be smaller than all of the delay times.

runProc :: (C y, Write sig y) => Int -> (sig y -> sig y) -> sig y -> sig ySource

Echos can be piped through an arbitrary signal processor.