summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/drumgizmo.cc28
-rw-r--r--src/drumgizmo.h10
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();