initial M/V-split of TripleOscillator - lots of debugging and cleanups pending, however basically works :)

git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/branches/lmms-mv@676 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
Tobias Doerffel
2008-01-26 00:44:21 +00:00
parent 81434922d3
commit 36f7b4de0f
3 changed files with 676 additions and 566 deletions

View File

@@ -1,3 +1,25 @@
2008-01-26 Tobias Doerffel <tobydox/at/users/dot/sourceforge/dot/net>
* plugins/triple_oscillator/triple_oscillator.h:
* plugins/triple_oscillator/triple_oscillator.cpp:
initial M/V-split - lots of debugging and cleanups pending, however
basically works :)
* include/transformable_auto_model.h:
added transformableAutoModel-class which is not used yet but might be
helpful in some cases in the future
* include/oscillator.h:
* src/lib/oscillator.cpp:
- changed coding-style for enum-constants
- use model for external wave-shape- and modulation-algo-parameter
* src/widgets/ladspa_control_view.cpp:
added missing header
* src/widgets/automatable_button.cpp:
update buttons after changing button-group's value
2008-01-24 Tobias Doerffel <tobydox/at/users/dot/sourceforge/dot/net>
* include/types.h:

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
* triple_oscillator.h - declaration of class tripleOscillator a powerful
* instrument-plugin with 3 oscillators
*
* Copyright (c) 2004-2007 Tobias Doerffel <tobydox/at/users.sourceforge.net>
* Copyright (c) 2004-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
* This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
*
@@ -28,7 +28,9 @@
#include "instrument.h"
#include "instrument_view.h"
#include "oscillator.h"
#include "automatable_model.h"
class automatableButtonGroup;
@@ -41,25 +43,29 @@ class volumeKnob;
const int NUM_OF_OSCILLATORS = 3;
class oscillatorObject : public QObject
class oscillatorObject : public model
{
Q_OBJECT
public:
oscillatorObject( model * _parent, track * _track );
virtual ~oscillatorObject();
private:
oscillator::waveShapes m_waveShape;
volumeKnob * m_volKnob;
knob * m_panKnob;
knob * m_coarseKnob;
knob * m_fineLKnob;
knob * m_fineRKnob;
knob * m_phaseOffsetKnob;
knob * m_stereoPhaseDetuningKnob;
automatableButtonGroup * m_waveBtnGrp;
pixmapButton * m_usrWaveBtn;
floatModel m_volumeModel;
floatModel m_panModel;
floatModel m_coarseModel;
floatModel m_fineLeftModel;
floatModel m_fineRightModel;
floatModel m_phaseOffsetModel;
floatModel m_stereoPhaseDetuningModel;
intModel m_waveShapeModel;
intModel m_modulationAlgoModel;
sampleBuffer * m_sampleBuffer;
oscillator::modulationAlgos m_modulationAlgo;
float m_volumeLeft;
float m_volumeRight;
// normalized detuning -> x/sampleRate
float m_detuningLeft;
float m_detuningRight;
@@ -67,18 +73,13 @@ private:
float m_phaseOffsetLeft;
float m_phaseOffsetRight;
oscillatorObject( void );
virtual ~oscillatorObject();
friend class tripleOscillator;
friend class tripleOscillatorView;
private slots:
void oscWaveCh( int _n );
void oscUserDefWaveDblClick( void );
void modCh( int _n );
void updateVolume( void );
void updateDetuningLeft( void );
void updateDetuningRight( void );
@@ -94,7 +95,7 @@ class tripleOscillator : public instrument
{
Q_OBJECT
public:
tripleOscillator( instrumentTrack * _channel );
tripleOscillator( instrumentTrack * _track );
virtual ~tripleOscillator();
virtual void FASTCALL playNote( notePlayHandle * _n,
@@ -116,6 +117,8 @@ public:
return( 128 );
}
virtual pluginView * instantiateView( QWidget * _parent );
protected slots:
void updateAllDetuning( void );
@@ -124,7 +127,7 @@ protected slots:
private:
instrumentTrack * m_instrumentTrack;
oscillatorObject m_osc[NUM_OF_OSCILLATORS];
oscillatorObject * m_osc[NUM_OF_OSCILLATORS];
struct oscPtr
{
@@ -132,10 +135,66 @@ private:
oscillator * oscRight;
} ;
automatableButtonGroup * m_mod1BtnGrp;
automatableButtonGroup * m_mod2BtnGrp;
friend class tripleOscillatorView;
} ;
class tripleOscillatorView : public instrumentView
{
public:
tripleOscillatorView( instrument * _instrument, QWidget * _parent );
virtual ~tripleOscillatorView();
private:
virtual void modelChanged( void );
automatableButtonGroup * m_mod1BtnGrp;
automatableButtonGroup * m_mod2BtnGrp;
struct oscillatorKnobs
{
oscillatorKnobs( volumeKnob * v,
knob * p,
knob * c,
knob * fl,
knob * fr,
knob * po,
knob * spd,
pixmapButton * uwb,
automatableButtonGroup * wsbg ) :
m_volKnob( v ),
m_panKnob( p ),
m_coarseKnob( c ),
m_fineLeftKnob( fl ),
m_fineRightKnob( fr ),
m_phaseOffsetKnob( po ),
m_stereoPhaseDetuningKnob( spd ),
m_userWaveButton( uwb ),
m_waveShapeBtnGrp( wsbg )
{
}
oscillatorKnobs()
{
}
volumeKnob * m_volKnob;
knob * m_panKnob;
knob * m_coarseKnob;
knob * m_fineLeftKnob;
knob * m_fineRightKnob;
knob * m_phaseOffsetKnob;
knob * m_stereoPhaseDetuningKnob;
pixmapButton * m_userWaveButton;
automatableButtonGroup * m_waveShapeBtnGrp;
} ;
oscillatorKnobs m_oscKnobs[NUM_OF_OSCILLATORS];
} ;
#endif