zynaddsubfx

ZynAddSubFX open source synthesizer
Log | Files | Refs | Submodules | LICENSE

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:
Msrc/Misc/Master.cpp | 2++
Msrc/Misc/Master.h | 8++++++++
Msrc/Tests/SaveOSC.cpp | 14++++++++++++++
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