This section is the core “authoring” section in SensaSynth2, where Presets are made or edited using a structured set of real-time interactive controls. The controls are essentially a user interface for defining the 60+ parameters that comprise the Preset data set “under the hood”.
Each LED “pixel” value in a Sensacell display is continuously re-calculated by the Behavior Engine embedded on each module. The various components of this Behavior Engine are explained below, but many of the controls can be intuitively understood by simply playing with them.
Idle vs. Active Layers
One of the most important concepts in using SensaSynth is the idea that you author two distinct visual looks for the panel, one that is displayed on your Sensacell panel when and where the sensors are untriggered (the “Idle Layer”) and the other when and where the sensors are triggered (“the Active Layer”). What constitutes a “triggered state” – as well as how the Sensacell modules handle transitions between states – is controlled elsewhere in the Make Presets section (see the Cross Fader section and the Trigger Mode section below). This Idle Layer block and the identical Active Layer block, however, is where these two “looks” are defined.
Each Layer consists of two Color Engines and three Signal Selectors, each of which is described in detail below. The first Color Engine is assigned the first Signal Selector but the second and third Signal Selectors share the other Color Engine.
There are 9 “global” Signal Sources available in each of the 6 places a Signal Source can be specified (The 3 Signal Selector pop-up menus in the Idle Layer and the 3 in the Active Layer). These are:
- 1 Color
- 4 Oscillators
- 2 Noise Behaviors
- 2 Video Sources
We refer to these Signal Sources as “global” because each is configured only one way in a given Preset. These configuration options are available through the Global Signal Settings buttons. Even though any particular Signal Source can be used in multiple Selectors, it retains the same value in each use within that Preset. Changing a parameter value in Signal Source’s configuration page changes that value everywhere that Signal Source is used. Each of these categories of Signal Source has its own detailed documentation page, explaining what parameters can be configured for each Signal Source type.
here are 4 Color Engines in SensaSynth2, two in the Idle Layer and two in the Active Layer. Each Color Engine modifies the current Signal Source as the next step in he signal processing chain. Technically it “gates” or “limits” the red, green, and blue values of the Signal Source. The Color Signal Source can be thought of as a pure white signal that is gated down to a specific value. Remember that “white” means that the red, green, and blue LEDs on a Sensacell module are at full intensity, while black means that all 3 LEDs are completely off. The other Signal Sources are similarly gated when you choose different RGB values for the Color Engine, while setting the Color Engine to black essentially turns that Signal Source off.
There are three ways to set the RGB color of the Color Engine, highlighted in the screengrab to the left: a Color Swatch (A), RGB sliders (C), and RGB number boxes(D). The Color Swatch is the most intuitive to use and explore, simply click and drag around the Swatch to update the color in the SensaSynth interface and on the Sensacell panel itself in real time. The small vertical slider to the right of the swatch alters the Saturation (B) – move it up to access brighter colors, down to get grayer colors. You can also set an RGB color by using the sliders or typing the values directly into the number boxes – useful if you know exactly the value you want. Whichever method you use, the interfaces for the other two methods are automatically updated.
The Cross Fader lets you configure the transition time between the Idle Layer and the Active Layer when a sensor changes state. How a sensor defines its state status is not simply determined by external triggering (for instance by touching the Sensacell panel with your hand) but more precisely by how the Trigger Mode values are configured to interpret changes in the raw sensor data. But once a state is determined to have changed, the Behavior Engine looks to these Cross Fade settings to set the duration of the transition between the “looks” defined in the Idle and Active layers. Both layer values are always fully calculated separately regardless of the sensor state for every LED “pixel”, so the Fader essentially interpolates between the values of the two Layers over the time specified. When the transition is from Idle to Active, the Fade-In value is used to interpolate in the Active Layer value. When the transition is from Active to Idle, the Fade-Out time is used to interpolate back from the Active to the Idle State.
When a slider is all the way down, the transition happens immediately and the transition should closely track your interaction with the panel (depending on the Trigger Mode). Generally it is a good idea to set the Fade-In slider all the way down or very fast, as in most situations a long Fade-In time simply make the panel appear unresponsive. There are some conditions, such as when the Trigger Mode is set to Toggle, that can use longer Fade-In times effectively. Long Fade-Out times, however are very common and create the appearance of a lingering trail following your hand or footsteps or whatever is triggering the interaction.
Global Signal Option Pages
Each category of Signal Source has its own page in Sensasynth2 for configuring the parameters specific to that source that are settable, as well as its own documentation:
- Noise Behaviors
- Video Sources
This box has a pop-up menu that lets you select a Trigger Mode, as well as set some parameters specific to the Trigger Mode chosen. There is also an option to use an alternative algorithm to the standard way that sensor data is analyzed to determine if there has been a valid trigger event.
The Trigger Modes are:
- On/Off Mode. The default configuration, this mode uses the Sensitivity setting to define a threshold value when analyzing the raw sensor data to determine whether to designate a sensor as “triggered”. This is a binary decision – a sensor is either triggered or not. As explained above, a triggered sensor displays the Active Layer on the rising edge of a designated trigger event, and the Idle layer is re-asserted on the falling edge (although setting Fade-In or Fade-Out times causes this transition to happen smoothly over the designated time period).
- Proportional Mode. Sensors respond in proportion to how close you are to the sensor. The state of the sensor is not a binary determination using a threshold but is calculated as a percentage value, with highest value of 100% (fully triggered) showing the unmodified Active Layer value, the lowest value of 0% (un-triggered) showing the unmodified Idle Layer value, and everything in between (partially triggered) calculated as an intermediate value interpolated between the Active Layer and Idle Layer values based on that calculated percentage.
- Incremental Mode. The sensors have an incremental response every time they are triggered: the mix of Active Layer to Idle Layer “pixel” values becomes higher by the amount specified in the Increment Amount number box every time a new trigger is detected. There is an additional option to have the value rollover to the original Idle value after the Active Value has been reached.
- Toggle Mode. Sensors switch between triggered to un-triggered and vice versa.
- Latch Mode On/Off. Sensors that are triggered stay triggered, there is no reversion to the Idle Layer value on the falling edge of a trigger. The sensors can then only be cleared by asserting a new Preset.
- Latch Mode Proportional. The modules respond as they do in Proportional Mode, where the sensor state is designated as a percentage of the fully triggered condition, except that a sensor’s percentage can only go up, even when the signal gets weaker.
The Sensitivity setting, as explained above, determines the threshold for determining whether a given raw sensor value becomes designated as triggered or un-triggered, in those Trigger Modes (all of them except the two that use Proportional Mode) that use a binary value for the triggered state. A setting of 0 turns the sensors off completely, while the higher numbers can make the panel so sensitive that “spurious” triggering becomes a problem. Different environmental conditions may require different settings. For instance, if the Sensacell modules are installed beneath a particularly thick layer of surface material, the Sensitivity could be set higher to compensate.
Delta Mode is an alternative triggering algorithm that designates a sensor as triggered when a rapid change is detected to its state. The default algorithm, on the other hand, relies on a baseline of raw sensor values to determine triggering points. This baseline is set during the start-up procedure, so that ambient conditions can be compensated for, but the system also constantly adapts this baseline while running – slowly working unchanging values into the new baseline. This explains why adding a new surface material to a Sensacell panel will trigger sensors at first, but over time that material’s contribution to the raw sensor readings will become incorporated into the new baseline.
Save / Load Presets from Disk
Presets can be saved and loaded from disk using the standard Windows OS File dialog boxes. Presets files use the .ssp extension, which is automatically added on to any file name of a Preset when it is save to disk if not explicitly written in. The Save button overwrites the current Preset – use the Save As button to make a new copy. The default.ssp Preset that is active when SensaSynth first opens cannot be overwritten, use Save As if you want to modify it. The Save button is disabled if a Preset has not been changed (or if it is default.ssp), giving you visual feedback if you have altered a file. When loading a new Preset you will be prompted to save the last Preset if it has been edited.
Saved Preset files can then be brought into the Sequence Preset section and ordered into sequences for upload or made into Preset Collections. In that interface additional parameters can be saved into the file specifying Start and End Conditions.