diff --git a/include/ResourcePreviewer.h b/include/ResourcePreviewer.h index 242ee37ef..453e98695 100644 --- a/include/ResourcePreviewer.h +++ b/include/ResourcePreviewer.h @@ -27,6 +27,7 @@ #define _RESOURCE_PREVIEWER_H #include "track_container.h" +#include "mmp.h" class Piano; class ResourceItem; @@ -57,6 +58,8 @@ private: PreviewTrackContainer m_previewTrackContainer; instrumentTrack * m_previewTrack; + multimediaProject m_defaultSettings; + } ; diff --git a/src/core/ResourcePreviewer.cpp b/src/core/ResourcePreviewer.cpp index b9e6c1f22..0857558e3 100644 --- a/src/core/ResourcePreviewer.cpp +++ b/src/core/ResourcePreviewer.cpp @@ -37,7 +37,8 @@ ResourcePreviewer::ResourcePreviewer() : m_previewTrackContainer(), - m_previewTrack( NULL ) + m_previewTrack( NULL ), + m_defaultSettings( multimediaProject::InstrumentTrackSettings ) { // do not clutter global journal with items due to changing settings // in preview classes @@ -45,10 +46,14 @@ ResourcePreviewer::ResourcePreviewer() : m_previewTrack = dynamic_cast( track::create( track::InstrumentTrack, &m_previewTrackContainer ) ); + + // save default settings so we can restore them later + m_previewTrack->saveSettings( m_defaultSettings, + m_defaultSettings.content() ); + // make sure a default instrument is loaded m_previewTrack->loadInstrument( "tripleoscillator" ); m_previewTrack->setJournalling( false ); - } @@ -72,6 +77,12 @@ void ResourcePreviewer::preview( ResourceItem * _item ) engine::getProjectJournal()->setJournalling( false ); engine::setSuppressMessages( true ); + // restore default settings, in case we're going to load an incomplete + // preset or are going to preview a sample (which should be played at + // a default instrument track) + m_previewTrack->loadTrackSpecificSettings( + m_defaultSettings.content().firstChild().toElement() ); + switch( _item->type() ) { case ResourceItem::TypePreset: