summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2013-04-26 15:18:22 +0200
committerBent Bisballe Nyeng <deva@aasimon.org>2013-04-26 15:18:22 +0200
commit813d802443679a6f937a13680bc0ec3fb11a96b6 (patch)
tree832080cb77616941ede4572fcf845eb4281f59ba
parent605dee007b10fbca1a03b0a2b604b4e999ad7c0f (diff)
Add MidimapLoadStatus Message.
-rw-r--r--plugingui/plugingui.cc20
-rw-r--r--src/audioinputenginemidi.cc26
-rw-r--r--src/audioinputenginemidi.h6
-rw-r--r--src/drumgizmo.cc12
-rw-r--r--src/message.h7
5 files changed, 64 insertions, 7 deletions
diff --git a/plugingui/plugingui.cc b/plugingui/plugingui.cc
index 864f4d8..8e886ee 100644
--- a/plugingui/plugingui.cc
+++ b/plugingui/plugingui.cc
@@ -250,11 +250,31 @@ void PluginGUI::thread_main()
}
}
break;
+ case Message::LoadStatusMidimap:
+ {
+ LoadStatusMessageMidimap *ls = (LoadStatusMessageMidimap*)msg;
+ DEBUG(gui, "Midimap status (%d)\n",
+ ls->success);
+ progress2->setProgress(1);
+ if(ls->success) {
+ progress2->setState(GUI::ProgressBar::green);
+ } else {
+ progress2->setState(GUI::ProgressBar::red);
+ }
+ }
+ break;
case Message::EngineSettingsMessage:
{
EngineSettingsMessage *settings = (EngineSettingsMessage *)msg;
lineedit->setText(settings->drumkitfile);
lineedit2->setText(settings->midimapfile);
+ if(settings->midimap_loaded) {
+ progress2->setProgress(1);
+ progress2->setState(GUI::ProgressBar::green);
+ } else {
+ progress2->setProgress(0);
+ progress2->setState(GUI::ProgressBar::blue);
+ }
check->setChecked(settings->enable_velocity_modifier);
knob->setValue(settings->velocity_modifier_weight);
knob2->setValue(settings->velocity_modifier_falloff);
diff --git a/src/audioinputenginemidi.cc b/src/audioinputenginemidi.cc
index 00aa518..44e8606 100644
--- a/src/audioinputenginemidi.cc
+++ b/src/audioinputenginemidi.cc
@@ -30,13 +30,25 @@
#include <hugin.hpp>
-void AudioInputEngineMidi::loadMidiMap(std::string f, Instruments &instruments)
+AudioInputEngineMidi::AudioInputEngineMidi()
{
+ is_valid = false;
+}
+
+bool AudioInputEngineMidi::loadMidiMap(std::string f, Instruments &instruments)
+{
+ file = "";
+ is_valid = false;
+
DEBUG(mmap, "loadMidiMap(%s, i.size() == %d)\n", f.c_str(),
instruments.size());
- if(f == "") return;
+
+ if(f == "") return false;
+
MidiMapParser p(f);
- if(p.parse()) {/*return false;*/}
+ if(p.parse()) {
+ return false;
+ }
mmap.clear();
mmap.midimap = p.midimap;
@@ -46,6 +58,9 @@ void AudioInputEngineMidi::loadMidiMap(std::string f, Instruments &instruments)
}
file = f;
+ is_valid = true;
+
+ return true;
}
std::string AudioInputEngineMidi::midimapFile()
@@ -53,6 +68,11 @@ std::string AudioInputEngineMidi::midimapFile()
return file;
}
+bool AudioInputEngineMidi::isValid()
+{
+ return is_valid;
+}
+
#ifdef TEST_AUDIOINPUTENGINEMIDI
//Additional dependency files
//deps:
diff --git a/src/audioinputenginemidi.h b/src/audioinputenginemidi.h
index 0f63f8a..b01fef0 100644
--- a/src/audioinputenginemidi.h
+++ b/src/audioinputenginemidi.h
@@ -36,6 +36,7 @@
class AudioInputEngineMidi : public AudioInputEngine {
public:
+ AudioInputEngineMidi();
virtual ~AudioInputEngineMidi() {}
bool isMidiEngine() { return true; }
@@ -51,13 +52,16 @@ public:
virtual event_t *run(size_t pos, size_t len, size_t *nevents) = 0;
virtual void post() = 0;
- void loadMidiMap(std::string file, Instruments &i);
+ bool loadMidiMap(std::string file, Instruments &i);
std::string midimapFile();
+ bool isValid();
+
protected:
MidiMapper mmap;
std::string file;
+ bool is_valid;
};
#endif/*__DRUMGIZMO_AUDIOINPUTENGINEMIDI_H__*/
diff --git a/src/drumgizmo.cc b/src/drumgizmo.cc
index 8ba45f5..943e852 100644
--- a/src/drumgizmo.cc
+++ b/src/drumgizmo.cc
@@ -201,22 +201,28 @@ void DrumGizmo::handleEngineEvents()
{
AudioInputEngineMidi *aim = (AudioInputEngineMidi*)ie;
LoadMidimapMessage *m = (LoadMidimapMessage*)msg;
- aim->loadMidiMap(m->midimapfile, kit.instruments);
+ bool ret = aim->loadMidiMap(m->midimapfile, kit.instruments);
+
+ LoadStatusMessageMidimap *ls = new LoadStatusMessageMidimap();
+ ls->success = ret;
+ sendGUIMessage(ls);
}
break;
case Message::EngineSettingsMessage:
{
DEBUG(msg, "got EngineSettingsMessage message.");
-
+ bool mmap_loaded = false;
std::string mmapfile;
if(ie->isMidiEngine()) {
AudioInputEngineMidi *aim = (AudioInputEngineMidi*)ie;
mmapfile = aim->midimapFile();
+ mmap_loaded = aim->isValid();
+
}
EngineSettingsMessage *msg = new EngineSettingsMessage();
msg->midimapfile = mmapfile;
- msg->midimap_loaded = true;
+ msg->midimap_loaded = mmap_loaded;
msg->drumkitfile = drumkitfile();
msg->drumkit_loaded = true;
msg->enable_velocity_modifier = Conf::enable_velocity_modifier;
diff --git a/src/message.h b/src/message.h
index 9bf2f12..4ce65ef 100644
--- a/src/message.h
+++ b/src/message.h
@@ -32,6 +32,7 @@ public:
typedef enum {
// Engine -> GUI Messages:
LoadStatus, // Signal GUI the current load status.
+ LoadStatusMidimap, // Signal GUI the current load status of the midimap.
// GUI -> Engine, Engine -> Engine Messages:
LoadDrumKit, // Signal engine to load drumkit.
@@ -52,6 +53,12 @@ public:
std::string current_file;
};
+class LoadStatusMessageMidimap : public Message {
+public:
+ type_t type() { return Message::LoadStatusMidimap; }
+ bool success;
+};
+
class LoadDrumKitMessage : public Message {
public:
type_t type() { return Message::LoadDrumKit; }