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

#include <organ.h>

Inheritance diagram for dsp::organ_voice:
dsp::voice dsp::organ_voice_base calf_plugins::organ_enums

Public Member Functions

 organ_voice ()
void reset ()
 reset voice to default state (used when a voice is to be reused)
void note_on (int note, int vel)
 a note was pressed
void note_off (int)
 a note was released
virtual float get_priority ()
virtual void steal ()
 very fast note off
void render_block (int current_snapshot)
virtual int get_current_note ()
 return the note used by this voice
virtual bool get_active ()
 check if voice can be removed from active voice list
void update_pitch ()
bool use_percussion ()
Public Member Functions inherited from dsp::voice
 voice ()
virtual void setup (int sr)
 reset voice to default state (used when a voice is to be reused)
virtual void render_to (float(*buf)[2], int nsamples)=0
 render voice data to buffer
virtual ~voice ()
 empty virtual destructor
Public Member Functions inherited from dsp::organ_voice_base
void update_pitch ()
void render_percussion_to (float(*buf)[2], int nsamples)
void perc_note_on (int note, int vel)
void perc_note_off (int note, int vel)
void perc_reset ()

Protected Types

enum  {
  Channels = 2 , BlockSize = 64 , EnvCount = organ_parameters::EnvCount , FilterCount = organ_parameters::FilterCount ,
  MaxSampleRun = calf_plugins::MAX_SAMPLE_RUN
}

Protected Attributes

union { 
   float   output_buffer [BlockSize][Channels
   float   aux_buffers [3][BlockSize][Channels
}; 
dsp::fixed_point< int64_t, 52 > phase
dsp::fixed_point< int64_t, 52 > dphase
dsp::biquad_d1 filterL [2]
dsp::biquad_d1 filterR [2]
adsr envs [EnvCount]
dsp::inertia< dsp::linear_rampexpression
scanner_vibrato vibrato
float velocity
bool perc_released
bool finishing
 The envelopes have ended and the voice is in final fadeout stage.
dsp::inertia< dsp::exponential_rampinertia_pitchbend
Protected Attributes inherited from dsp::organ_voice_base
int note
dsp::decay amp
dsp::decay pamp
 percussion FM carrier amplitude envelope
dsp::decay fm_amp
 percussion FM modulator amplitude envelope
dsp::fixed_point< int64_t, 20 > pphase
dsp::fixed_point< int64_t, 20 > dpphase
dsp::fixed_point< int64_t, 20 > modphase
dsp::fixed_point< int64_t, 20 > moddphase
float fm_keytrack
intsample_rate_ref
bool & released_ref
float rel_age_const
 pamp per-sample (linear) step during release stage (calculated on release so that it will take 30ms for it to go from "current value at release point" to 0)

Additional Inherited Members

Public Types inherited from dsp::organ_voice_base
typedef waveform_family< ORGAN_WAVE_BITSsmall_wave_family
typedef waveform_family< ORGAN_BIG_WAVE_BITSbig_wave_family
Public Types inherited from calf_plugins::organ_enums
enum  {
  par_drawbar1 , par_drawbar2 , par_drawbar3 , par_drawbar4 ,
  par_drawbar5 , par_drawbar6 , par_drawbar7 , par_drawbar8 ,
  par_drawbar9 , par_frequency1 , par_frequency2 , par_frequency3 ,
  par_frequency4 , par_frequency5 , par_frequency6 , par_frequency7 ,
  par_frequency8 , par_frequency9 , par_waveform1 , par_waveform2 ,
  par_waveform3 , par_waveform4 , par_waveform5 , par_waveform6 ,
  par_waveform7 , par_waveform8 , par_waveform9 , par_detune1 ,
  par_detune2 , par_detune3 , par_detune4 , par_detune5 ,
  par_detune6 , par_detune7 , par_detune8 , par_detune9 ,
  par_phase1 , par_phase2 , par_phase3 , par_phase4 ,
  par_phase5 , par_phase6 , par_phase7 , par_phase8 ,
  par_phase9 , par_pan1 , par_pan2 , par_pan3 ,
  par_pan4 , par_pan5 , par_pan6 , par_pan7 ,
  par_pan8 , par_pan9 , par_routing1 , par_routing2 ,
  par_routing3 , par_routing4 , par_routing5 , par_routing6 ,
  par_routing7 , par_routing8 , par_routing9 , par_foldover ,
  par_percdecay , par_perclevel , par_percwave , par_percharm ,
  par_percvel2amp , par_percfmdecay , par_percfmdepth , par_percfmwave ,
  par_percfmharm , par_percvel2fm , par_perctrigger , par_percstereo ,
  par_filterchain , par_filter1type , par_master , par_f1cutoff ,
  par_f1res , par_f1env1 , par_f1env2 , par_f1env3 ,
  par_f1keyf , par_f2cutoff , par_f2res , par_f2env1 ,
  par_f2env2 , par_f2env3 , par_f2keyf , par_eg1attack ,
  par_eg1decay , par_eg1sustain , par_eg1release , par_eg1velscl ,
  par_eg1ampctl , par_eg2attack , par_eg2decay , par_eg2sustain ,
  par_eg2release , par_eg2velscl , par_eg2ampctl , par_eg3attack ,
  par_eg3decay , par_eg3sustain , par_eg3release , par_eg3velscl ,
  par_eg3ampctl , par_lforate , par_lfoamt , par_lfowet ,
  par_lfophase , par_lfomode , par_lfotype , par_transpose ,
  par_detune , par_polyphony , par_quadenv , par_pwhlrange ,
  par_bassfreq , par_bassgain , par_treblefreq , par_treblegain ,
  par_midi , param_count
}
enum  organ_waveform {
  wave_sine , wave_sinepl1 , wave_sinepl2 , wave_sinepl3 ,
  wave_ssaw , wave_ssqr , wave_spls , wave_saw ,
  wave_sqr , wave_pulse , wave_sinepl05 , wave_sqr05 ,
  wave_halfsin , wave_clvg , wave_bell , wave_bell2 ,
  wave_w1 , wave_w2 , wave_w3 , wave_w4 ,
  wave_w5 , wave_w6 , wave_w7 , wave_w8 ,
  wave_w9 , wave_dsaw , wave_dsqr , wave_dpls ,
  wave_count_small , wave_strings = wave_count_small , wave_strings2 , wave_sinepad ,
  wave_bellpad , wave_space , wave_choir , wave_choir2 ,
  wave_choir3 , wave_count , wave_count_big = wave_count - wave_count_small
}
enum  {
  ampctl_none , ampctl_direct , ampctl_f1 , ampctl_f2 ,
  ampctl_all , ampctl_count
}
enum  {
  lfotype_allpass = 0 , lfotype_cv1 , lfotype_cv2 , lfotype_cv3 ,
  lfotype_cvfull , lfotype_count
}
enum  {
  lfomode_off = 0 , lfomode_direct , lfomode_filter1 , lfomode_filter2 ,
  lfomode_voice , lfomode_global , lfomode_count
}
enum  {
  perctrig_first = 0 , perctrig_each , perctrig_eachplus , perctrig_polyphonic ,
  perctrig_count
}
Static Public Member Functions inherited from dsp::organ_voice_base
static small_wave_familyget_wave (int wave)
static big_wave_familyget_big_wave (int wave)
static void precalculate_waves (calf_plugins::progress_report_iface *reporter)
Public Attributes inherited from dsp::voice
int sample_rate
bool released
bool sostenuto
bool stolen
Public Attributes inherited from dsp::organ_voice_base
organ_parametersparameters
Protected Member Functions inherited from dsp::organ_voice_base
 organ_voice_base (organ_parameters *_parameters, int &_sample_rate_ref, bool &_released_ref)
float wave (float *data, dsp::fixed_point< int, 20 > ph)
float big_wave (float *data, dsp::fixed_point< int64_t, 20 > &ph)
Static Protected Attributes inherited from dsp::organ_voice_base
static small_wave_family(* waves )[wave_count_small]
static big_wave_family(* big_waves )[wave_count_big]

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
protected
Enumerator
Channels 
BlockSize 
EnvCount 
FilterCount 
MaxSampleRun 

Constructor & Destructor Documentation

◆ organ_voice()

dsp::organ_voice::organ_voice ( )
inline

Member Function Documentation

◆ get_active()

virtual bool dsp::organ_voice::get_active ( )
inlinevirtual

check if voice can be removed from active voice list

Implements dsp::voice.

◆ get_current_note()

virtual int dsp::organ_voice::get_current_note ( )
inlinevirtual

return the note used by this voice

Implements dsp::voice.

◆ get_priority()

virtual float dsp::organ_voice::get_priority ( )
inlinevirtual

Reimplemented from dsp::voice.

◆ note_off()

void organ_voice::note_off ( int vel)
virtual

a note was released

Implements dsp::voice.

◆ note_on()

void organ_voice::note_on ( int note,
int vel )
virtual

a note was pressed

Implements dsp::voice.

◆ render_block()

void organ_voice::render_block ( int current_snapshot)

◆ reset()

void organ_voice::reset ( )
virtual

reset voice to default state (used when a voice is to be reused)

Implements dsp::voice.

◆ steal()

void organ_voice::steal ( )
virtual

very fast note off

Implements dsp::voice.

◆ update_pitch()

void organ_voice::update_pitch ( )

◆ use_percussion()

bool dsp::organ_voice::use_percussion ( )
inline

Member Data Documentation

◆ [union]

union { ... } dsp::organ_voice

◆ aux_buffers

float dsp::organ_voice::aux_buffers[3][BlockSize][Channels]

◆ dphase

dsp::fixed_point<int64_t, 52> dsp::organ_voice::dphase
protected

◆ envs

adsr dsp::organ_voice::envs[EnvCount]
protected

◆ expression

dsp::inertia<dsp::linear_ramp> dsp::organ_voice::expression
protected

◆ filterL

dsp::biquad_d1 dsp::organ_voice::filterL[2]
protected

◆ filterR

dsp::biquad_d1 dsp::organ_voice::filterR[2]
protected

◆ finishing

bool dsp::organ_voice::finishing
protected

The envelopes have ended and the voice is in final fadeout stage.

◆ inertia_pitchbend

dsp::inertia<dsp::exponential_ramp> dsp::organ_voice::inertia_pitchbend
protected

◆ output_buffer

float dsp::organ_voice::output_buffer[BlockSize][Channels]

◆ perc_released

bool dsp::organ_voice::perc_released
protected

◆ phase

dsp::fixed_point<int64_t, 52> dsp::organ_voice::phase
protected

◆ velocity

float dsp::organ_voice::velocity
protected

◆ vibrato

scanner_vibrato dsp::organ_voice::vibrato
protected

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