ui/src/virtualconsole/vcslider.h and vcslider.cpp, and inherit from both VCWidget and DMXSource.
Overview
Slider widgets support three distinct modes:- Level Mode: Control individual fixture channels (intensity, color, etc.)
- Playback Mode: Control function intensity and playback
- Submaster Mode: Act as a master intensity control for other widgets
Slider Modes
Level Mode
Direct control of DMX channel values:vcslider.h:147-152
Level mode allows you to:
- Control specific fixture channels directly
- Set DMX values between low and high limits
- Monitor current channel values from other functions
- Override temporary values (useful for manual control)
Level mode bypasses the function system and writes directly to DMX universes through the
DMXSource interface. This provides immediate, low-latency control of fixtures.Playback Mode
Control function intensity during playback:- Start/stop assigned function
- Adjust function intensity in real-time
- Flash button for temporary full intensity
- Monitor function state and intensity
- Controlling chaser speed and intensity
- Adjusting scene brightness
- Fading effects in and out during performances
Submaster Mode
Act as a master control for other widgets:- Control intensity of multiple widgets simultaneously
- No function assignment needed
- Widgets listen for
submasterValueChanged()signal - Common in professional lighting setups
Level Mode Configuration
Level Channels
Level mode controls specific fixture channels:vcslider.h:224-284
Example: Control the intensity channel of multiple fixtures with one slider.
Level Limits
Set minimum and maximum values for controlled channels:vcslider.h:287-308
Use cases:
- Park dimmer at minimum: Set low limit to 10-20 to prevent complete darkness
- Limit maximum brightness: Set high limit to 200 to protect fixtures
- Restricted range: Control only a portion of the channel range
Channel Monitoring
Monitor current channel values from other functions:vcslider.h:312-318
When enabled:
- Slider displays current DMX value from other sources
- Visual feedback shows actual output level
- Useful for seeing what other functions are doing
- Can override monitored value by moving slider
slotUniverseWritten() which receives universe data updates.
Playback Mode Configuration
Playback Function
Assign a function to control:vcslider.h:364-392
The slider:
- Starts function when moved from zero
- Adjusts function intensity as slider moves
- Stops function when returned to zero
- Monitors function state from other sources
Flash Button
Optional button for temporary full intensity:vcslider.h:397-399
When enabled:
- Button appears next to slider
- Press to temporarily set function to full intensity
- Release to return to slider value
- Keyboard shortcut support
vcslider.h:416-418
Widget Style
Sliders can be displayed in two styles:vcslider.h:474-489
Linear Slider
- Traditional vertical or horizontal bar
- Shows current value visually
- Easy to see at a glance
- Better for precise value setting
Rotary Knob
- Space-saving circular control
- Familiar to audio engineers
- Good for dense control surfaces
- Implemented via
KnobWidgetclass
Value Display
Sliders can display values in different formats:vcslider.h:189-199
The value is displayed in labels above and below the slider showing the current position.
Inverted Appearance
Reverse the slider direction:vcslider.h:206-209
Useful for:
- Matching hardware controller layouts
- Ergonomic improvements
- Visual organization
Value Catching
Smooth transition when moving slider:vcslider.h:213-216
When enabled:
- Slider “catches” current value before responding
- Prevents jumps when monitoring is active
- Smooth takeover from monitored values
- Common in professional lighting consoles
Click & Go
Quick value selection through popup interfaces:vcslider.h:533-554
Click & Go types:
- None: Disabled
- Preset: Choose from preset values
- RGB: Color picker for RGB fixtures
- CMY: Color picker for CMY fixtures
- RGBW/RGBA/RGBAW: Extended color pickers
Override Reset
Return to monitored value after override:vcslider.h:576-580
Workflow:
- Slider monitors channel value from function
- User moves slider (override)
- User presses reset key
- Slider returns to monitoring current value
DMX Source Implementation
Sliders write directly to DMX universes:vcslider.h:75, vcslider.h:439-447
The writeDMX() method is called every timer tick:
- Level Mode: Writes slider value to configured channels
- Playback Mode: Adjusts running function’s intensity
- Uses GenericFader: Smooth value transitions
vcslider.h:451
External Control
Multiple Input Sources
Sliders support multiple input sources:vcslider.h:83-85
Each input source can be mapped independently to different MIDI/OSC controls.
Keyboard Control
Playback flash button supports keyboard shortcuts:vcslider.h:603-604
Slider Matrix
Create multiple sliders at once:- Access via “Add Slider Matrix” menu
- Creates a grid of sliders
- Batch configure level channels
- Map to fixture capabilities
- Implemented in
addvcslidermatrix.cpp
Slider matrices are particularly useful when you need to create manual control for multiple fixtures with similar capabilities, such as a bank of RGB color mixing sliders.
Layout Components
Slider UI consists of several components:vcslider.h:467-468, vcslider.h:507-510, vcslider.h:527, vcslider.h:592, vcslider.h:620
Each component is optional and appears based on slider configuration.
Common Use Cases
Master Dimmer
Level mode slider controlling intensity of all stage fixtures
Chaser Speed
Playback mode slider adjusting chaser playback speed
RGB Color Mix
Three level mode sliders for red, green, and blue channels
Scene Intensity
Playback mode with flash button for scene control
XML Persistence
Slider configuration example:SliderMode: Level, Playback, or SubmasterLevel: Channel mappings and limitsPlayback: Function ID and flash button settingsValueDisplayStyle: Exact or PercentageWidgetStyle: Slider or KnobCatchValues: Enable value catching
