|
|
|
|
@@ -88,9 +88,9 @@ audioFileProcessor::audioFileProcessor( InstrumentTrack * _instrument_track ) :
|
|
|
|
|
connect( &m_ampModel, SIGNAL( dataChanged() ),
|
|
|
|
|
this, SLOT( ampModelChanged() ) );
|
|
|
|
|
connect( &m_startPointModel, SIGNAL( dataChanged() ),
|
|
|
|
|
this, SLOT( loopPointChanged() ) );
|
|
|
|
|
this, SLOT( startPointChanged() ) );
|
|
|
|
|
connect( &m_endPointModel, SIGNAL( dataChanged() ),
|
|
|
|
|
this, SLOT( loopPointChanged() ) );
|
|
|
|
|
this, SLOT( endPointChanged() ) );
|
|
|
|
|
connect( &m_loopPointModel, SIGNAL( dataChanged() ),
|
|
|
|
|
this, SLOT( loopPointChanged() ) );
|
|
|
|
|
connect( &m_stutterModel, SIGNAL( dataChanged() ),
|
|
|
|
|
@@ -102,7 +102,7 @@ audioFileProcessor::audioFileProcessor( InstrumentTrack * _instrument_track ) :
|
|
|
|
|
m_interpolationModel.addItem( tr( "Sinc" ) );
|
|
|
|
|
m_interpolationModel.setValue( 1 );
|
|
|
|
|
|
|
|
|
|
loopPointChanged();
|
|
|
|
|
pointChanged();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -267,7 +267,7 @@ void audioFileProcessor::loadSettings( const QDomElement & _this )
|
|
|
|
|
m_interpolationModel.setValue( 1 ); //linear by default
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
loopPointChanged();
|
|
|
|
|
pointChanged();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -353,9 +353,7 @@ void audioFileProcessor::stutterModelChanged()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void audioFileProcessor::loopPointChanged( void )
|
|
|
|
|
void audioFileProcessor::startPointChanged( void )
|
|
|
|
|
{
|
|
|
|
|
// check if start is over end and swap values if so
|
|
|
|
|
if( m_startPointModel.value() > m_endPointModel.value() )
|
|
|
|
|
@@ -365,11 +363,37 @@ void audioFileProcessor::loopPointChanged( void )
|
|
|
|
|
m_startPointModel.setValue( tmp );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// nudge loop point with end
|
|
|
|
|
if( m_loopPointModel.value() >= m_endPointModel.value() )
|
|
|
|
|
{
|
|
|
|
|
m_loopPointModel.setValue( qMax( m_endPointModel.value() - 0.001f, 0.0f ) );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// nudge loop point with start
|
|
|
|
|
if( m_loopPointModel.value() < m_startPointModel.value() )
|
|
|
|
|
{
|
|
|
|
|
m_loopPointModel.setValue( m_startPointModel.value() );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// check if start & end overlap and nudge end up if so
|
|
|
|
|
if( m_startPointModel.value() == m_endPointModel.value() )
|
|
|
|
|
{
|
|
|
|
|
m_endPointModel.setValue( qMin( m_endPointModel.value() + 0.001f, 1.0f ) );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pointChanged();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void audioFileProcessor::endPointChanged( void )
|
|
|
|
|
{
|
|
|
|
|
// same as start, for now
|
|
|
|
|
startPointChanged();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void audioFileProcessor::loopPointChanged( void )
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
// check that loop point is between start-end points and not overlapping with endpoint
|
|
|
|
|
// ...and move start/end points ahead if loop point is moved over them
|
|
|
|
|
@@ -381,11 +405,18 @@ void audioFileProcessor::loopPointChanged( void )
|
|
|
|
|
m_loopPointModel.setValue( 1.0f - 0.001f );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// nudge start point with loop
|
|
|
|
|
if( m_loopPointModel.value() < m_startPointModel.value() )
|
|
|
|
|
{
|
|
|
|
|
m_startPointModel.setValue( m_loopPointModel.value() );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pointChanged();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void audioFileProcessor::pointChanged( void )
|
|
|
|
|
{
|
|
|
|
|
const f_cnt_t f_start = static_cast<f_cnt_t>( m_startPointModel.value() * ( m_sampleBuffer.frames()-1 ) );
|
|
|
|
|
const f_cnt_t f_end = static_cast<f_cnt_t>( m_endPointModel.value() * ( m_sampleBuffer.frames()-1 ) );
|
|
|
|
|
const f_cnt_t f_loop = static_cast<f_cnt_t>( m_loopPointModel.value() * ( m_sampleBuffer.frames()-1 ) );
|
|
|
|
|
@@ -400,6 +431,8 @@ void audioFileProcessor::loopPointChanged( void )
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QPixmap * AudioFileProcessorView::s_artwork = NULL;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -450,9 +483,9 @@ AudioFileProcessorView::AudioFileProcessorView( Instrument * _instrument,
|
|
|
|
|
m_loopOffButton->setCheckable( true );
|
|
|
|
|
m_loopOffButton->move( 190, 105 );
|
|
|
|
|
m_loopOffButton->setActiveGraphic( PLUGIN_NAME::getIconPixmap(
|
|
|
|
|
"loop_off_on" ) );
|
|
|
|
|
m_loopOffButton->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
|
|
|
|
|
"loop_off_off" ) );
|
|
|
|
|
m_loopOffButton->setInactiveGraphic( PLUGIN_NAME::getIconPixmap(
|
|
|
|
|
"loop_off_on" ) );
|
|
|
|
|
toolTip::add( m_loopOffButton, tr( "Disable loop" ) );
|
|
|
|
|
m_loopOffButton->setWhatsThis(
|
|
|
|
|
tr( "This button disables looping. "
|
|
|
|
|
|