Free desktop software for ENTTEC S-PLAY hardware — build complete light shows offline on Mac or Windows and deploy when ready.
Get started
Download, install, and connect S-PLAY Programmer to your S-PLAY hardware. Covers system requirements, installation, licensing, updates, and hardware compatibility.
What is S-PLAY Programmer
S-PLAY Programmer is a free desktop application for ENTTEC S-PLAY hardware that lets you build complete light shows offline, on Mac or Windows. Connect to your device and deploy when ready — no internet connection, no hardware needed to get started.
S-PLAY Programmer is the desktop version of the same interface as the S-PLAY web interface: the same playlist builder, the same scheduling and trigger options, and the same cue types, plus two additions exclusive to the desktop software — Scene Cues (shader-based animations using Fixture Layouts) and Bake rendering (generate hours of content in seconds).
Key features
- macOS and Windows compatible.
- 100% free — no license, dongle, or activation required.
- Fully offline — build complete shows without hardware connection.
- Work anywhere — program from the office, home, or on the road.
- Create up to 200 Cues, Playlists, and Schedules.
- Scene Cue with shader-based animation.
- Bake rendering — generate hours of content in seconds.
- Layout system for fixture mapping (Grid, Linear, Circle, Draw).
- Deploy and extract shows over network.
- Live preview on up to 250 S-PLAY devices.
- Events, Triggers, and custom end-user Interfaces.
System requirements
S-PLAY Programmer is compatible with macOS 15 (Sequoia) and above, and Windows 11 (64-bit) and above.
| Component | Minimum — Mac | Minimum — PC |
|---|---|---|
| OS | macOS 15 (Sequoia) | Windows 11 |
| CPU | Apple M1 | Quad-core 1.8 GHz |
| GPU | 8-core GPU | 4 GB VRAM |
| RAM | 8 GB | 8 GB |
| Drive | Mechanical HDD | Mechanical HDD |
| Component | Recommended — Mac | Recommended — PC |
|---|---|---|
| OS | macOS 26 (Tahoe) | Windows 11 |
| CPU | Apple M1 Pro / M2 | Quad-core 2.5 GHz |
| GPU | 14-core GPU or better | 8 GB VRAM or better |
| RAM | 16 GB | 16 GB |
| Drive | SSD | SSD |
Installation
Download the S-PLAY Programmer from the ENTTEC website. No activation, license, or additional setup is required. S-PLAY Programmer operates offline and does not require an internet connection for programming. A network (LAN) connection is required for Preview, Deploy, and Extract functions.
Software version (Production)
- Identified by a blue play button logo.
- Public release for customers.
- Available for download from the ENTTEC website.
Windows installation
- Locate the downloaded
SPLAYSoftware_Setup.exefile. - Double-click to run the installer.
- Follow the installation wizard prompts.
- Click Install to complete setup.
macOS installation
- Locate the downloaded
SPLAYSoftware.dmgfile. - Double-click to mount the disk image.
- Drag the S-PLAY Programmer icon to the Applications folder.
- Launch from the Applications folder.
Forum and tech support
If you have any questions about using S-PLAY Programmer or feature requests that are not covered in this manual, visit the ENTTEC Support Forum at support.enttec.com to find previous threads or raise a new request.
When raising a request, reporting a bug, or creating a support enquiry, include as much information as possible to allow ENTTEC's developers to understand and replicate the issue. The clearer this information is, the faster a resolution can be found. Reports should include:
- Your computer's operating system and version.
- S-PLAY Programmer version number (found via Help > About S-PLAY Programmer).
- A detailed description of the issue or request.
- A screen recording, video, or screengrabs of the issue.
Licensing
S-PLAY Programmer operates completely free with no license required. Simply download and install — the software is ready to use immediately.
Note: S-PLAY Programmer is an offline programmer and cannot output DMX directly. All output and playback require connection to S-PLAY hardware.
Software updates
S-PLAY Programmer automatically checks for updates on launch and notifies you when a new version is available.
- The Check for Updates button appears in the top Home navigation bar.
- When no update is available: the button remains grey; clicking it manually re-checks.
- When a new version is available: the button displays the new version number. Clicking initiates the download.
- The software restarts automatically once the update is complete.
Hardware compatibility
S-PLAY Programmer is designed exclusively for ENTTEC S-PLAY hardware. No other hardware is supported. S-PLAY Programmer is only compatible with S-PLAY firmware Version 3.2 and above.
| Device | SKU | Support level |
|---|---|---|
| S-PLAY SP1-1 | 70092 | Full support for all features |
Connecting to hardware
To connect S-PLAY Programmer to S-PLAY hardware on your network:
- Open S-PLAY Programmer.
- The software automatically scans the network for available S-PLAY devices.
- Detected devices appear showing Device Name and IP Address.
- Select the desired S-PLAY device from the list.
After connection, the software automatically extracts the current show from the S-PLAY hardware. The connected device name appears in the top header navigation bar.
Send and extract
- Send — deploys the current show from the software to the connected S-PLAY (overwrites device content).
- Extract — retrieves the current show stored on the S-PLAY into the software (overwrites the current workspace).
Note: When a device is locked, the Send function is disabled. Supports up to 250 S-PLAY devices on a single network.
Interface
A tour of the S-PLAY Programmer interface: Home, Cue types, Events, Triggers, Playlists, Schedules, Interfaces, and Shows.
Home
The Home page is the default landing page presenting an overview of all playback activities. When used with the lock function, it shows all custom interfaces, playlists, and schedules for end users.
Cue
S-PLAY Programmer allows a maximum of 200 cues — Static, Dynamic, Effect, and Scene Cues. Cues can be configured, duplicated, edited, and previewed before building into a playlist.
Managing cues
All cues can be ordered by ID, Cue Name, Cue Type, and Duration. Preview, Duplicate, Edit, or Delete Static or Effect cues from the Cue page.
| Icon | Functionality |
|---|---|
| Turn into Playlist | Directly turn a cue into a playlist. |
| Duplicate | Duplicate the selected cue. |
| Edit | Edit the cue name and channel values after a cue has been created. |
| Delete | Delete the selected cue. |
| Preview | Preview cues. Multiple cues can be previewed simultaneously. Actively playing cues show a green PREVIEW button; click it again to stop previewing. |
Note: Dynamic recordings cannot be duplicated. Editing a cue in the Cue Library directly overwrites the full universe values received and extends the length of the cue if necessary. Once a cue is selected for editing, the S-PLAY internally triggers Stop All to prevent overlapping playback.
Static cue
A lighting state of up to 32 DMX universes. DMX data can be user-defined values or a snapshot of the incoming DMX frame. Source: DMX (up to 2 universes), Art-Net (up to 32 universes), or sACN (up to 32 universes).
To create a Static cue:
- Click the green icon and choose Static as the cue type to open the Static cue editor.
- Assign a name to the cue for easy identification.
- Choose the source protocol (DMX, Art-Net, or sACN) and specify the channels for recording.
- Select the S-PLAY's internal Universe and the External Universe (universe of the external source or the DMX port). Setting all external universe numbers identically mirrors the same Art-Net/sACN source to all internal universes.
- Define the channel values using one of the three methods below.
- Press Preview at the top left to send to connected S-PLAY hardware for live output.
- Save the cue once complete.
There are 3 ways to define channel values:
- Manual + Set DMX: set individual channel values manually and press Set DMX to populate the selected channels.
- Colour Picker: use the Colour Picker from the colour palette and press Set DMX to apply and populate the selected channels.
- DMX Snapshot: capture a DMX frame from the selected source connected to the S-PLAY by pressing DMX Snapshot. The recorded DMX values populate the selected channels and universes automatically.
Note: When setting single-channel or dimmer fixtures, choose All/W for individual channel control.
Dynamic cue
A recording of up to 32 universes of lighting control data. Supports Perfect Loop recording. Recording can be triggered via OSC, UDP, RS232, Art-Net, sACN, DMX, Digital Input, or Button.
Two ways to record: manually with the red Start Rec button, or by configuring a Recording Trigger that initiates and stops recording remotely. Per-protocol trigger behaviour:
- OSC, UDP, RS232: recording starts when the configured message is received and stops when the same message is received again (toggle on repeat).
- Art-Net, sACN, DMX: recording starts when a value is received that is equal to or above the Trigger Level, and stops when the value drops below it.
- Digital Input: when configured as Activate on Break, recording starts when the connection between the digital input port and GND is broken and stops when the connection is made. Activate on Make reverses this behaviour.
- Button: the Reset/Trigger button on the device can be set to trigger the recording on press or release.
Toggle Live Preview on to send to connected S-PLAY hardware as you record. The recording timer starts as soon as data begins to be captured.
Recording tips:During Art-Net or sACN recording, when utilizing the Live Preview function, it is crucial to ensure that no other active Art-Net/sACN device is outputting on the same universes that are being recorded (including the S-PLAY itself). This precaution eliminates the possibility of interference loopback, which can result in erratic or inaccurate recordings. To adjust the output settings of your S-PLAY, navigate to the Settings page.
When recording live generated content, Perfect Loop may have inconsistent results due to the dynamic nature of the live content generation, where the exact same 10 frames may not always be generated.
Effect cue
Creates a gradient effect without a physical DMX source. Supports 8-bit and 16-bit LED types. Define LED type, start address, address offset, number of fixtures, gradient colours, speed, and direction.
- Effect Start Channel: defines the position (phase) where the gradient begins to apply.
- Number of Fixtures: sets the number of LEDs included in the effect.
- Invert Every X Fixtures: inverts gradient direction after every defined number of fixtures, creating a non-linear grid pattern (ideal for pixel tape projects).
- Gradient editor: click any point on the gradient graphic to add or modify a colour stop. Each colour point can be dragged into position. For smooth loops, ensure the beginning and end colours match. The exact range of fixtures affected by each colour point is calculated from Number of Fixtures and the colour stop's Position (%) along the gradient.
- Speed and direction: defined via the slider below the gradient (preview live to confirm the look in the real rig).
- Per-universe enable toggles: use the toggle switches below the gradient to define which universes the effect occupies. Useful for layering effects or overlapping with other groups; any universes not enabled output 0 on every channel.
Scene cue and fixture layouts
Scene Cues can only be created in S-PLAY Programmer. This feature does not exist on the S-PLAY hardware web interface. Scene Cues are animation-based cues that use shaders and layouts to create complex lighting effects through baked animations. Once deployed to S-PLAY hardware, Scene Cues are treated as normal cues.
Step 1 — Create a layout
Navigate to the Layouts menu and create a layout with one of four types:
- Grid — for matrix arrangements and pixel walls. Configure Columns, Rows, Pixel Order, Bit Depth, Start Corner, and Serpentine (zigzag).
- Linear — for LED strips and single-row fixtures. Manual Pixel Count, Forward or Reverse direction.
- Circle — for circular arrangements and rings. Manual Pixel Count, Clockwise or Anti-Clockwise.
- Draw — for custom shapes. Manual Pixel Count, control points to define custom path.
Common settings for all layout types: Fixture Name, Universe (1–32), DMX Address, Pixel Order (RGB/RGBW/GRB/BGR/GRBW), Bit Depth (8-bit or 16-bit).
Step 2 — Create a Scene cue
- Click the green icon and choose Scene as the cue type.
- Assign a name and select a saved Layout from the dropdown.
- Select a Shader (Gradient Sweep, Color Wave, etc.) and adjust parameters.
- Set Bake Time (duration in seconds) and Frame Rate (20/30/40/60 FPS).
- Click BAKE — rendering begins with a progress bar.
- Optionally preview on connected S-PLAY hardware, then click SAVE.
| Method | Recording time |
|---|---|
| Dynamic Cue (recording) | Must wait full duration (e.g. 1 hour content = 1 hour wait) |
| Scene Cue (bake) | Renders in seconds regardless of duration (e.g. 1 hour = ~1 minute) |
Events
Create up to 200 custom Events for embedding in playlists. Use the Multiple Events tab to configure multiple events in a single operation.
Top tip: In the Multiple Events tab, insert ADD NUMBER{} in the event name to automatically generate identifiers. Each row created in the batch is given a numeric suffix in place of the placeholder, so unique names are produced for every event in a single operation.
| Event type | Description |
|---|---|
| RS232 | Sends a user-defined RS232 command. Settings: 9600 baud, 8-bit data, no parity, 1 stop bit, no flow control. Max 1024 characters. |
| UDP | Sends a UDP command (up to 1024 characters). Use \r/\n for carriage return/line feed. Internal UDP: set IP to 127.0.0.1, port 5000. |
| OSC | Sends OSC data (strings, floats, integers). Address must start with /. |
| Relay | Sets relay to Normally Open (NO) or Normally Closed (NC). |
| Art-Net | Sends an Art-Net frame with defined channel values. |
| sACN | Sends an sACN frame with defined channel values. |
| DMX | Sends a DMX frame with defined channel values. |
Triggers
Create up to 200 custom Triggers to control playlist timelines. Use the Multiple Triggers tab to configure multiple triggers at once.
Top tip: In the Multiple Triggers tab, insert ADD NUMBER{} in the trigger name to automatically generate identifiers. Each row created in the batch is given a numeric suffix in place of the placeholder, so unique names are produced for every trigger in a single operation.
| Trigger type | Description |
|---|---|
| RS232 | 9600 baud, 8-bit, no parity, 1 stop bit. Max 1024 characters per command string. |
| UDP | Activates when incoming UDP command matches the defined string. |
| OSC | Activates when incoming OSC command matches; received on port 8000 by default. Integrates with the S-PLAY OSC API for master intensity and playlist control. |
| Digital Input | 4 digital input ports. Idle is high; trigger registered when circuit completed (low). |
| Art-Net | Activates when incoming value equals or exceeds defined channel value. |
| sACN | Activates when incoming value equals or exceeds defined channel value. |
| DMX | Activates when incoming value equals or exceeds defined DMX value. Disabled when DMX is selected as output protocol. |
Playlists
Create up to 200 playlists by combining cues, events, and triggers on the timeline. Multiple playlists can play simultaneously with HTP channel merging.
Top tip: By default, cues on the timeline hold their end value on the output until a different scene is triggered. To send a blackout at the end of a cue or timeline, set it to have a fade-out time. For a snap to black (rather than a fade), set the fade-out time to 0.001 second.
Created playlists
This section lists all created playlists with basic info (name, duration) and per-playlist controls.
- Reorder: drag and drop a playlist from the three-dot handle to rearrange (reflected on the Home page).
- Edit: loads the playlist into the timeline and media tracks for editing.
- Intensity: real-time master intensity for the playlist (default 100%); can be changed while playing.
- Play / Pause / Stop: Pause holds the last DMX value on output. Stop halts the playlist and sets every channel's output to 0.
- Status: Playing, Paused, Stopped, or Waiting for Trigger.
- Timeline and Duration: shows playback position; opacity of the bar matches playlist intensity.
- Delete: removes the playlist and cascades to any schedules using it.
Global playlist control
Pressing global Play starts all playlists at once. Channel conflicts are merged on a Highest Takes Precedence (HTP) basis.
Cues, triggers and events library
Lists all media usable in playlists, categorised by Static Cues, Dynamic Cues, Effects, Events, and Triggers. Drag and drop any cue into the media tracks; events and triggers have dedicated tracks. To ensure the best output frame rate, avoid using the same dynamic cue in different playlists.
Playback configuration
- Playlist Fader Configuration: sets fade-in and fade-out times. Fade-out begins on Stop and runs for the defined duration.
- Playlist Duration: total length of the playlist.
- ID and Name: internal ID (editable) and display name.
- Start Trigger: set the playlist to play On Power Up or wait for a configured trigger from the Triggers page.
- Stop Trigger: choose a trigger from the Triggers page that stops the playlist when its conditions are met.
- Play Count: number of times the playlist plays before stopping.
- Internal Priority: when multiple playlists run, the higher priority drives the output on any channel conflict. Equal priorities are merged on HTP.
- Group: combine playlists into a group so that only one in the group can play at a time (used with the "Play one active playlist per group" option in Settings) for smooth fading between looks.
- Hide from Home: show or hide this playlist on the Home page.
- Save: saves any change; S-PLAY prompts to save before playing.
Cue fader configuration
Configures start/end time and fade-in/out for a specific cue placed in the cue track. Enabled when a cue is selected. Each cue also has a fader handle directly in the track for intuitive editing.
Zoom
Zoom in and out with the magnifying glass icons. The timeline values and cue box widths scale with the zoom level.
Example playlist
"Playlist 1" is configured to start On Power Up and loop indefinitely (Play Count: Infinity). Inside, a dynamic cue labelled "wp" plays while simultaneously sending a UDP Event (UE). At the 3-second mark the playlist pauses to wait for a Digital Input trigger before resuming an effect that plays through to the 7-second mark. The playlist then sends more Events and waits for further triggers as specified, looping back to the start once the end is reached.
Schedules
Create up to 200 schedules to trigger playlists once or at regular intervals. Schedules require a playlist to be created first. Always ensure the S-PLAY system time and location are set correctly in Settings when using Schedules.
Schedule sections: Name, Command, Selected Playlist, Start Condition, End Condition, Frequency Type. Frequency options: Per Second, Per Minute, Hourly, Daily, Weekly, Monthly, Yearly, Astronomical (moon phases).
Start conditions can be set to a specific time, sunrise, or sunset, calculated from the Location settings (latitude, longitude, GMT offset). The schedule expires when the End Condition is met (specific date or play count).
Worked example (Noise Flow)
A typical schedule pair uses one schedule to start a playlist and a second to stop all playback the following morning:
- Schedule 1: plays the "Noise Flow" playlist every day, 30 minutes before sunset, from the 1st of November until the 31st of December.
- Schedule 2: issues Stop All 30 minutes after sunrise each day, set for 30 total playbacks.
Note: Always ensure the S-PLAY system time and location are set correctly in Settings when using Schedules — sunrise and sunset calculations depend on the configured latitude, longitude, and GMT offset.
Created schedules
The Created Schedules list summarises each schedule's parameters and provides per-row controls.
- Edit: pencil icon loads the schedule into the editor.
- Suspend: pauses a schedule from activating. A suspended schedule's status indicator turns yellow.
- Status colours: Green: active schedule with instances still to play. Yellow: suspended schedule; will not run until restored and the end condition is not met. Red: expired schedule with no remaining instances.
- Schedule name and Playlist name: as set in the editor.
- Frequency: play count from the schedule editor (defaults to the playlist's configured value).
- Time: start time of day plus the next activation time.
- Start time and Start date: as set in the editor.
- Delete: removes the selected schedule.
Hide from Home
By default, all schedules appear on the S-PLAY home page. Enabling Hide from Home removes them from the homepage, which means users who are not logged in cannot see them.
Interfaces
S-PLAY Programmer supports up to 20 custom user interfaces for tailored playlist control. Interfaces can be viewed from any device with a web browser on the same local network.
Interface configuration: Name, URL, Interface Group (for navigation between interfaces), link to interface pages, Hide from Home, set as landing page.
The interface editor supports: Toggle Edit Mode, Page Colour, Background Image (max 700 KB), Desktop/Tablet/Mobile screen size views, Alignment (horizontal and vertical), Distribute Spacing, Make Same Height/Width, Container Max Width.
Widgets
Widgets are the building blocks (buttons and sliders) used to compose an interface. Each widget can be customised for display name, command, target playlist, shape (circle or rectangle), width, and RGBA colour.
| Widget | Function |
|---|---|
| Text | Adds text to the canvas. |
| All Playlists controls | Controls every playlist stored on the S-PLAY (play, pause, stop all). |
| Specific command | Sends a specific command to a chosen S-PLAY playlist. |
| Intensity sliders | Slider widgets to control intensity for all playlists or for an individual playlist. |
| Play/Stop | Controls Play/Stop for a given playlist. The button also indicates the playlist's state and playback progress. |
| Effect colour filter | Controls the colour filter of a specific Effect cue. |
Arranging widgets on the canvas
- Drag the widget freely to position it as desired.
- Resize the widget horizontally or vertically using the adjustment handles.
- Use the alignment tools to keep widgets aligned for a clean, organised interface.
Shows
A Show is a complete project containing all cues, playlists, schedules, events, triggers, and interfaces.
| Action | How to |
|---|---|
| New Show | Click New Show on the start screen — opens a blank project ready for cues and playlists. |
| Load from S-PLAY | Connect to S-PLAY hardware; the current show extracts automatically. |
| Save to S-PLAY | File Menu → Save — saves show to the connected S-PLAY hardware. |
| Save to computer | File Menu → Save As — saves show locally as a file. |
| Export for hardware | File Menu → Export for Hardware — generates a portable .bak file for manual upload via S-PLAY web interface. |
| Open from files | File Menu → Open — browse to a .bak or show file and load into software. |
Configuration
Settings configure the connected S-PLAY hardware. Changes made here apply to the S-PLAY device and are saved to it — the software itself does not output DMX.
Settings overview
Fast navigation between settings tabs using the left-hand navigation menu. Settings configure the connected S-PLAY hardware.
Device info
Device Info lets you set a unique S-PLAY name for identification. The name is shown on the device LCD and is also used as the hostname on the network. Uptime shows how long the S-PLAY has been running since its last boot.
Output settings
Assigns the S-PLAY’s internal 32 universes to Art-Net, sACN, or DMX outputs. Use the drop-down in the upper-right corner to set all outputs to one protocol at once.
Art-Net and sACN settings allow configuration per universe: unicast, multicast, or broadcast; refresh rate 1–60 FPS; sACN priority (1–200, default 100). The Tab key expedites editing universe numbers and IP addresses.
Network settings
Define a DHCP or Manual IP address. The S-PLAY reboots after IP changes to start all services.
| Setting | Default value |
|---|---|
| DHCP | Enabled |
| Fall-back / Static IP | 192.168.0.10 |
| Mask | 255.255.255.0 |
| Gateway | 192.168.0.1 |
| UDP input port | 5000 |
| OSC input port | 8000 |
Date, time and location
Set date and time manually or enable NTP for automatic synchronisation from the local network. Manual time must be updated for daylight saving time twice a year.
Set latitude and longitude to inform sunrise/sunset times used by the scheduler. Use a geolocator such as latlong.net to find your site’s coordinates.
Playback configuration
Global playback settings: restrict to one active playlist per Group (stops all other playbacks in the group, obeying fade times); send black frame on playlist stop.
To update the software: click the Check for Updates button in the header, or go to Update in the Settings menu.
Factory reset
Navigate to Reset in the Settings page and click the Factory Reset button.
Important: A factory reset erases all created content and returns the software to its original factory state. Always take a backup before proceeding. Factory reset cannot be stopped once initiated.
Reference
Revision history and ordering information.
Revision history
| Field | Value |
|---|---|
| Manual version | 1.0 |
| Document date | February 2026 |
| Software version | V1.0.0 |
Ordering
For further support and to browse ENTTEC’s full product range, visit the ENTTEC website.
| Item | Part No. |
|---|---|
| S-PLAY Programmer | 70100 |
| S-PLAY SP1-1 | 70092 |
| S-PLAY LITE | 70094 |
| S-PLAY MINI | 70093 |
| S-PLAY NANO | 70095 |
Due to constant innovation, information within this document is subject to change.