diff options
author | Sander Vocke <sandervocke@gmail.com> | 2024-07-25 09:09:35 +0200 |
---|---|---|
committer | Sander Vocke <sandervocke@gmail.com> | 2024-07-25 11:06:32 +0200 |
commit | 624aafbc9cde2b9e83c7c278e44f19ab9e3bc9fc (patch) | |
tree | f6e2ef7329b32e4601326012221e0b5ce64a0367 /src/midimapper.h | |
parent | 019d478818950f7880d2c0f80d8fc8f963e9736b (diff) |
Support curve maps in midi map file
Diffstat (limited to 'src/midimapper.h')
-rw-r--r-- | src/midimapper.h | 20 |
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); |