summaryrefslogtreecommitdiffhomepage
path: root/MIDI.h
diff options
context:
space:
mode:
authorRoland Reichwein <mail@reichwein.it>2025-01-03 20:17:26 +0100
committerRoland Reichwein <mail@reichwein.it>2025-01-03 20:17:26 +0100
commit6bf4770e950299da92952f2965cccf86a903fc9f (patch)
tree9854c706f0fc8104f1f85fe0f6ff58b56661a5a6 /MIDI.h
parent81ef3f08215a62d469c49762ccd492cb806150c4 (diff)
Added config
Diffstat (limited to 'MIDI.h')
-rw-r--r--MIDI.h39
1 files changed, 23 insertions, 16 deletions
diff --git a/MIDI.h b/MIDI.h
index 0dbc4aa..d71298d 100644
--- a/MIDI.h
+++ b/MIDI.h
@@ -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;
}
}