lmms
Cross-platform music production software
Toggle main menu visibility
Loading...
Searching...
No Matches
plugins
Bitcrush
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
35
namespace
lmms
36
{
37
38
39
class
BitcrushEffect
:
public
Effect
40
{
41
public
:
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
47
EffectControls
*
controls
()
override
48
{
49
return
&
m_controls
;
50
}
51
52
private
:
53
void
sampleRateChanged
();
54
float
depthCrush
(
float
in );
55
float
noise
(
float
amt );
56
57
BitcrushControls
m_controls
;
58
59
SampleFrame
*
m_buffer
;
60
float
m_sampleRate
;
61
StereoLinkwitzRiley
m_filter
;
62
63
float
m_bitCounterL
;
64
float
m_rateCoeffL
;
65
float
m_bitCounterR
;
66
float
m_rateCoeffR
;
67
bool
m_rateEnabled
;
68
69
float
m_left
;
70
float
m_right
;
71
72
int
m_levels
;
73
float
m_levelsRatio
;
74
bool
m_depthEnabled
;
75
76
float
m_inGain
;
77
float
m_outGain
;
78
float
m_outClip
;
79
80
bool
m_needsUpdate
;
81
82
int
m_silenceCounter
;
83
84
friend
class
BitcrushControls
;
85
};
86
87
88
}
// namespace lmms
89
90
#endif
BasicFilters.h
BitcrushControls.h
Effect.h
lmms::BitcrushEffect::BitcrushControls
friend class BitcrushControls
Definition
Bitcrush.h:84
lmms::BitcrushEffect::m_inGain
float m_inGain
Definition
Bitcrush.h:76
lmms::BitcrushEffect::m_controls
BitcrushControls m_controls
Definition
Bitcrush.h:57
lmms::BitcrushEffect::m_rateCoeffR
float m_rateCoeffR
Definition
Bitcrush.h:66
lmms::BitcrushEffect::m_bitCounterR
float m_bitCounterR
Definition
Bitcrush.h:65
lmms::BitcrushEffect::m_depthEnabled
bool m_depthEnabled
Definition
Bitcrush.h:74
lmms::BitcrushEffect::m_rateCoeffL
float m_rateCoeffL
Definition
Bitcrush.h:64
lmms::BitcrushEffect::m_left
float m_left
Definition
Bitcrush.h:69
lmms::BitcrushEffect::processImpl
ProcessStatus processImpl(SampleFrame *buf, const f_cnt_t frames) override
Definition
Bitcrush.cpp:104
lmms::BitcrushEffect::noise
float noise(float amt)
Definition
Bitcrush.cpp:99
lmms::BitcrushEffect::m_outClip
float m_outClip
Definition
Bitcrush.h:78
lmms::BitcrushEffect::m_rateEnabled
bool m_rateEnabled
Definition
Bitcrush.h:67
lmms::BitcrushEffect::m_levelsRatio
float m_levelsRatio
Definition
Bitcrush.h:73
lmms::BitcrushEffect::depthCrush
float depthCrush(float in)
Definition
Bitcrush.cpp:94
lmms::BitcrushEffect::controls
EffectControls * controls() override
Definition
Bitcrush.h:47
lmms::BitcrushEffect::m_sampleRate
float m_sampleRate
Definition
Bitcrush.h:60
lmms::BitcrushEffect::sampleRateChanged
void sampleRateChanged()
Definition
Bitcrush.cpp:85
lmms::BitcrushEffect::m_silenceCounter
int m_silenceCounter
Definition
Bitcrush.h:82
lmms::BitcrushEffect::m_bitCounterL
float m_bitCounterL
Definition
Bitcrush.h:63
lmms::BitcrushEffect::m_outGain
float m_outGain
Definition
Bitcrush.h:77
lmms::BitcrushEffect::BitcrushEffect
BitcrushEffect(Model *parent, const Descriptor::SubPluginFeatures::Key *key)
Definition
Bitcrush.cpp:60
lmms::BitcrushEffect::m_right
float m_right
Definition
Bitcrush.h:70
lmms::BitcrushEffect::m_levels
int m_levels
Definition
Bitcrush.h:72
lmms::BitcrushEffect::m_buffer
SampleFrame * m_buffer
Definition
Bitcrush.h:59
lmms::BitcrushEffect::m_needsUpdate
bool m_needsUpdate
Definition
Bitcrush.h:80
lmms::BitcrushEffect::m_filter
StereoLinkwitzRiley m_filter
Definition
Bitcrush.h:61
lmms::EffectControls
Definition
EffectControls.h:44
lmms::Effect::Effect
Effect(const Plugin::Descriptor *_desc, Model *_parent, const Descriptor::SubPluginFeatures::Key *_key)
Definition
Effect.cpp:41
lmms::Effect::ProcessStatus
ProcessStatus
Definition
Effect.h:150
lmms::Model
Definition
Model.h:37
lmms::Plugin::key
const Descriptor::SubPluginFeatures::Key & key() const
Definition
Plugin.h:272
lmms::SampleFrame
Definition
SampleFrame.h:41
lmms
Definition
RemotePluginBase.cpp:34
lmms::f_cnt_t
std::uint64_t f_cnt_t
Definition
LmmsTypes.h:43
lmms::StereoLinkwitzRiley
LinkwitzRiley< 2 > StereoLinkwitzRiley
Definition
BasicFilters.h:140
Generated on
for lmms by
1.18.0