LMMS
Loading...
Searching...
No Matches
BitInvader.h
Go to the documentation of this file.
1/*
2 * BitInvader.h - declaration of class BitInvader and BSynth which
3 * are a wavetable synthesizer
4 *
5 * Copyright (c) 2006-2008 Andreas Brandmaier <andy/at/brandmaier/dot/de>
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 BIT_INVADER_H
28#define BIT_INVADER_H
29
30#include "AutomatableModel.h"
31#include "Instrument.h"
32#include "InstrumentView.h"
33#include "Graph.h"
34
35namespace lmms
36{
37
38
39namespace gui
40{
41class BitInvaderView;
42class Knob;
43class LedCheckBox;
44class PixmapButton;
45}
46
47
48class BSynth
49{
50public:
51 BSynth( float * sample, NotePlayHandle * _nph,
52 bool _interpolation, float factor,
53 const sample_rate_t _sample_rate );
54 virtual ~BSynth();
55
56 sample_t nextStringSample( float sample_length );
57
58
59private:
65
67
68} ;
69
70class BitInvader : public Instrument
71{
72 Q_OBJECT
73public:
74 BitInvader(InstrumentTrack * _instrument_track );
75 ~BitInvader() override = default;
76
77 void playNote( NotePlayHandle * _n,
78 SampleFrame* _working_buffer ) override;
79 void deleteNotePluginData( NotePlayHandle * _n ) override;
80
81
82 void saveSettings( QDomDocument & _doc,
83 QDomElement & _parent ) override;
84 void loadSettings( const QDomElement & _this ) override;
85
86 QString nodeName() const override;
87
88 float desiredReleaseTimeMs() const override
89 {
90 return 1.5f;
91 }
92
93 gui::PluginView * instantiateView( QWidget * _parent ) override;
94
95protected slots:
96 void lengthChanged();
97 void samplesChanged( int, int );
98
99 void normalize();
100
101
102private:
105
108
110
112} ;
113
114
115namespace gui
116{
117
119{
120 Q_OBJECT
121public:
122 BitInvaderView( Instrument * _instrument,
123 QWidget * _parent );
124
125 ~BitInvaderView() override = default;
126
127protected slots:
128 //void sampleSizeChanged( float _new_sample_length );
129
130 void interpolationToggled( bool value );
131 void normalizeToggled( bool value );
132
133 void sinWaveClicked();
134 void triangleWaveClicked();
135 void sqrWaveClicked();
136 void sawWaveClicked();
137 void noiseWaveClicked();
138 void usrWaveClicked();
139
140 void smoothClicked( );
141
142private:
143 void modelChanged() override;
144
153
154 static QPixmap * s_artwork;
155
159
160} ;
161
162
163} // namespace gui
164
165} // namespace lmms
166
167#endif
bool interpolation
Definition BitInvader.h:66
virtual ~BSynth()
Definition BitInvader.cpp:97
NotePlayHandle * nph
Definition BitInvader.h:63
BSynth(float *sample, NotePlayHandle *_nph, bool _interpolation, float factor, const sample_rate_t _sample_rate)
Definition BitInvader.cpp:71
int sample_index
Definition BitInvader.h:60
float sample_realindex
Definition BitInvader.h:61
const sample_rate_t sample_rate
Definition BitInvader.h:64
sample_t nextStringSample(float sample_length)
Definition BitInvader.cpp:103
float * sample_shape
Definition BitInvader.h:62
void saveSettings(QDomDocument &_doc, QDomElement &_parent) override
Definition BitInvader.cpp:158
QString nodeName() const override
Definition BitInvader.cpp:249
BoolModel m_normalize
Definition BitInvader.h:107
graphModel m_graph
Definition BitInvader.h:104
void lengthChanged()
Definition BitInvader.cpp:214
gui::PluginView * instantiateView(QWidget *_parent) override
Create a view for the model.
Definition BitInvader.cpp:293
void normalize()
Definition BitInvader.cpp:233
BitInvader(InstrumentTrack *_instrument_track)
Definition BitInvader.cpp:135
void loadSettings(const QDomElement &_this) override
Definition BitInvader.cpp:184
float m_normalizeFactor
Definition BitInvader.h:109
FloatModel m_sampleLength
Definition BitInvader.h:103
BoolModel m_interpolation
Definition BitInvader.h:106
~BitInvader() override=default
void playNote(NotePlayHandle *_n, SampleFrame *_working_buffer) override
Definition BitInvader.cpp:257
void deleteNotePluginData(NotePlayHandle *_n) override
Definition BitInvader.cpp:285
void samplesChanged(int, int)
Definition BitInvader.cpp:224
float desiredReleaseTimeMs() const override
Definition BitInvader.h:88
Definition AutomatableModel.h:497
Definition AutomatableModel.h:463
Definition Instrument.h:52
Instrument(InstrumentTrack *_instrument_track, const Descriptor *_descriptor, const Descriptor::SubPluginFeatures::Key *key=nullptr, Flags flags=Flag::NoFlags)
Definition Instrument.cpp:38
Definition InstrumentTrack.h:62
Definition NotePlayHandle.h:48
Definition SampleFrame.h:41
2 dimensional function plot
Definition Graph.h:134
Definition BitInvader.h:119
PixmapButton * m_sawWaveBtn
Definition BitInvader.h:149
Graph * m_graph
Definition BitInvader.h:156
PixmapButton * m_sqrWaveBtn
Definition BitInvader.h:148
void sqrWaveClicked()
Definition BitInvader.cpp:482
void smoothClicked()
Definition BitInvader.cpp:516
void sawWaveClicked()
Definition BitInvader.cpp:472
Knob * m_sampleLengthKnob
Definition BitInvader.h:145
void interpolationToggled(bool value)
Definition BitInvader.cpp:525
PixmapButton * m_smoothBtn
Definition BitInvader.h:151
LedCheckBox * m_interpolationToggle
Definition BitInvader.h:157
PixmapButton * m_whiteNoiseWaveBtn
Definition BitInvader.h:150
void sinWaveClicked()
Definition BitInvader.cpp:452
PixmapButton * m_usrWaveBtn
Definition BitInvader.h:152
PixmapButton * m_sinWaveBtn
Definition BitInvader.h:146
void noiseWaveClicked()
Definition BitInvader.cpp:492
LedCheckBox * m_normalizeToggle
Definition BitInvader.h:158
void usrWaveClicked()
Definition BitInvader.cpp:502
void triangleWaveClicked()
Definition BitInvader.cpp:462
void modelChanged() override
Definition BitInvader.cpp:438
~BitInvaderView() override=default
BitInvaderView(Instrument *_instrument, QWidget *_parent)
Definition BitInvader.cpp:305
static QPixmap * s_artwork
Definition BitInvader.h:154
void normalizeToggled(bool value)
Definition BitInvader.cpp:534
PixmapButton * m_triangleWaveBtn
Definition BitInvader.h:147
Definition Graph.h:48
Instrument view with fixed LMMS-default size.
Definition InstrumentView.h:66
Definition Knob.h:47
Definition LedCheckBox.h:37
Definition PixmapButton.h:37
Definition PluginView.h:36
static PuglViewHint int value
Definition pugl.h:1708
Definition AudioPortAudio.cpp:223
Definition AudioAlsa.cpp:35
std::uint32_t sample_rate_t
Definition LmmsTypes.h:42
float sample_t
Definition LmmsTypes.h:39
signed int sample
Definition tap_dynamics_m.c:41