BlueSynthBuilder

About BlueSynthBuilder
Using BlueSynthBuilder

BlueSynthBuilder (BSB) allows the user to graphically build instrument interfaces for their Csound instruments. The graphical interface is designed for the use of exploring configuration of an instrument, rather than adjustment in realtime usage.

About BlueSynthBuilder

Principle of Design

It has been my experience that most Csound instruments tend to be limited in user configurability of parameters than commercial synthesizer counterparts. It is my belief that a large part of that is due to the text-based nature of instruments. I've found that:

  • Modular instruments are easier to expression connections of modules via text or code rather than visual paradigms (patch cables, line connections), and thus easier to create the instrument by text

  • Graphical elements, however, excel in relaying information about the configuration of the instrument to the user and also invite experimentation, while text-based configuration of instruments are often more difficult to quickly understand the parameters settings and limits

Going completely graphical for the building of instruments, in the case of systems like Max/PD/jMax or Reaktor, I've found that the instrument's design no longer become apparent when viewing complicated patches. On the other hand, using completely textual systems such as Csound or C++ coding, the design of the instrument has a degree of transparency, while the configuration of the parameters of the instrument loses transparency.

Hybrid Design

Using systems like MacCsound's widgets or blue's BlueSynthBuilder, one is able to use graphical elements where they excel, in showing configuration of an instrument, while using textual elements where they excel, in the design of instruments and expressing the connections between modules.

I've found that this sort of hybrid design offers the best of both worlds and when I'm spending time building and using new instruments, I can quickly design an instrument and also explore the parameters of an instrument's design by using blueSynthBuilder.

Using BlueSynthBuilder

BlueSynthBuilder is divided up into two tabs, each of which handles the different concerns of the instrument builder. Also, the process of creating instruments and using instruments is also split between edit and usage modes. Instrument builders will tend to use both modes, while users of BSB instruments may not ever have to touch a line of Csound instrument code or have to modify the instrument's UI at all (though that liberty to do so is there).

Interface Editor

The Interface editor has two modes:

Edit Mode

The user can add interface elements and modify their properties using the property sheet on the right. To enable edit mode, click on the "Edit Enabled" checkbox in the upper right of the BSB instrument editor.

Once the edit mode is enabled, right clicking in the main panel will show a popup menu of available UI widgets for your instrument. After selecting and inserting a widget, clicking on the widget will hilight it and show it's properties in the property editor. You can also then drag the widget around to place as you desire.

You may select multiple widgets by shift-clicking them, or by clicking on an empty part of the edit panel and dragging a marquee to select a group of widgets. After selecting multiple widgets, you can drag them around as a group, as well as use the alignment and distribution options found on the right side bottom to tidy up the UI.

Usage Mode

Once in usage mode, users can configure the instrument by working with the UI widgets: rotating knobs, moving sliders, etc. The values of the different UI widgets will be reflected in the generated csound instrument.

Code Editor

The code editor is where the csound instrument code is to be written. To use the values from the widgets, use the replacement key of the widget within < >'s, and that value will be replaced when the instrument is generated (the replacement key is usually the objectName of the object; see table below).

For example, if there's a knob with an objectName of amplitude and the value is set to 0.5, the following instrument code:

iamp    = <amplitude> * 0dbfs
aout    vco2 iamp, 440

        outs aout, aout

will generate the following instrument:

iamp    = 0.5 * 0dbfs

aout    vco2 iamp, 440

	    outs aout, aout

For convenience, a replacement key code completion popup has been added. When editing code press ctrl-shift-space and a popup dialog will appear with a list of all the replacement keys that have been assigned to interface objects. Selecting a replacement key will insert that key into the code text area, already formatted within < and >.

Widget Values

The following lists what values the widgets will emit when generating instruments:

Table 4.5. Widget Values

Widget Replacement Key Value
Knob objectName float value from knob
Horizontal Slider objectName float value from slider
Horizontal Slider Bank objectName_sliderNum (for each slider) float value from slider
Vertical Slider objectName float value from slider
Vertical Slider Bank objectName_sliderNum (for each slider) float value from slider
Label none none
Checkbox objectName 1 or 0, depending on if checked or not
Dropdown List objectName Value from user-assigned Dropdown List
SubChannel Dropdown List objectName Value from Dropdown List that is a named subchannel from the blue Mixer
XY Controller objectNameX, objectNameY X and Y value
LineObject objectName_lineName (for each line) list of values from line (can be comma separated, with or without leading 0.0 X value, and x values can be generated either in absolute or relative terms)
Text Field objectName Value from text field
NOTES
  • For the Label object, you are able to style the label by using HTML. To use this feature, when setting the text of the label, enter the HTML label within <html> tags, such as "<html><font size="+1">My Label</font></html>".

Presets

Since 0.95.0, BlueSynthBuilder now has the capability to save and load presets. These presets are for usage-time and not design-time, and they save a snapshot of all of the values for the widgets. They do not save x/y coordinates or other configuration for the widget, only the value.

You can add presets and folders of presets using the presets menu in the upper left of the BSB editor. Each menu has an option for adding a folder or adding a preset to it. You can also manage presets by using the "Manage Presets" button. This will open up a dialog with a tree view of your presets, allowing you to rename the presets and folders, as well as reorganize by dragging and dropping. You can remove presets and folders here by right-clicking and selecting the remove option. Changes in the dialog are not committed until you press the save button, so if you close the window or cancel, you're old settings will be still in tact.

Randomization

Since 0.117.0, users are able to randomize values for widgets in a BlueSynthBuilder instrument. To use, first choose which widgets are set to be randomized in edit mode, then in usage mode, right click on the panel in an area not covered by a widget, then select "Randomize" from the popup menu. The following widgets are cable of being randomized:

  • Knob

  • Horizontal Slider

  • Vertical Slider

  • Horizontal Slider Bank

  • Vertical Slider Bank

  • XY Controller

  • Checkbox

  • Dropdown List