From d11bf48891354628de90a27682534c5c28df8a8e Mon Sep 17 00:00:00 2001 From: Tobias Doerffel Date: Thu, 11 Jun 2009 00:30:39 +0200 Subject: [PATCH] ResourcePreviewer: start/stop playback of preview sound Make the internal InstrumentTrack play the default key in preview() and stop playback in new method stopPreview(). Signed-off-by: Tobias Doerffel --- include/ResourcePreviewer.h | 1 + src/core/ResourcePreviewer.cpp | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) 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(); }