LMMS
Loading...
Searching...
No Matches
Phaser.h
Go to the documentation of this file.
1/*
2 ZynAddSubFX - a software synthesizer
3
4 Phaser.h - Phaser effect
5 Copyright (C) 2002-2005 Nasca Octavian Paul
6 Copyright (C) 2009-2010 Ryan Billing
7 Copyright (C) 2010-2010 Mark McCurry
8 Author: Nasca Octavian Paul
9 Ryan Billing
10 Mark McCurry
11
12 This program is free software; you can redistribute it and/or modify
13 it under the terms of version 2 of the GNU General Public License
14 as published by the Free Software Foundation.
15
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License (version 2 or later) for more details.
20
21 You should have received a copy of the GNU General Public License (version 2)
22 along with this program; if not, write to the Free Software Foundation,
23 Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24
25*/
26
27#ifndef PHASER_H
28#define PHASER_H
29#include "../globals.h"
30#include "Effect.h"
31#include "EffectLFO.h"
32
33#define MAX_PHASER_STAGES 12
34
35class Phaser:public Effect
36{
37 public:
38 Phaser(const int &insertion_, float *efxoutl_, float *efxoutr_, unsigned int srate, int bufsize);
39 ~Phaser();
40 void out(const Stereo<float *> &input);
41 void setpreset(unsigned char npreset);
42 void changepar(int npar, unsigned char value);
43 unsigned char getpar(int npar) const;
44 void cleanup();
45
46 private:
47 //Phaser parameters
48 EffectLFO lfo; //Phaser modulator
49 unsigned char Pvolume; //Used to set wet/dry mix
50 unsigned char Pdistortion; //Model distortion added by FET element
51 unsigned char Pdepth; //Depth of phaser sweep
52 unsigned char Pwidth; //Phaser width (LFO amplitude)
53 unsigned char Pfb; //feedback
54 unsigned char Poffset; //Model mismatch between variable resistors
55 unsigned char Pstages; //Number of first-order All-Pass stages
56 unsigned char Poutsub; //if I wish to subtract the output instead of adding
57 unsigned char Pphase;
58 unsigned char Phyper; //lfo^2 -- converts tri into hyper-sine
59 unsigned char Panalog;
60
61 //Control parameters
62 void setvolume(unsigned char Pvolume);
63 void setdepth(unsigned char Pdepth);
64 void setfb(unsigned char Pfb);
65 void setdistortion(unsigned char Pdistortion);
66 void setwidth(unsigned char Pwidth);
67 void setoffset(unsigned char Poffset);
68 void setstages(unsigned char Pstages);
69 void setphase(unsigned char Pphase);
70
71 //Internal Variables
72 bool barber; //Barber pole phasing flag
77 float invperiod;
78 float offset[12];
79
80 float mis;
81 float Rmin; // 3N5457 typical on resistance at Vgs = 0
82 float Rmax; // Resistor parallel to FET
83 float Rmx; // Rmin/Rmax to avoid division in loop
84 float Rconst; // Handle parallel resistor relationship
85 float C; // Capacitor
86 float CFs; // A constant derived from capacitor and resistor relationships
87
88 void analog_setup();
89 void AnalogPhase(const Stereo<float *> &input);
90 //analog case
91 float applyPhase(float x, float g, float fb,
92 float &hpf, float *yn1, float *xn1);
93
94 void normalPhase(const Stereo<float *> &input);
95 float applyPhase(float x, float g, float *old);
96};
97
98#endif
Effect(bool insertion_, float *efxoutl_, float *efxoutr_, FilterParams *filterpars_, unsigned char Ppreset_, unsigned int srate, int bufsize)
Definition Effect.cpp:28
Definition EffectLFO.h:29
void setstages(unsigned char Pstages)
Definition Phaser.cpp:304
void setphase(unsigned char Pphase)
Definition Phaser.cpp:334
float Rmax
Definition Phaser.h:82
Phaser(const int &insertion_, float *efxoutl_, float *efxoutr_, unsigned int srate, int bufsize)
Definition Phaser.cpp:42
void normalPhase(const Stereo< float * > &input)
Definition Phaser.cpp:191
void AnalogPhase(const Stereo< float * > &input)
Definition Phaser.cpp:106
~Phaser()
Definition Phaser.cpp:79
bool barber
Definition Phaser.h:72
unsigned char Panalog
Definition Phaser.h:59
void setvolume(unsigned char Pvolume)
Definition Phaser.cpp:282
void setwidth(unsigned char Pwidth)
Definition Phaser.cpp:270
void changepar(int npar, unsigned char value)
Definition Phaser.cpp:390
unsigned char Pfb
Definition Phaser.h:53
float CFs
Definition Phaser.h:86
Stereo< float > fb
Definition Phaser.h:76
float Rmx
Definition Phaser.h:83
unsigned char Pvolume
Definition Phaser.h:49
unsigned char getpar(int npar) const
Definition Phaser.cpp:448
float distortion
Definition Phaser.h:73
unsigned char Phyper
Definition Phaser.h:58
float depth
Definition Phaser.h:74
float Rconst
Definition Phaser.h:84
void setoffset(unsigned char Poffset)
Definition Phaser.cpp:298
void setdistortion(unsigned char Pdistortion)
Definition Phaser.cpp:292
float width
Definition Phaser.h:73
float phase
Definition Phaser.h:74
unsigned char Poffset
Definition Phaser.h:54
float C
Definition Phaser.h:85
float Rmin
Definition Phaser.h:81
float offset[12]
Definition Phaser.h:78
Stereo< float > oldgain
Definition Phaser.h:76
Stereo< float * > old
Definition Phaser.h:75
float invperiod
Definition Phaser.h:77
void setpreset(unsigned char npreset)
Definition Phaser.cpp:347
unsigned char Pphase
Definition Phaser.h:57
unsigned char Pdistortion
Definition Phaser.h:50
void cleanup()
Definition Phaser.cpp:252
void analog_setup()
Definition Phaser.cpp:51
void setfb(unsigned char Pfb)
Definition Phaser.cpp:276
float offsetpct
Definition Phaser.h:73
float mis
Definition Phaser.h:80
float applyPhase(float x, float g, float fb, float &hpf, float *yn1, float *xn1)
Definition Phaser.cpp:163
float feedback
Definition Phaser.h:74
unsigned char Pstages
Definition Phaser.h:55
EffectLFO lfo
Definition Phaser.h:48
Stereo< float > diff
Definition Phaser.h:76
void setdepth(unsigned char Pdepth)
Definition Phaser.cpp:340
Stereo< float * > yn1
Definition Phaser.h:75
unsigned char Pwidth
Definition Phaser.h:52
unsigned char Poutsub
Definition Phaser.h:56
unsigned char Pdepth
Definition Phaser.h:51
Stereo< float * > xn1
Definition Phaser.h:75
int g
Definition inflate.c:1573
unsigned x[BMAX+1]
Definition inflate.c:1586
static PuglViewHint int value
Definition pugl.h:1708
float out
Definition lilv_test.c:1461
Definition Stereo.h:25