diff --git a/plugins/sf2_player/sf2_player.cpp b/plugins/sf2_player/sf2_player.cpp index b3c029e72..097399c62 100644 --- a/plugins/sf2_player/sf2_player.cpp +++ b/plugins/sf2_player/sf2_player.cpp @@ -576,11 +576,15 @@ void sf2Instrument::playNote( NotePlayHandle * _n, sampleFrame * ) m_playingNotes.append( _n ); m_playingNotesMutex.unlock(); } - else if( _n->isReleased() ) // note is released during this period + else if( _n->isReleased() && ! _n->instrumentTrack()->isSustainPedalPressed() ) // note is released during this period { SF2PluginData * pluginData = static_cast( _n->m_pluginData ); pluginData->offset = _n->framesBeforeRelease(); pluginData->isNew = false; + + m_playingNotesMutex.lock(); + m_playingNotes.append( _n ); + m_playingNotesMutex.unlock(); } }