|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- #pragma once
- #include <functional>
- #include <cstdarg>
- #include <string>
-
- struct SYNTH_T;
- class Master;
- class PresetsStore;
-
- //Link between realtime and non-realtime layers
- class MiddleWare
- {
- public:
- MiddleWare(SYNTH_T synth, class Config *config,
- int preferred_port = -1);
- ~MiddleWare(void);
- void updateResources(Master *m);
- //returns internal master pointer
- class Master *spawnMaster(void);
- //return UI interface
- class Fl_Osc_Interface *spawnUiApi(void);
- //Set callback to push UI events to
- void setUiCallback(void(*cb)(void*,const char *),void *ui);
- //Set callback to run while busy
- void setIdleCallback(void(*cb)(void*),void *ptr);
- //Handle events
- void tick(void);
- //Do A Readonly Operation (For Parameter Copy)
- void doReadOnlyOp(std::function<void()>);
- //Handle a rtosc Message uToB
- void transmitMsg(const char *);
- //Handle a rtosc Message uToB
- void transmitMsg(const char *, const char *args, ...);
- //Handle a rtosc Message uToB
- void transmitMsg_va(const char *, const char *args, va_list va);
-
- //Send a message to middleware from an arbitrary thread
- void messageAnywhere(const char *msg, const char *args, ...);
-
- //Indicate that a bank will be loaded
- //NOTE: Can only be called by realtime thread
- void pendingSetBank(int bank);
- //Indicate that a program will be loaded on a known part
- //NOTE: Can only be called by realtime thread
- void pendingSetProgram(int part, int program);
-
- //Get/Set the active bToU url
- std::string activeUrl(void);
- void activeUrl(std::string u);
- //View Synthesis Parameters
- const SYNTH_T &getSynth(void) const;
- //liblo stuff
- const char* getServerAddress(void) const;
-
- const PresetsStore& getPresetsStore() const;
- PresetsStore& getPresetsStore();
- private:
- class MiddleWareImpl *impl;
- };
|