diff --git a/ChangeLog b/ChangeLog index 8129f8bdc..c18945e5d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2007-08-04 Tobias Doerffel + * src/widget/visualization_widget.cpp: + proper visualization even with period-sizes < 128 + * plugins/audio_file_processor/audio_file_processor.cpp: * plugins/bit_invader/bit_invader.cpp: * plugins/kicker/kicker.cpp: @@ -14,10 +17,13 @@ patch below * src/tracks/instrument_track.cpp: - acquire play-handle-lock of mixer while calling noteOff() in - instrumentTrack::processInEvent( ... ) - fixes asynchronously - modifications of variables in notePlayHandle which led to segfaults in - some cases + - acquire mixer-lock while calling noteOff() in + instrumentTrack::processInEvent( ... ) - fixes asynchronously + modifications of variables in notePlayHandle which led to segfaults in + some cases + - when encountering old running notes on monophonic instruments only + clear the part of the audio-port-buffer where the new note will be + mixed in 2007-08-03 Tobias Doerffel diff --git a/src/tracks/instrument_track.cpp b/src/tracks/instrument_track.cpp index 6321a6c0f..f240627b8 100644 --- a/src/tracks/instrument_track.cpp +++ b/src/tracks/instrument_track.cpp @@ -794,12 +794,12 @@ void instrumentTrack::playNote( notePlayHandle * _n, bool _try_parallelizing ) // then the current note we // already played everything // in last period and have - // to clear it + // to clear parts of it _n->noteOff(); engine::getMixer()->clearAudioBuffer( m_audioPort->firstBuffer(), - engine::getMixer()->framesPerPeriod() ); - engine::getMixer()->clearAudioBuffer( m_audioPort->secondBuffer(), - engine::getMixer()->framesPerPeriod() ); + engine::getMixer()->framesPerPeriod() - + ( *youngest_note )->offset(), + ( *youngest_note )->offset() ); return; } }