diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/drumgizmo.cc | 28 | ||||
-rw-r--r-- | src/drumgizmo.h | 10 |
2 files changed, 14 insertions, 24 deletions
diff --git a/src/drumgizmo.cc b/src/drumgizmo.cc index c4ef194..fa26640 100644 --- a/src/drumgizmo.cc +++ b/src/drumgizmo.cc @@ -49,23 +49,14 @@ DrumGizmo::DrumGizmo(AudioOutputEngine *o, AudioInputEngine *i) DrumGizmo::~DrumGizmo() { - DEBUG(drumgizmo, "!"); - loader.stop(); -} - -std::string DrumGizmo::drumkitfile() -{ - return kitfile; } bool DrumGizmo::loadkit(std::string file) { - if(file == this->kitfile) return 1; + if(file == kit.file()) return 1; if(file == "") return 1; - this->kitfile = file; - - DEBUG(drumgizmo, "loadkit(%s)\n", kitfile.c_str()); + DEBUG(drumgizmo, "loadkit(%s)\n", file.c_str()); // Remove all queue AudioFiles from loader before we actually delete them. loader.skip(); @@ -73,9 +64,9 @@ bool DrumGizmo::loadkit(std::string file) // Delete all Channels, Instruments, Samples and AudioFiles. kit.clear(); - DrumKitParser parser(kitfile, kit); + DrumKitParser parser(file, kit); if(parser.parse()) { - ERR(drumgizmo, "Drumkit parser failed: %s\n", kitfile.c_str()); + ERR(drumgizmo, "Drumkit parser failed: %s\n", file.c_str()); return false; } @@ -123,8 +114,6 @@ void DrumGizmo::handleMessage(Message *msg) break; case Message::EngineSettingsMessage: { - DEBUG(msg, "--------------- Send: EngineSettingsMessage ------------ \n"); - bool mmap_loaded = false; std::string mmapfile; if(ie->isMidiEngine()) { @@ -136,7 +125,7 @@ void DrumGizmo::handleMessage(Message *msg) EngineSettingsMessage *msg = new EngineSettingsMessage(); msg->midimapfile = mmapfile; msg->midimap_loaded = mmap_loaded; - msg->drumkitfile = drumkitfile(); + msg->drumkitfile = kit.file(); msg->drumkit_loaded = loader.isDone(); msg->enable_velocity_modifier = Conf::enable_velocity_modifier; msg->velocity_modifier_falloff = Conf::velocity_modifier_falloff; @@ -293,7 +282,7 @@ bool DrumGizmo::run(size_t pos, sample_t *samples, size_t nsamples) return true; } -void DrumGizmo::run() +void DrumGizmo::run(int endpos) { ie->start(); oe->start(); @@ -304,6 +293,7 @@ void DrumGizmo::run() while(run(pos, samples, nsamples) == true) { pos += nsamples; + if(endpos != -1 && pos >= (size_t)endpos) break; } ie->stop(); @@ -429,7 +419,7 @@ std::string DrumGizmo::configString() return "<config>\n" - " <value name=\"drumkitfile\">" + kitfile + "</value>\n" + " <value name=\"drumkitfile\">" + kit.file() + "</value>\n" " <value name=\"midimapfile\">" + mmapfile + "</value>\n" " <value name=\"enable_velocity_modifier\">" + bool2str(Conf::enable_velocity_modifier) + "</value>\n" @@ -482,7 +472,7 @@ bool DrumGizmo::setConfigString(std::string cfg) } std::string newkit = p.value("drumkitfile"); - if(newkit != "" && drumkitfile() != newkit) { + if(newkit != "" && kit.file() != newkit) { /* if(!loadkit(p.values["drumkitfile"])) return false; init(true); diff --git a/src/drumgizmo.h b/src/drumgizmo.h index 2ef0aeb..37b26e5 100644 --- a/src/drumgizmo.h +++ b/src/drumgizmo.h @@ -54,11 +54,13 @@ public: virtual ~DrumGizmo(); bool loadkit(std::string kitfile); - std::string drumkitfile(); bool init(bool preload = true); - - void run(); + + /** + * @param endpos number of samples to process, -1 := never stop. + */ + void run(int endpos); bool run(size_t pos, sample_t *samples, size_t nsamples); void stop(); @@ -69,8 +71,6 @@ public: std::string configString(); bool setConfigString(std::string cfg); - std::string kitfile; - void handleMessage(Message *msg); int samplerate(); |