.shwcfg extension.
Configuration Structure
A show configuration contains:- Serializer: Output format (VRSL, Binary, Ternary, etc.)
- Deserializer: Input format for Spout input processing
- Generators: DMX data generators (text, strobe, time, etc.)
- Exporters: Output targets (MIDIDMX, etc.)
- System Settings: ArtNet address/port, Spout names, resolutions, framerate
- Transcoding Options: Settings for converting between formats
- Channel Masks: Define which channels to show or hide
Creating a Configuration
Configure HNode
Set up HNode with your desired settings:
- Select serializer/deserializer from the dropdowns
- Add generators (Text, Strobe, Static Value, etc.)
- Add exporters (MIDIDMX, etc.)
- Configure ArtNet address and port
- Set Spout input/output names
- Adjust output and input resolutions
- Set target framerate
Loading a Configuration
Configuration File Format
Show configurations use YAML format with custom tags for type identification. Here’s an example structure:Configuration Options
Core Settings
The output serializer that converts DMX data to texture format. Available types:
VRSL: Standard VRSL formatBinary: Binary formatTernary: Ternary formatBinaryStageFlight: Binary Stage Flight formatColorBinary: Color binary formatFuralitySomna: Furality Somna formatSpiral: Spiral format
The input deserializer for processing Spout input textures. Uses the same types as serializer.
List of DMX generators. Each generator is tagged with its type (e.g.,
!GeneratorStaticValue, !GeneratorText).List of output exporters like MIDIDMX.
Transcoding
Enable transcoding from the deserializer format to the serializer format. Useful for converting between different pixel mapping formats.
Number of universes to transcode. Limits processing if you only need certain universes.
Maximum number of universes to serialize. Usually doesn’t need to be changed.
Channel Masking
List of channel ranges to mask (make transparent). Each entry defines a start and end channel.Example:
Invert the mask, making only masked channels visible.
Automatically mask channels that are set to zero, making them transparent.
Network Settings
ArtNet listening port.
IP address to listen for ArtNet data. Set to
0.0.0.0 to automatically detect across all network interfaces.Spout Settings
Name of the Spout sender to receive input from.
Name of the Spout sender that HNode creates for output.
Performance Settings
Target framerate for HNode rendering (1-60 FPS).
Output texture resolution:
Input texture resolution for Spout receiver:
Channel Notation
HNode supports flexible channel notation in configurations:Global Channel Numbers
Universe.Channel Notation
Equations
Best Practices
Use Descriptive Names
Name your configuration files clearly, like
club-show-vrsl.shwcfg or binary-test-setup.shwcfg.Version Control
Store configurations in version control (Git) to track changes over time.
Backup Before Experiments
Save your working configuration before experimenting with new settings.
Test After Loading
Always test that lights respond correctly after loading a configuration.
Troubleshooting
Configuration won't load
Configuration won't load
- Verify the file has a
.shwcfgextension - Check YAML syntax (indentation, colons, etc.)
- Ensure all referenced types (serializers, generators) are valid
- Look for error messages in the HNode console
Settings don't persist after loading
Settings don't persist after loading
HNode uses a deferred loading system. If settings appear incorrect:
- Wait a frame after loading
- Try reloading the configuration
- Check the UI has refreshed properly
Generators or exporters missing after load
Generators or exporters missing after load
- Verify the generator/exporter types are spelled correctly with proper tags (e.g.,
!MIDIDMX) - Check that the referenced components are included in your HNode build
- Look for errors in the console about missing types
Manual edits break configuration
Manual edits break configuration
When manually editing YAML:
- Maintain proper indentation (use spaces, not tabs)
- Keep the type tags (e.g.,
!VRSL) intact - Ensure all required fields are present
- Validate YAML syntax with an online validator
Next Steps
- Configure Spout I/O for texture input/output
- Set up MIDIDMX for VRChat integration
- Learn about OBS streaming to use your saved configurations in live shows