small internal changes

git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@158 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
Tobias Doerffel
2006-06-13 11:19:42 +00:00
parent a4a67afdb5
commit eed921c64c
14 changed files with 151 additions and 76 deletions

View File

@@ -1,3 +1,21 @@
2006-06-12 Tobias Doerffel <tobydox/at/users/dot/sourceforge/dot/net>
* plugins/organic/organic.cpp:
* plugins/organic/organic.h:
* plugins/triple_oscillator/triple_oscillator.cpp:
* plugins/triple_oscillator/triple_oscillator.h:
updated code which uses knob-identification-capabilities
* include/knob.h:
* include/volume_knob.h:
* src/widgets/knob.cpp:
* src/widgets/volume_knob.cpp:
use data-property of automatableObject for identifying the knob
(replaces the id-stuff)
* include/automatable_object.h:
added data-property in which any arbitrary information can be stored
2006-06-10 Javier Serrano Polo <jasp00/at/terra/dot/es>
* src/lib/sample_buffer.cpp:

View File

@@ -190,6 +190,7 @@ AC_MSG_RESULT([$QT_IS_EMBEDDED])
QT_GUILINK=""
QASSISTANTCLIENT_LDADD="-lqassistantclient"
QT_LIBS="$QT_LIB"
x_libraries="$x_libraries -L/usr/X11R6/lib"
case "${host}" in
*irix*)

View File

@@ -2,8 +2,8 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.50)
AC_INIT(lmms, 0.1.4-cvs20060610, tobydox/at/users/dot/sourceforge/dot/net)
AM_INIT_AUTOMAKE(lmms, 0.1.4-cvs20060610)
AC_INIT(lmms, 0.1.4-cvs20060612, tobydox/at/users/dot/sourceforge/dot/net)
AM_INIT_AUTOMAKE(lmms, 0.1.4-cvs20060612)
AM_CONFIG_HEADER(config.h)

View File

@@ -0,0 +1,17 @@
<?xml version="1.0"?>
<!DOCTYPE multimedia-project>
<multimediaproject creator="Linux MultiMedia Studio (LMMS)" creatorversion="0.1.4-cvs20060610" type="instrumenttracksettings" version="1.0" >
<head/>
<instrumenttracksettings>
<instrumenttrack width="250" x="375" y="236" surpos="134219776" fxch="0" height="436" baseoct="6" vol="100" name="Fat TB303-Arp" basetone="4" tab="1" visible="1" >
<tripleoscillator userwavefile1="" wavetype1="0" coarse1="-24" userwavefile2="" wavetype2="2" coarse2="-24" vol0="72" vol1="64" finel0="0" vol2="52" finel1="0" finel2="0" modalgo1="0" stphdetun0="84" pan0="10" modalgo2="1" stphdetun1="263" pan1="0" stphdetun2="0" pan2="6" phoffset0="183" phoffset1="106" phoffset2="0" finer0="0" finer1="0" finer2="0" userwavefile0="" wavetype0="5" coarse0="-12" />
<eldata fres="7.93" ftype="0" fcut="480" fwet="1" >
<elvol lfosyncmode="0" lpdel="0" amt="1" rel="0.291" ctlenvamt="0" latt="0" sus="0.542" lspd="0.1" att="0.078" pdel="0" lamt="0" dec="0.058" userwavefile="" x100="0" lshp="0" hold="0.217" />
<elcut lfosyncmode="1" lpdel="0" amt="1" rel="0.357" ctlenvamt="1" latt="0" sus="0" lspd="0.1714" att="0.111" pdel="0" lamt="0.98" dec="0.294" userwavefile="" x100="0" lshp="0" hold="0.296" />
<elres lfosyncmode="0" lpdel="0" amt="0" rel="0.1" ctlenvamt="0" latt="0" sus="0.499" lspd="0.1" att="0" pdel="0" lamt="0" dec="0.499" userwavefile="" x100="0" lshp="0" hold="0.499" />
</eldata>
<arpandchords arpmode="0" chordrange="1" arprange="2" arpdisabled="0" chord="0" chorddisabled="1" arpgate="55" arp="0" arpsyncmode="5" arptime="214" arpdir="1" />
<midi defvelout="0" inputchannel="0" outputchannel="1" receive="0" send="0" defvelin="0" />
</instrumenttrack>
</instrumenttracksettings>
</multimediaproject>

View File

@@ -34,10 +34,12 @@
#ifndef QT3
#include <Qt/QtXml>
#include <QtCore/QVariant>
#else
#include <qdom.h>
#include <qvariant.h>
#endif
@@ -252,6 +254,16 @@ public:
return( "automatableobject" );
}
inline const QVariant & data( void ) const
{
return( m_data );
}
void setData( const QVariant & _data )
{
m_data = _data;
}
protected:
virtual void redoStep( journalEntry & _je )
@@ -307,6 +319,8 @@ private:
T m_maxValue;
T m_step;
QVariant m_data;
typedef vvector<autoObj *> autoObjVector;
autoObjVector m_linkedObjects;

View File

@@ -64,8 +64,7 @@ class knob : public QWidget, public automatableObject<float>
Q_OBJECT
public:
knob( int _knob_num, QWidget * _parent, const QString & _name,
engine * _engine,
const int _knob_id = 0 );
engine * _engine );
virtual ~knob();
@@ -98,7 +97,7 @@ public slots:
signals:
void valueChanged( float value );
void idKnobChanged( int id );
void valueChanged( const QVariant & _data );
void sliderPressed( void );
void sliderReleased( void );
void sliderMoved( float value );
@@ -158,7 +157,6 @@ protected:
float m_initValue;
const int m_knobId;
} ;

View File

@@ -22,6 +22,7 @@
* Boston, MA 02111-1307, USA.
*
*/
#ifndef _VOLUME_KNOB_H
#define _VOLUME_KNOB_H
@@ -44,16 +45,18 @@ class volumeKnob: public knob
Q_OBJECT
public:
volumeKnob( int _knob_num, QWidget * _parent, const QString & _name,
engine * _engine, const int _knob_id = 0 );
~volumeKnob();
engine * _engine );
virtual ~volumeKnob();
public slots:
void enterValue( void );
virtual void enterValue( void );
protected:
virtual void mousePressEvent( QMouseEvent * _me );
virtual void mouseMoveEvent( QMouseEvent * _me );
virtual void wheelEvent( QWheelEvent * _we );
};
} ;
#endif

View File

@@ -134,7 +134,8 @@ organicInstrument::organicInstrument( instrumentTrack * _channel_track ) :
// setup volume-knob
m_osc[i].volKnob = new volumeKnob( knobGreen_17, this, tr(
"Osc %1 volume" ).arg( i+1 ), eng(), i );
"Osc %1 volume" ).arg( i+1 ), eng() );
m_osc[i].volKnob->setData( i );
m_osc[i].volKnob->move( 25+i*20, 110 );
m_osc[i].volKnob->setRange( 0, 100, 1.0f );
m_osc[i].volKnob->setInitValue( 100 );
@@ -143,7 +144,8 @@ organicInstrument::organicInstrument( instrumentTrack * _channel_track ) :
// setup panning-knob
m_osc[i].panKnob = new knob( knobGreen_17, this,
tr( "Osc %1 panning" ).arg( i + 1 ), eng(), i );
tr( "Osc %1 panning" ).arg( i + 1 ), eng() );
m_osc[i].panKnob->setData( i );
m_osc[i].panKnob->move( 25+i*20, 130 );
m_osc[i].panKnob->setRange( PANNING_LEFT, PANNING_RIGHT, 1.0f );
m_osc[i].panKnob->setInitValue( DEFAULT_PANNING );
@@ -153,7 +155,8 @@ organicInstrument::organicInstrument( instrumentTrack * _channel_track ) :
// setup knob for left fine-detuning
m_osc[i].detuneKnob = new knob( knobGreen_17, this,
tr( "Osc %1 fine detuning left" ).arg( i+1 ),
eng(), i );
eng() );
m_osc[i].detuneKnob->setData( i );
m_osc[i].detuneKnob->move( 25+i*20, 150 );
m_osc[i].detuneKnob->setRange( -100.0f, 100.0f, 1.0f );
m_osc[i].detuneKnob->setInitValue( 0.0f );
@@ -162,14 +165,17 @@ organicInstrument::organicInstrument( instrumentTrack * _channel_track ) :
+ " ", " " +
tr( "cents" ) );
connect( m_osc[i].volKnob, SIGNAL( idKnobChanged( int ) ),
this, SLOT( updateVolume( int ) ) );
connect( m_osc[i].panKnob, SIGNAL( idKnobChanged( int ) ),
this, SLOT( updateVolume( int ) ) );
connect( m_osc[i].volKnob,
SIGNAL( valueChanged( const QVariant & ) ),
this, SLOT( updateVolume( const QVariant & ) ) );
connect( m_osc[i].panKnob,
SIGNAL( valueChanged( const QVariant & ) ),
this, SLOT( updateVolume( const QVariant & ) ) );
updateVolume( i );
connect( m_osc[i].detuneKnob, SIGNAL ( idKnobChanged( int ) ),
this, SLOT( updateDetuning( int ) ) );
connect( m_osc[i].detuneKnob,
SIGNAL ( valueChanged( const QVariant & ) ),
this, SLOT( updateDetuning( const QVariant & ) ) );
updateDetuning( i );
}
@@ -494,8 +500,9 @@ void organicInstrument::randomiseSettings()
void organicInstrument::updateVolume( int _i )
void organicInstrument::updateVolume( const QVariant & _data )
{
const int _i = _data.toInt();
m_osc[_i].volumeLeft =
( 1.0f - m_osc[_i].panKnob->value() / (float)PANNING_RIGHT )
* m_osc[_i].volKnob->value() / m_num_oscillators / 100.0f;
@@ -507,8 +514,9 @@ void organicInstrument::updateVolume( int _i )
void organicInstrument::updateDetuning( int _i )
void organicInstrument::updateDetuning( const QVariant & _data )
{
const int _i = _data.toInt();
m_osc[_i].detuningLeft = powf( 2.0f, m_osc[_i].harmonic
+ (float)m_osc[_i].detuneKnob->value() / 100.0f )
/ static_cast<float>( eng()->getMixer()->sampleRate() );

View File

@@ -114,8 +114,8 @@ private:
private slots:
void updateVolume( int _i );
void updateDetuning( int _i );
void updateVolume( const QVariant & _i );
void updateDetuning( const QVariant & _i );
void updateAllDetuning( void );
} ;

View File

@@ -246,7 +246,8 @@ tripleOscillator::tripleOscillator( instrumentTrack * _channel_track ) :
// setup volume-knob
m_osc[i].volKnob = new volumeKnob( knobSmall_17, this, tr(
"Osc %1 volume" ).arg( i+1 ), eng(), i );
"Osc %1 volume" ).arg( i+1 ), eng() );
m_osc[i].volKnob->setData( i );
m_osc[i].volKnob->move( 6, 104+i*50 );
m_osc[i].volKnob->setRange( MIN_VOLUME, MAX_VOLUME, 1.0f );
m_osc[i].volKnob->setInitValue( DEFAULT_VOLUME
@@ -266,7 +267,8 @@ tripleOscillator::tripleOscillator( instrumentTrack * _channel_track ) :
// setup panning-knob
m_osc[i].panKnob = new knob( knobSmall_17, this,
tr( "Osc %1 panning" ).arg( i + 1 ), eng(), i );
tr( "Osc %1 panning" ).arg( i + 1 ), eng() );
m_osc[i].panKnob->setData( i );
m_osc[i].panKnob->move( 33, 104+i*50 );
m_osc[i].panKnob->setRange( PANNING_LEFT, PANNING_RIGHT, 1.0f );
m_osc[i].panKnob->setInitValue( DEFAULT_PANNING );
@@ -284,8 +286,9 @@ tripleOscillator::tripleOscillator( instrumentTrack * _channel_track ) :
// setup coarse-knob
m_osc[i].coarseKnob = new knob( knobSmall_17, this,
tr("Osc %1 coarse detuning").arg( i + 1 ),
eng(), i );
tr( "Osc %1 coarse detuning" ).arg( i + 1 ),
eng() );
m_osc[i].coarseKnob->setData( i );
m_osc[i].coarseKnob->move( 66, 104 + i * 50 );
m_osc[i].coarseKnob->setRange( -2 * NOTES_PER_OCTAVE,
2 * NOTES_PER_OCTAVE, 1.0f );
@@ -307,7 +310,8 @@ tripleOscillator::tripleOscillator( instrumentTrack * _channel_track ) :
// setup knob for left fine-detuning
m_osc[i].fineLKnob = new knob( knobSmall_17, this,
tr( "Osc %1 fine detuning left" ).arg( i+1 ),
eng(), i );
eng() );
m_osc[i].fineLKnob->setData( i );
m_osc[i].fineLKnob->move( 90, 104 + i * 50 );
m_osc[i].fineLKnob->setRange( -100.0f, 100.0f, 1.0f );
m_osc[i].fineLKnob->setInitValue( 0.0f );
@@ -330,7 +334,8 @@ tripleOscillator::tripleOscillator( instrumentTrack * _channel_track ) :
m_osc[i].fineRKnob = new knob( knobSmall_17, this,
tr( "Osc %1 fine detuning right"
).arg( i + 1 ),
eng(), i );
eng() );
m_osc[i].fineRKnob->setData( i );
m_osc[i].fineRKnob->move( 110, 104 + i * 50 );
m_osc[i].fineRKnob->setRange( -100.0f, 100.0f, 1.0f );
m_osc[i].fineRKnob->setInitValue( 0.0f );
@@ -352,7 +357,8 @@ tripleOscillator::tripleOscillator( instrumentTrack * _channel_track ) :
m_osc[i].phaseOffsetKnob = new knob( knobSmall_17, this,
tr( "Osc %1 phase-"
"offset" ).arg( i+1 ),
eng(), i );
eng() );
m_osc[i].phaseOffsetKnob->setData( i );
m_osc[i].phaseOffsetKnob->move( 142, 104 + i * 50 );
m_osc[i].phaseOffsetKnob->setRange( 0.0f, 360.0f, 1.0f );
m_osc[i].phaseOffsetKnob->setInitValue( 0.0f );
@@ -378,7 +384,8 @@ tripleOscillator::tripleOscillator( instrumentTrack * _channel_track ) :
m_osc[i].stereoPhaseDetuningKnob = new knob( knobSmall_17, this,
tr( "Osc %1 stereo phase-"
"detuning" ).arg( i+1 ),
eng(), i );
eng() );
m_osc[i].stereoPhaseDetuningKnob->setData( i );
m_osc[i].stereoPhaseDetuningKnob->move( 166, 104 + i * 50 );
m_osc[i].stereoPhaseDetuningKnob->setRange( 0.0f, 360.0f,
1.0f );
@@ -402,32 +409,41 @@ tripleOscillator::tripleOscillator( instrumentTrack * _channel_track ) :
"stereo-sounds." ).arg( i+1 ) );
// Connect knobs with oscillators' inputs
connect( m_osc[i].volKnob, SIGNAL( idKnobChanged( int ) ),
this, SLOT( updateVolume( int ) ) );
connect( m_osc[i].panKnob, SIGNAL( idKnobChanged( int ) ),
this, SLOT( updateVolume( int ) ) );
connect( m_osc[i].volKnob,
SIGNAL( valueChanged( const QVariant & ) ),
this, SLOT( updateVolume( const QVariant & ) ) );
connect( m_osc[i].panKnob,
SIGNAL( valueChanged( const QVariant & ) ),
this, SLOT( updateVolume( const QVariant & ) ) );
updateVolume( i );
connect( m_osc[i].coarseKnob, SIGNAL( idKnobChanged( int ) ),
this, SLOT( updateDetuningLeft( int ) ) );
connect( m_osc[i].coarseKnob, SIGNAL( idKnobChanged( int ) ),
this, SLOT( updateDetuningRight( int ) ) );
connect( m_osc[i].fineLKnob, SIGNAL( idKnobChanged( int ) ),
this, SLOT( updateDetuningLeft( int ) ) );
connect( m_osc[i].fineRKnob, SIGNAL( idKnobChanged( int ) ),
this, SLOT( updateDetuningRight( int ) ) );
connect( m_osc[i].coarseKnob,
SIGNAL( valueChanged( const QVariant & ) ),
this, SLOT( updateDetuningLeft( const QVariant & ) ) );
connect( m_osc[i].coarseKnob,
SIGNAL( valueChanged( const QVariant & ) ),
this, SLOT( updateDetuningRight( const QVariant & ) ) );
connect( m_osc[i].fineLKnob,
SIGNAL( valueChanged( const QVariant & ) ),
this, SLOT( updateDetuningLeft( const QVariant & ) ) );
connect( m_osc[i].fineRKnob,
SIGNAL( valueChanged( const QVariant & ) ),
this, SLOT( updateDetuningRight( const QVariant & ) ) );
updateDetuningLeft( i );
updateDetuningRight( i );
connect( m_osc[i].phaseOffsetKnob,
SIGNAL( idKnobChanged( int ) ),
this, SLOT( updatePhaseOffsetLeft( int ) ) );
SIGNAL( valueChanged( const QVariant & ) ),
this,
SLOT( updatePhaseOffsetLeft( const QVariant & ) ) );
connect( m_osc[i].phaseOffsetKnob,
SIGNAL( idKnobChanged( int ) ),
this, SLOT( updatePhaseOffsetRight( int ) ) );
SIGNAL( valueChanged( const QVariant & ) ),
this,
SLOT( updatePhaseOffsetRight( const QVariant & ) ) );
connect( m_osc[i].stereoPhaseDetuningKnob,
SIGNAL( idKnobChanged( int ) ),
this, SLOT( updatePhaseOffsetLeft( int ) ) );
SIGNAL( valueChanged( const QVariant & ) ),
this,
SLOT( updatePhaseOffsetLeft( const QVariant & ) ) );
updatePhaseOffsetLeft( i );
updatePhaseOffsetRight( i );
@@ -834,8 +850,9 @@ void tripleOscillator::osc2UserDefWaveDblClick( void )
void tripleOscillator::updateVolume( int _i )
void tripleOscillator::updateVolume( const QVariant & _data )
{
const int _i = _data.toInt();
float panningFactorLeft;
float panningFactorRight;
@@ -861,8 +878,9 @@ void tripleOscillator::updateVolume( int _i )
void tripleOscillator::updateDetuningLeft( int _i )
void tripleOscillator::updateDetuningLeft( const QVariant & _data )
{
const int _i = _data.toInt();
m_osc[_i].detuningLeft = powf( 2.0f, (
(float)m_osc[_i].coarseKnob->value() * 100.0f +
(float)m_osc[_i].fineLKnob->value() ) / 1200.0f )
@@ -872,8 +890,9 @@ void tripleOscillator::updateDetuningLeft( int _i )
void tripleOscillator::updateDetuningRight( int _i )
void tripleOscillator::updateDetuningRight( const QVariant & _data )
{
const int _i = _data.toInt();
m_osc[_i].detuningRight = powf( 2.0f, (
(float)m_osc[_i].coarseKnob->value() * 100.0f +
(float)m_osc[_i].fineRKnob->value() ) / 1200.0f )
@@ -895,8 +914,9 @@ void tripleOscillator::updateAllDetuning( void )
void tripleOscillator::updatePhaseOffsetLeft( int _i )
void tripleOscillator::updatePhaseOffsetLeft( const QVariant & _data )
{
const int _i = _data.toInt();
m_osc[_i].phaseOffsetLeft = ( m_osc[_i].phaseOffsetKnob->value() +
m_osc[_i].stereoPhaseDetuningKnob->value() ) / 360.0f;
}
@@ -904,8 +924,9 @@ void tripleOscillator::updatePhaseOffsetLeft( int _i )
void tripleOscillator::updatePhaseOffsetRight( int _i )
void tripleOscillator::updatePhaseOffsetRight( const QVariant & _data )
{
const int _i = _data.toInt();
m_osc[_i].phaseOffsetRight = m_osc[_i].phaseOffsetKnob->value()
/ 360.0f;
}

View File

@@ -73,12 +73,12 @@ protected slots:
void mod1Ch( int _n );
void mod2Ch( int _n );
void updateVolume( int _i );
void updateDetuningLeft( int _i );
void updateDetuningRight( int _i );
void updateVolume( const QVariant & _i );
void updateDetuningLeft( const QVariant & _i );
void updateDetuningRight( const QVariant & _i );
void updateAllDetuning( void );
void updatePhaseOffsetLeft( int _i );
void updatePhaseOffsetRight( int _i );
void updatePhaseOffsetLeft( const QVariant & _i );
void updatePhaseOffsetRight( const QVariant & _i );
private:
@@ -114,10 +114,6 @@ private:
} ;
/* pixmapButton * FASTCALL getModulationButton(
oscillator::modulationAlgos _modulation_algo, int _n );*/
/* void FASTCALL setModulationAlgo(
oscillator::modulationAlgos _new_modulation_algo, int _n );*/
oscillator::modulationAlgos * FASTCALL getModulationAlgo( int _n );
oscillator::modulationAlgos m_modulationAlgo1;

View File

@@ -52,7 +52,8 @@ oscillator::oscillator( const waveShapes * _wave_shape,
void oscillator::update( sampleFrame * _ab, const fpab_t _frames, const ch_cnt_t _chnl )
void oscillator::update( sampleFrame * _ab, const fpab_t _frames,
const ch_cnt_t _chnl )
{
if( m_subOsc != NULL )
{

View File

@@ -86,8 +86,7 @@ textFloat * knob::s_textFloat = NULL;
knob::knob( int _knob_num, QWidget * _parent, const QString & _name,
engine * _engine,
const int _knob_id ) :
engine * _engine ) :
QWidget( _parent
#ifndef QT4
, _name.ascii()
@@ -101,8 +100,7 @@ knob::knob( int _knob_num, QWidget * _parent, const QString & _name,
m_hintTextBeforeValue( "" ),
m_hintTextAfterValue( "" ),
m_label( "" ),
m_initValue( 0.0f ),
m_knobId( _knob_id )
m_initValue( 0.0f )
{
if( s_textFloat == NULL )
{
@@ -248,7 +246,7 @@ void knob::valueChange( void )
recalcAngle();
update();
emit valueChanged( value() );
emit idKnobChanged( m_knobId );
emit valueChanged( data() );
}
@@ -461,7 +459,7 @@ void knob::mouseMoveEvent( QMouseEvent * _me )
{
setPosition( _me->pos() );
emit sliderMoved( value() );
emit idKnobChanged( m_knobId );
emit valueChanged( data() );
if( !configManager::inst()->value( "knobs",
"classicalusability").toInt() )
{
@@ -576,7 +574,7 @@ void knob::wheelEvent( QWheelEvent * _we )
s_textFloat->setVisibilityTimeOut( 1000 );
emit sliderMoved( value() );
emit idKnobChanged( m_knobId );
emit valueChanged( data() );
}
@@ -585,7 +583,7 @@ void knob::wheelEvent( QWheelEvent * _we )
void knob::buttonReleased( void )
{
emit valueChanged( value() );
emit idKnobChanged( m_knobId );
emit valueChanged( data() );
}

View File

@@ -48,8 +48,8 @@
volumeKnob::volumeKnob( int _knob_num, QWidget * _parent, const QString & _name,
engine * _engine, const int _knob_id ):
knob( _knob_num, _parent, _name, _engine, _knob_id )
engine * _engine ) :
knob( _knob_num, _parent, _name, _engine )
{
}
@@ -129,7 +129,7 @@ void volumeKnob::mouseMoveEvent( QMouseEvent * _me )
{
setPosition( _me->pos() );
emit sliderMoved( value() );
emit idKnobChanged( m_knobId );
emit valueChanged( data() );
if( !configManager::inst()->value( "knobs",
"classicalusability").toInt() )
{
@@ -181,7 +181,7 @@ void volumeKnob::wheelEvent( QWheelEvent * _we )
s_textFloat->setVisibilityTimeOut( 1000 );
emit sliderMoved( value() );
emit idKnobChanged( m_knobId );
emit valueChanged( data() );
}