LMMS
Loading...
Searching...
No Matches
ModFilter.h
Go to the documentation of this file.
1/*
2 ZynAddSubFX - a software synthesizer
3
4 ModFilter.h - Modulated Filter
5 Copyright (C) 2016 Mark McCurry
6
7 This program is free software; you can redistribute it and/or
8 modify it under the terms of the GNU General Public License
9 as published by the Free Software Foundation; either version 2
10 of the License, or (at your option) any later version.
11*/
12#pragma once
13#include "../globals.h"
14#include "../Misc/Time.h"
15
16namespace zyncarla {
17
18//Modulated instance of one of the filters in src/DSP/
19//Supports stereo modes
21{
22 public:
24 const SYNTH_T &synth,
25 const AbsTime &time,
27 bool stereo,
28 float notefreq_);
29 ~ModFilter(void);
30
31 void addMod(LFO &lfo);
32 void addMod(Envelope &env);
33
34 //normal per tick update
35 void update(float relfreq, float relq);
36
37 //updates typically seen in note-init
38 void updateNoteFreq(float noteFreq_);
39 void updateSense(float velocity,
40 uint8_t scale, uint8_t func);
41
42 //filter stereo/mono signal(s) in-place
43 void filter(float *l, float *r);
44 private:
45 void paramUpdate(Filter *&f);
46 void svParamUpdate(SVFilter &sv);
48
49
50 const FilterParams &pars; //Parameters to Pull Updates From
51 const SYNTH_T &synth; //Synthesizer Buffer Parameters
52 const AbsTime &time; //Time for RT Updates
53 Allocator &alloc; //RT Memory Pool
54
55
56
57 float baseQ; //filter sharpness
58 float baseFreq; //base filter frequency
59 float noteFreq; //frequency note was initialized to
60 float tracking; //shift due to note frequency
61 float sense; //shift due to note velocity
62
63
64 Filter *left; //left channel filter
65 Filter *right;//right channel filter
66 Envelope *env; //center freq envelope
67 LFO *lfo; //center freq lfo
68};
69
70}
Definition Time.h:19
Definition Allocator.h:22
Definition AnalogFilter.h:28
Definition Envelope.h:24
Definition Filter.h:22
Definition FilterParams.h:24
Definition LFO.h:25
Allocator & alloc
Definition ModFilter.h:53
const SYNTH_T & synth
Definition ModFilter.h:51
void svParamUpdate(SVFilter &sv)
Definition ModFilter.cpp:152
Filter * right
Definition ModFilter.h:65
void updateNoteFreq(float noteFreq_)
Definition ModFilter.cpp:99
const AbsTime & time
Definition ModFilter.h:52
~ModFilter(void)
Definition ModFilter.cpp:52
float tracking
Definition ModFilter.h:60
float baseFreq
Definition ModFilter.h:58
LFO * lfo
Definition ModFilter.h:67
void addMod(LFO &lfo)
Definition ModFilter.cpp:58
Envelope * env
Definition ModFilter.h:66
void anParamUpdate(AnalogFilter &an)
Definition ModFilter.cpp:158
const FilterParams & pars
Definition ModFilter.h:50
void updateSense(float velocity, uint8_t scale, uint8_t func)
Definition ModFilter.cpp:105
void filter(float *l, float *r)
Definition ModFilter.cpp:112
void paramUpdate(Filter *&f)
Definition ModFilter.cpp:133
float sense
Definition ModFilter.h:61
Filter * left
Definition ModFilter.h:64
float baseQ
Definition ModFilter.h:57
void update(float relfreq, float relq)
Definition ModFilter.cpp:69
ModFilter(const FilterParams &pars, const SYNTH_T &synth, const AbsTime &time, Allocator &alloc, bool stereo, float notefreq_)
Definition ModFilter.cpp:26
float noteFreq
Definition ModFilter.h:59
Definition SVFilter.h:23
int * l
Definition inflate.c:1579
unsigned f
Definition inflate.c:1572
unsigned char uint8_t
Definition mid.cpp:98
Definition zynaddsubfx-src.cpp:569
Definition globals.h:294
int r
Definition crypt.c:458