<!-- -*- mode: markdown; mode: flyspell; ispell-local-dictionary: "american" -*- -->
\page overview Guitarix Program Overview
The diagrams try to give a simplified view on some of the important
Guitarix classes.
## User Interface
#blockdiag ui {
RackContainerM [label="RackContainer\n(Mono)"];
RackContainerS [label="RackContainer\n(Stereo)"];
RackBoxM [label="RackBox", stacked];
RackBoxS [label="RackBox", stacked];
PluginUI [stacked];
MainWindow -> RackContainerM -> RackBoxM;
MainWindow -> RackContainerS -> RackBoxS;
RackBoxS -> PluginUI [style="dashed", dir="both"];
RackBoxM -> PluginUI [style="dashed", dir="both"];
MainWindow -> PluginDict -> PluginUI;
group {
MainWindow;
PluginDict; PluginUI;
RackContainerM; RackBoxM;
RackContainerS; RackBoxS;
}
}
<table>
<tr><td>MainWindow </td><td>main program window</td></tr>
<tr><td>PluginDict </td><td>dictionary of PluginUI by id</td></tr>
<tr><td>PluginUI </td><td>user interface of a plugin (menu items, Gtk::Palette item etc.)</td></tr>
<tr><td>RackContainer</td><td>container for RackBox widgets</td></tr>
<tr><td>RackBox </td><td>Effect UI container</td></tr>
</table>
## Abstract Engine Interface
#blockdiag machine {
GxMachineBase [width="400"];
}
gx_engine::GxMachineBase is an interface (abstract class) which can be
implemented on the Guitarix engine (gx_engine::GxMachine) or by
communicating to a remote engine instance via JSON-RPC
(gx_engine::GxMachineRemote). The server part is implemented by GxService.
## Engine
#blockdiag engine {
Parameter [stacked];
Plugin [stacked];
group {
color = "#77FF77";
GxJack -> GxEngine [style="dashed", folded];
GxEngine -> PluginList -> Plugin;
GxEngine -> ParamMap -> Parameter;
GxSettings -> ParamMap;
GxSettings -> CmdlineOptions -> GxLogger [style="none"];
}
}
<table>
<tr><td>gx_jack::GxJack </td><td>connection to jackd (clients)</td></tr>
<tr><td>gx_engine::GxEngine </td><td>the audio engine (executes active audio plugins)</td></tr>
<tr><td>gx_engine::PluginList </td><td>available effect plugins</td></tr>
<tr><td>gx_engine::Plugin </td><td>audio effect plugin</td></tr>
<tr><td>gx_engine::ParamMap </td><td>mapping of parameter id's to Parameter instances</td></tr>
<tr><td>gx_preset::GxSettings </td><td>preset banks and statefile</td></tr>
<tr><td>gx_system::CmdlineOptions </td><td>all settings that can be controlled from the command line</td></tr>
<tr><td>GxLogger </td><td>logging of errors / warnings</td></tr>
</table>