summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/drumkit.cc14
-rw-r--r--src/drumkit.h7
-rw-r--r--src/instrument.cc7
-rw-r--r--src/instrument.h3
4 files changed, 28 insertions, 3 deletions
diff --git a/src/drumkit.cc b/src/drumkit.cc
index 1dadf04..abef1b8 100644
--- a/src/drumkit.cc
+++ b/src/drumkit.cc
@@ -68,7 +68,19 @@ std::string DrumKit::getDescription() const
return _description;
}
-size_t DrumKit::getSamplerate() const
+std::size_t DrumKit::getSamplerate() const
{
return _samplerate;
}
+
+std::size_t DrumKit::getNumberOfFiles() const
+{
+ std::size_t number_of_files = 0;
+
+ for(const auto & instrument : instruments)
+ {
+ number_of_files += instrument->getNumberOfFiles();
+ }
+
+ return number_of_files;
+}
diff --git a/src/drumkit.h b/src/drumkit.h
index e3ae783..f646b22 100644
--- a/src/drumkit.h
+++ b/src/drumkit.h
@@ -52,7 +52,10 @@ public:
bool isValid() const;
- size_t getSamplerate() const;
+ std::size_t getSamplerate() const;
+
+ //! Get the number of audio files (as in single channel) in this drumkit.
+ std::size_t getNumberOfFiles() const;
private:
void* magic{nullptr};
@@ -61,7 +64,7 @@ private:
std::string _name;
std::string _description;
- size_t _samplerate{0};
+ std::size_t _samplerate{0};
VersionStr _version;
};
diff --git a/src/instrument.cc b/src/instrument.cc
index 5c96c6d..466acc1 100644
--- a/src/instrument.cc
+++ b/src/instrument.cc
@@ -117,3 +117,10 @@ void Instrument::setGroup(const std::string& g)
{
_group = g;
}
+
+std::size_t Instrument::getNumberOfFiles() const
+{
+ // Note: Each AudioFile instance contains just a single channel even for
+ // multi-channel files.
+ return audiofiles.size();
+}
diff --git a/src/instrument.h b/src/instrument.h
index e61d446..41fe886 100644
--- a/src/instrument.h
+++ b/src/instrument.h
@@ -60,6 +60,9 @@ public:
bool isValid() const;
+ //! Get the number of audio files (as in single channel) in this instrument.
+ std::size_t getNumberOfFiles() const;
+
private:
void* magic;