summaryrefslogtreecommitdiff
path: root/src/midimapper.h
diff options
context:
space:
mode:
authorSander Vocke <sandervocke@gmail.com>2024-07-25 09:09:35 +0200
committerSander Vocke <sandervocke@gmail.com>2024-07-25 11:06:32 +0200
commit624aafbc9cde2b9e83c7c278e44f19ab9e3bc9fc (patch)
treef6e2ef7329b32e4601326012221e0b5ce64a0367 /src/midimapper.h
parent019d478818950f7880d2c0f80d8fc8f963e9736b (diff)
Support curve maps in midi map file
Diffstat (limited to 'src/midimapper.h')
-rw-r--r--src/midimapper.h20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/midimapper.h b/src/midimapper.h
index 94781d4..ee1e8d0 100644
--- a/src/midimapper.h
+++ b/src/midimapper.h
@@ -30,11 +30,24 @@
#include <string>
#include <mutex>
#include <vector>
+#include <memory>
+
+#include "curvemap.h"
struct MidimapEntry
{
int note_id;
std::string instrument_name;
+
+ //! An optional curve map which will map the given velocity
+ //! or CC value to a new value.
+ std::unique_ptr<CurveMap> maybe_curve_map;
+
+ MidimapEntry &operator=(const MidimapEntry& other);
+ MidimapEntry(const MidimapEntry& other);
+ MidimapEntry(int note_id,
+ std::string instrument_name,
+ CurveMap *maybe_curve_map = nullptr);
};
using midimap_t = std::vector<MidimapEntry>;
@@ -43,8 +56,11 @@ using instrmap_t = std::map<std::string, int>;
class MidiMapper
{
public:
- //! Lookup note in map and returns the corresponding instrument index list.
- std::vector<int> lookup(int note_id);
+ //! Lookup midi map entries matching the given note.
+ std::vector<MidimapEntry> lookup(int note_id);
+
+ //! Lookup instrument by name.
+ int lookup_instrument(std::string name);
//! Set new map sets.
void swap(instrmap_t& instrmap, midimap_t& midimap);