diff options
author | Bent Bisballe Nyeng <deva@aasimon.org> | 2014-03-30 11:15:57 +0200 |
---|---|---|
committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2014-03-30 11:15:57 +0200 |
commit | 011143d37aa438a7204c6a4a407db5c49e3fc6c5 (patch) | |
tree | 7fabae02245367c697f5fe3fe35009d3cb55f960 | |
parent | f271a3905a0e8d16f9258ba0b8743a8fd689e787 (diff) | |
parent | c852a24fc978ca7916c0f5819bfed870a1d9519e (diff) |
Merge branch 'master' of http://git.drumgizmo.org/drumgizmo
-rw-r--r-- | src/instrumentparser.cc | 11 | ||||
-rw-r--r-- | src/powerlist.cc | 20 | ||||
-rw-r--r-- | src/sample.cc | 3 | ||||
-rw-r--r-- | src/sample.h | 3 |
4 files changed, 27 insertions, 10 deletions
diff --git a/src/instrumentparser.cc b/src/instrumentparser.cc index 6580b09..c66608b 100644 --- a/src/instrumentparser.cc +++ b/src/instrumentparser.cc @@ -79,7 +79,16 @@ void InstrumentParser::startTag(std::string name, DEBUG(instrparser,"Missing required attribute 'name'.\n"); return; } - s = new Sample(attr["name"]); + + float power; + if(attr.find("power") == attr.end()) { + power = -1; + } else { + power = atof(attr["power"].c_str()); + DEBUG(instrparser, "Instrument power set to %f\n", power); + } + + s = new Sample(attr["name"], power); } if(name == "audiofile") { diff --git a/src/powerlist.cc b/src/powerlist.cc index 4f02892..cf843a3 100644 --- a/src/powerlist.cc +++ b/src/powerlist.cc @@ -168,16 +168,22 @@ void PowerList::finalise() master->load(); float power = 0; - size_t s = 0; - for(; s < SIZE && s < master->size; s++) { - power += master->data[s] * master->data[s]; - } + if(sample->power == -1) { // Power not defined. Calculate it! + DEBUG(powerlist, "Calculating power\n"); + size_t s = 0; + for(; s < SIZE && s < master->size; s++) { + power += master->data[s] * master->data[s]; + } - power = sqrt(power); + power = sqrt(power); - if(power > power_max) power_max = power; + if(power > power_max) power_max = power; - item.power = power; + item.power = power; + } else { // Power defined in xml + DEBUG(powerlist, "Using power from xml\n"); + power = sample->power; + } DEBUG(rand, " - power: %f\n", power); diff --git a/src/sample.cc b/src/sample.cc index be897c7..d50137d 100644 --- a/src/sample.cc +++ b/src/sample.cc @@ -31,9 +31,10 @@ #include <sndfile.h> -Sample::Sample(std::string name) +Sample::Sample(std::string name, float power) { this->name = name; + this->power = power; } Sample::~Sample() diff --git a/src/sample.h b/src/sample.h index cd3e111..61a3468 100644 --- a/src/sample.h +++ b/src/sample.h @@ -40,7 +40,7 @@ class Sample { friend class InstrumentParser; friend class PowerList; public: - Sample(std::string name); + Sample(std::string name, float power); ~Sample(); AudioFile *getAudioFile(InstrumentChannel *c); @@ -49,6 +49,7 @@ private: void addAudioFile(InstrumentChannel *c, AudioFile *a); std::string name; + float power; AudioFiles audiofiles; }; |