commit 2868b61de469c09993ca82c774ad8034e05bf12a
parent f4c3d7b42aef81fc3e092fc0e9b7e453fcd5e31d
Author: Johannes Lorenz <j.git@lorenz-ho.me>
Date: Fri, 24 Mar 2023 17:10:09 +0100
Add callback to count unknown addresses
Diffstat:
3 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/src/Misc/Master.cpp b/src/Misc/Master.cpp
@@ -901,6 +901,8 @@ bool Master::applyOscEvent(const char *msg, float *outl, float *outr,
uToB->peak(),
rtosc_argument_string(uToB->peak()));
fprintf(stderr, "%c[%d;%d;%dm", 0x1B, 0, 7 + 30, 0 + 40);
+ if(unknown_address_cb)
+ unknown_address_cb(unknown_address_cb_ptr, offline, uToB->peak());
}
else if(d.forwarded)
bToU->raw_write(msg);
diff --git a/src/Misc/Master.h b/src/Misc/Master.h
@@ -124,6 +124,12 @@ class Master
bool runOSC(float *outl, float *outr, bool offline=false,
Master* master_from_mw = nullptr);
+ //For debugging OSC issues
+ void setUnknownAddressCallback(void(*cb)(void*,bool,rtosc::msg_t), void* ptr) {
+ unknown_address_cb = cb;
+ unknown_address_cb_ptr = ptr;
+ }
+
/**Audio Output*/
bool AudioOut(float *outl, float *outr) REALTIME;
/**Audio Output (for callback mode).
@@ -235,6 +241,8 @@ class Master
private:
std::atomic<bool> run_osc_in_use = { false };
+ void (*unknown_address_cb)(void*,bool,rtosc::msg_t) = nullptr;
+ void* unknown_address_cb_ptr;
float sysefxvol[NUM_SYS_EFX][NUM_MIDI_PARTS];
float sysefxsend[NUM_SYS_EFX][NUM_SYS_EFX];
diff --git a/src/Tests/SaveOSC.cpp b/src/Tests/SaveOSC.cpp
@@ -35,13 +35,27 @@ class SaveOSCTest
#endif
master = m;
master->setMasterChangedCallback(__masterChangedCallback, this);
+ master->setUnknownAddressCallback(__unknownAddressCallback, this);
}
+ // TODO: eliminate static callbacks
static void __masterChangedCallback(void* ptr, zyn::Master* m)
{
((SaveOSCTest*)ptr)->_masterChangedCallback(m);
}
+ std::atomic<unsigned> unknown_addresses_count = { 0 };
+
+ void _unknownAddressCallback(bool, rtosc::msg_t)
+ {
+ ++unknown_addresses_count;
+ }
+
+ static void __unknownAddressCallback(void* ptr, bool offline, rtosc::msg_t msg)
+ {
+ ((SaveOSCTest*)ptr)->_unknownAddressCallback(offline, msg);
+ }
+
void setUp() {
// this might be set to true in the future
// when saving will work better