added channel link to ladspa controls

git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@329 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
Danny McRae
2006-08-15 15:11:54 +00:00
parent 5ca5da40b1
commit 833080071d
5 changed files with 116 additions and 36 deletions

View File

@@ -3,6 +3,15 @@
added deletion of the control view to the dtor to make it clean
up after itself
* include/automatable_object.h:
* include/ladspa_control.h:
* include/ladspa_control_dialog.h:
* src/core/ladspa_control_dialog.cpp:
* src/core/ladspa_control.cpp:
- added a link channels option to the ladspa controls
- unlinking the channels will currently break automation for all
but the first channel
* All of the effects related files:
reformatted to respect the 80 characters per line convention

View File

@@ -264,7 +264,7 @@ public:
_object2->linkObject( _object1 );
if( _object1->m_automation_pattern
!= _object2->m_automation_pattern )
!= _object2->m_automation_pattern )
{
if( _object2->m_automation_pattern )
{
@@ -275,6 +275,21 @@ public:
}
}
static void unlinkObjects( autoObj * _object1,
autoObj * _object2 )
{
_object1->unlinkObject( _object2 );
_object2->unlinkObject( _object1 );
if( !_object1->m_automation_pattern )
{
_object1->m_automation_pattern =
_object1->getAutomationPattern();
}
_object2->m_automation_pattern =
new automationPattern( *_object1->m_automation_pattern );
}
virtual void FASTCALL saveSettings( QDomDocument & _doc,
QDomElement & _this,
const QString & _name = "value" )
@@ -439,9 +454,13 @@ private:
inline void unlinkObject( autoObj * _object )
{
m_linkedObjects.erase( qFind( m_linkedObjects.begin(),
if( qFind( m_linkedObjects.begin(), m_linkedObjects.end(),
_object ) != m_linkedObjects.end() )
{
m_linkedObjects.erase( qFind( m_linkedObjects.begin(),
m_linkedObjects.end(),
_object ) );
}
}
static T attributeValue( QString _value );

View File

@@ -81,39 +81,6 @@ private:
#endif
typedef vvector<effect *> effect_list_t;
class effectChain: public engineObject
{
public:
effectChain( engine * _engine );
~effectChain();
void FASTCALL appendEffect( effect * _effect );
void FASTCALL deleteEffect( effect * _effect );
void FASTCALL moveDown( effect * _effect );
void FASTCALL moveUp( effect * _effect );
bool FASTCALL processAudioBuffer( surroundSampleFrame * _buf,
const fpab_t _frames );
void startRunning( void );
bool isRunning( void );
inline void setBypass( bool _mode )
{
m_bypassed = _mode;
}
inline const effect_list_t & getEffects( void )
{
return( m_effects );
}
private:
effect_list_t m_effects;
bool m_bypassed;
QMutex m_processLock;
};

View File

@@ -60,6 +60,24 @@ public:
LADSPA_Data getValue( void );
void FASTCALL setValue( LADSPA_Data _value );
void FASTCALL linkControls( ladspaControl * _control );
void FASTCALL unlinkControls( ladspaControl * _control );
inline ledCheckBox * getToggle( void )
{
return( m_toggle );
}
inline knob * getKnob( void )
{
return( m_knob );
}
inline port_desc_t * getPort( void )
{
return( m_port );
}
virtual void FASTCALL saveSettings( QDomDocument & _doc,
QDomElement & _parent, const QString & _name );
virtual void FASTCALL loadSettings( const QDomElement & _this,
@@ -69,6 +87,13 @@ public:
return( "port" );
}
signals:
void changed( Uint16 _port, LADSPA_Data );
protected slots:
void ledChange( bool );
void knobChange( float );
private:
port_desc_t * m_port;
track * m_track;

View File

@@ -57,7 +57,9 @@ ladspaControl::ladspaControl( QWidget * _parent,
{
case TOGGLED:
m_toggle = new ledCheckBox( m_port->name, this, "",
eng(), m_track );
eng(), m_track );
connect( m_toggle, SIGNAL( toggled( bool ) ),
this, SLOT( ledChange( bool ) ) );
setFixedSize( m_toggle->width(), m_toggle->height() );
if( m_port->def == 1.0f )
{
@@ -67,6 +69,8 @@ ladspaControl::ladspaControl( QWidget * _parent,
case INTEGER:
m_knob = new knob( knobBright_26, this,
m_port->name, eng(), m_track);
connect( m_knob, SIGNAL( valueChanged( float ) ),
this, SLOT( knobChange( float ) ) );
m_knob->setLabel( m_port->name );
m_knob->setRange( static_cast<int>( m_port->max ),
static_cast<int>( m_port->min ),
@@ -86,6 +90,8 @@ ladspaControl::ladspaControl( QWidget * _parent,
case FLOAT:
m_knob = new knob( knobBright_26, this,
m_port->name, eng(), m_track);
connect( m_knob, SIGNAL( valueChanged( float ) ),
this, SLOT( knobChange( float ) ) );
m_knob->setLabel( m_port->name );
m_knob->setRange( m_port->min, m_port->max,
( m_port->max -
@@ -206,6 +212,60 @@ void FASTCALL ladspaControl::loadSettings( const QDomElement & _this,
void FASTCALL ladspaControl::linkControls( ladspaControl * _control )
{
switch( m_port->data_type )
{
case TOGGLED:
ledCheckBox::linkObjects( m_toggle, _control->getToggle() );
break;
case INTEGER:
case FLOAT:
knob::linkObjects( m_knob, _control->getKnob() );
break;
default:
break;
}
}
void ladspaControl::ledChange( bool _state )
{
emit( changed( m_port->port_id, static_cast<LADSPA_Data>( _state ) ) );
}
void ladspaControl::knobChange( float _value )
{
emit( changed( m_port->port_id, static_cast<LADSPA_Data>( _value ) ) );
}
void FASTCALL ladspaControl::unlinkControls( ladspaControl * _control )
{
switch( m_port->data_type )
{
case TOGGLED:
ledCheckBox::unlinkObjects( m_toggle, _control->getToggle() );
break;
case INTEGER:
case FLOAT:
knob::unlinkObjects( m_knob, _control->getKnob() );
break;
default:
break;
}
}
#include "ladspa_control.moc"
#endif