LMMS
Loading...
Searching...
No Matches
dsp::scanner_vibrato Class Reference

#include <organ.h>

Public Member Functions

void reset ()
void process (organ_parameters *parameters, float(*data)[2], unsigned int len, float sample_rate)

Protected Types

enum  { ScannerSize = 18 }

Protected Attributes

float lfo_phase
dsp::biquad_d2 scanner [ScannerSize]
organ_vibrato legacy

Detailed Description

A more sophisticated simulation of scanner vibrato. Simulates a line box and an interpolating scanner. The line box is a series of 18 2nd order lowpass filters with cutoff frequency ~4kHz, with loss compensation. The interpolating scanner uses linear interpolation to "slide" between selected outputs of the line box.

Note
This is a true CPU hog, and it should be optimised some day.
The line box is mono. 36 lowpass filters might be an overkill.
See also: http://www.jhaible.de/interpolating_scanner_and_scanvib/jh_interpolating_scanner_and_scanvib.html (though it's a very loose adaptation of that version)

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
protected
Enumerator
ScannerSize 

Member Function Documentation

◆ process()

void scanner_vibrato::process ( organ_parameters * parameters,
float(*) data[2],
unsigned int len,
float sample_rate )

◆ reset()

void scanner_vibrato::reset ( )

Member Data Documentation

◆ legacy

organ_vibrato dsp::scanner_vibrato::legacy
protected

◆ lfo_phase

float dsp::scanner_vibrato::lfo_phase
protected

◆ scanner

dsp::biquad_d2 dsp::scanner_vibrato::scanner[ScannerSize]
protected

The documentation for this class was generated from the following files: