diff options
author | Roland Reichwein <mail@reichwein.it> | 2025-01-03 20:17:26 +0100 |
---|---|---|
committer | Roland Reichwein <mail@reichwein.it> | 2025-01-03 20:17:26 +0100 |
commit | 6bf4770e950299da92952f2965cccf86a903fc9f (patch) | |
tree | 9854c706f0fc8104f1f85fe0f6ff58b56661a5a6 /MIDI.h | |
parent | 81ef3f08215a62d469c49762ccd492cb806150c4 (diff) |
Added config
Diffstat (limited to 'MIDI.h')
-rw-r--r-- | MIDI.h | 39 |
1 files changed, 23 insertions, 16 deletions
@@ -2,6 +2,7 @@ #include "config.h" #include "debug.h" +#include "log.h" #include <boost/signals2.hpp> @@ -31,7 +32,7 @@ public: throw std::runtime_error("MIDI port couldn't be opened"); } - std::cout << "in_port: " << std::to_string(in_port) << std::endl; + log_cout << "in_port: " << std::to_string(in_port) << std::endl; #if 1 snd_seq_addr_t sender, dest; @@ -79,7 +80,9 @@ public: free(pfd); } - boost::signals2::signal<void()> signal_click; + boost::signals2::signal<void(int, int)> signal_note; + boost::signals2::signal<void()> signal_active_sensing; + boost::signals2::signal<void()> signal_clock; int fd() { @@ -121,33 +124,37 @@ public: // returns if click starts void process(const snd_seq_event_t *ev) { - if((ev->type == SND_SEQ_EVENT_NOTEON) - ||(ev->type == SND_SEQ_EVENT_NOTEOFF)) { - const char *type = (ev->type == SND_SEQ_EVENT_NOTEON) ? "on " : "off"; - debug_cout << fmt::format("[{}] Note {}: {:2x} vel({:2x}), ch {:2x}\n", ((ev->flags & SND_SEQ_TIME_STAMP_MASK) == SND_SEQ_TIME_STAMP_REAL) ? ev->time.time.tv_sec : ev->time.tick, + if ((ev->type == SND_SEQ_EVENT_NOTEON) ||(ev->type == SND_SEQ_EVENT_NOTEOFF)) { + const char *type = (ev->type == SND_SEQ_EVENT_NOTEON) ? "on " : "off"; + debug_cout << fmt::format("[{}] Note {}: {:2x} vel({:2x}), ch {:2x}\n", ((ev->flags & SND_SEQ_TIME_STAMP_MASK) == SND_SEQ_TIME_STAMP_REAL) ? ev->time.time.tv_sec : ev->time.tick, type, ev->data.note.note, ev->data.note.velocity, ev->data.control.channel); - if (ev->type == SND_SEQ_EVENT_NOTEON) { - if (true || (ev->data.note.note == CLICK_NOTE && ev->data.control.channel == CLICK_CHANNEL)) { - signal_click(); - } - } + if (ev->type == SND_SEQ_EVENT_NOTEON) { + signal_note(ev->data.control.channel, ev->data.note.note); + } } - else if(ev->type == SND_SEQ_EVENT_CONTROLLER) + else if (ev->type == SND_SEQ_EVENT_CONTROLLER) { - debug_cout << fmt::format("[{}] Control: {:2x} val({:2x})\n", ((ev->flags & SND_SEQ_TIME_STAMP_MASK) == SND_SEQ_TIME_STAMP_REAL) ? ev->time.time.tv_sec : ev->time.tick, + debug_cout << fmt::format("[{}] Control: {:2x} val({:2x})\n", + ((ev->flags & SND_SEQ_TIME_STAMP_MASK) == SND_SEQ_TIME_STAMP_REAL) ? ev->time.time.tv_sec : ev->time.tick, ev->data.control.param, ev->data.control.value); } - else if(ev->type == SND_SEQ_EVENT_CLOCK) + else if (ev->type == SND_SEQ_EVENT_SENSING) { - debug_cout << fmt::format("[{}] Clock\n", ((ev->flags & SND_SEQ_TIME_STAMP_MASK) == SND_SEQ_TIME_STAMP_REAL) ? ev->time.time.tv_sec : ev->time.tick) << std::endl;; + signal_active_sensing(); + debug_cout << fmt::format("[{}] Active Sensing\n", ((ev->flags & SND_SEQ_TIME_STAMP_MASK) == SND_SEQ_TIME_STAMP_REAL) ? ev->time.time.tv_sec : ev->time.tick) << std::endl; + } + else if (ev->type == SND_SEQ_EVENT_CLOCK) + { + signal_clock(); + debug_cout << fmt::format("[{}] Clock\n", ((ev->flags & SND_SEQ_TIME_STAMP_MASK) == SND_SEQ_TIME_STAMP_REAL) ? ev->time.time.tv_sec : ev->time.tick) << std::endl; } else { - debug_cout << fmt::format("[{}] Unknown: Unhandled Event Received\n", ev->time.tick) << std::endl;; + log_cout << fmt::format("[{}] Unknown MIDI event: {}\n", ev->time.tick, ev->type) << std::endl; } } |