Skip to content

Architecture

Naoki Iwakami edited this page Feb 19, 2016 · 8 revisions

The architecture of Analog3 synth system is illustrated as below.

NetSynth

Core of the system is NetSynth. This component communicates with hardware modules and serves their software images. There are two types of module images; physical and logical. A physical module image is a direct reflection of a hardware module. A hardware module has its descriptor that represents available parameters. These parameters are directly mapped into parts of the physical module image. An example of physical component is 'LFO'. An LFO hardware module has parameters 'frequency' and 'output waveform'. Corresponding physical module image also has parameters 'frequency' and 'output waveform'.

Parameters in logical components are defined in a different way. A logical module parameter is tied with multiple physical parameters. A simple use case of logical module images is a polyphonic setup. When you make a four voice setup, you need four oscillators. You want to view these four oscillators as a single oscillator on synth control panel. You use a logical module image in such a case. You make one logical oscillator for to make a four-voice polyphonic oscillator that is tied with four physical oscillator. Each physical oscillator has a frequency parameter. The logical oscillator also has a "frequency" parameter. This single frequency parameter on the logical oscillator controls the four physical frequency parameters at once.

You can define such a control parameter as follows:

logical_osc.freq = {
    physical_osc_1.freq = value;
    physical_osc_2.freq = value;
    physical_osc_3.freq = value;
    physical_osc_4.freq = value;
};

Front-End Processors

The NetSynth is a server and does not have any capability of initiating parameter modifications. So Analog3 system has components to read and update parameters. These components are called front-end processors.

In other words, front-end processors make 'panel' of the synthesizer.

Notify Server

Notify server is used for keeping viewers updated. The notification mechanism is based on publish-subscribe model. Viewers subscribe for certain parameters they are interested in. NetSynth publishes a parameter change to the notify server. The notify server then sends notifications to the subscribers of the parameter/topic.

Clone this wiki locally