LMMS
Loading...
Searching...
No Matches
Bitcrush.h
Go to the documentation of this file.
1/*
2 * Bitcrush.h - A native bitcrusher
3 *
4 * Copyright (c) 2014 Vesa Kivimäki <contact/dot/diizy/at/nbl/dot/fi>
5 * Copyright (c) 2006-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
6 *
7 * This file is part of LMMS - https://lmms.io
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public
11 * License as published by the Free Software Foundation; either
12 * version 2 of the License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public
20 * License along with this program (see COPYING); if not, write to the
21 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22 * Boston, MA 02110-1301 USA.
23 *
24 */
25
26
27#ifndef BITCRUSH_H
28#define BITCRUSH_H
29
30#include "Effect.h"
31#include "BitcrushControls.h"
32#include "BasicFilters.h"
33
34
35namespace lmms
36{
37
38
39class BitcrushEffect : public Effect
40{
41public:
42 BitcrushEffect( Model* parent, const Descriptor::SubPluginFeatures::Key* key );
43 ~BitcrushEffect() override;
44
45 ProcessStatus processImpl(SampleFrame* buf, const f_cnt_t frames) override;
46
48 {
49 return &m_controls;
50 }
51
52private:
53 void sampleRateChanged();
54 float depthCrush( float in );
55 float noise( float amt );
56
58
62
68
69 float m_left;
70 float m_right;
71
75
76 float m_inGain;
77 float m_outGain;
78 float m_outClip;
79
81
83
84 friend class BitcrushControls;
85};
86
87
88} // namespace lmms
89
90#endif
friend class BitcrushControls
Definition Bitcrush.h:84
float m_inGain
Definition Bitcrush.h:76
BitcrushControls m_controls
Definition Bitcrush.h:57
float m_rateCoeffR
Definition Bitcrush.h:66
float m_bitCounterR
Definition Bitcrush.h:65
bool m_depthEnabled
Definition Bitcrush.h:74
float m_rateCoeffL
Definition Bitcrush.h:64
float m_left
Definition Bitcrush.h:69
ProcessStatus processImpl(SampleFrame *buf, const f_cnt_t frames) override
Definition Bitcrush.cpp:104
float noise(float amt)
Definition Bitcrush.cpp:99
float m_outClip
Definition Bitcrush.h:78
bool m_rateEnabled
Definition Bitcrush.h:67
float m_levelsRatio
Definition Bitcrush.h:73
float depthCrush(float in)
Definition Bitcrush.cpp:94
EffectControls * controls() override
Definition Bitcrush.h:47
float m_sampleRate
Definition Bitcrush.h:60
void sampleRateChanged()
Definition Bitcrush.cpp:85
int m_silenceCounter
Definition Bitcrush.h:82
float m_bitCounterL
Definition Bitcrush.h:63
float m_outGain
Definition Bitcrush.h:77
BitcrushEffect(Model *parent, const Descriptor::SubPluginFeatures::Key *key)
Definition Bitcrush.cpp:60
float m_right
Definition Bitcrush.h:70
~BitcrushEffect() override
Definition Bitcrush.cpp:79
int m_levels
Definition Bitcrush.h:72
SampleFrame * m_buffer
Definition Bitcrush.h:59
bool m_needsUpdate
Definition Bitcrush.h:80
StereoLinkwitzRiley m_filter
Definition Bitcrush.h:61
Definition EffectControls.h:44
Effect(const Plugin::Descriptor *_desc, Model *_parent, const Descriptor::SubPluginFeatures::Key *_key)
Definition Effect.cpp:41
ProcessStatus
Definition Effect.h:147
Definition Model.h:37
const Descriptor::SubPluginFeatures::Key & key() const
Definition Plugin.h:266
Definition SampleFrame.h:41
static uintptr_t parent
Definition pugl.h:1644
float in
Definition lilv_test.c:1460
Definition AudioAlsa.cpp:35
std::uint64_t f_cnt_t
Definition LmmsTypes.h:43
LinkwitzRiley< 2 > StereoLinkwitzRiley
Definition BasicFilters.h:140