polyb302 instrument, detuning without signals

git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@466 0778d3d1-df1d-0410-868b-ea421aaaa00d
This commit is contained in:
Javier Serrano Polo
2007-03-25 21:58:17 +00:00
parent bbd9c90025
commit 18af38266a
15 changed files with 1470 additions and 62 deletions

View File

@@ -66,11 +66,8 @@ notePlayHandle::notePlayHandle( instrumentTrack * _it,
setDetuning( _n.detuning() );
if( detuning() )
{
connect( m_instrumentTrack,
SIGNAL( sentMidiTime( const midiTime & ) ),
this,
SLOT( processMidiTime( const midiTime & ) ) );
processMidiTime( pos() );
m_instrumentTrack->m_processHandles.push_back( this );
connect( detuning(), SIGNAL( valueChanged( float ) ),
this, SLOT( updateFrequency() ) );
}
@@ -106,9 +103,16 @@ notePlayHandle::~notePlayHandle()
noteOff( 0 );
}
if( m_instrumentTrack != NULL && m_pluginData != NULL )
if( m_instrumentTrack != NULL )
{
m_instrumentTrack->deleteNotePluginData( this );
if( detuning() )
{
m_instrumentTrack->m_processHandles.remove( this );
}
if( m_pluginData != NULL )
{
m_instrumentTrack->deleteNotePluginData( this );
}
}
for( notePlayHandleVector::iterator it = m_subNotes.begin();

View File

@@ -972,7 +972,13 @@ bool FASTCALL instrumentTrack::play( const midiTime & _start,
bb_track = NULL;
sendMidiTime( _start );
}
emit sentMidiTime( _start );
// Handle automation: detuning
for( vlist<notePlayHandle *>::iterator it = m_processHandles.begin();
it != m_processHandles.end(); ++it )
{
( *it )->processMidiTime( _start );
}
if ( tcos.size() == 0 )
{
@@ -1349,6 +1355,7 @@ void instrumentTrack::invalidateAllMyNPH( void )
m_notesMutex.unlock();
// invalidate all note-play-handles linked to this channel
m_processHandles.clear();
eng()->getMixer()->checkValidityOfPlayHandles();
m_trackType = INSTRUMENT_TRACK;