summaryrefslogtreecommitdiff
path: root/plugingui
diff options
context:
space:
mode:
Diffstat (limited to 'plugingui')
-rw-r--r--plugingui/colour.h9
-rw-r--r--plugingui/drumkittab.cc15
-rw-r--r--plugingui/drumkittab.h2
3 files changed, 22 insertions, 4 deletions
diff --git a/plugingui/colour.h b/plugingui/colour.h
index 3a135fc..232b0b9 100644
--- a/plugingui/colour.h
+++ b/plugingui/colour.h
@@ -54,4 +54,13 @@ private:
std::array<float, 4> data;
};
+struct ColourHasher
+{
+ // TODO: replace by something reasonable
+ std::size_t operator()(const Colour& colour) const
+ {
+ return 7*colour.red() + 11*colour.green() + 13*colour.blue() + 17*colour.alpha();
+ }
+};
+
} // GUI::
diff --git a/plugingui/drumkittab.cc b/plugingui/drumkittab.cc
index 91fc801..1dccb52 100644
--- a/plugingui/drumkittab.cc
+++ b/plugingui/drumkittab.cc
@@ -88,14 +88,14 @@ void DrumkitTab::triggerAudition(int x, int y)
{
auto map_colour = map_image->getPixel(x, y);
- // TODO: convert color to instrument
- if (map_colour != Colour(0))
+ auto it = colour_to_instrument.find(map_colour);
+ if (it == colour_to_instrument.end())
{
return;
}
++settings.audition_counter;
- settings.audition_instrument = "Snare";
+ settings.audition_instrument = it->second;
settings.audition_velocity = current_velocity;
}
@@ -106,11 +106,18 @@ void DrumkitTab::updateVelocityLabel()
velocity_label.setText("Velocity: " + stream.str());
}
-// FIXME: this should actually be done somewhere else maybe?
void DrumkitTab::loadImageFiles(std::string const& image_file, std::string const& map_file)
{
drumkit_image = std::make_unique<Image>(image_file);
map_image = std::make_unique<Image>(map_file);
+
+ // TODO: actually use mapping from drumkit file here
+ colour_to_instrument = {
+ {Colour(0), "Snare"},
+ {Colour(255./255, 15./255, 55./255), "KdrumL"},
+ {Colour(154./255, 153./255, 33./255), "HihatClosed"},
+ {Colour(248./255, 221./255, 37./255), "Tom4"}
+ };
}
} // GUI::
diff --git a/plugingui/drumkittab.h b/plugingui/drumkittab.h
index c53d3f5..5fe234a 100644
--- a/plugingui/drumkittab.h
+++ b/plugingui/drumkittab.h
@@ -26,6 +26,7 @@
*/
#pragma once
+#include <unordered_map>
#include <memory>
#include <string>
@@ -59,6 +60,7 @@ public:
private:
float current_velocity = .5;
+ std::unordered_map<Colour, std::string, ColourHasher> colour_to_instrument;
std::unique_ptr<Image> drumkit_image;
std::unique_ptr<Image> map_image;