diff --git a/include/ResourcePreviewer.h b/include/ResourcePreviewer.h index 3b2ca82d7..5c06a752f 100644 --- a/include/ResourcePreviewer.h +++ b/include/ResourcePreviewer.h @@ -39,6 +39,7 @@ public: ~ResourcePreviewer(); void preview( ResourceItem * _item ); + void stopPreview(); private: diff --git a/src/core/ResourcePreviewer.cpp b/src/core/ResourcePreviewer.cpp index eabb6b0d4..f6bde8a60 100644 --- a/src/core/ResourcePreviewer.cpp +++ b/src/core/ResourcePreviewer.cpp @@ -58,6 +58,10 @@ ResourcePreviewer::~ResourcePreviewer() void ResourcePreviewer::preview( ResourceItem * _item ) { + // stop any existing preview sounds + stopPreview(); + + // disable journalling of changes in our preview track const bool j = engine::getProjectJournal()->isJournalling(); engine::getProjectJournal()->setJournalling( false ); engine::setSuppressMessages( true ); @@ -75,8 +79,22 @@ void ResourcePreviewer::preview( ResourceItem * _item ) break; } + // re-enable journalling engine::setSuppressMessages( false ); engine::getProjectJournal()->setJournalling( j ); + + // playback default note + m_previewTrack->processInEvent( + midiEvent( MidiNoteOn, 0, DefaultKey, MidiMaxVelocity ), + midiTime() ); +} + + + + +void ResourcePreviewer::stopPreview() +{ + m_previewTrack->silenceAllNotes(); }