LMMS
Loading...
Searching...
No Matches
zyncarla::MiddleWareImpl Class Reference

Public Member Functions

 MiddleWareImpl (MiddleWare *mw, SYNTH_T synth, Config *config, int preferred_port)
 ~MiddleWareImpl (void)
void heartBeat (Master *m)
void doReadOnlyOp (std::function< void()> read_only_fn)
void doReadOnlyOpPlugin (std::function< void()> read_only_fn)
bool doReadOnlyOpNormal (std::function< void()> read_only_fn, bool canfail=false)
void savePart (int npart, const char *filename)
void loadPendingBank (int par, Bank &bank)
void loadPart (int npart, const char *filename, Master *master)
void loadClearPart (int npart)
void loadMaster (const char *filename)
void loadXsz (const char *filename, rtosc::RtData &d)
void saveXsz (const char *filename, rtosc::RtData &d)
void loadScl (const char *filename, rtosc::RtData &d)
void loadKbm (const char *filename, rtosc::RtData &d)
void updateResources (Master *m)
void bToUhandle (const char *rtmsg)
void tick (void)
void kitEnable (const char *msg)
void kitEnable (int part, int kit, int type)
void handleMsg (const char *msg)
void write (const char *path, const char *args,...)
void write (const char *path, const char *args, va_list va)
void currentUrl (string addr)
void sendToRemote (const char *msg, std::string dest)
void sendToCurrentRemote (const char *msg)
void broadcastToRemote (const char *msg)

Public Attributes

MiddleWareparent
Config *const config
int64_t start_time_sec
int64_t start_time_nsec
bool offline
bool broadcast = false
bool forward = false
bool in_order = false
bool recording_undo = true
NonRtObjStore obj_store
Mastermaster
Fl_Osc_Interfaceosc
ParamStore kits
void(* idle )(void *)
voididle_ptr
cb_t cb
voidui
std::atomic_int pending_load [NUM_MIDI_PARTS]
std::atomic_int actual_load [NUM_MIDI_PARTS]
rtosc::UndoHistory undo
rtosc::ThreadLinkbToU
rtosc::ThreadLinkuToB
MultiQueue multi_thread_source
lo_server server
string last_url
string curr_url
std::set< string > known_remotes
const SYNTH_T synth
PresetsStore presetsstore
CallbackRepeater autoSave

Constructor & Destructor Documentation

◆ MiddleWareImpl()

zyncarla::MiddleWareImpl::MiddleWareImpl ( MiddleWare * mw,
SYNTH_T synth,
Config * config,
int preferred_port )

◆ ~MiddleWareImpl()

zyncarla::MiddleWareImpl::~MiddleWareImpl ( void )

Member Function Documentation

◆ broadcastToRemote()

void zyncarla::MiddleWareImpl::broadcastToRemote ( const char * msg)

◆ bToUhandle()

void zyncarla::MiddleWareImpl::bToUhandle ( const char * rtmsg)

Handle all events coming from the backend

This includes forwarded events which need to be retransmitted to the backend after the snooping code inspects the message

◆ currentUrl()

void zyncarla::MiddleWareImpl::currentUrl ( string addr)
inline

◆ doReadOnlyOp()

void zyncarla::MiddleWareImpl::doReadOnlyOp ( std::function< void()> read_only_fn)

Threading When Saving

Procedure Middleware: 1) Middleware sends /freeze_state to backend 2) Middleware waits on /state_frozen from backend All intervening commands are held for out of order execution 3) Aquire memory At this time by the memory barrier we are guarenteed that all old writes are done and assuming the freezing logic is sound, then it is impossible for any other parameter to change at this time 3) Middleware performs saving operation 4) Middleware sends /thaw_state to backend 5) Restore in order execution

Procedure Backend: 1) Observe /freeze_state and disable all mutating events (MIDI CC) 2) Run a memory release to ensure that all writes are complete 3) Send /state_frozen to Middleware time... 4) Observe /thaw_state and resume normal processing

◆ doReadOnlyOpNormal()

bool zyncarla::MiddleWareImpl::doReadOnlyOpNormal ( std::function< void()> read_only_fn,
bool canfail = false )

◆ doReadOnlyOpPlugin()

void zyncarla::MiddleWareImpl::doReadOnlyOpPlugin ( std::function< void()> read_only_fn)

◆ handleMsg()

void zyncarla::MiddleWareImpl::handleMsg ( const char * msg)

◆ heartBeat()

void zyncarla::MiddleWareImpl::heartBeat ( Master * m)

◆ kitEnable() [1/2]

void zyncarla::MiddleWareImpl::kitEnable ( const char * msg)

◆ kitEnable() [2/2]

void zyncarla::MiddleWareImpl::kitEnable ( int part,
int kit,
int type )

◆ loadClearPart()

void zyncarla::MiddleWareImpl::loadClearPart ( int npart)
inline

◆ loadKbm()

void zyncarla::MiddleWareImpl::loadKbm ( const char * filename,
rtosc::RtData & d )
inline

◆ loadMaster()

void zyncarla::MiddleWareImpl::loadMaster ( const char * filename)
inline

◆ loadPart()

void zyncarla::MiddleWareImpl::loadPart ( int npart,
const char * filename,
Master * master )
inline

◆ loadPendingBank()

void zyncarla::MiddleWareImpl::loadPendingBank ( int par,
Bank & bank )
inline

◆ loadScl()

void zyncarla::MiddleWareImpl::loadScl ( const char * filename,
rtosc::RtData & d )
inline

◆ loadXsz()

void zyncarla::MiddleWareImpl::loadXsz ( const char * filename,
rtosc::RtData & d )
inline

◆ savePart()

void zyncarla::MiddleWareImpl::savePart ( int npart,
const char * filename )
inline

◆ saveXsz()

void zyncarla::MiddleWareImpl::saveXsz ( const char * filename,
rtosc::RtData & d )
inline

◆ sendToCurrentRemote()

void zyncarla::MiddleWareImpl::sendToCurrentRemote ( const char * msg)
inline

◆ sendToRemote()

void zyncarla::MiddleWareImpl::sendToRemote ( const char * msg,
std::string dest )

◆ tick()

void zyncarla::MiddleWareImpl::tick ( void )
inline

◆ updateResources()

void zyncarla::MiddleWareImpl::updateResources ( Master * m)
inline

◆ write() [1/2]

void zyncarla::MiddleWareImpl::write ( const char * path,
const char * args,
va_list va )

◆ write() [2/2]

void zyncarla::MiddleWareImpl::write ( const char * path,
const char * args,
... )

Member Data Documentation

◆ actual_load

std::atomic_int zyncarla::MiddleWareImpl::actual_load[NUM_MIDI_PARTS]

◆ autoSave

CallbackRepeater zyncarla::MiddleWareImpl::autoSave

◆ broadcast

bool zyncarla::MiddleWareImpl::broadcast = false

◆ bToU

rtosc::ThreadLink* zyncarla::MiddleWareImpl::bToU

◆ cb

cb_t zyncarla::MiddleWareImpl::cb

◆ config

Config* const zyncarla::MiddleWareImpl::config

◆ curr_url

string zyncarla::MiddleWareImpl::curr_url

◆ forward

bool zyncarla::MiddleWareImpl::forward = false

◆ idle

void(* zyncarla::MiddleWareImpl::idle) (void *)

◆ idle_ptr

void* zyncarla::MiddleWareImpl::idle_ptr

◆ in_order

bool zyncarla::MiddleWareImpl::in_order = false

◆ kits

ParamStore zyncarla::MiddleWareImpl::kits

◆ known_remotes

std::set<string> zyncarla::MiddleWareImpl::known_remotes

◆ last_url

string zyncarla::MiddleWareImpl::last_url

◆ master

Master* zyncarla::MiddleWareImpl::master

◆ multi_thread_source

MultiQueue zyncarla::MiddleWareImpl::multi_thread_source

◆ obj_store

NonRtObjStore zyncarla::MiddleWareImpl::obj_store

◆ offline

bool zyncarla::MiddleWareImpl::offline

◆ osc

Fl_Osc_Interface* zyncarla::MiddleWareImpl::osc

◆ parent

MiddleWare* zyncarla::MiddleWareImpl::parent

◆ pending_load

std::atomic_int zyncarla::MiddleWareImpl::pending_load[NUM_MIDI_PARTS]

◆ presetsstore

PresetsStore zyncarla::MiddleWareImpl::presetsstore

◆ recording_undo

bool zyncarla::MiddleWareImpl::recording_undo = true

◆ server

lo_server zyncarla::MiddleWareImpl::server

◆ start_time_nsec

int64_t zyncarla::MiddleWareImpl::start_time_nsec

◆ start_time_sec

int64_t zyncarla::MiddleWareImpl::start_time_sec

◆ synth

const SYNTH_T zyncarla::MiddleWareImpl::synth

◆ ui

void* zyncarla::MiddleWareImpl::ui

◆ undo

rtosc::UndoHistory zyncarla::MiddleWareImpl::undo

◆ uToB

rtosc::ThreadLink* zyncarla::MiddleWareImpl::uToB

The documentation for this class was generated from the following file: