diff --git a/src/playback/view/internal/inputresourceitem.cpp b/src/playback/view/internal/inputresourceitem.cpp index 8e683ab5e8..7585b4074e 100644 --- a/src/playback/view/internal/inputresourceitem.cpp +++ b/src/playback/view/internal/inputresourceitem.cpp @@ -11,6 +11,7 @@ using namespace mu::audio; static const QString VST_MENU_ITEM_ID("VST"); static const QString SOUNDFONTS_MENU_ITEM_ID = QString::fromStdString(mu::trc("playback", "Soundfonts")); +static const QString MUSE_MENU_ITEM_ID("Muse"); InputResourceItem::InputResourceItem(QObject* parent) : AbstractAudioResourceItem(parent) @@ -34,6 +35,13 @@ void InputResourceItem::requestAvailableResources() result << buildSeparator(); } + auto museResourcesSearch = m_availableResourceMap.find(AudioResourceType::MuseSamplerSoundPack); + if (museResourcesSearch != m_availableResourceMap.end()) { + result << buildMuseMenuItem(museResourcesSearch->second); + + result << buildSeparator(); + } + auto vstResourcesSearch = m_availableResourceMap.find(AudioResourceType::VstPlugin); if (vstResourcesSearch != m_availableResourceMap.end()) { result << buildVstMenuItem(vstResourcesSearch->second); @@ -106,6 +114,26 @@ bool InputResourceItem::hasNativeEditorSupport() const return m_currentInputParams.resourceMeta.hasNativeEditorSupport; } +QVariantMap InputResourceItem::buildMuseMenuItem(const ResourceByVendorMap& resourcesByVendor) const +{ + QVariantList subItemsByType; + + for (const auto& pair : resourcesByVendor) { + for (const AudioResourceMeta& resourceMeta : pair.second) { + const QString& resourceId = QString::fromStdString(resourceMeta.id); + + subItemsByType << buildMenuItem(resourceId, + resourceId, + m_currentInputParams.resourceMeta.id == resourceMeta.id); + } + } + + return buildMenuItem(MUSE_MENU_ITEM_ID, + MUSE_MENU_ITEM_ID, + m_currentInputParams.resourceMeta.type == AudioResourceType::MuseSamplerSoundPack, + subItemsByType); +} + QVariantMap InputResourceItem::buildVstMenuItem(const ResourceByVendorMap& resourcesByVendor) const { QVariantList subItemsByType; diff --git a/src/playback/view/internal/inputresourceitem.h b/src/playback/view/internal/inputresourceitem.h index f7bbe6b4f0..844a23bfc9 100644 --- a/src/playback/view/internal/inputresourceitem.h +++ b/src/playback/view/internal/inputresourceitem.h @@ -62,6 +62,7 @@ signals: private: using ResourceByVendorMap = std::map; + QVariantMap buildMuseMenuItem(const ResourceByVendorMap& resourcesByVendor) const; QVariantMap buildVstMenuItem(const ResourceByVendorMap& resourcesByVendor) const; QVariantMap buildSoundFontsMenuItem(const ResourceByVendorMap& resourcesByVendor) const; diff --git a/src/project/internal/projectaudiosettings.cpp b/src/project/internal/projectaudiosettings.cpp index ef3807f24c..431573a630 100644 --- a/src/project/internal/projectaudiosettings.cpp +++ b/src/project/internal/projectaudiosettings.cpp @@ -32,12 +32,14 @@ using namespace mu::engraving; static const std::map SOURCE_TYPE_MAP = { { AudioSourceType::Undefined, "undefined" }, + { AudioSourceType::MuseSampler, "musesampler" }, { AudioSourceType::Fluid, "fluid" }, { AudioSourceType::Vsti, "vsti" } }; static const std::map RESOURCE_TYPE_MAP = { { AudioResourceType::Undefined, "undefined" }, + { AudioResourceType::MuseSamplerSoundPack, "muse_sampler_sound_pack" }, { AudioResourceType::FluidSoundfont, "fluid_soundfont" }, { AudioResourceType::VstPlugin, "vst_plugin" } };