libresidfp  1.2.3
Filter8580.h
1 /*
2  * This file is part of libsidplayfp, a SID player engine.
3  *
4  * Copyright 2011-2026 Leandro Nini <drfiemost@users.sourceforge.net>
5  * Copyright 2007-2010 Antti Lankila
6  * Copyright 2004,2010 Dag Lem <resid@nimrod.no>
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21  */
22 
23 #ifndef FILTER8580_H
24 #define FILTER8580_H
25 
26 #include "Filter.h"
27 #include "FilterModelConfig8580.h"
28 #include "Integrator8580.h"
29 
30 #include "siddefs-fp.h"
31 
32 namespace reSIDfp
33 {
34 
35 class Integrator8580;
36 
277 class Filter8580 final : public Filter
278 {
279  friend class State;
280 
281 private:
283  Integrator8580 hpIntegrator;
284 
286  Integrator8580 bpIntegrator;
287 
288  double cp;
289 
290 protected:
294  void updateCenterFrequency() override;
295 
296  void restartIntegrators() override { hpIntegrator.restart(); bpIntegrator.restart(); }
297 
298  int32_t getNormalizedMixerVoice(float v, uint8_t env) const override
299  {
300  return getNormalizedVoice(v, env);
301  }
302 
303 public:
304  Filter8580() :
305  Filter(*FilterModelConfig8580::getInstance(), hpIntegrator, bpIntegrator),
306  hpIntegrator(*FilterModelConfig8580::getInstance()),
307  bpIntegrator(*FilterModelConfig8580::getInstance())
308  {
309  setFilterCurve(0.5);
310  }
311 
312  ~Filter8580() override;
313 
320  void setFilterCurve(double curvePosition);
321 };
322 
323 } // namespace reSIDfp
324 
325 #endif
Definition: Dac.cpp:27