<!-- generated by ../../tools/undiag. DON'T CHANGE (change .mdx source) -->
\page overview Guitarix Program Overview

The diagrams try to give a simplified view on some of the important
Guitarix classes.

## User Interface
\image html overview_ui.png

<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
\image html overview_machine.png

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
\image html overview_engine.png

<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>
