44 INFOLOG( QString(
"Name: [%1]" ).arg( pPatternInfo->getName() ) );
48 INFOLOG( QString(
"Category: [%1]" ).arg( sCategory ) );
55 if ( pPatternInfo->getName() == sPatternName ) {
75 QStringList drumkitPaths;
87#ifdef H2CORE_HAVE_APPIMAGE
91 const auto additionalDirs = QStringList()
92 <<
"/usr/share/hydrogen/data/drumkits"
93 <<
"/usr/local/share/hydrogen/data/drumkits";
94 for (
const auto& ssDir : additionalDirs ) {
96 for (
const auto& ssEntry : QDir( ssDir ).entryList(
97 QDir::Dirs | QDir::Readable | QDir::NoDotAndDotDot ) ) {
98 const auto sFilePath = QString(
"%1/%2" ).arg( ssDir )
111 if ( ! drumkitPaths.contains( sDrumkitPath ) ) {
112 drumkitPaths << sDrumkitPath;
116 for (
const auto& sDrumkitPath : drumkitPaths ) {
118 if ( pDrumkit !=
nullptr ) {
121 ERRORLOG( QString(
"A drumkit was already loaded from [%1]. Something went wrong." )
122 .arg( sDrumkitPath ) );
126 INFOLOG( QString(
"Drumkit [%1] loaded from [%2]" )
127 .arg( pDrumkit->get_name() )
128 .arg( sDrumkitPath ) );
134 ERRORLOG( QString(
"Unable to load drumkit at [%1]" ).arg( sDrumkitPath ) );
138 if ( bTriggerEvent ) {
146 if ( pDrumkit !=
nullptr ) {
150 ERRORLOG( QString(
"Unable to load drumkit at [%1]" ).arg( sDrumkitPath ) );
153 if ( bTriggerEvent ) {
164 QString sDrumkitPath;
165 if ( sDrumkit.contains(
"/" ) || sDrumkit.contains(
"\\" ) ) {
167 sDrumkitPath = sDrumkit;
177 if ( sDrumkitPath.isEmpty() ) {
178 ERRORLOG( QString(
"Unable determine drumkit path based on supplied string [%1]" )
196 if ( pDrumkit ==
nullptr ) {
203 INFOLOG( QString(
"Session Drumkit [%1] loaded from [%2]" )
204 .arg( pDrumkit->get_name() )
205 .arg( sDrumkitPath ) );
227 if ( bTriggerEvent ) {
235 QString sFile = sPatternDir + sName;
236 std::shared_ptr<SoundLibraryInfo> pInfo =
237 std::make_shared<SoundLibraryInfo>();
239 if ( pInfo->load( sFile ) ) {
240 INFOLOG( QString(
"Pattern [%1] of category [%2] loaded from [%3]" )
241 .arg( pInfo->getName() ).arg( pInfo->getCategory() )
257 sOutput = QString(
"%1[SoundLibraryDatabase]\n" ).arg( sPrefix )
258 .append( QString(
"%1%2m_drumkitDatabase:\n" ).arg( sPrefix ).arg( s ) );
260 sOutput.append( QString(
"%1%2%2%3: %4\n" ).arg( sPrefix ).arg( s )
261 .arg( ssPath ).arg( ddrumkit->toQString(
"",
true ) ) );
263 sOutput.append( QString(
"%1%2m_patternInfoVector:\n" ).arg( sPrefix ).arg( s ) );
265 sOutput.append( QString(
"%3\n" )
266 .arg( ppatternInfo->toQString( sPrefix + s + s, bShort ) ) );
268 sOutput.append( QString(
"%1%2m_patternCategories: %3\n" ).arg( sPrefix ).arg( s )
270 sOutput.append( QString(
"%1%2m_customDrumkitPaths:\n" ).arg( sPrefix ).arg( s ) );
272 sOutput.append( QString(
"%1%2%2%3\n" ).arg( sPrefix ).arg( s )
273 .arg( ssCustomPath ) );
278 sOutput = QString(
"%1[SoundLibraryDatabase]\n" ).arg( sPrefix )
279 .append( QString(
"%1%2m_drumkitDatabase:\n" ).arg( sPrefix ).arg( s ) );
281 sOutput.append( QString(
"%1%2%2%3\n" ).arg( sPrefix ).arg( s )
282 .arg( eentry.first ) );
284 sOutput.append( QString(
"%1%2m_patternInfoVector:\n" ).arg( sPrefix ).arg( s ) );
286 sOutput.append( QString(
"%1%2%2%3\n" ).arg( sPrefix ).arg( s )
287 .arg( ppatternInfo->getPath() ) );
289 sOutput.append( QString(
"%1%2m_patternCategories: %3\n" ).arg( sPrefix ).arg( s )
291 sOutput.append( QString(
"%1%2m_customDrumkitPaths:\n" ).arg( sPrefix ).arg( s ) );
293 sOutput.append( QString(
"%1%2%2%3\n" ).arg( sPrefix ).arg( s )
294 .arg( ssCustomPath ) );
static QString sPrintIndention
String used to format the debugging string output of some core classes.
static std::shared_ptr< Drumkit > load(const QString &dk_dir, bool bUpgrade=true, bool *pLegacyFormatEncountered=nullptr, bool bSilent=false)
Load drumkit information from a directory.
static EventQueue * get_instance()
Returns a pointer to the current EventQueue singleton stored in __instance.
void push_event(const EventType type, const int nValue)
Queues the next event into the EventQueue.
static bool drumkit_valid(const QString &dk_path)
returns true if the path contains a usable drumkit
static QString absolute_path(const QString &sFilename, bool bSilent=false)
Convert a direct to an absolute path.
static QString usr_drumkits_dir()
returns user drumkits path
static QStringList pattern_list()
returns a list of existing patterns
static QString sys_drumkits_dir()
returns system drumkits path
static QStringList usr_drumkit_list()
returns list of usable user drumkits ( see Filesystem::drumkit_list )
@ stacked
First, looks in the system drumkits and, afterwards, in the user drumkits.
static QStringList sys_drumkit_list()
returns list of usable system drumkits ( see Filesystem::drumkit_list )
static QString drumkit_path_search(const QString &dk_name, Lookup lookup=Lookup::stacked, bool bSilent=false)
Returns the path to a H2Core::Drumkit folder.
static QStringList pattern_drumkits()
returns a list of existing drumkit sub dir into the patterns directory
static bool dir_exists(const QString &path, bool silent=false)
returns true if the given path is a regular directory
static QString patterns_dir()
returns user patterns path
std::map< QString, std::shared_ptr< Drumkit > > m_drumkitDatabase
void updateDrumkits(bool bTriggerEvent=true)
void loadPatternFromDirectory(const QString &path)
bool isPatternInstalled(const QString &sPatternName) const
void updateDrumkit(const QString &sDrumkitPath, bool bTriggerEvent=true)
void updatePatterns(bool bTriggerEvent=true)
QStringList m_customDrumkitPaths
List of drumkits the user supplied via CLI or OSC command but couldn't be found in either the system'...
QString toQString(const QString &sPrefix="", bool bShort=true) const override
Formatted string version for debugging purposes.
std::vector< std::shared_ptr< SoundLibraryInfo > > m_patternInfoVector
void printPatterns() const
QStringList m_patternCategories
std::shared_ptr< Drumkit > getDrumkit(const QString &sDrumkitPath, bool bLoad=true)
Retrieve a drumkit from the database.
@ EVENT_SOUND_LIBRARY_CHANGED