From the Beginning ...
Installing SynthMaker is a breeze. The program is downloaded as a ZIP file which contains the installation program as an EXE file. Clicking on the EXE performs the installation. When you first start up SynthMaker, you're presented with a schematic containing "a very simple synth built completely from high-level modules." SynthMaker projects are in the form of multi page hierarchical schematics which are stored in ".osm" files. Figure 1 shows the SynthMaker UI.
On the left side of the UI are filters that are used to organize the 75+ modules that come standard with SynthMaker. Clicking on a filter causes the modules of that category to be displayed in the next column of the display. The majority of the UI is for display of the schematic (bottom-right) and the hierarchical schematic browser (top-right). Figure 1 shows the UI of the example software synthesizer. To see the functionality behind the sleek brushed aluminum front panel, click on the module to give it focus and then click the page down key. This opens the next lower level of the schematic hierarchy for view. Use the page up key or click on the high level schematic in the browser to return to the top level. Modules can be made up of many other modules each with many levels.
An important thing to notice about the high-level display is that the example synthesizer is setup for interactive testing. The Midi In module allows the computer's keyboard to act as a Midi controller for driving the synthesizer. The link (connection) from the Midi In module to the synthesizer's Midi input routes the Midi codes. On the output side, the two outputs (left and right) from the synthesizer are connected to the DS Out (DirectSound) module which allows the sounds produced by the synthesizer to be heard via the computer's audio subsystem. Pressing keyboard keys causes the synthesizer to do its thing. All buttons and knobs on the synthesizer are active and any changes made will be heard in real time. Pretty neat.
To develop your own instruments or effects, you select the modules you need from the left side of the UI and drag them onto your schematic. Modules are connected by dragging a link from the output connector of a module to the input connector of the next. Once you have your creation working you can convert it into a module that is managed by SynthMaker just like standard modules. I've created a module category called mine that I put all modules I create into. If SynthMaker doesn't have the functionality you need in a standard module and that functionality cannot be created by combination of the standard modules you can create a code or assembler module and code it up. The language syntax is explained in the documentation.
SynthMaker enforces correct signal routing between modules by only allowing links to be made between input and output connectors of compatible types. SynthMaker supports over 30 different types of data with each type having a unique connector symbol. All data types fall into one of two categories: stream or triggered.
Quoting from the SynthMaker User's Guide:
Stream data covers all digital audio and control signals. These signals are fluctuating at sampling rate and so any components which process them will also perform calculations at sampling rate. Components that process stream data are where all the digital signal processing occurs. Triggered data works in a completely different way. Whereas stream data is continuously flowing, triggered data only flows in response to some event. Usually the event is a user interaction or data arriving from some external source like MIDI or a timer". Commonly used data types include: integer, float, stream, UI events, midi, mono and poly data.