summaryrefslogtreecommitdiff
path: root/src/audioinputenginemidi.cc
diff options
context:
space:
mode:
authorNils Brederlow <62596379+dingodoppelt@users.noreply.github.com>2022-02-03 20:57:53 +0100
committerBent Bisballe Nyeng <deva@aasimon.org>2022-02-03 20:57:53 +0100
commit76d649620c321d94cf8fcbe8ee5f006ffd191b14 (patch)
treefbff2cbb76b620845eaf5b192ef928b0f95e0897 /src/audioinputenginemidi.cc
parent235ad6fbbce2e0ae9e06db960a5ba3b099936ace (diff)
Add feature CC to note to midimap
Diffstat (limited to 'src/audioinputenginemidi.cc')
-rw-r--r--src/audioinputenginemidi.cc19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/audioinputenginemidi.cc b/src/audioinputenginemidi.cc
index 69aeeb6..c4041e3 100644
--- a/src/audioinputenginemidi.cc
+++ b/src/audioinputenginemidi.cc
@@ -78,7 +78,7 @@ bool AudioInputEngineMidi::loadMidiMap(const std::string& file,
instrmap[instruments[i]->getName()] = i;
}
- mmap.swap(instrmap, midimap_parser.midimap);
+ mmap.swap(instrmap, midimap_parser.midimap, midimap_parser.ccmap);
midimap = file;
is_valid = true;
@@ -100,6 +100,7 @@ bool AudioInputEngineMidi::isValid() const
static const std::uint8_t NoteOff = 0x80;
static const std::uint8_t NoteOn = 0x90;
static const std::uint8_t NoteAftertouch = 0xA0;
+static const std::uint8_t CC = 0xB0;
// Note type mask:
static int const NoteMask = 0xF0;
@@ -114,9 +115,23 @@ void AudioInputEngineMidi::processNote(const std::uint8_t* midi_buffer,
return;
}
+ if(((midi_buffer[0] & NoteMask) == CC) && (midi_buffer[2] == 127))
+ {
+ std::uint8_t intermediateBuffer[3];
+ auto notes = mmap.lookupCC(midi_buffer[1]);
+ intermediateBuffer[0] = NoteOn;
+ intermediateBuffer[2] = 127;
+ for(const auto& note_idx : notes)
+ {
+ intermediateBuffer[1] = (std::size_t)note_idx;
+ processNote(intermediateBuffer, 3, offset, events);
+ }
+ return;
+ }
+
auto key = midi_buffer[1];
auto velocity = midi_buffer[2];
- auto instrument_idx = mmap.lookup(key);
+ //auto instrument_idx = mmap.lookup(key);
auto instruments = mmap.lookup(key);
for(const auto& instrument_idx : instruments)
{