dkulp
Full time elf
2026.20 — November 12, 2026
Enhancements
- dkulp — Faster CPU rendering of many effects (Shockwave, Color Wash, Bars, Spirals, Fan, Galaxy and others); Spirals is about 2x faster
- derwin12 — Faster rendering of Morph effects and of effects with an animated sub-buffer on large models
- derwin12 — Snowflakes renders much faster on large buffers, such as whole-house groups
- derwin12 — Spirals: new Reverse 3D option chooses which edge of the 3D fade leads; GPU-rendered Spirals fade on the same side as CPU (#6614)
- dkulp — Custom value curves keep points placed at the editor's half steps instead of shifting or merging them
- AGFazio — Import Effects: preview the vendor's model next to yours, and sort both mapping lists by Name or Master View
- scott — Bulk Edit: new Edit Properties popup changes a model type's properties on every selected model of that type at once
- derwin12 — SubModels: Symmetrize (Rotational) is available again on Circle, Star, Wreath and full-circle Spinner models (#7276)
- derwin12 — Visualizer warns when more than 10 models are hidden because their Preview is 'Unassigned' (#7323)
- derwin12 — Media Manager: Re-embed from Disk refreshes an embedded text, SVG, shader or binary file from its file on disk
- heffneil — Sequence Settings > Meta Data: Imported From sequences can be added, changed or removed
- heffneil — Bulk Controller Upload: Select All, a filter box, multi-row checking and Invert Selection; the dialog remembers its size and position
- scott — Linux: stem separation (Waveform > Stem - Drums/Bass/Other/Vocals, plus Guitar/Piano with the 6-stem model) now works
- scott — Linux: Generate Custom Model offers webcam node identification, as on Windows and macOS
- scott — Linux: video export (house preview and model export) uses VAAPI hardware H.264/H.265 encoding when available, falling back to software
Bug Fixes
- dkulp — Butterfly and Plasma render the same colours on the GPU (macOS/iPad) as on the CPU
- dkulp — Butterfly styles 6-9 no longer show stray black pixels at full brightness
- dkulp — Buffer rotation and zoom render the same with GPU rendering on as off
- dkulp — Strobe, Lightning, Shape, Tendril, Pinwheel and several transitions (Circles, Pinwheel, Dissolve, Fold, Star, Bow Tie, Circular Swirl) now render the same on Windows and macOS
- dkulp — Servo values that land on a whole number (e.g. 40%) could come out one lower on macOS and iPad than on Windows and Linux
- dkulp — Guitar effect: Bass Guitar uses bass chord shapes, and the Wave appearance swings to both sides of the string (it differed between Intel and Apple Silicon)
- dkulp — Faces "Short" blink duration was the same as Normal
- dkulp — VU Meter bar types fill the whole width when it does not divide evenly by the bar count, and Level Pulse types no longer flash in silence at the start of a sequence
- dkulp — VU Meter Timing Event Color sensitivity is now updated when opening sequences saved before 2022.04; output may differ
- dkulp — Bars "Use first color for highlight" drew white highlights with the custom directions and with spatial colors
- dkulp — Single Strand FX: Phased, Phased Noise and Fireworks 1D could change when other effects of the same mode rendered; the "* Color Gradient" palette was dark or missing color 1 with one or two colors
- dkulp — Single Strand chase "From Tail" fade with transparency left the tail nearly transparent
- dkulp — Galaxy with 100% head duration, and old-style Ripple squares with no movement, drew nothing
- dkulp — Snowstorm with alpha enabled drew the oldest tail points at a random brightness instead of fading them out; output differs from earlier versions
- dkulp — Snowstorm no longer crashes on an empty (zero-size) buffer
- dkulp — Text word flip with the built-in xLights fonts placed the word off center
- dkulp — Text with an unloaded font size above 88 did not render correctly
- derwin12 — Text effect reading from a text file kept showing the old text after the file was edited when the render cache was on
- derwin12 — Video effect showed a red square when a buffer value curve changed the buffer size mid-effect (Windows/Linux) (#7284)
- dkulp — Moving Head following a sketch path got an invalid position on a repeated point
- derwin12 — Clock, Wipe and other masked transitions revealed models with more than one light per node in a scrambled order instead of sweeping smoothly (#7301)
- dkulp — Transitions on a one-pixel-high model (such as a single line) could render blank or differ between machines
- dkulp — Layer blending (e.g. Shadow 2 on 1) rendered black when the hue went negative
- dkulp — Pixels drawn exactly at the buffer edge are now wrapped instead of dropped
- dkulp — Custom models with a rotated buffer, and with the Stacked, Overlaid and Unique X and Y buffer styles, render every node inside the buffer
- dkulp — Cube "Stacked Z Vertically", "Unique X and Y X" and "Unique X and Y Z" buffer styles left lights outside the buffer or stacked on top of each other
- dkulp — Sub-buffers and buffer sizes are right for the Rotate CC/CW 90 Flip Horizontal buffer transforms
- dkulp — Submodel per-strand buffer sizes match the rendered buffer, and legacy single-line submodel buffers no longer read out of bounds
- dkulp — Duplicate effect with Override Timing no longer wipes the copy's buffer settings; output differs from earlier versions
- dkulp — Linking an effect to a symbol no longer wipes the symbol's palette and settings
- dkulp — Wrapped Sine, Parabolic, Logarithmic and Exponential value curves rendered as steps inside the wrapped part and swept back across the wrap point
- dkulp — Reverse on Sine and Abs Sine value curves is now a true reversal (renders differently than before)
- dkulp — Value curves exported to .xvc with a non-zero minimum (e.g. -100..100) now import correctly
- dkulp — Colour curves and custom value curves no longer lose points that land on the same position when saved
- dkulp — Timing, audio and filter text containing a | no longer breaks value curves (older versions show | for it)
- dkulp — Malformed or empty color curve data no longer crashes
- derwin12 — Shift+mouse wheel scrolling no longer clears the effect grid selection, so lasso and Shift+click selection work across a scroll (#6891)
- derwin12 — Ctrl+Left/Right on multiple selected effects slides them as a group instead of collapsing the gaps between them
- derwin12 — Timeline tags (Ctrl+0-9) carried over from the previous sequence; "Clear all tags" now also clears them from the saved file
- derwin12 — Floating Effect Assist window no longer stays open when switching to the Layout tab (#7241)
- dkulp — Crash ("mutex lock failed") when zooming the sequencer after the song was replaced, e.g. by Cleanup File Locations
- dkulp — Crash opening a sequence where a submodel effect row is attached to a timing track or submodel instead of a model; the row is now skipped
- dkulp — Sequence durations set in milliseconds could come back a few milliseconds long
- dkulp — Fixed interval timing tracks ended with an empty zero-length mark
- dkulp — Fixed-interval and metronome timing sections no longer hang on a 0 interval
- dkulp — Crash searching lyrics online (or removing words/phonemes) on a timing track that already had words and phonemes
- dkulp — Crash in lyric breakdown when the phrase start is after its end
- dkulp — Timing labels containing text such as & are no longer altered when a sequence or .xtiming file is loaded
- dkulp — SRT import no longer drops the last subtitle
- dkulp — Audacity and ElevenLabs timing import give zero-length marks one frame
- dkulp — Tempo detection on silent or flat audio returns no tempo instead of ~304 BPM
- dkulp — Pitch detection of low tones (about 80-200 Hz) no longer reports ~1225 Hz
- dkulp — Key detection is more accurate (a C major triad now reads as C major)
- dkulp — Audio could hang when no frame interval was set or the audio failed to load
- dkulp — Spectrogram rendering with a negative size no longer fails
- dkulp — Stem separation uses much less memory
- dkulp — Sequences rendering in parallel could crash while logging render status
- dkulp — Possible hang when shutting down rendering
- dkulp — Reloading or removing an image could leave the old image in use
- dkulp — Image model effect preview loaded its image again on every redraw
- derwin12 — Matrix face editor preview showed transparent image areas as white
- dkulp — Fixed non-ASCII (UTF-8) text being dropped from sequence header info, timing exports and test preset names on save
- dkulp — Newlines and tabs in text now survive a save and load
- dkulp — Reading a corrupt or truncated .fseq no longer shows garbage channel data; the damaged blocks are blanked instead
- merryoncherry/dkulp — Sparse FSEQ files with more than 255 sparse ranges lost most of their channels. They now save every range (FSEQ 2.3), files already saved that way load correctly, and FPP older than 10.4 is sent the ranges merged down to 255
- dkulp — Sparse FSEQ files cover the whole model when a group in the sequence holds its submodels, instead of a separate range per submodel
- dkulp — Import Effects: matrix faces imported onto a model from the base show folder were lost on the next load; they now go into the sequence
- dkulp — Plain poly lines were mapped as icicles when importing sequences
- dkulp — Import channel map: model names containing a dot now match literally
- dkulp — Auto-map no longer crashes on extremely long names with a regex rule, and aggressive matching no longer treats punctuation-only names as identical
- derwin12 — Import Effects and other dialogs no longer open on a monitor that is no longer attached (which looked like a hang); they open centred instead (#7304)
- dkulp — Package import dropped face colours and reported them as missing media
- derwin12 — Embedded media referenced with both \ and / in its path (e.g. Shaders\x.fs and Shaders/x.fs) showed a second, external copy when opening a package
- derwin12 — Media Manager: extracting an embedded text, SVG, shader or binary file writes it to disk when missing, and later edits to the file are picked up
- dkulp — Sequence package extraction no longer writes files outside the destination folder
- dkulp — Music catalog downloads use the right file extension and can no longer write outside the destination folder
- derwin12 — SuperStar import: the dialog took over a minute to open on large layouts, and closing it with Esc or the close box went on with the import
- dkulp — SuperStar import: fixed crashes with a zero-size grid, a layout missing its ribbon count, negative scene element indexes and images with zero or negative width
- dkulp — SuperStar import: Morph acceleration no longer merges into Stagger, and the first colour of Spiral, Shockwave and Fan palettes is kept
- dkulp — SuperStar import: colour percentages above 100 or below 0 no longer wrap, equal start and end times no longer give bad durations, and text containing commas is no longer cut off
- dkulp — SuperStar import: the image group name prompt shows the suggested name, and characters after a force-closed tag are no longer dropped
- dkulp — Vixen 3 import: no longer crashes on effects with missing settings or odd Nutcracker palette data, and durations with hours are read correctly
- dkulp — Vixen 3 import: Nutcracker Twinkles, Fireworks and Butterfly settings import with the right names and values, and out-of-range set-level colours no longer wrap
- dkulp — HLS import no longer crashes when the file reports a negative time cell count, and map hint files are saved correctly
- dkulp — LOR import: fixed crashes with missing or short effect parameters (LOREdit and Pixel Editor) and timing at frame rates above 1000
- dkulp — LOR import: negative offsets no longer give huge start times, and ramp values (R..R..) import with the right end value
- dkulp — LOR import: Pixel Editor garland and movie effects, bars direction, highlight and gradient colours, and Butterfly hue 0 now import correctly
- dkulp — LOR Music import: RGB intensities above 100, zero-length effects, effects without intensity and channels sharing a pixel tree name prefix import correctly
- dkulp — Fixed crashes importing Papagayo with 0 samples per second, an empty LOR freeform grid, and 1-2 frame Vixen 2/HLS data
- dkulp — Windows: LOR LMS and Vixen 2 imports could give channels the wrong colour for large colour values
- dkulp — The effects CSV export quotes descriptions and file lists correctly, and vendor model sizes with huge values are handled
- dkulp — Zeros to Blanks keeps leading zero cells
- MrPaulAR — Check Sequence: fewer false Morph "repeat count and skip" warnings, and the Liquid particle-count warning follows Life Time and Warm Up Time instead of the effect length
- dkulp — Check Sequence HTML report did not escape special characters in names and messages
- derwin12 — Models imported from an LOR S5 preview, iPad arches after changing Starting Location, and old circles without a start side could switch start corner after save and reload
- scott — A new Matrix model's Starting Location showed Bottom Left in the property grid even though it was saved as Top
- dkulp — Poly Line with more than one string gave its strings overlapping channels
- dkulp — Poly Line auto distribution now centres every light in its share of the line, so arches are no longer lopsided
- dkulp — Zero-length poly lines no longer produce invalid node positions
- dkulp — An arch of a single light got no position, and did not render on Windows and Linux
- dkulp — Layout: scaling a poly line moved it away from its centre, 2D curve handles picked up a depth, space mouse rotation of two point models changed their length, and a terrain kept the elevate tool after leaving a grid point
- dkulp — Crash in the Layout preview when Mesh Only was turned on for a mesh that had no geometry
- dkulp — Crash undoing a custom model data edit in Layout
- dkulp — Renaming a model did not update other models' individual string start channels that referred to it
- dkulp — Start channel shown for a model's first channel in controller (!Name:n) form was the last channel
- dkulp — Model groups no longer match models by name prefix (a group holding Tree10 no longer also claims Tree1), groups that contain each other no longer crash, and a self-referencing start channel no longer drifts
- dkulp — Huge submodel node ranges are limited to the model's node count
- dkulp — An empty model tag colour is no longer saved differently on the first and second save
- dkulp — Image and Label models no longer use uninitialised buffer coordinates
- dkulp — Layout files with zero or negative string/node counts or dimensions no longer crash on load
- dkulp — Icicles with an empty or zero drop pattern no longer hang on load
- dkulp — Poly Line and Custom models with zero or invalid string counts no longer crash
- dkulp — Corrupt negative values in Custom, Spinner and Window Frame models no longer crash
- dkulp — Fixed a crash (huge Lights Per Node, now capped at 1000) and a hang (huge Cube string count) loading corrupt models
- dkulp — Fixed a crash loading .obj models whose faces reference missing vertices
- dkulp — DMX: a moving head with pan/tilt on its last channel did not move in the preview, functions on the last channel were not named, and an uncoloured skull kept its material eye colour instead of black
- dkulp — DMX Moving Head Adv with 16-bit tilt showed the "Tilt Fine" channel name on the wrong channel
- dkulp — DMX Advanced Moving Head no longer crashes when its channel count is smaller than its motor channels
- dkulp — Crash loading a DMX model with a negative channel count
- dkulp — DMX Skull with disabled servos no longer crashes when naming nodes or saving
- dkulp — DMX Servo and Servo 3D models no longer crash with a zero channel count
- dkulp — Hand-edited DMX servo, image or mesh element names without a valid number no longer crash loading
- dkulp — DMX servo image and pivot offsets no longer shrink every time the model is saved (pivot values saved by earlier versions are not recovered)
- dkulp — Legacy DMX servo MotionImage no longer overwrites the static image
- dkulp — DMX Servo 3D unlinked servos and meshes stay unlinked after save and load
- dkulp — DMX models without a String Type no longer get an inflated channel count
- dkulp — Negative DMX colour channels are no longer turned into a huge channel number
- dkulp — GDTF import rejects absurd channel counts
- dkulp — PWM ports for a plain (non-DMX) model each drive their own channel; every colour of a node was set to one channel past the node's first
- dkulp — PWM port labels name the right colour on RBGW and BRGW models
- dkulp — Changing a controller's IP in setup now marks it changed so it is saved, and copying a serial controller keeps its port, speed and prefix
- dkulp — A duplicated FPP controller keeps its IP address and proxy
- dkulp — Copied KiNet outputs keep their protocol version and copied serial/NULL outputs keep their Id
- dkulp — Controller hostnames with several dots (e.g. falcon.home.lan) are now accepted
- dkulp — Setting the global force local IP no longer also sets the FPP proxy
- dkulp — Controller pixel protocol and channels per pixel were not matched for mixed-case names
- dkulp — The smart remote letter was exported as a number in controller JSON
- dkulp — E1.31 priority is limited to 0-200, and negative or out-of-range MaxChannels and start channels from show files are rejected
- dkulp — Fixed crashes and memory overruns in ZCPP, DDP, OPC and xxx Ethernet outputs and resizing an Ethernet controller
- dkulp — LOR Optimised in split mode with one channel, and DDP with a missing or oversized Channels Per Packet, no longer hang
- dkulp — Renard AllOff now clears the first two channels, and xxx Serial channel totals above 255 no longer wrap
- dkulp — Different NULL outputs are no longer treated as equal, and xxx Ethernet outputs no longer load as modified
- dkulp — Serial prefix/postfix hex escapes no longer drop the escape sequence after a malformed one
- NotAFlightRisk — ArtNet discovery only added the first universe of a node with several output ports
- dkulp — FPP Connect and other controller uploads no longer use a full CPU core while waiting on a slow or unreachable controller
- dkulp — FPP Connect: uploads to ESPixelStick and older FPP could crash, the ESPixelStick uncompressed retry failed on macOS, and upload errors now say why
- dkulp — Crash after FPP Connect sent controller settings with a virtual display background image and no sequence checked
- dkulp — FPP upload: an unused cape serial output was switched on as DMX, FPP 8+ virtual matrices were turned off when not under full control, quotes in universe descriptions gained a backslash, the playlist duration was wrong, and proxy upload to FPP 7 could crash
- dkulp — FPP upload merged separate channel ranges
- dkulp — FPP version detection handles two-digit versions, FPP 8 proxy lists, truncated settings and malformed channel ranges
- dkulp — Falcon V2/V3 controller upload could crash; serial ports with no speed set uploaded DMX at 25000 baud instead of 250000
- dkulp — Falcon, SanDevices, WLED, ESPixelStick, AlphaPix and J1Sys uploads no longer crash on incomplete or unexpected controller replies
- dkulp — WLED upload handles unusual pin and LED instance settings, and no longer sets an unsupported chip to WS2811
- dkulp — ESPixelStick settings with large numeric values are no longer corrupted on upload
- dkulp — Crash reading the current config of a J1Sys controller whose model name reports more than 26 outputs
- dkulp — HinksPix upload could crash when the controller answered the reboot request
- dkulp — HinksPix Export: crash when a HinksPix controller has no model selected; the export now reports the problem instead
- dkulp — Experience, PowerDMX, HinksPix and Minleon controllers no longer crash or fail to connect on incomplete status replies
- dkulp — Minleon Original NDB controllers are now detected, and the legacy upload no longer sends a blank netmask
- dkulp — Pixlite16 bank voltages above 25.5V were truncated
- dkulp — Crashes on damaged settings files and ESPixelStick ports without a type
- dkulp — Crash when an automation client disconnects while its request (such as a render) is still running
- dkulp — Crash setting a model's String Type through the automation API, which also never applied the new String Type
- frenchmakers — Automation: JSON requests (POST /xlDoAutomation, xlDo) with Windows paths failed with "No command"
- frenchmakers — Automation: saveSequence reports an error when the sequence was not saved instead of "Sequence Saved."
- frenchmakers — xlDo works when its output is redirected (e.g. called from a script)
- frenchmakers — Windows: the main window got stuck when dragged between monitors with different scaling (e.g. 100% and 125%)
- derwin12 — Windows: with the DirectX11 video renderer, small videos showed a grey band in the preview and the Video effect thumbnail, and Video's Maintain Aspect Ratio was ignored
- dkulp — Windows: a damaged AI plugin DLL no longer stops startup with a system "Bad Image" dialog
- scott,dkulp — Linux: Package Sequence bundles the fonts used by Text and Shape effects, and no longer bundles a substitute for fonts that are not installed
- scott — Linux: the render cache now backs off before driving the system into swap, as on macOS
- scott — Linux: the Effect Presets pane was empty since 2026.17 (#7223)
- dkulp — iPad - 3D objects (gridlines, terrain, mesh, image, ruler) stay in the Default preview instead of a layout group that was lost on reopen
- dkulp — iPad - Faces and State effects could not switch to Timing Track; the Source selector snapped back until a track was chosen
- dkulp — iPad - Custom model node list showed wrong node and string numbers
- dkulp — iPad - Crash in the media picker when an animated thumbnail is reloaded while it is still cycling
- dkulp — iPad - Opening a sequence with a large saved .fseq could be stopped by iPadOS; the .fseq now loads in the background
Changes
- dkulp — CPU effect rendering now uses a fast math library; Plasma and Butterfly can differ by one level on a few channels between CPU types
- derwin12 — Layout: a single click on the show folder footer opens the Directories dialog (Shift+click opens the folder)
- dkulp — iPad - Adding a 3D object needs the Default preview in 3D, as on desktop
xLights is available for download from https://github.com/xLightsSequencer/xLights/releases/ for Windows/Linux and from the App Store for Mac.
Issue tracker: https://github.com/xLightsSequencer/xLights/issues
Video tutorials: https://videos.xlights.org
xLights user manual: https://manual.xlights.org/xlights/
If you have encountered a specific issue, developers ask that you submit details to the xLights GitHub repository.
For requests for general help among peers, consider starting a new forum thread: https://auschristmaslighting.com/forums/xlights-xschedule.61/post-thread